最后更新 2026-08-16 · 数据抓取于 2026-08-16
DeepSeek Harness(DSH)是一个 agent 框架,它的插件模型不是「宿主留几个扩展点给你」,而是宿主自己就由插件组成。一个插件是一个在 package.json 里声明了 dsh.bundle 的 npm 包,里面导出 apply(ctx, config);它能注册模型可调用的工具、注册一个由 schema 直接渲染出来的设置页、往界面的插槽里挂组件,也能整个替换掉某项内置能力。正因为没有二等公民,社区在几天内就把它铺满了。
这份目录的价值不在于全 —— 全量镜像既维护不动也帮不到人。它的价值在于有一条你能自己复算的收录规则,以及按「解决什么问题」而不是按名字排列。想接入模型而不是装插件,看 在 DeepSeek Harness 里跑任意模型 —— 那条路不需要写插件。
全部数字抓于 2026-08-16,来源是 npm 的公开搜索接口(text=keywords:dsh-plugin,分页取满 795 条),每一行都可以自己跑一遍复算。
| 指标 | 数值 |
|---|---|
| 带 dsh-plugin 关键词的 npm 包 | 795 |
| 其中声明了公开仓库 | 608 |
| 其中有任何周下载记录 | 56 |
| 周下载量 ≥ 100 | 52 |
| 周下载量 ≥ 1000 | 16 |
| 全部包的最近发布日区间 | 2026-08-13 — 2026-08-16 |
| 本页收录 | 44 |
换句话说:每 14 个挂着这个关键词的包里,大约只有 1 个有人下载过。这不是在批评谁 —— 一个五天大的生态本来就该是这个形状。它只是说明,面对 795 这个数字时,「有没有人用」比「有没有」更值得先看一眼。npm 的下载统计有约一天延迟,所以抓取当天新发布的包会被低估。
取 npm 上带 dsh-plugin 关键词的全部 795 个包,筛出「有公开仓库地址」且「周下载量不少于 100」的,命中 45 个;其中一个实际上是给另一个 harness 写的、关键词挂错了,人工剔除,剩 44 个。条目描述由我们依据各包自己的 npm manifest 重写,中英各写各的。我们没有逐个跑过这些插件 —— 这是目录,不是评测,收录不等于推荐。
DeepSeek 系列模型不吃图,所以 DSH 开箱状态下看不了截图、设计稿、报错弹窗。这是整个生态里被重复实现最多的一类 —— 每一个都在解同一个缺失能力:把图转给另一个有视觉的模型。
视觉 + computer use 运行时,保留可审计的原图,能回头核对模型当时到底看到了什么。
加一个 inspect_image 工具:把本地图片或图片 URL 发给任意 OpenAI 兼容的视觉端点,把看图结果带回当前回合。
把图片路由给视觉模型,同一个插件里还带图片生成和编辑。
DSH 自带的模型来源只有两个:DeepSeek 自己,和一个通用的 OpenAI 兼容适配器。其余一切 —— Claude、GPT、Gemini、你已经在付的订阅 —— 都得靠插件或那个适配器接进来。
走独立 OAuth 流程,把已有的 ChatGPT Codex 订阅用在 DSH 里,而不是另外按量买 key。
同一个问题的另一种做法:ChatGPT OAuth 加 Codex 模型路由。
795 个包挂着同一个关键词,却没有官方注册表 —— 于是"找插件"本身在几天内长成了一个插件品类。下面有几个能直接在界面里替你装别的插件。
让 agent 在对话里直接搜 GitHub 的 dsh-plugin topic 并排序,把"找插件"这件事留在会话内。
在设置页浏览同一个 GitHub topic,按 star 排序,每个仓库都给出安装方式。
替你调 dsh plugin 命令,在 profile 里装、删、更新插件。
DSH 插件在 harness 进程内运行,拿得到 harness 拿得到的一切 —— 没有沙箱。这一类之所以存在,是因为"装一个陌生人的 npm 包"是真实的风险面,它们把盲装变成知情安装。
装之前先做静态体检:标出可疑模式、越权的文件路径、没检查过的依赖。
给"自我修改后重启"上硬闸:只有在该 git HEAD 上构建通过,harness 才允许起回来。
在审批请求前放一个只读的第二模型当审查员,风险动作在你点确认前先被过一遍。
DSH 默认只绑本机回环。想用手机、另一台机器、或 SSH 进远端工作区来指挥 agent,都得靠插件。
扫码就能用手机操作电脑上正在跑的 DSH,局域网和公网都行。
用密码或密钥走 SSH 连上去,再在远端机器上选工作区。
重写 Host 和 Origin,让 DSH 不在 localhost 上提供服务时设置页仍然可用。
侧边栏入口加内嵌管理控制台,网关作为独立 systemd 单元随 DSH 自动启停。
把整个 DSH 网页界面塞进 Chrome 侧边栏,agent 就贴在你正在看的页面旁边。
DSH 本体是一个从终端启动的网页界面。早期插件里有很大一批在把它包成"双击就能用"的东西,或者补上只有 Windows 才会踩的终端问题。
Windows 上的 Electron 桌面外壳,双击启动,不用记命令。
原生 Windows computer use 工具,agent 直接在真实桌面上动鼠标键盘。
极简终端界面,不开浏览器也能用 DSH。
跟着会话事件动的桌面伙伴 —— 这个生态第一周就长出了桌宠。
桌面式的项目与 AI 工作台布局,适合想要多窗口而不是一条聊天流的人。
内置文件工具是刻意做薄的。这一类在替换或扩展它:哈希锚定的编辑(不会静默改错行)、死代码分析,以及给插件作者用的真实测试框架。
哈希锚定的读、改、批量改和撤销:每一行带哈希,编辑不会静默落到错误的行上。
给插件作者的真实宿主生命周期测试:让插件跑在真的 harness 上,而不是 mock 一个 context。
把死代码检测做成 agent 工具,模型可以直接问"哪些代码不可达",不用猜。
本机回环的 WebSocket 桥,把某个应用前端自己的工具映射给 agent。
上面那座桥的客户端 SDK:应用把自己的工具注册给 DSH。
DSH 没有内置联网能力。搜索 provider 和真实浏览器驱动,是 agent 看见互联网的方式。
给没有原生联网能力的模型补上网页搜索、X 搜索和页面抓取 —— 生态里下载量第三。
agent 驱动的、看得见的真实浏览器,跨会话共用,装上即用,不用另配驱动。
每个会话都是干净的。这一类把 agent 学到的东西跨会话留下来,也让你按工作区固定一套人设。
人设卡加长期记忆:在设置页写好人设,可按工作区固定,也可给单个会话单独切换。
分层记忆流水线:捕获、结构化提取、画像,再把召回结果自动注入上下文。
把一次 agent 输出变成能交给别人的东西:幻灯片、PPTX、公众号草稿、设计规格、阅读摘要。
从长文档里抽核心论点、论证结构和关键证据,而不是给一段平铺的摘要。
用声明而不是提示词措辞来驱动 UI 生成,同一份规格得到同一套布局。
经语义中间层生成可编辑的 PPTX,打开是原生形状而不是一张张图。
把 markdown 转成排好版的微信公众号草稿,样式一并处理。
确定性的学术写作护栏,防止模型把数字和引文一起改掉。
把 DSH 和外部连起来的接缝 —— 别的 agent 生态、ACP 客户端、你的音箱、某个应用的前端。
一个多宿主插件加 CLI,覆盖服务器连接、技能、MCP 和低代码交付,DSH 是它支持的宿主之一。
管理本地技能,并且能在共享的 agent 技能生效前先看清楚它是什么。
增强版 ACP 服务端,支持块级流式,并带上用量遥测(含缓存命中数据)。
会话结束时播一段内置提示音 —— 本表里最小的一个,适合当作读源码入门的第一个例子。
# install into the profile behind the browser UI
dsh plugin --profile web add dsh-better-edit
# see the composed plugin tree without booting DSH
dsh --profile web --dump-config静态安装的插件在 harness 进程内运行,harness 够得到的它全都够得到:你的文件系统、你的 shell、你配在设置里的 API key。没有沙箱。这不是 DSH 做得不好,而是「插件能力和内置能力完全对等」这个设计的必然代价 —— 换来的是第三方能做的事和官方一样多。会话中现写的动态插件走的是另一条路:审批门控,一次确认只授权当前这版代码,双重确认才授权该插件的后续版本。上面「体检与护栏」那一类读的是打包结构和静态特征,能筛掉一装就废的包,但请不要当成安全背书。
目录里最大的两类 —— 视觉和接入别家模型 —— 存在的原因是同一个:DeepSeek 系列模型只吃文本,而 DSH 自带的模型来源只有 DeepSeek 自己和一个通用 OpenAI 兼容适配器。所以视觉路由、第二模型审查、记忆抽取、搜索摘要这些插件,几乎都要你另外给一个端点和一把 key。
它们大多接受任意 OpenAI 兼容的 base URL,这意味着一把网关 key 就能同时喂全部,不必给每家厂商单开账号、各充一笔预付款。APIMODELS 就是这样一个网关:一个端点后面挂着 Claude、GPT、Gemini、Grok、DeepSeek 等 60 多个模型,共用一份余额按量结算。
三个文件就够:一个声明了 dsh.bundle 的 package.json、一个描述你贡献那一层的 cordis.patch.yml、一个导出 name / inject / apply(ctx, config) 的 ES 模块。在 apply 里用 ctx.tools.register 注册模型可调用的工具,用 ctx.settings.register 交出一份 schema 就白得一个设置页(界面由 schema 渲染,所以页面上的选项永远不会和你的代码接受的参数漂移)。一条硬规矩:每项贡献都要交回 disposer,否则停用插件时残留的监听器会慢慢把进程拖坏。
一个 package.json 里声明了 dsh.bundle 字段的 npm 包。DSH 建在 Cordis 插件框架上,harness 自己的功能 —— 模型适配器、凭据存储、设置存储、网页界面 —— 全都是同一种插件。所以第三方插件能做的事和内置的一样多:注册模型可调用的工具、加设置页、挂前端界面,或者整个替换掉某项能力。
执行 dsh plugin --profile web add <包名>。插件是按 profile 装的,不是全局;网页界面对应的是 web 这个 profile。这条命令会把参数转发给 profile 目录里的 pnpm,凡是声明了 dsh.bundle 的包都会被自动加进该 profile 的 bundle 列表。
把它当成"以你自己的权限运行一个陌生 npm 包"来对待,因为事实就是如此:插件在 harness 进程内运行,harness 够得到的它都够得到 —— 你的文件系统、你的 shell、你的 API key。静态安装的插件没有沙箱。会话中现写的动态插件走的是审批机制:一次确认只授权该版本代码,双重确认才授权该插件的后续版本。上面列出的体检类工具读的是打包结构和静态特征,能过滤掉一装就废的包,但不等于安全背书。
没有。截至 2026-08-16 官方没有注册表,这正是"找插件"本身变成一个插件品类的原因 —— 社区做了好几个能在 DSH 界面内安装其他插件的市场,而事实上的索引是 npm 的 dsh-plugin 关键词加 GitHub 的 dsh-plugin topic。
因为 DeepSeek 系列模型只吃文本。DSH 开箱状态下看不了截图、设计稿、报错弹窗,所以有一整类插件的全部工作就是把图转给另一个多模态模型再把结果带回来。它们无一例外都需要一个能收图的模型,也就是在 DSH 之外还要有一个端点和一把 key。
要调模型的都需要 —— 视觉路由、第二模型审查、记忆抽取、搜索摘要,全都要打一个外部端点。它们大多接受任意 OpenAI 兼容的 base URL 和 key,所以一把网关 key 就能同时喂它们,不必给每家厂商单开账号。APIMODELS 就是这样一个网关:一个兼容 OpenAI 的端点后面挂着 Claude、GPT、Gemini、Grok、DeepSeek 等 60 多个模型,共用一份余额结算。
三个文件。一个 package.json,声明 dsh.bundle(指向你的 patch 文件)和 dsh.plugin 元信息;一个 cordis.patch.yml,描述你这个包贡献的那一层;一个 ES 模块,导出 name、可选的 inject(硬依赖服务列表)和 apply(ctx, config)。在 apply 里注册你要贡献的东西 —— ctx.tools.register 注册模型可调用的工具,ctx.settings.register 注册一个直接由你的 schema 渲染出来的设置页,slots 挂前端界面。每一项贡献都要交回 disposer,这样停用插件才是真的停用。
先跑 dsh --profile web --dump-config:它不启动就打印合成后的插件树,能立刻看出你的插件那一层到底有没有进去。层不在,常见原因是包根本没声明 dsh.bundle、patch 行里写了安装后解析不到的名字、或者声明了 patch 文件却没打进发布的 tarball。层在但功能没有,就去看这个插件是不是用 inject 声明了某个你这个 profile 里没挂载的服务作为硬依赖。
数据抓于 2026-08-16,来源是 npm 公开搜索接口:取所有带 dsh-plugin 关键词的包,筛出有公开仓库且周下载量不少于 100 的。这条规则在 795 个里命中 45 个,其中一个其实是给另一个 harness 写的、关键词挂错了,人工剔除后剩 44 个。条目描述是我们依据各包自己的 manifest 重写的,我们没有逐个跑过,收录不等于推荐。下载量是快照,npm 统计约有一天延迟,所以抓取当天发布的包会显得偏低。