ChatGPT Image 2026年5月17日 16_52_49

最近大家都在说Harness,我花了几个小时读完了一篇相关的长文,讲 AI Agent Harness 的构造。前半段看得有点吃力,概念多、术语密,但越往后读越觉得值。这篇文章把我这段时间做 Agent 时的一些模糊直觉,给系统化地梳理清楚了。

先说说那个让我愣住的发现

你可能也有过这种经历:花两小时搭了一个 ReAct 循环的 Demo,跑通的时候特别有成就感。模型能思考、能调用工具、能自我纠错,看起来像个真正的”智能体”了。

但一上生产环境就开始掉链子。

模型忘记三步前做了什么。工具调用悄悄报错,上下文窗口里塞满垃圾。你发现同样的 prompt,在窗口里放的位置不一样,效果能差 30%。

我之前总觉得是模型不够强,或者 prompt 写得不够好。这篇文章直接点醒了我:

问题根本不在模型,在模型外面那层”壳”。

所以,什么是 Harness?

作者引用 LangChain Vivek Trivedy 的一个定义公式,我觉得特别精准:

“如果你不是模型本身,那你就是 Harness。”

Harness 是包裹在大语言模型之外的所有软件架构。编排循环、工具系统、记忆管理、上下文控制、状态持久化、错误处理、安全护栏……

不是模型在”自主行动”,是 Harness 在驱动模型行动。

Beren Millidge 2023 年有个类比:原生 LLM 就像一个没有内存、没有硬盘、也没有 IO 设备的 CPU。上下文窗口是内存(快但小),外部数据库是硬盘(大但慢),工具是设备驱动。而 Harness,就是那个操作系统。

我们都在重新发明冯·诺依曼架构。因为这本来就是计算系统最自然的抽象方式。

三个让我印象最深的组件

原文拆解了 12 个组件,我挑三个最有感触的说。

1. 上下文管理

Stanford 有个研究叫”Lost in the Middle”:当关键信息处于上下文窗口中间位置时,模型表现会下降 30% 以上。就算你用上了百万级 Token 的窗口,随着上下文变长,指令遵循能力照样退化。

生产环境的应对策略:

  • 压缩 (Compaction):在接近限制时总结对话历史,保留架构决策和未修复的 Bug,扔掉冗余的工具输出
  • 观察掩码:隐藏旧的工具输出,但保留调用记录
  • 即时检索:只保留轻量级标识符,动态加载数据

Claude Code 甚至倾向于用 grephead 命令,而不是加载整个文件。目标是:找到能最大化达成目标概率的、信号最强的最小 Token 集合。

2. 验证循环

这是区分”Demo 能跑”和”生产可用”的关键。

Anthropic 推荐三种验证方法:

  • 基于规则的反馈(测试、代码检查)
  • 视觉反馈(通过 Playwright 截取 UI 截图)
  • LLM-as-judge(由另一个子智能体评估输出)

Claude Code 的 Boris Cherny 说,让模型能验证自己的工作,产出质量能提升 2-3 倍。

一个 10 步的流程,每步 99% 成功率,全流程成功率只有 90.4%。错误是会滚雪球的。

3. 子智能体编排

Claude Code 支持三种子智能体模式:

  • Clone (Fork):复制父级上下文,适合独立子任务
  • Teammate:通过文件邮箱通信的独立窗口,适合并行工作
  • Worktree:独立的 Git 分支,适合需要版本隔离的探索

建议很务实:先充分挖掘单智能体的潜力。多 Agent 会带来额外的开销和信息损耗。

厂商的不同哲学

  • Anthropic (Claude Agent SDK):通过一个简单的 query() 函数暴露 Harness,运行时是”笨循环”,智慧全在模型里
  • OpenAI (Agents SDK):代码优先,工作流逻辑直接用 Python 表达,不搞复杂的图形语言
  • LangGraph:把 Harness 建模为显式的状态图,强调对流程的精细控制
  • CrewAI:基于角色的多智能体协作,”流程层”管理确定性逻辑

没有对错,只有场景和偏好。

脚手架理论

文章结尾有个比喻让我印象深刻:

“脚手架”是精准类比。建筑脚手架是临时基础设施,让工人能触及够不到的高度。脚手架本身不盖房子,但没有它,工人就上不去。

房子盖完后,脚手架是要拆除的。

随着模型能力提升,Harness 的复杂度应该逐渐降低。这就是协同进化原则 —— 模型在训练时就已经考虑了 Harness 的存在,设计得好的 Harness,在模型升级时会自动受益,不需要增加复杂度。

最后

TerminalBench 2.0 的发现:同样的大语言模型,仅仅通过改变 Harness,排名能从 30 名开外飙升到第 5。

两个用相同模型的 Agent,性能天差地别,原因就在 Harness。

下次你的 Agent 表现不佳,去检查一下 Harness 吧。


参考来源