The Anatomy of an Agent Harness (LangChain / Vivek Trivedy)

来源:https://www.langchain.com/blog/the-anatomy-of-an-agent-harness 作者:Vivek Trivedy (LangChain) 收录时间:2026-05-18

核心定义

Agent = Model + Harness. 如果你不是模型,你就是 harness。

Harness 是模型之外的每一块代码、配置和执行逻辑。原始模型不是 Agent——harness 给它状态、工具执行、反馈循环和可执行的约束后才成为 Agent。

Harness 组件推导(从行为反推设计)

1. 文件系统 — 持久存储 & 上下文管理

行为需求: Agent 需要持久存储、与真实数据交互、跨 session 持久化工作。

文件系统是最基础的原语:

  • 工作空间:读写数据/代码/文档
  • 上下文卸载:不必把所有东西放在上下文里
  • 协作面:多 Agent 和人类通过共享文件协调
  • Git 加上版本控制:跟踪进度、回滚、分支

2. Bash + 代码执行 — 通用工具

行为需求: Agent 自主解决问题,不需要人类预设计每个工具。

ReAct 循环(推理→工具调用→观察→重复)需要工具。与其为每个动作预建工具,不如给 Agent bash:

  • Agent 可以按需设计自己的工具
  • "给一个人厨房,而不是教他用一个厨房小工具"

3. Sandbox & 工具 — 安全执行 & 验证

行为需求: Agent 需要安全环境执行代码、观察结果、验证工作。

  • 隔离执行环境,可按需创建/销毁
  • 预装语言运行时、Git、测试 CLI、无头浏览器
  • 浏览器/日志/截图/测试运行器 → Agent 可以自验证

4. 记忆 & 搜索 — 持续学习

行为需求: Agent 记住所学的,访问训练后出现的信息。

  • AGENTS.md 每次 start 注入 → Agent 编辑 → 持续学习
  • Web 搜索 & Context7 等工具桥接知识截止

5. 对抗上下文腐烂

行为需求: Agent 长时间工作不降质。

| 策略 | 说明 | |------|------| | Compaction | 上下文快满时智能总结卸载 | | Tool-call offloading | 大工具输出只保留头尾,完整版存文件 | | Skills (Progressive Disclosure) | 按需加载,不一次全塞进上下文 |

6. 长时间自主执行

行为需求: Agent 完成复杂工作,自主,正确,跨长时间。

多个原语组合:

  • 文件系统 + Git — 跨 session 跟踪工作
  • Ralph Loop — Hook 拦截 Agent 退出,注入原始 prompt 到干净上下文,强制继续
  • 规划 & 自验证 — 分解目标为步骤,每步后验证正确性

模型训练与 Harness 设计的耦合

今天的 Agent 产品(Claude Code、Codex)在 posttraining 时 harness 在循环中:

  • 模型特别擅长 harness 设计者认为它应该擅长的动作
  • 这创造了反馈循环:有用原语被发现 → 加入 harness → 用于训练下一代模型
  • 副作用:改工具逻辑可能导致模型性能下降(如 Codex 的 apply_patch)

但这不意味着最佳 harness 就是模型训练时的那个:

  • Terminal Bench 2.0 上,Opus 4.6 在 Claude Code 中得分远低于在其他 harness 中
  • LangChain 团队仅通过改 harness 从 Top 30 跳到 Top 5

Harness Engineering 的未来方向

  1. 编排数百个并行 Agent 在共享代码库上工作
  2. Agent 分析自己的 traces 来识别和修复 harness 层的失败模式
  3. Harness 动态组装正确的工具和上下文 — 按需而非预配置

关键引用

"The model contains the intelligence and the harness is the system that makes that intelligence useful." 模型包含智能,harness 是让智能有用的系统。