DeepSeek Harness 开源了:发布当天 2.3 万 star,一文拆解「一切皆插件」的架构
今天 DeepSeek 有两件事:V4 Pro 发布被撤回(昨天的事),以及 Harness 开发者预览版(v0.1)照常开源——MIT 协议,GitHub 发布当天冲到 2.3 万 star。
模型翻车归翻车,Harness 这条线没乱。这篇文章不聊模型,只拆 Harness——它为什么值得 2.3 万 star。
先对齐概念:Harness 是什么
Agent = Model + Harness。模型提供能力,Harness 负责让模型真正干活:工具调用、上下文管理、循环执行、沙箱、UI,全是 Harness 的事。
DeepSeek Harness(dsh)就是 DeepSeek 官方的 Agent Harness 实现,核心设计原则一句话:一切皆插件。
模型、工具、技能、会话、沙箱、存储、循环、调度、UI——所有 Agent 能力都是插件,可以自由替换、灵活重组。开发者不需要改 dsh 源码,就能独立选择、替换或扩展任一能力。

底座:Cordis,一个 730 star 的元框架
一切皆插件的底气来自 Cordis——DeepSeek 没有自研框架,而是选了一个当时只有几百 star 的开源元框架(现在 730 star)。
Cordis 自称 “A Meta-Framework of Spatiotemporal Composability”(时空可组合性元框架),还有配套论文《A Programming Paradigm for Spatiotemporal Composability》。它只做三件事:插件的加载、卸载、依赖管理。Agent Harness 的所有具体组件都是 Cordis 插件,通过 Cordis 服务和类型化事件协作。
几个关键设计值得注意:
第一,无特权核心。没有一个"必须改源码才能动"的中央模块——你想扩展 dsh,就在旁边挂一个插件,不需要打补丁。
第二,可逆注册。插件注册的东西可以干净地撤销,不会污染全局状态。这对 Agent 系统尤其重要:多个子 Agent 各挂各的插件,互不干扰,用完能拆掉。
第三,配置层组合。插件怎么组装,在配置层决定,不改代码。
核心包:七个模块撑起一个 Agent
dsh 的架构文档把核心包列得很清楚(上图):session、system-prompt、tools、agent、agent-loop、scope、llm。

core/session:仅追加(append-only)的会话事件日志。模型看到的一切——系统提示词、思维链、工具调用与结果、子 Agent 调度、每一次上下文注入——全部落日志。恢复、分叉、检索、回放共享同一份事件流。这是"有迹可循"的底座。
core/system-prompt:提示词分节 + 工具 schema 组装。把"系统提示词"当成工程对象管理,而不是一段写死的文本。
core/tools:作用域工具注册 + 守卫执行管道。工具不是全局的,而是按作用域注册——每个 Agent 看到自己该看到的工具。
core/agent:Agent 接口、实时注册表和 agent/* 事件。core/agent-loop:默认驱动,实现 step/turn 循环。
core/scope:per-agent 作用域注册原语。llm/llm:消息和流词汇 + 模型适配接缝——换模型就是换一个适配器。
事件系统:扩展点在哪,一眼看清
dsh 把扩展点分成三类事件,写插件前先想清楚你要动哪一层:
Session Events(会话事件):持久事实,追加到日志并广播。适合"记录发生了什么"。
Agent Events(agent/*):携带活体 Agent——inbox、step、status、request、validation、continuation。适合"干预 Agent 的运行"。
Capability Events(能力事件):把策略和适配器挂到接缝上(fs/、tools/、telemetry/*)。适合"替换底层能力"。
事件驱动 + 可逆注册,是这套架构和传统"插件系统"最大的区别:不是简单的钩子回调,而是一套有类型、可组合、可撤销的事件流。
Turn flow:一次对话内部怎么流转
架构文档里定义了严格的 turn 流程:
一个 step = 一次模型请求 + 它调用的工具。一个 turn = 零或多个 step。
流程:turn 开始 → 组装提示词分节和工具 schema → agent/pre-step(可以拒绝)→ step 开始 → 追加消息 → 从日志推导模型历史 → agent/request → llm/stream 流式输出 → 工具调用(pre-execute → execute → post-execute)→ step 结束 → 如果工具需要再请求或新输入到达 → 下一个 step → agent/turn-stopping。

这个流程的意义:每一步都可插桩、可拦截、可审计。出问题查日志,改行为挂插件——这就是 Harness 工程(上一篇讲过)在 DeepSeek 的具体落地。
四种模式 + 怎么上手
标准模式(完整工具组合)、PTC 模式(程序化工具调用:模型生成代码组合多轮工具调用)、极简模式(只留 shell + 文件编辑,给基准测试用)、创造模式(内存里试验插件组合新模式)。
上手:
npx @deepseek-ai/dsh web
默认启动 Web UI 在 http://127.0.0.1:3080。源码在 github.com/deepseek-ai/deepseek-harness,pnpm install + pnpm run build + pnpm dsh web 就能跑。
怎么看
说三点:
第一,v0.1 是开发者预览版,官方明确警告"未来将有破坏兼容性的变更"。现在别上生产,但做 Agent 框架、工具链的人现在入场正合适——插件生态刚起步,先占坑的人定义接口。
第二,2.3 万 star 说明"一切皆插件"戳中了 Agent 开发者的痛点:模型越来越同质化,Harness 才是差异化所在,而可组合的 Harness 是刚需。
第三,DeepSeek 选了 Cordis 而不是自研底座,还发论文——这姿态和它"开源、开放、可复用"的路线一致。模型是商品,生态才是护城河。V4 Pro 的发布节奏乱了,但生态这条路没乱。
你会用 dsh 写第一个插件吗?评论区聊聊。