AKL AI CLUB BETA ← 返回首页
DEEP DIVE · AGENT HARNESS

模型只是一半——读懂 DeepSeek Harness

2026-08-17 · 整理自公开论文、代码仓库与媒体报道

先看一个数字。

一位开发者只改了 AI 编辑代码时用的文件改写格式——从常见的「找到这段、替换成那段」,换成一种带行号锚点的格式。模型没换,提示词没重写,参数没调。同一个模型(Grok Code Fast 1)在同一批任务上的成功率,从 6.7% 跳到 68.3%

十倍。比过去两年里大多数模型升级带来的提升都大。

Cursor 团队报告过类似的事:同一个模型,配上不同的外围系统,同一套评测能跑出 46% 和 80% 两个分数。

这个"外围系统",2026 年有了一个统一的名字:harness。而 8 月中旬,DeepSeek 把自己的 harness 整套开源了出来,还附了一篇八十多页的编程语言理论论文。这篇文章就想把这两件事讲清楚:harness 到底是什么,DeepSeek 这一步在下什么棋,以及——你该不该跟。

一、Harness 是什么:Agent = Model + Harness

先破一个常见的误解。很多人以为 Claude Code、Cursor、Codex 这类工具的强大,来自它们背后的模型。模型只是一半。

语言模型本身其实很"残疾":它无状态(每次对话都从零开始,不记得上次干了什么)、只会吐文字(它不能真的读文件、跑命令、改代码,它只能"说"出想读什么)。要让它变成一个能自己干活好几个小时的 agent,中间必须有一层东西,负责:

01把模型说的话变成真实动作

模型输出「我要读 src/main.py」,harness 真的去读,把内容塞回去。工具的定义、调用、结果回传,全是 harness 的活。

02决定模型每一轮能看见什么

上下文窗口是有限的。放什么、不放什么、什么时候压缩历史、怎么把几十万行代码库变成几千 token 的线索——这是 harness 最见功力的地方。

03记住事情

跨轮次的记忆、任务清单、已经试过哪些死路。模型自己不记,harness 替它记。

04兜住错误

模型会编造不存在的工具、会把失败说成成功、会格式写错。harness 要能检测、重试、纠正,而不是整个任务崩掉。

05圈住它

沙箱、权限、需要人工确认的高危操作、执行日志。让它能干活,又不至于把你的生产库删了。

2026 年流行起来的说法把这件事压缩成一个公式:

Agent = Model + Harness

模型决定这个 agent 的能力上限;harness 决定它实际能发挥出多少 —— 2026 年流传的共识说法

打个不太严谨但好懂的比方:模型是发动机,harness 是车的其余部分——变速箱、悬挂、刹车、仪表盘。发动机马力再大,配一副烂底盘和没有刹车,跑不快也跑不远。开头那个十倍的差距,本质上就是换了个变速箱。

先搞懂几个词

这个领域术语很密,而且不少是今年才定型的。花一分钟过一遍,后面就顺了:

Harness(驾驭层 / 挽具)
包在模型外面的整套软件基础设施:工具调度、记忆、状态、沙箱、上下文管理、错误处理、反馈回路。原意是套在马身上的挽具——马提供力量,挽具决定这股力量往哪使。
Scaffold(脚手架)
基本同义,更早的叫法,偏指"临时搭一个架子让模型能干活"。harness 这个词赢了,因为它暗示的是长期工程件,不是临时搭建。
Agent Loop(智能体主循环)
harness 的心脏:把上下文发给模型 → 拿到模型想做的动作 → 执行 → 把结果塞回上下文 → 再发给模型,循环直到任务完成。绝大多数 agent 产品的差异都藏在这个循环的细节里。
Guides / Sensors(前馈 / 反馈)
Thoughtworks 提出的一种拆法:Guides 是动手之前引导模型的东西(系统提示词、工具说明、规范文件);Sensors 是动手之后观察结果的东西(测试、类型检查、lint、报错信息)。好的 harness 两头都要硬。
Inner / Outer Harness(内层 / 外层)
同样出自 Thoughtworks:内层是模型厂商自己给你的(Claude Code 内置的那套),外层是你自己搭的(你写的 CLAUDE.md、你配的 MCP、你的 CI 钩子)。你能控制的通常是外层。
Context Engineering(上下文工程)
Prompt engineering 的继任者。不只是"把提示词写好",而是系统性地决定每一轮塞什么进上下文窗口。它是 harness 工程的一个子集。

二、这个词为什么突然火了

Harness 作为通用术语,是今年初才立起来的。2026 年 2 月,Mitchell Hashimoto(HashiCorp 创始人)写了篇博客,讲他的做法:agent 每犯一次错,他不去改提示词,而是去改环境——让那个错误在结构上不可能再犯。同期 Vivek Trivedy 的《Anatomy of an Agent Harness》从 Agent = Model + Harness 这个公式出发,把组件一个个拆开。之后 OpenAI 的工程报告、Thoughtworks、LangChain、Anthropic 的文章接力,把这个词推成了行业默认语汇。

它之所以能立住,是因为它命名了一个真实存在、但此前没人正视的问题:我们一直在拿模型互相比较,但每个分数其实是模型和 harness 共同产生的。

今年有篇论文的标题就是这个意思:《Stop Comparing LLM Agents Without Disclosing the Harness》(别再不公开 harness 就比较 agent 了)。作者们指出,几乎没有一份基准报告会完整披露评测时用的 harness,而不同 harness 造成的分数波动,常常大过新模型宣称的提升幅度。他们提议把 harness 规格纳入强制披露项——就像论文要写清实验条件一样。

一个实用推论:当你觉得手上的 AI 编程工具"变笨了",先别急着换模型。绝大多数情况下,问题出在 harness——上下文塞了太多噪音、工具描述含糊、错误没被兜住。先修 harness,再换模型,投资回报率高得多。

还有个有意思的反向发现:Cursor 团队复盘自己 2024 到 2026 的演进时提到,早期他们往上下文里塞大量静态信息和护栏(目录结构、lint 报错、类型检查结果),到 2026 年大部分都被删掉了,只保留"操作系统、git 状态、当前打开的文件"这类便宜又高价值的元信息,其余改成让模型自己按需去查。

也就是说:模型越强,harness 应该越薄。今天有用的护栏,半年后可能就是拖后腿的噪音。这条规律,在下面评价 DeepSeek 的方案时会再出现一次。

三、DeepSeek Harness:一切皆插件

8 月 13–14 日,DeepSeek 开源了 DeepSeek Harness(命令行叫 dsh),MIT 许可,一行命令就能跑起来:

npx @deepseek-ai/dsh web

它的口号只有一句:Everything is a Plugin(一切皆插件)

这句话在别处通常是营销词,但在 dsh 里它相当彻底。模型、工具、技能、会话、沙箱、文件系统、用户界面——全是插件。连 agent 主循环本身都是插件,可以整个换掉。官方的说法叫"无特权内核":内核不比任何一个组件更高一等,所有东西都可替换。

它还有几个挺有性格的设计:

01可以把竞争对手当子代理

dsh 能调用 Claude Code、Codex CLI 当作自己的 subagent。它不假设你只用 DeepSeek 的模型,官方支持约 40 家模型供应商。这在当下是个鲜明的姿态。

02「模型看得见的,就一定被记录」

这是写进架构里的保证,不是"最佳实践建议"。会话日志只追加不修改,整个执行过程可审计、可重放。

03每一步都摊开给你看

运行时显式呈现每个步骤——模型想了什么、调了什么工具、拿到什么结果。相对于闭源 agent 的黑盒体验,这是它最直接的卖点。

04文档当一等公民

仓库里带着 1,386 份架构决策记录(ADR)和约 17 万行文档,并且在 CI 里校验文档与代码是否一致。团队用它自己开发它自己。

四、底座 Cordis:一个来自聊天机器人框架的内核

dsh 最值得说的部分,其实不在 dsh 里,而在它的底座 Cordis。这里有个很反直觉的来历。

Cordis 不是为 AI 造的。它是 Koishi 的插件内核——一个跨平台的开源聊天机器人框架,名字取自东方 Project 的角色,由开发者 shigma 创建,在中文开源社区里跑了四年,沉淀了四千多个社区插件。

换句话说:DeepSeek 没有从零造一套 agent 运行时,而是拿了一套已经被四千个插件、四年生产环境验证过的动态插件系统,把它抬进了 AI agent 领域。

同时发布的还有一篇八十多页的论文——《A Programming Paradigm for Spatiotemporal Composability》(时空可组合性的编程范式),作者来自北京大学与 DeepSeek。它做的事是给 Cordis 的设计补上形式化的数学基础。听起来很学院派,但它要解决的问题非常实在:

怎么让一个正在运行的系统,安全地装上拔掉零件,既不用重启,也不留下垃圾?

论文把这件事拆成两个维度,这是全文最核心的两个概念:

时间维度可逆效应(Revertible Effects)

组件对系统做的每一个改动,都必须同时提供它的逆操作。运行时把这些逆操作按顺序记下来,卸载组件时倒着执行一遍,系统精确回到装它之前的状态。

大白话:拔掉插件像拔 U 盘,不留残留文件、不留幽灵监听器、不用重启。

空间维度反应式协效应(Reactive Coeffects)

普通的"效应(effect)"问的是「我改了什么」;"协效应(coeffect)"问的是「我需要什么」。组件声明自己的依赖,运行时持续盯着:依赖齐了就自动激活它,依赖没了就自动停用它。

大白话:插件之间的依赖不用你手工排顺序,谁该醒、谁该睡,运行时自己算。

两者合起来,就是"时空可组合性"——系统可以在运行中重新配置自己。这也是为什么有报道把 dsh 描述成"自我演化 agent 的运行时":一个能在不重启的前提下增删自身能力的框架,理论上可以让 agent 修改自己的工具集。

值得注意的是,这套东西在 AI 之外的领域已经跑通过了。它不是一个为了发论文而造的理论,而是一个跑了四年之后被反过来形式化的工程实践。在 AI 圈普遍"先发布再说"的氛围里,这个顺序反倒挺少见。

五、这步棋在下什么

把视角拉远,DeepSeek 这一步的战略意图相当清楚。

过去两年,AI 公司主要在两个维度上竞争:模型有多聪明,以及 token 有多便宜。DeepSeek 在第二个维度上一直是最凶的那个。但 harness 是第三个维度,而且是一个正在悄悄变成护城河的维度——Claude Code、Codex 这类产品的粘性,很大程度上来自 harness 和模型的联合调优,而不是模型单独的分数。

面对这条护城河,有两种打法:

纵向向下整合(OpenAI / Anthropic 的路子)

把 harness 和自家模型紧紧绑在一起,联合优化到极致,harness 本身作为闭源产品或订阅入口。体验好,但用户被锁定,内部是黑盒。

横向向外铺开(DeepSeek 的路子)

把 harness 开源、做成模型中立的公共基础设施,明确支持竞争对手的模型甚至把对手的工具当子代理。放弃 harness 本身的商业化,换取生态位和真实任务数据。

DeepSeek 的主张可以概括成一句话:agent 的能力不在某个神秘的内核里,而在一组可组合、可替换的工程组件里。这是一次主动的"祛魅"——如果 harness 是公共标准而不是商业秘密,那么护城河就重新回到模型本身,而那正是 DeepSeek 想比的地方。

市场反应很直接:仓库在发布后两天内涨到九万星量级(各来源统计口径略有出入,但数量级一致),已经逼近 Claude Code 和 Codex CLI 这类成名已久的项目。据 SCMP 报道,DeepSeek 今年 3 月才专门组建了 harness 团队——从组队到开源,不到半年。

六、冷静的一面

热度归热度,如果你在考虑真拿它干活,下面这些必须先知道。

01它明说了自己不稳定

官方标注 developer preview,README 里直接大写警告「会有破坏兼容性的变更」。版本号还在 v0.1.0-rc 阶段。这不是免责套话,是字面意思。

02Token 开销偏高

有第三方实测称,dsh 单次未命中缓存的输入约 4.7 万 token,而极简派 harness 只要约 4500——相差约十倍。还发现了工具间同步文件时重复注入指令集的 bug。这是单一来源的实测,未经广泛复现,但方向值得警惕。

03插件生态还是空的

「一切皆插件」的价值取决于有多少插件。有评测者实际尝试了 5 个第三方插件,全部失败;数十项第三方兼容性声明也大多待验证。生态需要时间,而 API 还在破坏性变更中。

04基准分数本身在打架

同期发布的 DeepSeek V4-Pro,不同来源引用的 SWE-bench 分数彼此矛盾,独立评测与厂商自评差距巨大,目前缺乏可靠的第三方复现。这件事本身恰好是本文的注脚:不公开 harness 的基准分数,参考价值有限。

更根本的争议在于设计哲学。批评者认为,Cordis 这套可逆效应 + 协效应的运行时,解决的是绝大多数开发者一辈子碰不到的问题——热插拔、运行时自我重构,听起来很美,但复杂度的代价是所有人一起付的,收益却只有做基础设施和多智能体研究的人拿得到。用一个流传的说法:为了蘸一口醋,包了一整盘饺子。

这就回到了前面 Cursor 那条规律:模型越强,harness 应该越薄。dsh 选择的方向恰恰相反——它赌的是 harness 会越来越厚、越来越像一个操作系统。所以真正的问题不是"dsh 能不能用",而是:

Agent 需要的是一个操作系统,还是一把小而锋利的刀

这个问题现在没有答案,只有下注。

七、所以你该做什么

抛开 DeepSeek 这个具体产品,harness 这个概念对任何在用 AI 干活的人都有直接的实用价值。三条务实建议:

01把「模型不行」当成待验证的假设,而不是结论

下次觉得 AI 表现差,先查这几件事:上下文里是不是塞了大量无关内容?工具描述是不是模糊?失败时有没有清晰的报错回到模型?这几项的改善空间,通常远大于换个模型。

02把外层 harness 当工程件来维护

项目里的 CLAUDE.md、MCP 配置、可跑的测试、清晰的报错信息——这些就是你的外层 harness。它们不是文档,是 agent 的输入。每次 agent 犯错,改环境而不是改口头提醒,让那个错在结构上不可能再犯。

03定期删护栏

Cursor 的经验:模型升级后,回头审视你加过的规则和上下文注入,把过时的删掉。harness 不是只增不减的账本,臃肿的 harness 会主动拖慢一个更聪明的模型。

至于 dsh 本身:如果你在做 agent 基础设施、多智能体编排、或者需要一个完全可审计可替换的运行时,值得现在就去读它的架构文档——那 1,386 份 ADR 本身就是一份罕见的公开教材。如果你只是想要一个稳定顺手的编程助手,观察三到六个月,等生态和 API 都稳下来再说。

一句话总结:2026 年 AI 应用的真正分水岭,正在从"用哪个模型"转向"怎么把模型装进一套系统里"。DeepSeek 把自己的那套系统连同理论基础一起摊开在桌上——这件事的意义,可能比这套系统本身好不好用要大得多。

你也在搭自己的 agent 吗? 不管是给公司内部做一个能真正干活的助手,还是在折腾自己的编程工作流——欢迎带着你踩过的坑和试出来的经验来聊。这类工程细节,交流出来的价值最高。从这里加入 →
主要来源 DeepSeek Harness 仓库 · github.com/deepseek-ai/deepseek-harness
Cordis 论文《A Programming Paradigm for Spatiotemporal Composability》 · github.com/cordiverse/paper
《Stop Comparing LLM Agents Without Disclosing the Harness》 · arXiv:2605.23950
Agent harness 词条 · Wikipedia
另参考 SCMP、The New Stack、TechNode、36Kr 等报道及多篇独立评测。文中所引数据均标注了来源性质,第三方单次实测结果未经广泛复现。