前两篇我干了两件事:把 DeepSeek Harness(下称 DSH)拆开看了个遍,又亲手写了插件。这一篇收尾,回答三部曲的最后一个问题:插件从哪来?
答案是刚冒出来二十来天的 dsh-market——DSH 的应用内插件市场。装上它之前,我先看到了三条新闻排成一排:9 月 1 日,AIR 融了 5,000 万美元,业务是帮企业盘点 agent 实际装了哪些 skills 和插件、持续审计并拦截未授权行为;9 月 2 日,HiddenLayer 融了 1 个亿,干的是 AI 安全市场;同一天,GitHub 上一个叫 dsh-market 的仓库涨到了三千星,README 第一行写着“2300+ plugins, growing daily”。
这行 README 还没来得及更新——我当天从市场数据源实拉,数字已经是 2,937。一边是投资人真金白银押注“agent 供应链需要有人把关”,一边是一个没人把关的市场,光 8 月就以日均 150+ 的速度灌进了 2,840 个插件。这个剪刀差,就是我今天要实测的东西。
先说结论:市场本身做得意外地规矩,但“规矩的市场”和“有人把关的市场”是两回事。2,937 个插件,一半以上下载量为零,上架零门槛,审核这个词在整条链路上不存在。逛完这一天,我觉得 AIR 这类公司融的钱至少在 DSH 这个生态里,一时半会儿还花不出去——因为这里压根没有“审”的对象和标准。
一、装市场的三堵墙
老读者知道,我上一篇装 DSH 本体时被 npm 坑了大半个小时。这次装市场,官方 README 给的姿势是一行命令:
dsh plugin--profilewebadddshmarket我在 Git Bash 里敲下去,报错:pnpm 不是内部或外部命令。这个dsh plugin子命令在 Windows 上内部会经 cmd 子进程转发给 pnpm(Git Bash 里看到的就是 cmd 风格的报错文案),而我机器上的 pnpm 是 corepack 按需拉起的,没有全局驻留——dsh 找不到它,直接躺平。
绕过的方式不体面但有效:自己进 profile 目录装。
cd~/.dsh/profiles/web&&corepackpnpmadddshmarket装完第二堵墙来了。重启 dsh,市场没出现——因为装上的是个 npm 包,不是挂载的插件。回想上一篇的知识:DSH 没有独立的配置语言,一个 profile 的能力就是它组合树里的那几行插件行。npm 装包只是把货搬进了仓库,要让它在组合树里占一行,得往cordis.patch.yml里写三条(这个写法不是我发明的,dshmarket 包里自带一份一模一样的 cordis.patch.yml,照抄即可):
-insert:-id:dsh-marketname:'dshmarket'写的时候还栽了个跟头:patch 文件里原来躺着一个空数组[],我在后面追加插入段,启动直接报解析错误——YAML 里数组就是数组,不能一半是[]一半是列表项。把[]删掉才通。这种小坑写出来不值钱,但不写,下一个照抄的人得再踩一遍。
第三堵墙最隐蔽。市场重启后端点全 404,查了半天发现是 peer 依赖缺失:web profile 的 pnpm-workspace.yaml 里写着autoInstallPeers: false,而 dshmarket 的三个 peer(宿主 cordis 框架、settings、schema 库)一个都没装上。这个坑最隐蔽的地方在于:插件加载失败没有任何报错日志,它就是安安静静地不在——你是去调/dsh-market/status端点、发现连路由都不存在,才倒推回去查依赖的。
同一条根上还长着另一颗雷。我这天重装了一次 DSH 本体(上一篇的临时目录被清理了),新装完直接抛 ERR_MODULE_NOT_FOUND——主包同样把核心依赖全声明成 peer,一样指望宿主替它装齐。一个 rc 阶段的项目,依赖声明策略激进到“默认假定宿主会替我装齐一切”,装的时候翻车点全在你这边。这个观察先记下,第四节聊市场本体工程质量时还会回来。
三堵墙过完,市场起来了。浏览器里多了一个“插件市场”入口,卡片流、搜索框、分类筛选、双语描述、截图轮播、评论区——像模像样,App Store 的皮相是学到了。接下来看里子。
二、2,937 个插件的结构,拉出来算账
市场的数据源不是它自己,而是 awesome-dsh-plugin 这个精选仓库——每天由 CI 刷新星数和 npm 映射,市场每次打开都实时拉取,故意不留本地缓存(理由写在文档里:一个每天生长的目录,过期答案不是降级答案而是错误答案)。这意味着我可以直接从数据源拉全量清单来算账。当天实拉:2,937 个插件。
几个我认为值得记下的数字:
分类结构:23 个类目。ui(476)、tools(379)、dev(239)、session(185)、workflow(173)、usage(163)、memory(136)、skill(125)、notify(122)、model(120)、theme(105)、security(100)……往下还有 vision、git、browser、voice、wsl。最扎眼的是那个孤零零的 agi 类,只有一个插件:dsh-memory,自称“白箱 AGI 架构探索:元认知自我认知循环、知识飞轮、世界模型、自举纪律”。分类体系很健康,健康到能容下一个连它自己都不知道该归哪的插件。
供给的头部集中:1,920 个 owner 贡献了 2,937 个插件,头部是 omdsh-dev(37 个)、JohnXu22786(35 个)、一串纯数字 ID 的账号(173787247,30 个)。下载量榜首是市场自己(约 30 万次),然后是 DSH-better-sidebar、task-board、remote-web-ui 这些 UI 件。而星数榜首很有意思:archify(4.2 万星)、OpenViking(3.5 万星)、hindsight(2.2 万星)、腾讯 WeKnora(2.1 万星)——全是大厂主项目“顺手”在 DSH 上开了个插件入口,卡片星数同步自主仓。真正的“原生插件”星数中位数是3。
一半是零蛋:2,937 个插件里,1,588 个(54%)下载量为零,238 个连星都是零。8 月 25 日之后上架、至今零下载零星的插件有 152 个——摊到 8/26 至 9/3 这 9 天里,平均每天十六七个新插件上架即沉底。速率对比更直观:整个 8 月市场上架了 2,840 个插件,按 8 月 14 日建仓算 18 天,日均约 158 个;9 月 1 日到今天只新增了 97 个(2,937 − 2,840),日均 32 个。爆发期已经过去,但库里 97% 的存货就是那时候灌进来的。
这组数字指向同一个结论:一个典型的供给先于需求的市场。作者端上架热情高涨(门槛为零,提个 PR 就进精选清单),用户端的注意力根本来不及分配。54% 零下载不是失败指标——它就是长尾的本来面目,只是这个长尾长在了 agent 插件这种用户本该极度谨慎的品类上。
三、抽三个插件,连代码带账一起审
数字看完,我挑了三个插件做源码抽检。挑法:一个头部(modlens,星数最高的原生插件之一,3,829 星,14.5 万下载)、一个腰部(dsh-context,1,235 星,5.3 万下载)、一个长尾零蛋(dsh-keep-awake,0 星 0 下载,上架五天)。
先说长尾那个,反转了。dsh-keep-awake,功能是“agent 运行时防止系统休眠”——Windows 上调 SetThreadExecutionState,macOS 上 caffeinate,Linux 上 systemd-inhibit。999 行代码,零依赖,我逐行扫过去:零网络调用。整个插件就是盯着 DSH 的 agent 状态,该锁就锁该放就放,外加一个本地设置页。它 0 星 0 下载不是因为做得差,是因为上架五天没人看见。这种插件躺在 54% 的零蛋堆里,是市场的损失,不是它的。
腰部的 dsh-context,做上下文仪表盘(上下文构成、趋势、事件、/context 命令),35 个源文件 5,659 行。生产代码的外联 URL 我全扫了一遍:指向 DeepSeek 官方文档的四条(算 token 价格用的),npm 镜像两条(查自己版本号),没了。不碰你的 key,不回传任何东西。
头部的 modlens 最值得细说。它是给纯文本模型装眼睛的:DeepSeek-V4 旗舰对话模型和 GLM-5.3 完整版都不带视觉——视觉能力分别在 V4-Vision 和 GLM-5.3-Flash 上,后者还是 GLM 系列第一个原生多模态模型,完整版权重里根本没有视觉模块。modlens 把粘贴进对话的图片 base64 之后发给一个 vision provider,再把返回的 JSON 结构化描述喂给模型。这个设计本身没什么可挑的,细看它的工程反而有点感动:key 轮换(认证失败、限流、配额用尽自动切下一个)、provider 级故障转移、图片拉进内存前有大小上限。它甚至会在文档里提醒你“每一跳都会把你粘贴的图片上传给你配置的 vision provider”。
但请注意这个架构的含义:你粘贴的每一张图,都会离开你的机器。发给谁取决于你配了哪个 provider——官方推荐的是“免费无 key 通道”Antigravity CLI(装它的方式是往 shell 里 pipe 一个安装脚本),或者一个免费 Gemini key。这两个“免费”选项对一个要读你屏幕截图的插件来说,信任模型完全不同:后者是 Google 的 API 条款,前者是一个我没有任何理由信任的第三方 CLI 的登录态。modlens 自己没有恶意,但“我该把这个插件放进我的 agent”和“我该让图片流经这个通道”是两个独立的信任决策,市场把它们打包成了一个“安装”按钮。
三个抽检,零恶意。但样本量 3/2,937,而且是我挑着看的——我天然会跳过描述含糊的、名字奇怪的。这个“挑”的动作,就是审核本身,而它现在只发生在用户这一侧。
四、市场自己做得怎么样
公平起见,得说市场本体是我这一天里见过的工程质量最高的 DSH 社区项目。它不是套壳商店,31 个文件、41 个 lib 模块,翻它的源码能看到一整套防御性设计:
- 安装源白名单:只装 awesome 精选清单里列的,别的来源一律拒绝
- 构建脚本默认封锁(pnpm 10+ 的机制),要放开得你逐包手动批准
- 装 UI 插件前会弹提示,告诉你这东西跑在浏览器侧
- 备份导出前警告“里面可能有你 profile 配置里的凭据”
- 网络模块专门处理了“Node 的 fetch 不理会 HTTP_PROXY 环境变量”这种坑:注释里写了他们在 Node 25 上实测的过程——undici 包的 fetch 和 globalThis.fetch 是两个 undici 实例,只有前者能走代理。这段注释我看了三遍,教科书级的
- 日志导出会脱敏(家目录路径和凭据形状都打码,“never sent anywhere”——我 grep 了全部 lib,确实没有遥测)
甚至有个设计细节让我笑了:它有个“AI 修复”按钮,把诊断信息拼成 prompt 复制到剪贴板让你发给一个新会话,并且 prompt 的第一句话是让 agent 先自检“你是不是正在跑这个 profile 的 harness 本身”——如果是,就禁止它改动活着的组合、禁止升级重启,只能写一对幂等的 apply/rollback 脚本让你自己在外部终端跑。一个插件市场,给“用 AI 修 AI 工具”这件事设计了防爆仓机制。
不过第一节那笔账得在这里结。市场本体的防御性设计讲究到这个程度,它自己的 npm 包却照样踩在同一颗雷上:dshmarket 把宿主 cordis、settings、schema 库三个依赖全声明成 peer,指望宿主的 autoInstallPeers 替它装齐——我装市场时撞上的“静默 404”,就是市场自己埋的。它防得住来源、防得住构建脚本、防得住凭据泄露,唯独防不住这个生态自己的打包约定。
但是——绕回主题——这一切防的都是“市场这个中介作恶或犯错”,没有一条防的是“插件本体作恶”。白名单清单的准入标准是“有人提了 PR、被合并了”,不是“有人审了代码”。README 自己把话说得很直白:Listing ≠ endorsement(收录不等于背书)。这句诚实的话,和 AIR 融的 5,000 万美元,正好是同一件事的两面。
五、三部曲收官:把三篇的观察拼起来
第一篇我说“Everything is a Plugin”一半是新范式一半是新命名,第二篇跑完插件开发我把判断往“新范式”挪了一格。今天逛完市场,我想把拼图的最后一块放上:这个架构的真正赌注,不在技术,在分发。
DSH 把 agent 的每个能力做成独立 npm 包,意味着插件可以像 npm 包一样海量供给——这解释了为什么一个建仓二十天的市场能有近三千个插件,npm 在 2010 年代早期也是这么爆发的。但 npm 的教训也是现成的:供应链攻击的第一站永远是那个没人仔细看的包。DSH 生态现在有三个层次的保护——市场本体的白名单和封锁机制、DSH 官方 cordis 预设那句“把这个预设下的会话当作 shell 访问来对待”的信任边界声明、以及……然后就没了。第三层本来应该是某种社区审核或签名体系,它还不存在;供给在 8 月以日均 150+ 的速度涌进来,9 月虽然回落到日均 30 个上下,但零门槛的口子一直开着。
我在第一篇埋过一个问题:20 万星里有多少会转化为长期贡献者,要看半年后。今天补一个更近的:2,937 个插件里,有多少会在 DSH 的第一个破坏性版本变更(官方预警过的那种)之后还能活下来?到那天,零下载的长尾会成批变成死代码,而市场对“死插件”同样没有任何标记机制。我猜 AIR 们等的其实就是这个时刻。
给后来者的实操建议,一句话版:装之前,把插件当 npm 依赖审,别当 App Store 的应用装。market 的“安装源白名单”挡得住野鸡来源,挡不住白名单里的坏蛋;它贴心地给每个插件卡片放了源码链接,用不用在你。
至于我,三个抽检插件里 keep-awake 和 context 我留下了——一个防休眠一个看上下文,都是纯本地、零外联、真解决问题。modlens 我犹豫了:它做得真好,但我贴进对话的截图会流经一个我不认识的免费通道。这个犹豫本身就是答案,先不装了。
下一篇,如果 DSH 出了那个预告中的破坏性版本,我会回来做个插件生态死亡率统计。那篇文章的数据,今天已经埋好了。
数据核验说明
本文全部数字来自 2026-09-03 当日实跑实抓:
- 插件总数 2,937、分类分布、星数/下载量/owner 统计:从市场运行实例的
/dsh-market/registry端点实拉当日全量 JSON(数据源为 awesome-dsh-plugin 每日 CI 刷新),本地 Python 统计。全量 JSON 当日统计后未存档,但 registry 端点可重拉,下列口径均可复算 - “原生插件”口径:剔除卡片星数明确继承自外部主仓的插件入口(大厂主项目“顺手”开设、星数与主仓同源者),余下独立插件仓库按星数取中位数 = 3;archify/OpenViking/hindsight/WeKnora 四个主仓星数为卡片同步值,当日未逐家复核
- 速率口径:8 月上架 2,840 个按建仓日 8/14 起 18 天均摊 ≈ 158 个/天;9 月新增 97 个(2,937 − 2,840)按 3 天均摊 ≈ 32 个/天;“上架即沉底”152 个为 8/26–9/3 共 9 天窗口,均摊 ≈ 17 个/天
- 三个抽检插件的源码审计:从 GitHub codeload 拉取三仓库当日 main 分支 tarball 解包,生产代码逐文件 grep 外联 URL 与进程/网络调用;keep-awake 999 行、context 5,659 行(35 文件)、modlens 9,730 行(45 文件)
- 市场本体工程观察:dshmarket npm 包 1.39.0(当日 registry 版本 1.40.0,实装为 1.39.0),lib 41 个模块源码实读
- dsh-market 仓库数据:3,062 星(9/3 实抓值,9/2 归档为 3,006,日增 +56)/MIT/最近提交 09-02,api.github.com 实抓;AIR($50M,9/1)、HiddenLayer($100M,9/2)融资信源为当日 TechCrunch
- 安装过程三堵墙(pnpm 不在 PATH、patch 层 YAML、peer 依赖静默缺失):本人机器实录,Win11 + DSH 0.1.1-rc.2 + pnpm 11.25.0
- 零下载口径:54% = 1,588/2,937;“上架即沉底”152 个 = 8 月 25 日后上架且当前星数 = 0 且下载量 = 0
关联
- 三部曲前篇:《DSH 上手实录》《DSH 插件开发实录》(同系列,CSDN 站内搜标题可见)