DeepSeek Harness Hub
← 返回列表

Chinesezjc/dsh-plugin-census

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
需源码安装

对 DeepSeek Harness 插件生态的可复现普查:dsh-plugin 话题里实际有些什么,

暂不能直接安装(需源码编译或环境不满足):仓库缺少 package.json,无法用 dsh 插件安装命令安装。 · 最近上游提交 2026/9/18 · 已提供中文文档

DeepSeek Harness 插件生态系统的可复现普查:跨主题范围样本的契约验证、表面归因与可安装性

综合分
31.5
GitHub 分
31.5
用户评分
★ Stars
2
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add Chinesezjc/dsh-plugin-census
仓库缺少 package.json,无法用 dsh 插件安装命令安装,改用 GitHub 源安装
数据截至 2026/9/19(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查需源码安装

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

npm 包dsh-plugin-census(未发布到 npm,仅可源码安装)
Node 引擎未声明 engines.node
dsh CLI 依赖未声明 dsh 版本约束
入口文件缺少入口声明

仓库缺少 package.json,无法用 dsh 插件安装命令安装

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/19 03:11:06

用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

DSH Plugin Census

对 DeepSeek Harness 插件生态的可复现普查:dsh-plugin 话题里实际有些什么,
以及其中哪些真的装得上。

免责声明。 本项目是个人维护的社区项目,不是 DeepSeek 官方产品,
不代表 DeepSeek 的立场。被收录不构成推荐,未被收录也不是对质量的评判。
维护者向 DeepSeek Harness 上游提交贡献,但这不使本目录具有权威性。
所有判定都由本仓库的脚本产出且可复现——请核对它们,而不是相信它们。

为什么做这个

dsh-plugin 话题在 2026-08-18 有
6923 个仓库,四天前是 1064 个。GitHub 的话题页按 star 排序,而 star 最高的
条目恰恰最不可能是插件。

话题是被完整枚举的,不是采样:15283 个唯一仓库,做法是围绕搜索 API
单次查询 1000 条的上限做分片。契约探测则跨运行累积,所以下表覆盖的是目前已探测的
15923 个仓库:

| Star | 符合插件契约的比例 |
| --- | --- |
| 0 | 81.0% |
| 1-2 | 79.3% |
| 3-9 | 83.3% |
| 10-49 | 82.0% |
| 50+ | 63.1% |
| 全部 | 80.3% |

只有最高那一档偏低,其构成解释了原因:带这个话题的高 star 仓库大多是这个话题
本身的目录项目——awesome-dsh-plugin(6439)、
AdamPlatin123/awesome-dsh-plugins(1098)、
0xsline/awesome-deepseek-harness(649)——加上周边工具,例如
Tencent/BrowserSkill(1089)。它们都不是插件,也都没声称是,但都排在访问者
真正要找的插件前面。

更早一次测量(2026-08-14,n=999)发现合格率随 star 单调下降,从 0 star 的
64.5% 降到 50+ 的 36.4%。该结论已不再成立,早先那组数字不应再被引用:生态
在三天内增长到 5.7 倍,且本探针现在能在子包中找到 bundle,而早先那次找不到。

样本构成

全部 15923 个被探测仓库,按判定分类:

| 判定 | 数量 | 占比 |
| --- | --- | --- |
| CONTRACT_OK | 12731 | 80.0% |
| NO_DSH_FIELD | 1304 | 8.2% |
| NO_PACKAGE_JSON | 943 | 5.9% |
| DSH_WITHOUT_BUNDLE_PATCH | 772 | 4.8% |
| PATCH_FILE_EMPTY_OR_INVALID | 53 | 0.3% |
| VENDORED_HARNESS | 48 | 0.3% |
| TREE_UNREADABLE | 26 | 0.2% |
| MALFORMED_PACKAGE_JSON | 22 | 0.1% |
| PATCH_FILE_MISSING | 17 | 0.1% |
| BUNDLE_UNDETERMINED | 6 | 0.0% |
| FIRST_PARTY_HARNESS | 1 | 0.0% |

探测是累积的:每次运行把 API 配额先花在从未探测过的仓库上,然后是最陈旧的,所以
这张表覆盖的是 15283 个已枚举仓库中不断增长的一部分,而不是每次重新采样。

VENDORED_HARNESS 标记的是携带了 harness 副本、而非插件的仓库:它之所以满足
契约,是因为它内含 DSH 自己的 bundle 包。这 48 个的 fork 全部为 false,
即源码复制而非 GitHub fork,所以按 owner 查或按 fork 状态查都发现不了它们;
它们只能按第一方包名识别。其中最大的是
fufankeji/deepseek-harness-studio,260 star。

数据保鲜期

这些数字描述的是某一时刻的某一份样本,而这个时刻很短。全部 257 个被判为不合格的
仓库在首次探测数小时后被重新探测:其中 2 个已变为合格,因为作者在这段间隔里加上了
dsh.bundle——songoao25/dsh-plugin-guardian 在 08:58、
xinyuehtx/dsh-plugin-hooks-ordering 在同日 07:54。这两处变化都不是探针修复
带来的,是作者自己提交的。

请把这里的任何数字当作带时间戳的一次读数,而不是长期成立的事实。脚本已包含在
仓库内,以便重新测量,而不是让人相信既有结果。

定时 workflow 直接印证了这一点:在上述数字写下数小时后的一次运行,在同样的单次
查询上限下产出了 742 条而非 763 条目录。两次之间探针没有任何改动——只是这个话题
「最近更新的那一页仓库」已经是另一批了。

「契约已验证」的含义

验证复刻的是 DSH 加载 bundle 时实际执行的检查,见
packages/boot/app-boot/src/profile.ts:388-397。共三级,每一级对应加载器会抛出
的一个独立失败:

| 层级 | 检查 | 缺失时加载器的行为 |
| --- | --- | --- |
| 1 DECLARED | package.json 中有 dsh.bundle.patch | 在 profile.ts:391-393 抛错 |
| 2 RESOLVED | 声明的路径存在 | 在 profile.ts:395 读取失败 |
| 3 PARSED | patch 文件含有 patch 条目 | 在 profile.ts:396 解析失败 |

只有达到 PARSED 的条目才被列为插件。

如实说明的局限: 第 2、3 级在实践中拦下的很少——3270 个声明了 patch
的仓库中只有 70 个在这两级失败。静态验证在第 1 级就基本到顶了,剩余的不确定性只能靠实际安装
插件来消除。安装验证尚未实现;本仓库不声称任何插件能运行。

Surface 归因

每个已验证插件都被归因到它所扩展的 surface,证据按强度分级,且置信度一并公布:

| 置信度 | 依据 | 数量 | 占比 |
| --- | --- | --- | --- |
| high | 依赖 @deepseek-ai/dsh-client-(client 侧)或 @deepseek-ai/dsh-host- 及 host 专用包(host 侧) | 7340 | 57.7% |
| declared | 插件自己的 dsh.client 或 dsh.host 块声明了该 surface | 3270 | 25.7% |
| medium | 有 @deepseek-ai/ 依赖,但没有一个依赖能区分 client 与 host,surface 记为 indeterminate | 428 | 3.4% |
| low | 没有 @deepseek-ai/ 依赖,surface 由名称或描述中的关键词猜测 | 1117 | 8.8% |
| none | 既无依赖证据也无关键词命中——根本没有归因 | 576 | 4.5% |

high 与 medium 这 7768 行基于已安装的依赖。另有
3270 行为 declared:插件自己的 dsh 块声明了 surface——这是作者的
声明而非已安装的包,所以排在依赖证据之下、猜测之上。

归因此前只读依赖,因而丢掉了这些声明,并用猜测取而代之。这些猜测里有 52% 把
surface 搞错了——283 个中有 147 个在读到声明后发生了改变,所以这是正确性缺陷,
不只是标注问题。

low 是从仓库名里的一个词做出的猜测,并被如实标注。none 行的 surface 是
indeterminate、证据为空:它是归因的缺失,不是弱归因,不应被读成对该插件的任何判断。

剩下的猜测已经接近这套方法能判定的下限。 仍然是 low/none 的那些条目只有
dsh.bundle 块,而且通常连依赖都没有,清单里已经没有可读的东西了。用 bundle patch
文件里声明的 seam 来归因这条路已经测过并被否决:在 30 个 surface 已知的插件里,23 个
根本没有 inject 块、只有 1 个给出了 seam,所以这条规则无法用任何数据校准。要解决
这些条目需要本普查不收集的证据——实际安装该插件,或读它的源码。

可安装性

符合契约说明插件声明了合法的 patch,但不说明这个包能被获取。有两种失败模式无需
安装即可判定:

| 判定 | 含义 | 数量 |
| --- | --- | --- |
| published | 声明的包名可在 npm registry 解析 | 5861 |
| git-only | 不在 npm 上;只能用 Git specifier 安装 | 6691 |
| unpublishable-scope | 仓库不属于该组织,却用 @deepseek-ai/ 命名自己 | 177 |
| unknown | registry 没有给出结论——这不是对该包的判断 | 2 |

另有 48 个仓库原样携带 @deepseek-ai/dsh-base(样本外至少还有两个:
my-dsh/oh-my-dsh 与 BenHuHuan/dhs-tuicode)。它们不是命名错误的插件,而是
harness 的源码副本,因此被归为 VENDORED_HARNESS 并从目录中排除,不计入上表。

被阻断的条目在目录中单独列出。它们满足 bundle 契约,但只有 DeepSeek 组织能向
@deepseek-ai scope 发布,所以这些名字无法由其当前所有者创建,
dsh plugin add @deepseek-ai/... 对它们全部失败。这是改名即可修复的命名缺陷,
不是对代码质量的评价。

该检查有意不标记 @deepseek-ai-community 这类形近 scope。那些是独立且可自由
注册的 scope,其所有者可以正常发布,因此是可安装的——品牌混淆是另一个问题,
本目录不对此做裁定。

成对比较排名(尚在收敛中)

排名问的是「两个插件里,有经验的 DSH 用户更信任哪个」。这个问题能区分一维分数区分
不了的案例:FengYangXun123/dsh-opencode-usage(7 个文件)赢了
GongYuanCaiJi/dsh-claude-code-templates(5057 个文件),而且赢的是小的那个
——后者 5057 个文件里有 5031 个在 skills/ 下、lib/ 只有 3 个,主要是在打包别人的
东西。被规模带偏的一维绝对分把两者判为相等,成对比较没有。

评级用 Elo,只由真实发生过的比较驱动。不施加任何目标分布。 强行凑成正态意味着
把几百个插件压到证据不支持的低分上,而这些判断写着别人仓库的名字。

这些评级还不构成排名。 目前 4676 个条目有评级,平均每个只比过
1.8 场(最多 41 场),跨度仅
1427 to 1708。Elo 大约需要 10-20 场才有意义,发布这些数字是为了
展示机制正在累积,不是推荐。

分档边界落在评级值上而非条目数上,因此同一个评级不会被拆到两档,公布的区间也不重叠。
档位大小因此不均匀,而这种不均匀本身就是结论:4676 个已评级条目中有
2096 个只比过 1 场,评级只能落在少数几个离散值上,堆在区间两端。

| 分档 | 评级区间 | 条目数 | 平均场次 |
| --- | --- | --- | --- |
| 最高档 | 1508–1708 | 1841 | 1.8 |
| 次高档 | 1500–1507 | 693 | 1.9 |
| 次低档 | 1492–1498 | 1194 | 1.2 |
| 最低档 | 1427–1489 | 948 | 2.4 |

分布表逐值列出,因为某一档里若被单一数值主导,就看不出评级有多集中。条目数少于 10 的
分数值合并成一行——比较次数最多的条目就在其中,因为反复比较会让评级离开「只打一场」
所能产生的那几个值。

| 评级 | 条目数 | 平均场次 |
| --- | --- | --- |
| 1516 | 715 | 2.0 |
| 1512 | 139 | 2.0 |
| 1508 | 946 | 1.1 |
| 1504 | 253 | 1.6 |
| 1501 | 12 | 2.0 |
| 1500 | 421 | 2.0 |
| 1496 | 223 | 1.5 |
| 1492 | 954 | 1.1 |
| 1489 | 12 | 2.7 |
| 1488 | 133 | 2.1 |
| 1487 | 46 | 2.0 |
| 1486 | 65 | 2.0 |
| 1485 | 88 | 2.2 |
| 1484 | 555 | 2.0 |
| 其他 75 个分数值 | 114 | 10.4 |

目录内所有条目都参与排名。 早先的版本只在部分条目之间比较,理由是
「池太大无法收敛」——这个判断是错的,它来自一个有 bug 的模拟:同分时按数组下标配对,
而下标同时又编码了真实实力,于是每轮第一次都让实力最接近的对打,比较几乎不携带信息。
把同分改成随机配对后,全目录排名在每个条目 10 场时达到 Spearman 0.87、20 场时 0.93。

发布分布而非排名列表,因为同一个模拟显示:整体分层的收敛远早于精确名次
——在 rho=0.87 时,按评级取的前 15 名里只有 0-1 个属于真实前 15。发布排行榜会宣称这套
方法并不具备的精度。

配对会优先复配已有比较的条目,让评级越过第一场继续深化——早先「优先配对比较次数
最少的」策略会在整个目录上铺开而永远不深化:跑了两轮之后,每个有评级的条目都恰好只有
1 场,按此速度要到 10 场需要约 453 轮。现在每轮预算的一半用于复配 10 场以下的条目,
另一半给新条目开张。复配预算的一部分用于连胜擂台:候选是比较次数最少的条目,
同一场次内 rating 低的优先,再按 rating 排序依次挑战下一位更强的,胜者留在台上继续挑战
更强者,因此持续取胜的插件能在一次运行里连爬数级,而不是赢一场相邻对手就停下。
场次优先是因为它代表不确定性:2026-09-13 时 rating 在 1492 及以下的 1255 个条目中,
有 1195 个只打过 1-2 场,所以低 rating 通常意味着「尚未验证」。若改成纯粹按 rating 选,
同一批弱插件会被永远钉在擂台上——每输一场它们的 rating 仍是最低,下一轮又被选中,
最低的 25 个条目因此平均打了 9.6 场(全池平均 1.65)。同场次内 rating 低的排在前面,
让最缺验证的低分条目先上。刷新把 100 次比较与枚举并行执行,两者花的是不同的 API 配额,
所以只给整轮增加约 2% 时间,而不是额外的 13 分钟。另有一个只跑排名的 workflow 每两小时
复跑一次评级、每次 200 次比较,在两次刷新之间继续收敛而不重新枚举话题。有些对始终得不出
结果:某一对在 8 次相同尝试里只成功 2 次,因为
模型的思考过程与答案争抢 token 预算。未解决的对只损失覆盖率,不损失正确性——没有
任何评级被移动。

已发布的包声明了什么

契约验证读的是仓库里的 package.json。而用户执行 dsh plugin add  装的是
已发布的 tarball。这是两个不同的产物,而它们并不一致。

在 5861 个能在 npm 上解析的包中:

| 状态 | 含义 | 数量 | 占比 |
| --- | --- | --- | --- |
| bundle-ok | 已发布的清单声明了 dsh.bundle | 5173 | 88.3% |
| bundle-missing | 已发布的清单没有 dsh.bundle——DSH 会拒绝把它作为 profile bundle 加载 | 294 | 5.0% |
| package-missing | 声明的包名已无法在 registry 上解析 | 45 | 0.8% |
| unreadable | registry 读取失败;这不是对该包的判断 | 349 | 6.0% |

其中 339 个(5.8%)按包名装不上,尽管它们
的仓库满足契约。bobcat848/dsh-calculator 的仓库里有 dsh.bundle 和完整的
dsh.client 块,而已发布的 dsh-calculator@0.0.1 连 dsh 字段都没有;
orriduck/dsh-tui 在 0.2.19 上同样如此。装上并注册为 profile bundle 会失败并报
declares no dsh.bundle in its package.json——已对 @deepseek-ai/dsh@0.1.0-rc.7
实测确认。

这是发布环节的缺口而不是仓库写错了——通常是构建过程重写了 package.json 却没有
把 dsh 块带过去。目录选择报告它而不是删掉这些条目,因为仓库确实满足契约,修复权在
作者手里。

失效扫描

scripts/scan-decay.mjs 会重新检查每个已收录条目,报告四种状态,只标记、
从不删除:gone(404)、archived(已归档)、dormant(30 天内无 push)、
unbundled(契约已不成立)。无法得出结论的探测被报为 inconclusive,
而绝不报为失效——因为每个失效状态都会促使他人删除条目,而证据可能并不支持。

全部 12731 个条目:

| 状态 | 数量 |
| --- | --- |
| live | 11995 |
| archived | 62 |
| gone | 141 |
| unbundled | 48 |
| dormant | 480 |
| inconclusive | 5 |

dormant: 0 反映的是话题的年龄,不是它的健康度。 目录条目中最久的一次 push 距今
39 天,所以 30 天的休眠阈值根本还触发不了。这已经不再是过去那种
采样偏差——枚举现在覆盖整个话题,而不是「最近更新的那一页」——但这个数字仍然说明
不了长期维护情况,因为这个生态里还没有任何项目有时间沉寂下来。

inconclusive 有 5 个(0.0%),这是扫描本身的局限,不是对那些仓库的判定。
失效扫描与探针共用同一份每小时 API 配额,配额耗尽的那次运行会如实报告「没查成」而不是
去猜。拒绝阈值是 40%,所以这次仍然发布了;读者应把失效表理解为「覆盖了实际能查到的
那些条目」。

失效扫描与探针一样是增量的,原因相同:逐条重扫每次要为每个目录条目花掉 2 次 API
调用,且随目录增长——占到每小时配额的 85%,并让一次定时运行以 45.4% inconclusive
被直接拒绝。现在每次只检查一个有界批次(最旧的优先),其余沿用已存结果,所以本表
中的某个状态可能来自比上面那些数字更早的一次运行。

被判定为失效的 731 个条目(inconclusive 不是失效,已排除):

| 条目 | 状态 |
| --- | --- |
| 1HelloMan1/dsh-stats-dashboard | archived — repository is archived |
| Agents365-ai/dsh-vision-plugin | archived — repository is archived |
| an4nsi/dsh-fork-view | archived — repository is archived |
| brunhildzhou/dsh-all-warmup | archived — repository is archived |
| Bryan-cmf/dsh-skill-gate | archived — repository is archived |
| Bryan-cmf/dsh-skill-trail | archived — repository is archived |
| ccch1mneyyy/dsh-working-activity | archived — repository is archived |
| chen731215-dev/dsh-tavern | archived — repository is archived |
| cherrchen/dsh-client-ui-details-host | archived — repository is archived |
| Dawn388887/dsh-fileview | archived — repository is archived |
| ddtcorex/dsh-maestro-devkit | archived — repository is archived |
| Diluka/dsh-side-session | archived — repository is archived |

……另有 719 个见 data/decay.jsonl。

复现

1. 采集带该话题的仓库
gh api "search/repositories?q=topic:dsh-plugin&sort=updated&per_page=100&page=1" > /dev/null

2. 三级契约探测
node scripts/probe-contract.mjs  data/contract.jsonl

3. surface 归因
node scripts/attribute.mjs  data/surface.jsonl

4. 可安装性(npm registry + 保留 scope 检查)
node scripts/installability.mjs  data/installability.jsonl

5. 对目录做失效扫描
node scripts/scan-decay.mjs  data/decay.jsonl

6. 每个门禁的负例控制
node scripts/test-gates.mjs
node scripts/test-monorepo.mjs
node scripts/test-inconclusive.mjs
node scripts/test-decay.mjs
./scripts/test-fetch.sh

scripts/test-gates.mjs 存在的理由是:不会失败的门禁不算门禁。它断言第 3 级
判定会拒绝空文件、纯空白、纯注释和散文文件,并断言保留 scope 规则会标记外部
owner、同时不误伤有权发布者、无关 scope 和形近 scope。两个门禁都带一个哨兵断言,
一旦规则被改成无条件放行就会失败;两者都通过注入缺陷并确认测试变红来验证过。

数据

| 文件 | 内容 |
| --- | --- |
| data/repos-raw.jsonl | 搜索 API 返回的仓库元数据 |
| data/contract-v3.jsonl | 三级契约判定 |
| data/surface-v3.jsonl | 带置信度的 surface 归因 |
| data/installability-v3.jsonl | npm 解析与保留 scope 判定 |
| data/catalog.jsonl | 合并、分类后的目录 |
| data/decay.jsonl | 每个条目的失效状态 |
| data/npm-manifest.jsonl | 每个已发布包声明了什么,与其仓库的对比 |
| data/ratings.jsonl | 成对比较得出的 Elo 评级,含每个条目的场次 |

搜索 API 单次查询最多返回 1000 条结果。scripts/enumerate-topic.mjs 先按 star 桶、
再按创建日期分片绕过这个上限,最终枚举到 15283 个唯一仓库——
即整个话题,不是样本。日期边界取自结果计数而非排序,因为这个搜索后端根本不支持
按创建时间排序。

相关项目

已有多个目录覆盖这个生态,各有取舍:

- AdamPlatin123/awesome-dsh-plugins
——运行级测试(装进 DSH、拉起本地模型、观察工具调用),通过本地 cron 而非
Actions 运行。是这个生态里最彻底的验证。
- Sunrisepeak/dsh-index——定时
发现 workflow,带 pnpm pack 校验和失效 pin 告警。
- wangshunnn/oh-my-dsh——每八小时
从 topic:dsh-plugin 刷新一次 registry,带 schema 校验。

本项目不在「单仓库深度」上竞争,且上面有两个项目在判据上领先于它:

- awesome-dsh-plugin/awesome-dsh-plugin
(6439 star)对每个 PR 运行投稿门禁(scripts/check-submission.mjs):树中
任意位置的 dsh.bundle、仓库年龄、commit 数。它的树遍历比本项目更严谨
——它把被截断的树或超出上限的 manifest 数视为未知而非「不存在」,而本探针
此前不这样处理。它还会解析 npm 发布状态(scripts/probe-npm.mjs),并通过
校验已发布包是否指回同一仓库来防止名称抢注。已有约 1300 份投稿经过它。
- omdsh-dev/dsh-plugin-check
对单个仓库应用 36 条判据——清单协议、patch 结构、构建布局、TypeScript
导入、row-id 注册——远比这里公布的三级契约更细。

本项目仍然独有的部分:

- 非投稿式覆盖。 上述两个项目检查的是被提交给它们的仓库。本项目探测的是
话题范围内的样本,无论有没有人投稿,因此它测量的是生态本身而不是它的收件箱。
- vendored harness 检测。 本样本中 5 个仓库原样携带 @deepseek-ai/dsh-base 且
fork: false。它们靠内含 DSH 自己的包通过契约检查,而按 owner 查或按 fork
查都发现不了。
- 拒绝猜测的失效扫描。 scripts/scan-decay.mjs 报告 gone、archived、
dormant 和 unbundled,并把探测不成功的情况报为 inconclusive 而不是失效,
因为每一个失效状态都会促使他人删除条目,而证据可能并不支持这个删除。
- 公布整个样本的分布而非精选列表:判定占比、按 star 档的合格率、以及全部
15923 个被探测仓库的可安装性,探针脚本一并提供。

更深入的单仓库审计已经存在,但未发布——见
AUDIT-EXPERIMENTAL.md。它的首个实现在每一个被测仓库上
都产生了误报,因此在通过人工标注的固定样本集之前,不会有任何判据上线。

许可证

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群