如果你是 Claude Code 或 Codex CLI 的重度用户,最近一周一定看到过"DeepSeek 出了一个开源对标项目"的消息。DeepSeek-Harness(GitHub,内部简称 dsh)2026-08-13 正式开源公测,号称是 Anthropic Claude Code 的开源版。

但它不只是"又一个 Claude Code 复刻"——核心卖点是"Everything is a Plugin"(一切皆插件)的架构理念:所有部分(agent loop、工具、模型适配器、会话日志)都是插件,没有需要打补丁的内核。这篇文章把它一次性拆清楚。
| 维度 | 结论 |
|---|---|
| 是什么 | DeepSeek 开源 agent harness(代码智能体框架) |
| 核心创新 | "一切皆插件" + Cordis 时空组合性理论 |
| 代码规模 | ~25 万行 TypeScript(vs Claude Code 51 万行) |
| 当前状态 | Developer Preview,频繁破坏性变更 |
| 最大优势 | 学术理论扎实、扩展性极强、纯 TS 易于定制 |
| 最大短板 | 生态空白、无多通道、无 MCP、稳定性差 |
一、项目概况
项目名:DeepSeek Harness(dsh) 状态:Developer Preview(破坏性变更频繁) 协议:MIT(开源) 仓库:https://github.com/deepseek-ai/deepseek-harness 底层框架:Cordis(自研,配套学术论文《A Programming Paradigm for Spatiotemporal Composability》)
核心口号 "Everything is a Plugin"——把"AI Agent 框架"这个传统内核,拆成一棵可以叠加的插件树。
二、技术架构:四大核心创新
2.1 "一切皆插件"——没有特权内核
dsh 运行中是一棵插件树,由启动时按序叠加的层组合:
- ✅ 模型适配器是插件(ctx.llm)
- ✅ 工具注册表是插件(ctx.tools)
- ✅ 会话日志是插件(ctx.sessions)
- ✅ agent loop 本身也是插件(ctx.agentLoop)
- ✅ 沙箱、审批、凭据、遥测全是插件
核心承诺:不存在需要打补丁的特权内核。扩展 dsh 的方式是挂载新插件到其他插件旁边,所有注册都是副作用,会在插件卸载时自动撤销。
2.2 Cordis 时空组合性理论
dsh 的底层 Cordis 框架基于两个正交维度:
| 维度 | 含义 | 机制 |
|---|---|---|
| 时间组合性 | 组件副作用在移除时完全撤销 | 可撤销副作用(revertible effects) |
| 空间组合性 | 组件间依赖声明式管理 + 反应式触发 | 余效果(coeffects) |
通俗地说:插件既能干净地"装上",也能干净地"卸下",不会出现"卸了插件但残留状态"的传统痛点。
2.3 4 种事件分发模式
事件是 dsh 的扩展点,分发模式本身就是事件的公共契约:
| 模式 | 等待 | 顺序 | 返回值 | 典型场景 |
|---|---|---|---|---|
| emit | 不等待 | 注册顺序 | 无 | 观察通知(agent/status) |
| waterfall | 不等待 | 注册顺序 | 有 | 工具执行(pre/post-execute) |
| parallel | 等待 | 并行 | 无 | 旁路处理 |
| serial | 等待 | 注册顺序 | 有 | 单决策事件(agent/turn-stopping) |
这种"模式即契约"的设计,让插件作者一眼就知道事件语义。
2.4 事件溯源 Session(关键创新)
这是 dsh 区别于其他 harness 的最大架构创新:
- 📜 Append-only SessionEvent 日志 = 单一事实源(ctx.sessions)
- 🔄 模型消息历史从日志派生,从不独立存储
- ▶️ 回放 = 重新派生——fork、恢复、转录、遥测都派生自同一事件流
- 🛡️ 运行时不变式:"模型可见即已记录",抵达模型请求的一切都必须能从日志重建
事件类型:turn/start、step/end、user/message、assistant/chunk、tool/call、tool/result 等,插件可通过 TypeScript declaration merging 扩展新类型。
2.5 工具执行流水线(5 段把关)
ctx.tools.execute()
→ tools/pre-execute (allow/deny/ask 瀑布)
→ registered guards (单调守卫)
→ tools/execute (around-dispatch 包装)
→ tools/post-execute (检视/替换结果)
→ finalizeContent (definition-owned 最后一步)
→ tools/result (不可变权威结果)
工具定义包含 output(输出契约)、timeoutMs(协作超时)、isConcurrencySafe(并行安全)、presentCall/presentResult(UI 呈现)。模型 schema 仅暴露 name/description/parameters,callback 不泄露到模型——这是工业级沙箱设计的核心。
2.6 双 Aggregate 编译
dsh 用 TypeScript Project References 把代码分为两个相互隔离的 aggregate:
| Aggregate | tsconfig | 内容 |
|---|---|---|
| Host | tsconfig.host.json | Node 端:agent-loop、工具执行、子进程 |
| Client | tsconfig.client.json | 浏览器端:Web UI、Chat 节点 |
构建顺序:
tsc -b tsconfig.host.json
tsdown --env.DSH_BUILD_FACE host
tsc -b tsconfig.client.json
tsdown --env.DSH_BUILD_FACE client
pnpm run build:web
为什么要双 aggregate:两端在相同键下以不同服务对 Cordis Context 接口做声明合并,单一 program 同时看到两份会冲突。api/remotes 是唯一拆分 Host/Client tsconfig 的包特例。
三、安装与部署
3.1 最简方式(npx 试用)
# 前置:Node.js 22.19+ 或 24+
npx @deepseek-ai/dsh web
# Web UI 默认 http://127.0.0.1:3080
3.2 从源码(贡献者)
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
corepack enable # 启用 pnpm 11.7.0
pnpm install # 同时安装 lefthook 钩子
pnpm run typecheck # 验证搭建成功
pnpm run build # 双 aggregate 构建
pnpm dsh web # 启动
3.3 三种运行 Profile
| Profile | 用途 | 启动命令 |
|---|---|---|
| Web | 浏览器 UI,本地优先 | pnpm dsh web |
| Headless | 一次性 CLI 运行器 | pnpm dsh –profile headless "summarize…" |
| ACP | Agent Client Protocol(JSON-RPC stdio) | pnpm run demo:acp |
Profile 是 dsh home 中的具名组装,由 bundle 叠加:
dsh-base:模型适配器、工具、持久化、沙箱、审批、凭据、遥测dsh-web-app:在 base 之上加浏览器应用dsh-headless:在 base 之上加一次性运行器,无服务器
四、使用方法
4.1 首次使用(Web UI 流程)
- 启动:
npx @deepseek-ai/dsh web - Settings → Models → 填入 DeepSeek API key(保存立即生效)
- Choose workspace → 选择项目目录
- 发送首条消息:
Summarize this repository and identify its main packages.
4.2 能力边界
| 能力 | 支持 |
|---|---|
| 读 workspace 文件 | ✅ |
| 编辑 workspace 文件 | ✅ |
| 执行命令 | ✅ |
| 委派子 agent | ✅ |
| 维护 todo 计划 | ✅ |
| 高危操作审批 | ✅ |
| 多通道(Telegram/Discord/IM) | ❌ 仅本地 Web |
| MCP 协议 | 规划中 |
4.3 6 个核心 ctx 扩展点
| ctx 键 | 添加什么 | 机制 |
|---|---|---|
| ctx.llm | 模型提供方 | 注册适配器 |
| ctx.tools | 面向模型的能力 | 注册 + schema 入提示词组装 |
| ctx.agents | 不同的能力集合 | 组装 agent preset |
| ctx.shell | shell 执行 | 注册后端 |
| ctx.commands | 用户命令 | 注册,无需模型轮次 |
| ctx.fs | 文件系统访问/策略 | 注册提供方或监听 fs/* 事件 |
插件命名规范:@deepseek-ai/dsh-plugin-*,GitHub 仓库加 dsh-plugin topic 增加发现度。
五、与主流框架横向对比
| 维度 | DeepSeek-Harness | Claude Code | Codex CLI | OpenClaw |
|---|---|---|---|---|
| 厂商 | DeepSeek | Anthropic | OpenAI | 社区/独立 |
| 协议 | MIT 开源 | 闭源 | 闭源 | MIT 开源 |
| 代码规模 | ~25 万行 TS | ~51 万行 TS | 未知 | ~10 万行 |
| 架构范式 | 一切皆插件(插件树) | 单进程 + 内置工具 | 扁平 CLI | Hub-and-Spoke |
| Web UI | ✅ 端口 3080 | ❌ CLI only | ❌ CLI only | ✅ |
| 多通道 | ❌ 仅本地 Web | ❌ CLI | ❌ CLI | ✅ 20+ 通道 |
| MCP 协议 | 规划中 | ✅ | ✅ | ✅ |
| 稳定性 | ⚠️ Preview 频繁破坏 | ✅ 稳定 | ✅ 稳定 | ✅ 稳定 |
| 学术理论 | ✅ 强(Cordis 论文) | ⚠️ 弱 | ⚠️ 弱 | ⚠️ 弱 |
| 可定制性 | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ |
| 上手难度 | ⚠️ 中(需懂 TS + Cordis) | ✅ 低 | ✅ 低 | ✅ 低 |
| 上下文管理 | 事件溯源日志 | Context window | Context window | Compaction |
| 多 agent | ✅ 子 agent | ✅ Task 工具 | ⚠️ 弱 | ✅ sessions_spawn |
| 会话恢复 | ✅ Fork/Resume | ⚠️ 弱 | ❌ | ✅ |
核心哲学对比
| 框架 | 一句话哲学 |
|---|---|
| DeepSeek-Harness | "Everything is a Plugin" — 通过插件组合构建任何能力 |
| Claude Code | "The model is the product, the harness is the reliability" — 让模型产出可工程化 |
| Codex CLI | "Less is more" — 最少抽象,最大直白 |
| OpenClaw | "Agent is the OS" — Agent 是操作系统,Gateway/Channel 是 I/O |
dsh vs OpenClaw:不冲突,可借鉴
| 维度 | DeepSeek-Harness | OpenClaw |
|---|---|---|
| 定位 | 框架层(harness 本身) | 平台层(含 Gateway+Channel+Skill) |
| 类比 | 像 Kubernetes | 像 k8s + Istio + Prometheus 全家桶 |
| 适用场景 | 自研 agent 的运行时 | 多通道 24h 在线 agent |
结论:
- 两者不冲突——dsh 是 framework,OpenClaw 是 platform
- 可以借鉴——Cordis 的"一切皆插件"思路可用于改进 Skill 注册/卸载机制
- 不要替换——用 dsh 替换 OpenClaw 等于放弃 Gateway/Channel 这层
六、客观使用建议
6.1 适合现在用 dsh 的场景
- 学术研究 / 框架设计参考——Cordis 论文和实现都很扎实
- 深度定制 agent 行为——"一切皆插件"理论上可替换任何部分
- DeepSeek 模型深度用户——首发适配 DeepSeek-V4-Pro-0813
- 前端/浏览器为主的工作流——Web UI + 本地优先
- 学习 agent harness 架构——文档详细,子架构/开发/子系统三层清晰
- 企业内部自研 harness——纯 JS 易二次开发,MIT 协议
6.2 不建议现在用的场景
- 生产环境——Developer Preview,破坏性变更频繁
- 企业生产系统——生态薄弱、社区规模小
- 需要稳定生态——没有 MCP、没有 IDE 插件、没有 Skill 市场
- 24h 多通道在线 agent——仅本地 Web,无 channel 抽象
- 快速开发原型——编译时间长(tsc + tsdown 双阶段 + 4 步构建)
- 非 DeepSeek 模型——适配器仍以 DeepSeek 为主
七、风险提示
- 状态仍是 Developer Preview——README 明确写"THERE WILL BE COMPATIBILITY-BREAKING CHANGES"
- 公测首发时仓库一度非公开,目前已开源但需观察后续走向
- 核心团队规模有限——vs Anthropic Claude Code 团队 100+ 人
- 生态空白——没有 Skill 市场、没有 IDE 插件、没有第三方 MCP server
- 学术 vs 工程的鸿沟——Cordis 理论扎实但工程化路径长,新人学习曲线陡峭
建议:观察 dsh 的 npm 插件生态能否在 3 个月内突破 50 个第三方插件,是判断其能否从 Preview 进入 Beta 的关键信号。
结语
DeepSeek-Harness 是"理论满分、工程早期"的新一代 agent 框架。它对 OpenClaw 这类已有平台的价值是"借鉴 Cordis 插件哲学",而不是"替换 OpenClaw"。
现阶段最务实的做法:
- 研究 Cordis 论文和 dsh 核心源码,理解"一切皆插件"怎么实现
- 暂不引入生产环境,但持续观察生态进展
- 关注首批 50 个 npm 插件的能力图谱——这是它能否进入 Beta 的关键信号