ByteNoteByteNote
DeepSeek 开源 agent 框架:把一切做成插件
字

字节笔记本

2026年10月6日 · 约 6 分钟读完

DeepSeek 开源 agent 框架:把一切做成插件

API中转
¥120

DeepSeek 把自家用了很久的 agent harness 开源了。仓库 deepseek-ai/deepseek-harness 采用 MIT 协议,TypeScript 编写,官方给它的定位只有一句话:everything is a plugin,一切皆插件。截至发稿,这个仓库星标已超过 24 万,fork 数 2.9 万,npm 上的 @deepseek-ai/dsh 包最新版本是 0.2.0-rc.2。装好 Node 22.19 以上或 24 以上版本,执行 npx @deepseek-ai/dsh web,就能在本机 3080 端口跑起它的 Web UI。

需要提醒的是,项目目前处于开发者预览阶段,官方在 README 里用大写字母写明:未来会有破坏兼容性的变更。它底层依赖的 Cordis 框架以 vendored 方式内置在仓库里,这份框架的设计来自一篇名为《A Programming Paradigm for Spatiotemporal Composability》的论文。

仓库就是一张插件地图

打开 packages 目录,34 个功能分组一目了然,每个 npm 包都以 @deepseek-ai/dsh- 开头。core 是产品的 API 主干,包含 session、system-prompt、tools、agent 和 agent-loop;往外一圈是能力层:llm 负责模型调用并内置 DeepSeek 的 provider,shell、fs、web、lsp、terminal 分别管命令执行、文件系统、联网、语言服务和终端会话,subagent 与 workflow 负责编排,compaction 负责上下文压缩。

治理类插件也很齐全:guard 管循环卫生和工具超时,interaction 管审批与权限,settings、credentials、identity 各司其职。有两个细节颇能说明项目气质:hooks 分组专门做了 Claude Code 与 Codex 的 hook 桥;self-modification 分组让 agent 能检查并挂载自己的插件,仓库里的 demo:cordis 演示的正是 agent 修改自己的运行时。此外还有 e2b 沙箱的原型、landlock-run 原生模块和一份 Python SDK。

DeepSeek Harness 的插件分层结构

一切皆插件,靠三条规矩撑住

插件多了,秩序从哪来?仓库的 AGENTS.md 写得很清楚。第一,注册即副作用:所有贡献都必须走 ctx.effect() 或 ctx.on(),注册器的 register() 要返回 disposer,保证卸载干净。第二,能力接缝必须三个角色齐备:Service Definition 定义接口,Service Provider 给出实现,Consumer 负责消费,缺一个都不算完整。第三,瀑布式监听必须调用 next() 把事件继续往下传,直接 return 会短路整条链。

其他规则同样偏工程保守派:配置错误要响亮失败,绝不静默跳过;跨边界传递的不透明 id 要用 branded 类型包一层;在同进程的静态类型边界上信任 TypeScript,运行时校验只留在解析器、配置、工具 JSON、持久化、进程和网络这些真正的边界上;默认值不允许藏在实现里,必须是显式的 resolve 步骤。

模型看得见的,必须能从日志重建

这是整份规范里最有 harness 特色的一条不变量:任何进入模型请求的内容,都必须能从会话日志重建,新增模型可见输入就必须新增会话事件。SessionEventMap 的成员默认按必需读取,构建时无法确定类型的日志会被直接拒绝,除非事件显式标注 ignorable。会话格式的 SESSION_FORMAT_VERSION 只在结构性变化时升级,预发布阶段固定为 0,不做兼容承诺。

主循环也被保护起来:新行为一律走文档化的扩展点,以插件形式加入;如果确实要动 agent-loop,必须同步更新架构文档。这让 agent 的行为演进和循环本身解耦,也解释了它为什么能容纳这么多能力而不失控。

dsh 的质量闸门清单

质量闸门比口号更硬

规范的执行力来自脚本。CI 的覆盖率门槛不是整体达标,而是对 packages 下的源码逐文件要求 100%。快照测试完全不依赖 API key:用真实可运行的示例回放 ACP 和 headless 输出,fixture 必须能在 macOS 与 Linux 上复现,出了偏差修 fixture 而不是修 normalizer。真实 API 的 e2e 测试在没有密钥时自动跳过,不阻塞贡献者。

文档同样有闸门:doc-sync 强制文档与代码同步,duplication 检测跨文件克隆,hygiene 用 knip 和 publint 清理死代码与发布配置。推送前的检查脚本只跑与改动相关的部分,并且要求证据匹配表面:行为变化看聚焦测试,模型输出看快照,发布路径看构建冒烟。最有个性的是一条流程规定:非平凡改动必须在同一个 PR 里附一份 Agent Note,把决策理由写下来存档。

给自己写 AGENTS.md 的人三点参考

这份文件本身就是一个范本。每条规则自包含,并链接到详细文档;能写成机器可查不变量的,就落成可执行的闸门,而不是停留在口号;文档随代码一起更新,一个事实只有一个家。如果你的团队也在给 coding agent 立规矩,值得照着这个思路整理一遍自己的项目说明。

最后说回使用:想尝鲜,npx @deepseek-ai/dsh web 一条命令即可;想读源码,仓库在 github.com/deepseek-ai/deepseek-harness,MIT 协议随便用。只是记住官方那句提醒:预览阶段,接口随时会变。

相关文章

分享: