DeepSeek 正式开源了 DeepSeek Harness(DSH)的 v0.1 开发者预览版——一个"一切皆插件"的 Agent 运行时框架,MIT 协议,源码已托管到 GitHub。
和市面上大多数 AI Agent 框架不同,DSH 的核心卖点不是模型能力,而是架构的开放性。它没有选择重头造一个插件系统,而是基于一个叫 Cordis 的元框架构建——Cordis 只负责插件的加载、卸载和依赖关系,Agent 框架的所有具体组件(模型适配器、工具注册表、会话日志、沙箱、UI)都是不同的 Cordis 插件。
这意味着开发者不需要改一行 DSH 源码,就能替换其中任何一个能力模块。想换掉默认的沙箱实现,或者加一个自定义的调度策略,写个插件就行。

核心:Cordis 元框架
DSH 的底层是一个叫 Cordis 的元框架。Cordis 的定位是"时空可组合性元框架"(A Meta-Framework of Spatiotemporal Composability),目前 v4.0.0-rc.8,MIT 协议,由 DeepSeek AI 团队工程师 shigma 维护。
"时空可组合性"这个概念来自 Cordis 团队的学术论文(arXiv 预印本)。论文提出了两个维度的形式化:
- 时间可组合性:组件被移除时,其副作用能被完全撤销
- 空间可组合性:组件能声明并对其他组件的状态变化做出响应
翻译成人话就是:Cordis 不关心你的插件具体做什么,它只关心插件的加载、卸载和依赖关系。每个插件通过 ctx 上下文提供服务,通过 inject 声明依赖,通过类型化事件通信——emit 观察、waterfall 包装、parallel 和 serial 控制执行顺序。注册是可逆的副作用,卸载时自动清理。
这意味着 DSH 的根基是一个学术级别的插件框架,而不是随便拼凑的"插件系统"。

架构分层
DSH 的架构文档读起来像操作系统的设计文档。系统分为几个层次:
最底层是 dsh-base——模型适配器、工具注册表、持久化、沙箱和审批策略、设置、凭据、遥测。这是每个 profile 的第一层。
上面是 dsh-web-app(浏览器界面)或 dsh-headless(无服务器的单次运行器)。
profile 是命名的插件组合。一个 profile 列出它依赖的 bundle,bundle 是 Cordis 配置行和代码的分发格式。配置通过 patch 机制叠加——每个 bundle 的配置、profile 的 patch、home 目录的 patch、命令行 --patch 参数,按顺序应用到空白的 entry 列表上。
用户可以随时运行 dsh --profile web --dump-config 查看当前完整的插件树,然后用 patch 替换其中任何一行。
核心 package
DSH 的 monorepo 包含 68 个 package,覆盖了 Agent 系统的每个环节:
| Package |
职责 |
| core/session |
仅追加的会话事件日志 |
| core/system-prompt |
提示词和工具 schema 组装 |
| core/tools |
作用域工具注册表与执行管线 |
| core/agent |
Agent 接口与注册表 |
| core/agent-loop |
默认的 Agent 驱动实现 |
| llm/llm |
消息与流词汇,适配器接口 |
Seam:能力替换的设计精髓
DSH 最优雅的设计是 seam(能力缝合点) 的概念。一个 seam 有三个角色:Service Definition(声明接口)、Service Provider(实现它)、Consumer(使用它)。
文件系统和子进程的 provider 共享同一个执行世界,所以把它们的 provider 指向远程沙箱,Bash、PTY 和 LSP 会一起跟着过去,不需要为每个工具写单独的 provider 适配。这就是"替换一个 provider 就能改变整个产品"的含义。
四种运行模式
DSH 提供了四种预设模式,每种加载不同的插件组合:
- 标准模式:完整的工具组合,日常使用
- PTC 模式:程序化工具调用(Programmatic Tool Calling),由模型生成一段代码来组合多轮工具调用
- 极简模式:仅保留一个 shell 工具和一个文件编辑工具,用于最小环境下的模型基准测试
- 创造模式:可以检查当前运行时、在内存中试验 Cordis 插件,并据此组合和创作新的模式

会话日志与事件溯源
DSH 的会话日志是仅追加(append-only)设计的。模型看到的一切——系统提示词、思维链、工具调用与结果、子 Agent 调度、每一次上下文注入——都会被记录。
架构文档里写得很明确:"Model-visible means logged." 任何到达模型请求的信息都必须能从日志中重建,运行时有一个断言来保证这一点。
恢复、分叉、检索与回放共享同一份事件流。fork 一个会话只需要 ctx.sessions.fork(source, boundary, childSessionId)——从日志中的某个时间点分支,创建一个新的子会话。

事件系统
事件就是扩展点,DSH 把事件分为三个域:
- 会话事件:追加到日志的持久事实,重新加载后仍然存在
- Agent 事件(agent/*):携带活跃 Agent 引用,用于观察或拦截进行中的工作
- 能力事件:无需导入循环即可向某个 seam 附加策略和适配器
开始使用
安装方式很简单,有 Node.js 就能跑:
npx @deepseek-ai/dsh web
默认启动在 http://127.0.0.1:3080。源码安装则走 git clone → pnpm install → pnpm build → pnpm dsh web 的路径。
参考来源