Agent 的解剖学:Harness 让智能真正落地

4 阅读8分钟

作者:Vivek Trivedy / LangChain Blog(2026年3月10日) 译/编:意译整理


一个公式,看透 Agent 的本质

如果你今天在构建 AI Agent,有一个公式值得刻在脑子里:

Agent = Model + Harness

"Model"是大家熟悉的部分——GPT、Claude、Gemini,那个会推理、会写代码、会回答问题的神经网络。

Harness 是什么?

简单说:除了模型本身,其他所有东西都是 Harness

系统提示(System Prompt)、工具定义、文件系统、代码执行环境、浏览器、子 Agent 的调度逻辑、上下文管理策略……这些都是 Harness 的组成部分。

文章作者 Vivek Trivedy 给出了一个很直白的结论:

"If you're not the model, you're the harness."(如果你不是模型,你就是 Harness。)


模型为什么"不够用"?

理解 Harness 的价值,先要理解原始模型的局限

一个裸模型,本质上只能做一件事:把文本输入映射成文本输出。它天然不具备:

  • 持久化记忆:每次对话从零开始,上一轮说了什么?不知道。
  • 执行代码:它可以写代码,但不能运行代码,更不能看到运行结果。
  • 获取实时信息:训练数据有截止日期,昨天发生的事它一概不知。
  • 搭建环境:安装依赖、创建文件、访问网络——这些对裸模型来说都是幻觉。

Harness 就是填补这些空白的基础设施。它把模型的智能从"纸上谈兵"变成"真正干活"。

用文章的原话来说:

"The model contains the intelligence, and the harness is the system that makes that intelligence useful."

模型负责智能,Harness 负责让智能有用。


Harness 的五大核心能力

1. 文件系统:Agent 的"工作台"

文件系统是 Harness 里最基础、也最容易被低估的组件。

它的作用远不止"存文件":

  • 跨会话持久化:Agent 今天做了一半的任务,明天可以继续
  • 上下文卸载:当对话窗口快满了,把不重要的内容写到文件里,释放 context 空间
  • 多 Agent 协作:几个 Agent 并行工作时,文件系统是它们共享信息的"公告板"
  • 知识沉淀:像 AGENTS.mdCLAUDE.md 这类约定文件,让 Agent 积累跨任务的经验

文件系统让 Agent 拥有了真正意义上的工作记忆,而不是每次都从白板重新开始。


2. Bash 与代码执行:把"写代码"变成"用代码"

大模型写代码的能力已经很强,但如果没有执行环境,写出来的代码只是"建议",而非"行动"。

Harness 提供 Bash 和代码执行能力后,Agent 可以:

  • 写一段 Python 脚本来处理数据,然后直接运行,看到结果
  • 遇到报错,根据错误信息自动修正,再次运行
  • 通过写代码+执行的循环,自己解决自己不会的问题

这个能力的本质是:Agent 不再依赖预设的工具,而是可以按需创造工具


3. 沙箱:在隔离环境里安全地"折腾"

代码执行很强大,但也很危险——Agent 可能安装奇怪的包、产生副作用,甚至破坏系统。

沙箱(Sandbox)是解法:

  • 提供隔离的执行环境,Agent 在里面怎么折腾都不影响外部
  • 可以安全地安装依赖、运行不可信代码
  • 支持并行扩展——同时运行几百个沙箱,各自独立
  • 通过命令白名单和网络隔离控制风险边界

沙箱让"大规模、高并发、安全可控"的 Agent 部署成为可能。


4. 记忆与搜索:突破"知识截止日期"

模型训练有截止日期,但现实世界每天都在变化。

Harness 通过两种方式帮 Agent 保持"新鲜感":

  • 持久化记忆文件:Agent 把重要学习成果写入文件,下次任务可以直接读取,实现跨任务学习
  • 实时搜索与 MCP 工具:通过 Web Search、API 调用等,获取训练数据之外的最新信息

这让 Agent 具备了持续学习的能力,而不是被冻结在某个历史时间点。


5. 上下文管理:对抗"Context 腐化"

这是 Harness 里最容易被忽视、但工程上最有挑战性的一块。

随着对话轮次增加,上下文会逐渐"腐化"(Context Rot):

  • 重要信息被淹没在长长的历史对话里
  • 过多的工具调用结果塞满 context 窗口
  • Agent 开始"健忘",前面说过的事后面忘了

成熟的 Harness 通过以下策略应对:

  • 智能压缩(Compaction):快到 context 上限时,自动总结历史,腾出空间
  • 工具输出卸载:把长篇的工具返回结果写到文件,只在 context 里保留摘要
  • 技能的渐进式披露(Progressive Disclosure):不一次性把所有工具都塞给模型,根据当前任务动态加载相关工具

上下文管理的好坏,直接决定 Agent 能否完成长时间、多步骤的复杂任务。


让 Agent 跑得更远:长时任务的关键设计

上面五个能力解决了"Agent 能干活"的问题,但要让 Agent 完成真正复杂的工作——比如独立完成一个多天的研究项目——还需要一套长时任务架构

Git 集成:给工作加上"存档点"

文件系统 + Git,让 Agent 可以:

  • 在任务的不同阶段提交进度
  • 出错时回滚到之前的稳定状态
  • 多个 Agent 通过 Git 协作,各自负责不同的分支或模块

Ralph Loop:突破单次 Context 窗口限制

这是文章里最有意思的工程设计之一。

问题是:即使有了 compaction,一个足够复杂的任务可能就是无法在一个 context 窗口里完成。Agent 会"累了",想退出。

Ralph Loop 的做法是:

通过一个 Hook,拦截 Agent 的退出行为,在新的干净 context 里重新注入原始任务目标,强制 Agent 继续工作。

就像给马拉松选手在终点线前30米竖起一块"终点在那边"的牌子,让它继续跑。

这是一个典型的"Harness 能做、模型自己做不到"的事情——模型本身不知道自己已经走了多远、接下来还需要做什么,但 Harness 有这个全局视角。

规划与自我验证

成熟的 Harness 还会引导 Agent 进行:

  • 任务分解:把大目标拆成可执行的步骤
  • 自我验证:通过跑测试、检查输出,判断自己是否完成了目标
  • 错误驱动的迭代:测试失败 → 修改 → 再测试,形成闭环

这套机制让 Agent 具备了类似"研发工程师"的工作方式。


模型与 Harness 的共同进化

文章提到了一个很有深度的观察:现代 Agent 系统(比如 Claude Code)在训练时,已经把 Harness 纳入训练循环

这意味着:

  • 模型被训练来善用特定的 Harness 能力,比如知道什么时候该写文件、什么时候该调工具
  • Harness 里被验证有效的设计模式,会反哺下一代模型的训练数据

这是一种协同进化:好的 Harness 让模型更强,更强的模型又让 Harness 的设计边界不断推进。

但这里也有一个风险:过度耦合

如果模型在训练时只见过某种特定 Harness 的工具逻辑,它可能对其他 Harness 配置表现不佳。最优的 Harness 未必是模型训练时搭配的那个——不同任务场景需要不同的 Harness 设计。


Harness 的未来:会被模型"吸收"吗?

随着模型越来越强,有些 Harness 功能可能会逐渐被内化到模型本身。但文章认为,Harness 工程不会消失,它的价值会转移到更高层次的问题上:

  1. 大规模多 Agent 编排:如何调度几百个并行 Agent,分工协作完成复杂任务
  2. Agent 自我分析:让 Agent 回顾自己的执行轨迹,识别失败模式,自我改进
  3. 动态工具装配:不再预设所有工具,而是根据当前任务即时组装所需的工具和上下文

LangChain 正在用 deepagents 库探索这些方向。


总结:智能靠模型,有用靠 Harness

回到最初的公式:

Agent = Model + Harness

如果用一句话总结这篇文章的核心观点:

模型决定了 Agent 能有多聪明,Harness 决定了这份聪明能产生多少实际价值。

一个没有 Harness 的模型,就像一个天才困在一个空房间里——有想法,但什么都做不了。

好的 Harness 给模型配上了文件柜、代码运行机、搜索引擎、记事本、时间管理工具,最终让它能够真正地、持续地、安全地完成现实世界的工作。

如果你在构建 AI Agent,与其一味追求更大的模型,不如认真思考:你的 Harness 设计得足够好了吗?


原文:The Anatomy of an Agent Harness by Vivek Trivedy, LangChain Blog, 2026-03-10