ChengRang

人人都能懂的科普:到底什么是 Harness?

人人都能懂的科普 约 8 分钟阅读

你打开 chat.anthropic.com,让 Claude 帮你改一份代码。它给你回了一段建议,让你"自己照着改一下"。

同一天你打开 Cursor,让里面的 Claude 帮你改一份代码。它直接打开了你电脑上的文件,把代码改了,还顺手跑了一下测试。

模型是同一个 Claude,结果差这么远。差在哪里?差在 Claude 身边那个"东西"不一样。这个东西,业内有个名字,叫 Harness

前三篇科普分别讲了 谁在干活什么是 agentAI 为什么忘事。本文是第四篇,会把前面三篇里出现过的零件统统收编到一个名字下。

先把概念立起来

一句话先记住:

Agent = 模型 + Harness

你前三篇里读到的"助手软件""循环""分身""上下文管理"——这些零件其实都属于 Harness。这一篇正好把它们归到一起。

模型本身其实啥都干不了

要理解 Harness 为什么必要,先看看模型自己能干啥。

把云端那个模型直接拉出来,它能做的只有一件事:你给它一段文字,它输出一段文字

仅此而已。它不能:

所以模型本身只是一个输入文字、输出文字的函数。它不是 AI 助手,它是 AI 助手里那颗会说话的脑子

那是谁让这颗脑子变成"能干活的助手"的?是 Harness。

Harness 长什么样

Harness 不是某个软件、某个产品名。它是一套围绕模型搭起来的脚手架。这套脚手架由几个零件组成:

零件 1:循环控制器

模型说完一句话就停了,它不知道自己该再来一步。

Harness 看到模型说了"我想用搜索工具",就自己再调一次模型问"工具结果是 XXX,那你下一步呢"。再看到模型说"我想读这个网页",又再调一次模型。

第二篇文章里讲的"主 agent 跟模型来回 6 次"——这 6 次来回不是模型自己跑的,是 Harness 在反复"按"模型这个按钮。模型每被按一下,输出一段话,Harness 拿到话之后再决定按不按下一次。

循环是 Harness 的,不是模型的。

零件 2:工具的执行器

模型说"我想用搜索工具搜星巴克定价"——它只是输出了这十几个字。真去调搜索 API 的不是模型,是 Harness

Harness 拿到这段话,识别出"哦它要调搜索",自己去调真正的搜索接口,把结果拿回来塞进对话里,再让模型看下一步。

模型那边一直只是"输出文字",从头到尾没碰过任何工具。所有"动手"的事都是 Harness 在做。

零件 3:上下文管理器

第三篇讲过,模型每次调用都是空白起步、自己记不住任何东西。要让 AI"接着上次的话题聊",得有人每次调用前把历史塞进去

塞什么、不塞什么、塞多少、什么时候压缩、什么时候新建会话——全是 Harness 决定的。模型只是被动接收别人塞给它的那段文字。

第三篇里讲的"杯子越来越满""偷偷压缩早期对话""滑动窗口"——这些都是 Harness 在管。模型自己什么都不知道。

零件 4:系统提示和规范

你用 Cursor 时它一开口就"知道"你在写代码、知道要遵守某些规范。这不是模型自己懂,是 Harness 在每次调用前偷偷加了一段开头,比如:

你是一个谨慎的程序员。修改代码前先读相关文件,改完之后跑测试。不要写注释。如果不确定就停下来问用户。

这段话用户看不到,但每次调用模型时都被塞在最前面。模型读到之后才"知道"该怎么干活。

不同 Harness 给的开头不一样,所以同一个模型在不同产品里表现得像不同的人。

零件 5:错误恢复

模型说错了、工具报错了、网络超时了——这些情况下该怎么办?模型自己是不知道的,它只会再说一句话。

Harness 负责处理这些事:是重试、是换个工具、是让模型反思一下、还是直接告诉用户失败了。这些逻辑全都写在 Harness 里。

零件 6:分身的调度

第二篇讲的"分身",也是 Harness 的功能。模型说"我要派 3 个分身"——它只是输出了这句话。真去开三段新对话、把任务分给三个分身、最后把结果合并回来的,是 Harness

模型自己不知道有"分身"这个概念,它只是输出了一段请求,剩下的全是 Harness 在干。

一句话归纳

Harness 就是模型周围所有"非模型"的代码。它把那颗只会输出文字的脑子,包装成一个能在你电脑上真的干活的助手。

同一个模型,不同 Harness 差多远

理解了 Harness 是什么,就能解释一个普通用户经常遇到的现象:为什么同一个 Claude,在不同地方表现差好几个量级

产品用的模型Harness 的样子
chat.anthropic.com 网页Claude薄壳:只有一个对话循环,没工具、没文件读写
Claude Code(命令行工具)同一个 Claude厚壳:加了 bash、文件读写、todo 列表、规范文档加载
Cursor同一个 Claude另一种厚壳:加了代码索引、自动跳转定义、diff 应用
Devin(AI 程序员)也用 Claude超厚壳:加了浏览器、shell、长任务记忆、多 agent 协作

模型一样,Harness 不一样,能干的事差好几个量级。

你以为是"Cursor 比网页版的 Claude 强"——其实更准确的说法是 "Cursor 的 Harness 把 Claude 用得更顺"。模型没换,是工位变了。

为什么 Harness 这么重要

理解了这个层级关系之后,你会发现一些反直觉但合理的事实。

升级 Harness 经常比换模型更划算

Cursor 这家公司不发模型,他们用的还是 OpenAI 和 Anthropic 的模型。但他们把 Harness 做得越来越厚——同样的模型,去年到今年的体验飞跃,全都来自 Harness 升级

这就是为什么"AI 编程工具"这个赛道这么卷。模型大家用的都差不多,真正拉开差距的是 Harness

厚不一定好

Harness 不是越厚越好。塞太多 SOP、限制太死、工具太多模型选起来犯晕——这些反而会让模型变笨。

像把一个聪明员工绑死在 100 页的操作手册里,他反而做不出东西。

模型决定上限,Harness 决定下限

两者都重要,但很多用户只关心模型,忽略了 Harness 的份量。

Benchmark 跟实际体验是两回事

排行榜上的"GPT-5 在 SWE-Bench 60%"指的是 GPT-5 套在那个 benchmark 自己定的 Harness 里、修了 60% 的 bug。

你在 Cursor 里用 GPT-5——Harness 不一样了,结果也不一样。可能更好(Cursor 的 Harness 经过精调),也可能更差(如果 Cursor 还没适配新模型)。

所以看到"模型 A 比模型 B 高 5 个点"先别太当真,看是在哪个 Harness 下测的。

几件值得说一下的事

Harness 是个工程概念,不是某个产品名。 你用的所有 AI 助手——Cursor、Claude Code、ChatGPT、豆包、元宝——背后都有一个 Harness 在跑,只是各家的 Harness 厚薄差很多。"Harness" 这个词主要是开发者圈里在用,普通用户日常不会碰到。

同一家公司可以有多个 Harness 共用一个模型。 Anthropic 自家就有好几个壳:网页 chat、Claude Code、API 直连。三个产品用的都是同一批 Claude 模型,但每个产品有自己一套 Harness,体验差得很远。

开源 Harness 已经追上闭源。 OpenHands、Aider、Cline 这些开源 Harness 现在的水平已经接近 Cursor 和 Devin。这件事的意思是:做 Harness 的难度,正在被开源社区追平——再过一两年可能任何人套个开源 Harness + 顶级模型,就能拿到接近商业产品的体验。

Harness 是 AI 时代真正的"产品力"。 模型能力大家差不多,最近一两年所有"AI 应用"层的创新——Agent、Computer Use、长任务、多模型协作——本质上都是 Harness 创新。模型公司发模型,应用公司做 Harness,分工越来越清楚。

几个容易搞错的事

Cursor 比 Claude 强。 这个说法不太对。Cursor 是壳,Claude 是脑,不是同类东西。准确说法是"Cursor 的 Harness 把 Claude 用得更顺"。Cursor 自己没有模型。

AI 在思考下一步。 不太对。模型只输出文字,输出完就停了。"做下一步"这个动作是 Harness 在执行——它看到模型输出了"我想用 X 工具"这五个字,自己去调 X 工具,再把结果塞回去让模型继续输出。模型本身不"思考"任何"下一步",它只是被反复调用。

换个更强的模型 Cursor 就更强。 不一定。Harness 是针对特定模型精调的,新模型如果还没被 Harness 适配(比如它的工具调用格式变了、思考方式变了),效果可能反而更差。这就是为什么有时候你切到"最新模型"反而觉得变蠢了。

Harness 里有 AI。 大部分情况下没有。Harness 主体是普通代码——if-elsefor 循环、HTTP 请求、字符串拼接,本身不"智能"。但厚一点的 Harness 里确实会嵌一些小模型当帮工:比如让一个便宜的小模型先看一眼大模型的回答有没有跑偏、用小模型给历史对话打分决定哪些值得保留、用小模型先判断这次任务该交给谁。这些嵌进去的小模型本身仍然是"模型",外面那层调度它们的代码才是 Harness。所以更准确的说法是:Harness 自己不智能,但它可以雇一些小模型来帮它把活干得更细

所有的 Agent 框架都叫 Harness。 不太对。这里有个层级要分清:LangChain、AutoGen、CrewAI 这些是开发框架,相当于一套搭 Harness 的"工具箱"——锯子、锤子、钉子都齐了,但本身不是椅子。用 LangChain 搭出来、跑在某个产品里的那一整套运行系统,才是 Harness。框架是原材料,落地后的成品才是 Harness。所以你说"Cursor 的 Harness 是 ..."、"Devin 的 Harness 是 ..."都对,但说"LangChain 是一个 Harness"就不准确了。

一句话

模型决定 AI 能"想到"多远,Harness 决定它能"做到"多远。

你用一款 AI 助手时,看到的"它会用工具""它会自动跑测试""它能记住前文"——这些能力大部分都不是模型自带的,而是 Harness 在背后帮模型实现的。下次再夸"这个 AI 真聪明"的时候,可以稍微想一下:聪明的可能是模型,但真正让你用得顺的,往往是它的 Harness。

← 返回目录