插件化架构
23

9 月

DeepSeek Harness(dsh)开源:DeepSeek 把自家跑模型 benchmark 的 agent harness 直接放出来了

一句话结论:DeepSeek 把内部跑 DeepSeek-V 4-Flash benchmark 的 agent harness 以 MIT 协议开源,叫 DeepSeek Harness(dsh)——它基于 Cordis 元框架做的「全插件化」架构、模型无关、4 种 runtime 模式覆盖标准/代码/最小/创作场景,append-only session log 可以回放调试。这是一次「DeepSeek 把自家生产工具全开源」的典型动作,对做 coding Agent 的团队来说,是一个值得认真评估的新选项。

AI 摘要

  • 项目用途:DeepSeek 开源的 agent harness,用于构建和运行生产级 coding/研究 agent。
  • 适合人群:在做或要选型 agent harness 的工程师、研究者,关注生产可调试性和多模型切换的团队。
  • 上手门槛:MIT 协议、TypeScript/Go 多语言、模型无关;开发者预览版,API 还在变动。
  • 智盒结论:架构设计扎实(插件化 + append-only log),但仍是开发者预览,兼容性会变,落地要留余量。
DeepSeek Harness 开源封面:全插件化 agent harness 架构示意

这到底是个什么东西?

DeepSeek Harness(缩写 dsh)9 月进入公开开发者预览,仓库 github.com/deepseek-ai/deepseek-harness,MIT 协议。值得注意的是,DeepSeek 自己跑 DeepSeek-V 4-Flash 的 coding-agent benchmark 时,用的就是这个 harness——这不是「专门开源给你用」的玩具,而是 DeepSeek 自己在用的生产级工具。

它的设计哲学用一句话概括:「一切皆插件」。底座是 Cordis 元框架——一个 TypeScript 的 dependency injection 容器,但比普通 DI 容器更激进:插件可以在运行时被挂载/卸载而无需重启进程,能力和生命周期完全解耦。Agent 需要的所有能力(模型、工具、技能、session、沙箱、存储、循环、调度、UI)都是 Cordis 插件。

对开发者来说这意味着什么?意味着你可以不修改 DeepSeek Harness 源码,从配置层直接换模型、加工具、接 MCP 装技能。这呼应了站内之前Reef 持续自我改进基础设施 那篇里观察到的趋势——基础设施层的可插拔性,正在成为 agent 框架的「入场券」。

4 种 runtime 模式分别有什么用?

dsh 开箱自带 4 个预设模式,对应 4 类典型场景:

| 模式 | 用途 | 典型用户 | | — | — | — | | Standard | 完整 coding agent,含文件编辑、shell、文件/网络搜索、技能、规划、目标、子 agent、工作流 | 通用工程团队 | | Code | 让模型生成 TypeScript 代码来编排多轮工具调用,一次完成多步骤操作 | 复杂工作流自动化 | | Minimal | 只保留 shell + 文件编辑器,DeepSeek 自己跑 V 4-Flash benchmark 用这个 | 模型基准测试研究者 | | Creator | 检查当前运行时,在内存里测试 Cordis 插件,组合新模式 | 插件作者、自定义 preset |

这种「模式分层」的做法,比单一开关的设计更贴近真实使用——你跑 benchmark 显然不需要规划/目标/子 agent 这些 overhead,但生产环境又缺不了。Minimal 模式的存在也意味着 dsh 不只是「演示给你看」,DeepSeek 自己就在用它跑自家模型的基准。这是它和 AWS Strands Harness 这种「纯包装型」开源框架最大的差别。

真正有意思的两个设计点

第一个是全插件化 + append-only session log。session log 是「模型看到的一切」的不可变记录:系统提示、推理轨迹、工具调用和结果、子 agent 调度、每一次上下文注入。所有事件流在同一个日志里,你可以 inspect、resume、fork、search、replay。

对调试过 multi-step agent 的人来说这个价值是真实的:你不用再推断「这个 agent 在第几步是怎么走偏的」,把对应时间窗的 session log 拿出来逐事件回放。这呼应了站内Colibri 纯 C 推理引擎 那篇里讲的「把每一层的可见性做到极致」——不同的层在做同一件事。

第二个是模型无关。provider 配置支持 DeepSeek、Anthropic、OpenAI、Bedrock、Vertex、Azure,以及任何 OpenAI 兼容端点。你给它一个 base URL 和 API key 就能跑。Web UI 里切模型不用重启服务。这对在多模型之间做评估的团队是刚需。

DeepSeek Harness 4 种 runtime 模式与可观测性设计

上手路径

仓库里有 quickstart,主流 Node/TypeScript 环境下可以 `npm install` 跑起来。最小启动流程:

  • 克隆仓库:`git clone https://github.com/deepseek-ai/deepseek-harness`
  • 安装依赖(TypeScript 项目,跟仓库 README 走)
  • 配 provider:环境变量里设 `DEEPSEEK_API_KEY` 或 `ANTHROPIC_API_KEY` 等
  • 选模式:在配置里切换 Standard / Code / Minimal / Creator
  • 启动 Web UI 或 CLI,跑第一个任务

社区生态在发布前就已经有 dsh-plugin topic 下的若干第三方插件:持久记忆(知识图谱)、SQLite 后端存储、本地优先 AI 工作台等。模型上下文协议(MCP)支持也是开箱即用——你可以直接挂载 Claude Desktop / Cursor 那种 MCP server。

风险和限制

  • 开发者预览:API 还在频繁变动,DeepSeek 自己声明「会有兼容性破坏性变更」。今天写在这上面的代码,下个版本可能要改。
  • 文档偏薄:作为刚进 preview 的项目,文档还在补,复杂场景需要读源码。
  • 插件生态刚起步:相比 LangChain/CrewAI 这种成熟生态,第三方插件数量还很有限。
  • 安全边界:作为通用 agent harness,prompt injection 防护靠上层应用自己处理。

与同类工具的对比

| 项目 | 类型 | 模型无关 | 全插件化 | session 回放 | License | 成熟度 | | — | — | — | — | — | — | — | | DeepSeek Harness (dsh) | Agent harness | ✓ | ✓ | ✓ | MIT | dev preview | | AWS Strands Harness | Agent harness | ✓ | 部分 | 部分 | Apache 2.0 | 刚发布 | | LangGraph | Agent 编排 | ✓ | 部分 | 部分 | MIT | 成熟 | | PrimeIntellect prime-agent | 自我改进 RLM agent | ✓ | ✗ | ✗ | MIT | 早期 | | kagent v 1.0 | K 8 s 上的 agent 运行时 | ✓ | ✗ | ✗ | Apache 2.0 | v 1 alpha |

dsh 的核心定位在「harness 本身是一个被验证过的生产工具」,Strands 在「AWS 生态通用」,LangGraph 在「成熟生态」。具体选哪个,取决于你更在意「和谁对齐」、「能不能 fork」、「生态成熟度」。

FAQ

这个项目和 LangGraph、Strands 比最大的区别是什么?

dsh 的最大特色是「一切皆插件」和 append-only session log。LangGraph 偏图编排,Strands 偏云端整合。dsh 更适合想要细粒度控制 agent 内部组件、又需要可调试性的团队。

我能商用吗?

可以。MIT 协议允许任意商用,包括修改和闭源衍生。但目前是开发者预览,DeepSeek 明确说 API 还会变,不建议把它当 stable production dependency。

一定要用 DeepSeek 的模型吗?

不强制。dsh 支持 Anthropic、OpenAI、Bedrock、Vertex、Azure 和任何 OpenAI 兼容端点。模型无关是它的设计原则,不是营销话术。

现在适合上生产吗?

不适合。开发者预览意味着 API 会变、生产稳定性还没经过大量验证。建议先在内部工具或非关键路径上试,等 1.0 再考虑进生产。

和 DeepSeek 之前的开源项目(比如 V 4.1-Flash)是什么关系?

都是 DeepSeek 把自家生产工具开源的统一动作。V 4.1-Flash 是模型权重,dsh 是跑模型 benchmark 的 agent harness。这条「连生产工具一起放出来」的路线,让 DeepSeek 在开源生态里的角色不只是「发权重的厂商」。

RELATED

Posts