863683348/dsh-plugin-audit
Plugin health audit for DeepSeek Harness: sync the GitHub dsh-plugin topic into a local catalog, probe npm, static-scan for security, score every plugin, and rank them in a web leaderboard.
已收录
1
Market
Bundle 已验证
功能介绍
插件生态体检:将 dsh-plugin 话题同步为本地评分目录(维护/文档/npm+周下载/生态四维,0-100 分 A-D 级),静态安全扫描高危一票否决,支持 star 历史快照、Web 榜单与 Agent 工具。
适合
- 需要本地存储、可解释的插件健康目录与排行榜的生态维护者。
- 需要跨插件比较维护、文档、npm、生态、star 趋势和静态安全信号的团队。
- 需要基于同步后的 GitHub 与 npm 元数据获取插件报告卡或排序候选项的 agent。
不适合
- 不适合完全离线刷新目录,因为同步会查询 GitHub,并可探测 npm registry。
- 不适合全面的依赖安全评估,因为传递依赖信号仍只列在路线图中。
- 不适合在生产关键流程中依赖 Web 投影或定时同步,因为这些功能被标为实验性或受保护状态。
README
dsh-plugin-audit — 插件生态体检(Plugin Health Audit for DSH)
Turn the GitHub dsh-plugin topic into a local, scored plugin catalog for DeepSeek Harness.
Every plugin gets a 0–100 health score across four signals, a leaderboard in the web UI,
and agent tools that answer “which plugins are worth installing?”.
| Signal | Weight | What it measures |
|---|---|---|
| Maintenance | 30 | last push recency + star tier + star trend (archived → 0 + 🚨 flag) |
| Docs | 25 | README presence + description depth + license |
| npm | 30 | npm package exists + publish recency + weekly downloads (v0.3) |
| Ecosystem | 15 | presence in the curated awesome list + listing recency |
Grades: A 🛡️ (80+) · B ✅ (60+) · C ⚠️ (40+) · D 🚨 (<40 or any high flag). Scores are pure functions over plain records — fully explainable (every deduction carries a note).
v0.3: npm signal now includes a weekly-downloads tier (exists 10 + publish recency 14 + weekly downloads 6).
v0.4 (真插件校验 / topic-tag farming filter): deep scan now verifies a repo is actually a DSH plugin — presence of cordis.patch.yml, dsh.bundle in package.json, or a plugin entry file. Repos with none of these are flagged not-plugin (medium) and capped at grade C, no matter how healthy they look. The npm probe also detects whether the published package declares dsh.bundle (installable via dsh plugin add). This filters the ~half of the topic that is old projects or tag farming.
Security (v0.2) is a veto, not a weight: audit_scan static-scans a
plugin’s package.json install scripts, shell scripts, and entry sources for
remote-code-execution, encoded commands, rc persistence, obfuscation, and
exfiltration to non-allowlisted hosts. High/critical findings land in the
flags contract → grade D, no matter how healthy the other signals look.
Each finding carries evidence; the scanner is deliberately conservative.
Features
| Feature | Status |
|---|---|
audit_sync — sweep the topic, probe npm, re-score (incremental, rate-limit aware) |
✅ stable |
audit_top — leaderboard by score / stars / newest / name, category filter |
✅ stable |
audit_plugin — full report card with evidence notes |
✅ stable |
audit_scan — per-plugin static security scan (files → findings → veto) |
✅ stable (v0.2) |
| Star trend in maintenance signal (from rolling history snapshots) | ✅ stable (v0.2) |
auditSummary session projection + composer-dock leaderboard |
🧪 experimental (loader-format client bundle) |
| Optional periodic sync (schedule service) | 🧪 guarded |
| Seed catalog from the awesome-dsh-plugin list (1018 plugins) | ✅ stable |
How it works
- One Cordis plugin: host face (
lib/index.js) registers tools + projection + optional schedule; browser face (lib/client.js) renders the dock;cordis.patch.ymlmounts the row. - Sync pulls
GET /search/repositories?q=topic:dsh-plugin(100/page), probesregistry.npmjs.org/<name>with bounded concurrency, then upserts into a JSON catalog. Rate-limit-aware: stops early when the search budget runs low and resumes next time; failed probes keep the previous values. - Storage:
dataDir(default$DSH_HOME/dsh-plugin-auditor~/.dsh/dsh-plugin-audit):catalog.json+meta.json+history.json(rolling star snapshots for future trend tiers). - All writes are atomic (temp + rename); corrupt files fall back to empty instead of crashing.
Install
The package declares "dsh": { "bundle": { "patch": "./cordis.patch.yml" } }, so it goes
through DSH’s official plugin management:
# from a local checkout
dsh plugin --profile <profile> add /path/to/dsh-audit
# or after publishing to npm
dsh plugin --profile <profile> add dsh-audit
Restart DSH. The audit_* tools are registered host-wide; the leaderboard dock appears
in the web UI on a web profile.
First sync
Give the agent a GitHub token (search API: 30 req/min vs 10 anonymous) and ask it to
audit_sync, or configure it:
-
dataDir— catalog location (empty = default) -
githubToken— or envDSH_GITHUB_TOKEN/GITHUB_TOKEN -
syncIntervalHours— periodic sync (0 disables; requires schedule service) -
npmProbe— probe npm registry (default true)
Standalone (outside DSH, for testing / CI)
node scripts/seed.mjs # build data/catalog.json from the awesome list checkout
node scripts/sync.mjs --token <gh-token> # real sync, no DSH needed
node --test test/ # run tests
Development notes
- Tests are fully offline (fake
fetchinjected) —node --test test/needs no network. - Data model: one catalog record per repo (
repo,stars,pushedAt,license,archived,npm,curated,addedAt,score,flags, …). Seelib/audit.jsrepoToRecordandlib/scoring.js. - The
flagsarray is the extension contract for the security tier (v0.2).
Roadmap
- v0.3 — open data export (JSON) so other marketplaces can cite the scores
- v0.4 — appeal/comments channel per plugin
- v0.5 — batch scan scheduling (scan the top-N by stars on each sync) + transitive-dependency signals
License
MIT
常见问题常见问题
在启用了 DSH 的终端中执行已验证命令 dsh plugin --profile default add github:863683348/dsh-plugin-audit。命令会解析公开 package 元数据,并保持插件与本页展示的目录身份一致。
兼容性以页面上展示的 bundle 与 profile 状态为准。如果某个 profile 尚未检测到,请先保持禁用,并在生产启用前阅读仓库文档。
GitHub 链接和 activity 元数据是 release 与维护状态的来源。新版本发布后重新查看本页,确认目录已经观察到最新版本。