返回 FEED
AGENT2026-05-27

从 Prompt 到 Harness:Agent 工程的分水岭

我们经常花很长时间调 Prompt,只为让 Agent 在项目中的表现更稳定。但换到一个新对话里,它的表现还是老样子。

你开始怀疑是不是模型不行。换一个更新的模型,好了一点。两天后,又出现新的不稳定。

再换模型,再调 Prompt。这个过程可以无限循环。

因为真正的问题,根本不在模型。

打地鼠式循环

Mitchell Hashimoto 管这个叫"打地鼠式循环":靠改提示词修复 Agent 的错误,改了一个,冒出另一个,永远修不完。

他的结论很直接:

  • 别再用自然语言跟 Agent 讲道理了
  • 用工程约束、lint 检查、自动化验证把它管住

这就是 Harness 的起点。

实验证据

LangChain 做过一个实验,结果很说明问题:

模型不变,只改外面那套系统,Terminal Bench 2.0 从 52.8 提到 66.5,排名从三十名开外冲到前五。

同一个模型,表现差出 13.7 分。

Harness 是什么

Anthropic 的最简单定义:

除了模型以外的一切。

Phil Schmid 的类比更直观:

模型是 CPU,上下文窗口是内存,Harness 是操作系统。

你不会把 CPU 直接卖给用户,你卖的是操作系统。

Harness 的六层

1. 上下文工程

Agent 每次执行前,能不能拿到对的信息。

AGENTS.md、Skills 目录、MCP 连接外部数据源,本质上干的都是同一件事:把零散上下文结构化,并在需要的时刻精准加载。

Claude Code 的 MCP 搜索能做到 95% 的上下文缩减。

2. 工具层

Agent 能调什么,怎么调。

文件读写、终端命令、浏览器、API、沙盒代码执行,都是工具层的一部分。

Cursor 甚至会给不同模型定制不同的工具格式:OpenAI 用 patch-based 编辑,Anthropic 用字符串替换。因为不同模型擅长的操作方式并不一样。

3. 执行循环

读上下文,定计划,调工具,观察结果。

这个循环真正的难点不是跑起来,而是在跑的过程中不出事。

Cursor 发现,GPT-5-Codex 的推理 trace 如果被意外丢弃,性能会直接掉 30%。不是模型突然变笨了,而是它的思考过程被腰斩了。

4. 错误处理

工具调用失败之后怎么办?

Cursor 把工具错误分成五类:

  • 参数错误
  • 环境矛盾
  • 服务商故障
  • 用户中断
  • 超时

每一类都有自己的处理策略。他们花了一个迭代,把意外工具调用错误压了整整一个数量级。

5. Context Rot 防护

Agent 每犯一次错,每次调用失败,错误信息都会留在上下文窗口里。久了,上下文就会被污染,模型判断会持续下降。

Cursor 管这叫 context rot。防它的办法,不是事后清理,而是尽量减少错误、压缩可恢复信息,必要时开一个干净窗口。

6. 断点恢复

Agent 执行到一半断了怎么办?

Manus 用 todo.md 持续记录目标。没有这个,Agent 执行超过 50 次工具调用后就很容易漂移,忘了一开始到底要干什么。

Manus 在六个月里把 Harness 重写了五遍,每一遍都在提升可靠性。

为什么 Harness 是护城河

Meta 去年 12 月花约 20 亿美元买 Manus,买的不是模型。Manus 的模型用的是 Anthropic 和 OpenAI。真正值钱的是 Harness。

OpenAI 用 Codex 写了一个 100 万行代码的内部产品,零行人工手写。不是人变懒了,而是 Harness 兜住了执行层,人把精力从"写",转移到了"设计和验证规则"。

结论

模型的差距在缩小,系统的差距在拉开。

一年前,大家还在纠结 GPT 还是 Claude。差 5 个 benchmark 点,都觉得是大事。

但现在,几家头部模型在大多数任务上的差距已经没那么大。真正拉开差距的是:同样调用这些模型,有人能让 Agent 连续工作 7 小时不失控,有人还在解决工具调用报错。

下次你发现 Agent 不稳定、产出质量忽高忽低,不要第一反应就是:是不是该换个模型?

先看一眼你给它搭的系统:

  • 它知道当前任务的完整上下文吗?
  • 它能拿到对的文件和工具吗?
  • 出错之后有没有自动回滚和重试?
  • 执行过程中有没有检查点?
  • 做完之后有没有质量门?

这些东西,比模型版本号更能决定你的产出质量。

围绕自己业务沉淀下来的上下文结构、工具规则、质量门、错误清单,不会过期。护城河不在模型的先进程度,而在系统的扎实程度。