如何开发 DeepSeek Harness 插件:Cordis、契约与发布
发布时间:2026-10-06 | 浏览:1
DeepSeek Harness(dsh)的扩展方式只有一种,而且这一种就是全部:插件。想改变 harness 的任何行为——新工具、别家的模型供应商、另一种存储后端,甚至换一个 Agent 循环——你写的都是插件。本指南带你走完从克隆 monorepo 到以 dsh-plugin 话题发布的完整流程。
没有特权内核:为什么插件就是扩展的全部
大多数可扩展软件都会画一条线:内核干正事,扩展在边上做点装饰。DeepSeek Harness 把这条线擦掉了。它的口号"Everything is a Plugin"是架构,不是营销:模型路由、工具、沙箱、会话处理、Web UI、乃至 Agent 循环本身,全部以插件形式发布。官方文档说得直白: 没有需要打补丁的特权内核 。
这改变了"写插件"的含义。你的插件不是挂在一个权限清单比内置组件短一截的受限扩展 API 上,而是和内置插件并排挂载、权力完全相同。任何能力都可以在配置里选择、替换或扩展,不用碰 DeepSeek Harness 的源码。所谓内置包,只是默认的那套组合——恰好由 harness 自带的第一方插件,也是你能找到的最好的参考实现。
实际的推论是:动手之前,先去 插件生态目录 看看已经有什么——MCP 管理器、模型切换器、记忆工具、UI 增强——顺便校准一下"一个完成度合格的已发布插件"长什么样。
上面的一切都建立在 Cordis ——DeepSeek Harness 底层的元框架——之上。DeepSeek 的研究论文说 Cordis 为"时空可组合性"而设计,这个拗口的词说的是件具体的事:插件在系统维度(空间)和时间维度上都可组合,即可以在运行时加载、卸载、重组,而不是在构建时焊死。正因如此,"在配置里换掉 Agent 循环"才是一个真实操作,而不是一次 fork。
对插件作者来说,Cordis 就是你要对着写的那份契约。我们刻意不在这里复述它的 API——dsh 是快速迭代的开发者预览版,权威、最新的契约在官方 开发指南 里。打开文档之前,先建立这个心智模型:一个 dsh 插件是一个可组合单元,声明自己提供什么,挂载进运行中的系统与其他插件并肩工作,也能同样干净地被摘下来。
harness 里的每一项能力都可替换。只要某个东西在做事,插件就能换一种做法。
把请求路由到 DeepSeek,或者在同一接口后面接任何其他公司的模型。
给 Agent 添加新能力,或改写内置工具的行为。
把可复用的知识打包;dsh 兼容 Anthropic 风格的 SKILL.md 技能。
改变对话的创建、恢复与管理方式。
替换 Agent 执行命令的隔离环境。
替换 harness 持久化数据的位置和方式。
重塑 Agent 工作时的迭代模式。
控制任务何时、如何排队与执行。
Web UI 也是插件——给它加设置页,或者干脆整个换掉。
核心的推理-行动循环也不过是又一个可替换的插件。
四步从空目录走到已发布插件。如果你连 dsh 都还没跑过,先做一遍 基础安装 ,感受一下一个正常工作的 harness 是什么样。
1 克隆 monorepo 并从源码构建 依次执行 git clone https://github.com/deepseek-ai/deepseek-harness.git、cd deepseek-harness、pnpm install、pnpm run build。用 pnpm dsh web 启动本地构建,确认 Web UI 在 http://127.0.0.1:3080 起来了。需要 Node.js ^22.19.0 或 >=24.0.0;仓库通过 Corepack 钉定 pnpm 11.7.0。构建不顺利的话,看我们的故障排查页。
克隆 monorepo 并从源码构建
依次执行 git clone https://github.com/deepseek-ai/deepseek-harness.git、cd deepseek-harness、pnpm install、pnpm run build。用 pnpm dsh web 启动本地构建,确认 Web UI 在 http://127.0.0.1:3080 起来了。需要 Node.js ^22.19.0 或 >=24.0.0;仓库通过 Corepack 钉定 pnpm 11.7.0。构建不顺利的话,看我们的故障排查页。
2 研读文档和内置包 先读 docs/development.md 和架构文档——它们定义了代码层面的插件契约。然后把 packages/ 当作你的参考书:core、llm、mcp、sandbox、context、plan、goal(以及另外几十个)全都是按你即将使用的同一套约定写成的真实插件。内置包不是一个单独的特权阶层,而是你马上要写的东西的现成范例。
先读 docs/development.md 和架构文档——它们定义了代码层面的插件契约。然后把 packages/ 当作你的参考书:core、llm、mcp、sandbox、context、plan、goal(以及另外几十个)全都是按你即将使用的同一套约定写成的真实插件。内置包不是一个单独的特权阶层,而是你马上要写的东西的现成范例。
3 对着本地构建开发 把插件和 harness 放在一起开发,这样可以随时挂载、通过 Web UI 或 headless 模式验证、快速迭代。插件是运行时组合的,所以加载和卸载你的作品不需要重建整个世界——小步循环开发,每加一个能力就验证一个。
把插件和 harness 放在一起开发,这样可以随时挂载、通过 Web UI 或 headless 模式验证、快速迭代。插件是运行时组合的,所以加载和卸载你的作品不需要重建整个世界——小步循环开发,每加一个能力就验证一个。
4 发布并打上 dsh-plugin 话题 把插件推到公开的 GitHub 仓库,加上 dsh-plugin 话题——这是官方的可发现性约定。社区 awesome 列表会索引这个公开话题,所以一个打了标签、README 写清楚的仓库,就是插件触达用户的方式。记得注明你测试所用的 harness 版本——预览版更新很快。
发布并打上 dsh-plugin 话题
把插件推到公开的 GitHub 仓库,加上 dsh-plugin 话题——这是官方的可发现性约定。社区 awesome 列表会索引这个公开话题,所以一个打了标签、README 写清楚的仓库,就是插件触达用户的方式。记得注明你测试所用的 harness 版本——预览版更新很快。
构建报错通常是环境问题——Node 低于 ^22.19.0,或没为钉定的 pnpm 11.7.0 启用 Corepack。我们的 故障排查指南 覆盖了常见的失败情况。
泼盆冷水:你是在 v0.1 预览版上开发
DeepSeek Harness 于 2026 年 8 月 13 日以 v0.1 开发者预览版发布(npm 的 latest 是 2026 年 9 月 22 日发布的 0.1.5-rc.3,0.1.7 候选版在 next 上,预览版在 alpha 上),项目用大写字母警告: 一定会有破坏兼容性的变更 。插件契约确实会在版本之间变:光是 0.1.5 就移除了 ctx.agent (调用方要显式传入 Agent),把 Inbox 改成了只能通过 agent.inbox 访问的类型接口,还把 Web 的 conversation 插槽挪到了 main 面板键下面。包名同样会动:rc.8 给 packages/experimental 下的所有包加了前缀, Agent Teams 工具 就是这样变成 @deepseek-ai/dsh-experimental-tool-agent-team 的。把开发时所用的 harness 版本钉死,写进 README,并关注 GitHub Discussions,免得哪次破坏性发布让你措手不及。这是早期入场的代价——回报是生态的惯例仍在形成,其中一部分就由现在发插件的人来定。
预览版时代的开发,一定会撞上没写进文档的边角。答案通常在这些地方。
GitHub Discussions
官方支持渠道——破坏兼容性的变更也在这里讨论。预览版迭代期间请保持关注。
官方社区聊天,开发过程中想快速来回沟通就去这里。邀请链接在仓库 README 里。
awesome-deepseek-harness
社区精选列表,数据来自 dsh-external/hub 和公开的 dsh-plugin 话题。
awesome-dsh-plugin
另一份精选插件列表,以中英双语维护。
关于开发与发布 DeepSeek Harness 插件的快问快答。
写 dsh 插件之前需要精通 Cordis 吗?
你需要理解 Cordis 在做什么,不需要从零精通它。Cordis 是 DeepSeek Harness 底层的元框架——为 DeepSeek 论文所说的"时空可组合性"而设计,即插件可以在运行时加载、卸载和组合。实践中最快的路径是研读官方开发指南(docs/development.md),并把 monorepo 里的现有包当作参考实现来读,从能跑的代码里吸收 Cordis 的约定。
dsh 插件用什么语言和运行时?
DeepSeek Harness 是一个 Node.js/TypeScript monorepo,插件开发就在这个生态里进行。仓库要求 Node.js ^22.19.0 或 >=24.0.0,并通过 Corepack 钉定 pnpm 11.7.0。克隆 monorepo,执行 pnpm install 和 pnpm run build,然后对着本地构建开发。
插件真的能替换整个 Agent 循环吗?
真的——按官方文档,连 Agent 循环本身都是插件。没有需要打补丁的特权内核:模型、工具、技能、会话、沙箱、存储、循环、调度、UI 全是插件,都能在配置里选择、替换或扩展,不用改 DeepSeek Harness 源码。你的插件和内置插件并排挂载,权力相同。
发布之后,别人怎么找到我的插件?
给插件仓库打上 dsh-plugin GitHub 话题——这是官方的可发现性约定。awesome-deepseek-harness(索引公开的 dsh-plugin 话题)和 awesome-dsh-plugin(中英双语)等社区精选列表会收录打了标签的仓库,所以这个话题标签就是你的插件进入生态索引的入口。
我的插件会在版本更新时坏掉吗?
有可能,而且项目方说得很直白。DeepSeek Harness 于 2026 年 8 月 13 日以 v0.1 开发者预览版发布,并明确警告:"一定会有破坏兼容性的变更"。钉定插件所针对的 harness 版本,关注 GitHub Discussions 的变更公告,并做好在契约稳定之前持续更新插件的准备。
想看代码层面的契约? 阅读官方开发指南
官方开发指南覆盖了代码层面的插件契约、monorepo 约定和构建流程。读完它、克隆仓库、研究内置包——然后先发布一个小东西。