文档大纲

Claude Code 的开源对手DeepSeek-Harness:一切皆插件

如果你是 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:

Aggregatetsconfig内容
Hosttsconfig.host.jsonNode 端:agent-loop、工具执行、子进程
Clienttsconfig.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…"
ACPAgent 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 流程)

  1. 启动:npx @deepseek-ai/dsh web
  2. Settings → Models → 填入 DeepSeek API key(保存立即生效)
  3. Choose workspace → 选择项目目录
  4. 发送首条消息: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.shellshell 执行注册后端
ctx.commands用户命令注册,无需模型轮次
ctx.fs文件系统访问/策略注册提供方或监听 fs/* 事件

插件命名规范:@deepseek-ai/dsh-plugin-*,GitHub 仓库加 dsh-plugin topic 增加发现度。

五、与主流框架横向对比

维度DeepSeek-HarnessClaude CodeCodex CLIOpenClaw
厂商DeepSeekAnthropicOpenAI社区/独立
协议MIT 开源闭源闭源MIT 开源
代码规模~25 万行 TS~51 万行 TS未知~10 万行
架构范式一切皆插件(插件树)单进程 + 内置工具扁平 CLIHub-and-Spoke
Web UI✅ 端口 3080❌ CLI only❌ CLI only✅
多通道❌ 仅本地 Web❌ CLI❌ CLI✅ 20+ 通道
MCP 协议规划中✅✅✅
稳定性⚠️ Preview 频繁破坏✅ 稳定✅ 稳定✅ 稳定
学术理论✅ 强(Cordis 论文)⚠️ 弱⚠️ 弱⚠️ 弱
可定制性⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
上手难度⚠️ 中(需懂 TS + Cordis)✅ 低✅ 低✅ 低
上下文管理事件溯源日志Context windowContext windowCompaction
多 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-HarnessOpenClaw
定位框架层(harness 本身)平台层(含 Gateway+Channel+Skill)
类比像 Kubernetes像 k8s + Istio + Prometheus 全家桶
适用场景自研 agent 的运行时多通道 24h 在线 agent

结论:

  1. 两者不冲突——dsh 是 framework,OpenClaw 是 platform
  2. 可以借鉴——Cordis 的"一切皆插件"思路可用于改进 Skill 注册/卸载机制
  3. 不要替换——用 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 为主

七、风险提示

  1. 状态仍是 Developer Preview——README 明确写"THERE WILL BE COMPATIBILITY-BREAKING CHANGES"
  2. 公测首发时仓库一度非公开,目前已开源但需观察后续走向
  3. 核心团队规模有限——vs Anthropic Claude Code 团队 100+ 人
  4. 生态空白——没有 Skill 市场、没有 IDE 插件、没有第三方 MCP server
  5. 学术 vs 工程的鸿沟——Cordis 理论扎实但工程化路径长,新人学习曲线陡峭

建议:观察 dsh 的 npm 插件生态能否在 3 个月内突破 50 个第三方插件,是判断其能否从 Preview 进入 Beta 的关键信号。

结语

DeepSeek-Harness 是"理论满分、工程早期"的新一代 agent 框架。它对 OpenClaw 这类已有平台的价值是"借鉴 Cordis 插件哲学",而不是"替换 OpenClaw"。

现阶段最务实的做法:

  • 研究 Cordis 论文和 dsh 核心源码,理解"一切皆插件"怎么实现
  • 暂不引入生产环境,但持续观察生态进展
  • 关注首批 50 个 npm 插件的能力图谱——这是它能否进入 Beta 的关键信号
阅读量: 321