文章目录
- [DeepSeek 把模型的"马具"开源了:拆解 Harness](#DeepSeek 把模型的"马具"开源了:拆解 Harness)
-
- [先说清楚:Harness 是什么](#先说清楚:Harness 是什么)
- 它到底是什么
- 十分钟上手
- [它怎么跑任务:turn 和 step](#它怎么跑任务:turn 和 step)
- 换零件不用改代码:叠被子式配置
- [省 Token 的 PTC 模式](#省 Token 的 PTC 模式)
- 现在该不该用
DeepSeek 把模型的"马具"开源了:拆解 Harness
2026 年 8 月 12 日深夜,DeepSeek 发了 V4 Pro 正式版。十几个小时后,又开源了一个东西------不是模型,也不是一个能直接聊天的 App,而是一套叫 DeepSeek Harness (命令行叫 dsh)的 Agent 底座。MIT 协议,随便用随便改。
这事有个背景:过去一年大家发现,同一个模型,配上不同的工具、不同的调度逻辑,做出来的 Agent 表现能差一大截。Claude Code 和 Codex CLI 好用,不只因为背后的模型强,还因为模型外面那层"壳"做得好。这层壳有个正式名字,就是 Harness(驾驭框架)。
先说清楚:Harness 是什么
Harness 这个词本义是"马具"------套在马身上、让人能驾驭马的那套缰绳和鞍具。放到 AI 这里,意思很形象:模型是马,Harness 是那套马具。光有马跑不了车,光有模型也干不了活。
模型自己只会一件事:接收文字,输出文字。它不能读文件、不能跑命令、不能上网、记不住昨天聊了什么。让它变成能干活的 Agent,中间需要一整套东西:
- 工具:让它能读写文件、跑终端命令、联网搜索
- 循环:干完一步看结果、决定下一步干什么,直到任务完成
- 上下文管理:对话太长怎么压缩、怎么记住关键信息
- 权限和安全:删文件之前要不要拦一道、要不要人批准
- 记录:出了问题能不能回放、能不能从断点恢复
这一整套"马具",合起来就叫 Harness。官方给的等式很直白:Agent = 模型 + Harness。模型决定能力上限,Harness 决定上限能兑现多少、花多少钱。
Claude Code、Codex CLI 这些产品,本质都是"Claude/GPT 模型 + Anthropic/OpenAI 自家的 Harness"。它们的马具和模型捆在一起卖,你只能整套用。DeepSeek 这次干的事:把马具单独开源出来 ,MIT 协议,地址在 github.com/deepseek-ai/deepseek-harness,目前快 10 万多 star。
它到底是什么
dsh 不是一个做好给你用的 Agent,而是一套"造 Agent 的零件底座"。官方口号是 一切皆插件(Everything is a Plugin):
- 调哪个模型?插件,可换。
- 有哪些工具(终端、文件、搜索)?插件,可换。
- 在哪执行(本机还是远程沙箱)?插件,可换。
- 出事了要不要人工审批?插件,可换。
- 界面长什么样?也是插件。
- 连"Agent 怎么一步步干活"的循环逻辑本身,都是插件,可以整个拔下来换掉。

跟 Claude Code 的区别一句话说清:Claude Code 是成品车,dsh 是底盘加一堆可换零件,自己组装。
十分钟上手
装好 Node.js,一行命令:
bash
npx @deepseek-ai/dsh web
浏览器打开 http://127.0.0.1:3080,就能用了。想看它到底加载了哪些插件:
bash
dsh --profile web --dump-config
从源码跑:
bash
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install && pnpm run build && pnpm dsh web
框架自带四种模式,其实就是四组配好的零件组合:
| 模式 | 装了什么 | 干什么用 |
|---|---|---|
| 标准模式 | 文件读写、终端执行、联网搜索全套工具 | 日常开发、长任务 |
| PTC 模式 | 让模型写代码批量调工具 | 流水线、批量清洗、自动化测试 |
| 极简模式 | 只有一个 shell 工具 + 一个文件编辑工具 | 跑分、测试(V4 Pro 的官方成绩就是这模式跑的) |
| 创造模式 | 可以当场拆装插件 | 开发插件、自己攒新模式 |
四种模式不是死开关,是"预设"。在创造模式里可以把零件拆了重组,攒出官方没有的新模式------已经有人让 dsh 给自己加装了一个官方界面里没有的"三栏模式"。Agent 给自己改装,原理就这么朴素:它的能力清单也是运行时里的一段配置。
它怎么跑任务:turn 和 step
两个词就够用了。**turn(轮)**是你交给它的一整个任务;**step(步)**是它干的一次活:请求一次模型、调用一批工具。一个 turn 里有很多个 step,模型觉得活干完了,turn 结束。
每一步都会发出一串事件:请求模型 → 模型回复 → 调工具 → 工具返回 → 这一步结束,进入下一步。插件想管事,就在事件上挂钩子:
- 这一步要不要人工批准才能跑?挂在 step 开始前。
- 工具要删文件、要联网?执行前拦一道。
- 想记录每一步花了多少 Token?挂在事件流上。

还有一条硬规矩:模型看到的一切,都必须能从日志里重建。所有事件写进一份只追加、不修改的日志,中途崩了能从日志恢复,跑完能回放检查,还能从中间某一步分叉出一条新会话重来。不会出现"实际跑的和记录的对不上"这种鬼问题。
换零件不用改代码:叠被子式配置
dsh 的配置是一层层叠上去的,像叠被子,后一层盖住前一层:

最底下是空白;往上装别人打包好的插件包(Bundle);再盖上你存的预设组合(Profile,官方自带 web 和 headless 两个模板);再盖你自己机器上的个人设置;最顶上是命令行里的临时改动。
想换模型、换工具、换沙箱,不动代码,改任何一层的配置就行。比如把"文件系统"和"子进程"这两个零件指向远程沙箱,Bash、终端、代码分析这些依赖它们的能力会自动跟着搬过去,不用一个一个改。
省 Token 的 PTC 模式
标准模式有个毛病:模型每调一次工具,结果都要塞回上下文。任务一长,Token 账单跟着轮数往上涨。
PTC 模式换了个思路:模型不再一轮一轮地调工具,而是一次性写一段 TypeScript 代码,把要调的工具全编进程序里,交给运行环境去执行。中间数据留在运行环境里,只有最终结果回到模型眼前。

工具调得越密、任务越长,这个模式省得越多,适合 CI/CD 流水线、批量数据清洗、自动化测试这类活。代价是模型得把代码写对------写错了不好中途纠偏,好在可以整体重试。
现在该不该用
几句实在话。
想马上干活:Claude Code 这类成品仍然更顺手,dsh 目前是开发者预览版(v0.1),官方 README 用大写字母写了"会有破坏兼容的变更"------今天写的插件,下个月可能就得重写。别往生产环境上。
想造自己的 Agent 产品:值得认真研究。权限、恢复、长任务、远程执行这些容易被演示产品糊弄过去的地方,它在架构层提前拆好了边界。技术栈是 TypeScript,支持 OpenAI 兼容端点和 MCP 协议,也有 Python SDK。
想学"模型外面这层壳怎么造":源码可以直接读。三个月一万两千多次提交,代码量大但结构切得干净。
生态:开源当天就有第三方插件冒头,做上下文压缩、跨会话记忆这些官方留白的硬骨头。插件多到什么程度、治理得好不好,决定了这套东西的长期价值------这个只能等时间给答案。