03. AI Agent 与 Harness:Anthropic 和 LangChain 的 Harness Engineering
mingzaily / Codex / 2026-03-29
聊 harness engineering,资料并不少,真正难的是不同文章经常不在同一层说话。
Anthropic 和 LangChain 这两篇很适合放在一起看:前者更像在谈长任务架构,后者更像在谈运行时调优。
如果前两篇《01. AI Agent 与 Harness:概念梳理》和《02. AI Agent 与 Harness:从 Prompt 到 Harness》解决的是概念和背景,那么这一篇要解决的是三件事:
- Anthropic 和 LangChain 这两篇文章各自在强调什么
- 它们为什么都把
harness看得比 prompt 更重要 - 它们的视角有什么共同点,又有什么区别
如果你更关心落地阶段的验证闭环,可以接着读《04. AI Agent 与 Harness:V2 Harness 的验证设计》。
结论
把这两篇放在一起看,结论大致是:
-
这两篇文章都在说明:真正拉开 agent 效果差距的,不只是模型,而是它外面的 harness
-
harness engineering不是一个宣传词,而是把 agent 的上下文管理、工具调用、验证返工、长任务运行工程化的方法 -
Anthropic 更关心“怎么让 agent 跑很久还不乱”
-
LangChain 更关心“怎么让 agent 在同样模型下跑得更准”
-
Anthropic在讨论长任务架构 -
LangChain在讨论运行时调优
为什么这两篇文章值得单独拿出来看
因为它们都把一个过去经常被模糊处理的问题说透了:
模型能力强,不等于系统就稳定。
过去很多讨论会把注意力放在:
- 模型版本
- 提示词技巧
- 上下文长度
- 是否支持工具调用
但这两篇文章真正强调的是:
- 工具怎么组织
- 上下文怎么管理
- 失败怎么被发现
- 系统怎么返工
- 长任务怎么防止熵增
也就是说,它们讨论的重点不是“模型会不会”,而是“系统能不能稳定做完”。
Anthropic 那篇,到底在讲什么
文章原文:
1. 它说的 harness 很重
Anthropic 那篇最重要的一个信号是:
他们说的 harness,不是几个 prompt,不是一份 AGENTS.md,也不是若干个 tool 描述。
在他们的实践里,harness 里面有:
- planner / generator / evaluator 分工
- context 管理
- 文件式交接
- Git
- 浏览器自动化
- QA 标准
- 不达标就返工的循环
先要看到的是:
skill、tool、MCP 都可能是 harness 的组成部分,但 harness 本身比它们大得多。
2. 它点名了两个核心失败模式
Anthropic 提得很准的两个问题是:
- context 变长之后失去连贯性
- 模型自评太宽松
这两个问题其实非常典型。
第一个问题会导致:
- 长任务跑着跑着就偏了
- 模型忘记之前做过什么
- 同一个问题来回修
第二个问题会导致:
- 模型自己觉得“完成了”
- 但真实系统根本没跑通
- 交付看起来像对,实际上并不成立
Anthropic 讲的并不是“怎么让模型更聪明”,而是:
怎么让系统别失忆,怎么让系统别自我感觉太良好。
3. 它把验证循环讲得非常具体
这篇文章最有价值的一点,是它没有停留在“做完以后检查一下”这种空话。
它强调的验证循环是真实、具体、可执行的:
- 生成
- 运行
- 观察
- 验证
- 反馈
- 再生成
也就是说:
验证循环不是附属动作,而是 harness 的核心部件。
这件事非常关键。
因为很多团队已经有 prompt、有规范、有工具,甚至有 skill,但只要没有验证闭环,本质上还是“指导型 harness”,不是“可交付 harness”。
4. 它强调 harness 不是越复杂越好
Anthropic 那篇里我最喜欢的一句是:
every component in a harness encodes an assumption about what the model can't do on its own
这句话的意思其实很狠:
你加上的每一层 harness,都代表你在假设模型自己还做不好某件事。
所以:
- harness 不是越多越高级
- harness 应该围绕当前模型的真实短板设计
- 当模型升级后,旧 harness 应该被重新审视
这里有个很关键的判断:
用最小但足够有效的 harness,比盲目堆很多组件更重要。
5. 它真正关心的是长任务熵管理
Anthropic 整篇文章其实一直在回答一个问题:
当任务持续很久、跨很多轮、跨很多上下文窗口时,怎么让系统别越跑越乱?
所以他们会强调:
- handoff artifact
- 结构化 feature list
- 每轮只推进一部分
- evaluator 角色
- 长任务仍可继续的状态设计
这些东西合起来,其实都在服务于同一件事:
降低长任务里的熵增。
LangChain 那篇,到底在讲什么
文章原文:
1. 它证明了 harness 可以单独拉分
LangChain 那篇最重要的一点,是它明确告诉你:
不是只有换更强模型才能提升效果。
在很多情况下,只改 harness,就能明显提升 agent 在复杂任务里的表现。
这等于把讨论重心从:
- 模型竞赛
拉回到:
- 系统设计
- 运行时调优
- failure mode 修复
2. 它的方法是 trace-driven
LangChain 的味道很工程。
它不是说:
- 多试几个 prompt
- 多换几个模型
- 靠感觉调一调
而是说:
- 先看 traces
- 找 failure mode
- 再改 harness
也就是说,它把 harness engineering 讲成了一种非常典型的工程调优方法,而不是玄学。
3. 它把 harness 聚焦成几个关键旋钮
这篇文章把一些常见抓手讲得很清楚,比如:
system prompttoolsmiddleware
这些东西平时大家都知道,但 LangChain 的重点在于:
不是知道这些组件存在,而是要把它们当成可以系统调参的控制面。
这就很像传统软件工程里的:
- 配置调优
- 中间件设计
- 运行时保护
- 观测与回放
4. 它最强调 Build -> Verify -> Fix
这点和 Anthropic 在精神上非常一致。
LangChain 非常明确地反对一种做法:
模型生成一次答案,系统就直接收工。
它更强调:
- 先生成
- 再验证
- 再修
也就是:
Build -> Verify -> Fix
如果说 Anthropic 更像是在长任务层面强调验证循环,那么 LangChain 更像是在调优层面强调:
没有验证闭环,agent 的输出不值得直接相信。
5. 它把 harness 看成运行时保护机制
LangChain 的另一个特点是,它把 harness 讲得很像“运行时防护层”。
比如它会强调:
- traces
- middleware
- deterministic context injection
- loop detection
- 明确测试约束
这让我很自然地把 harness 理解成:
不是给模型加装饰,而是给运行中的 agent 系统加保护。
两篇文章的共同点
它们虽然视角不同,但核心判断非常一致:
1. 都认为真正拉开差距的,不只是模型
两篇文章都在反复说明:
- 模型强很重要
- 但真正决定系统稳定性的,往往是 harness
2. 都认为验证循环是核心能力
这几乎是它们最强的共识。
不管叫 evaluator、checklist、middleware 还是 verify loop,本质都是:
不能只相信模型自己的判断。
3. 都认为 harness 应该围绕 failure mode 设计
不是先堆很多组件,再希望它有效;而是:
- 先识别系统最常见的失败模式
- 再围绕这些失败模式设计 harness
4. 都隐含一个前提:harness 不是永恒不变的
模型升级后,harness 也应该跟着变。
有些旧时代必须手动补的东西,未来可能会被更强的模型或更成熟的平台能力吃掉。
两篇文章的差异
如果要做最短的区分,可以这样记:
Anthropic:怎么让 agent 跑很久LangChain:怎么让 agent 跑更准
再展开一点:
Anthropic 的重心
- 长任务
- 角色分工
- handoff artifact
- evaluator
- 熵管理
- orchestration
LangChain 的重心
- traces
- middleware
- failure mode analysis
- 验证闭环
- 系统调优
- 可观测性
所以:
- Anthropic 更偏“长任务架构设计”
- LangChain 更偏“运行时工程调优”
读完之后最值得记住的几件事
1. Harness 不是宣传词
乍看之下,harness 很容易像一个新的营销包装。
但把这两篇文章读完之后,会更容易发现:
它是在给 agent 时代的软件工程补一套更贴切的语言。
2. Harness 和仓库规则不是一回事
这两篇文章也把一个区分说得更清楚:
- 如果目标是在团队里更稳定地使用
Codex / Claude Code- 重点通常是
AGENTS.md、repo instructions、skills、验证命令和 CI workflow
- 重点通常是
- 如果目标是自己开发一个业务 agent 系统
- 重点才是
agent harness / scaffold
- 重点才是
前者是仓库规则和团队工作流,后者才是官方语境里更常见的 harness。
这两者不是一回事,但思路可以互相借鉴。
3. 只有规范,没有验证循环,还不算成熟 harness
很多团队现在已经有:
AGENTS.md- skill
- MCP
- 代码规范
- 命令规范
这些当然很有价值。
但如果没有验证循环、没有失败返工、没有 done 定义,那更像是 harness v1,还不是完整的闭环。
4. 长任务的核心问题其实是熵
Anthropic 那篇里,最扎眼的其实就是这个问题。
很多所谓“长任务不稳”,本质上其实都是:
- 信息越来越散
- 状态越来越乱
- 目标越来越漂
- 模型越来越像在猜
所以长任务 harness 的关键,往往不是“多加一个工具”,而是:
怎么管理熵。
最短总结
最后只留下几句的话,最值得记住的是:
Harness engineering不是让模型更聪明,而是让系统更稳定。- Anthropic 更像在讨论长任务架构。
- LangChain 更像在讨论运行时调优。
- 两篇文章都认为验证循环是核心能力。
skill / tool / MCP可以是 harness 的组成部分,但都不等于 harness 本身。- 长任务最难的不是“开始做”,而是“别越做越乱”。
参考
- Anthropic: Effective harnesses for long-running agents
- LangChain: Improving Deep Agents with harness engineering