← All Articles

Agent Harness:让 AI 从聊天机器人变成真正的智能体

乔木 · Original

Whole Picture

乔木这篇是一篇综述 + 词汇表。它把 2026 年初由 Anthropic、OpenAI、LangChain 三家共同确立的术语「Agent Harness」——也就是包裹 LLM 的完整软件基础设施——系统梳理了一遍。核心论点:Agent = Harness + Model;用户看到的”agent 行为”是涌现,产生这种行为的”机械装置”是 harness。LangChain 的实验是标志性证据:模型权重不变,仅改 harness,TerminalBench 2.0 排名从 30+ 跳到第 5。

文章借用 Beren Millidge 2023 的类比把概念坐标钉死:LLM = CPU / 上下文窗口 = RAM / 外部 DB = 硬盘 / 工具 = 设备驱动 / Harness = 操作系统。这个类比非常耐用,因为它解释了后面所有设计决策的”为什么”——上下文就是稀缺的 RAM,所以要压缩、遮蔽、延迟加载;工具失败要被 harness 捕获,就像 OS 要处理 syscall 错误。

三层工程模型

关键澄清:Harness 不是提示词的 wrapper,是让 agent 成为 agent 的完整系统

12 个生产级组件(浓缩版)

# 组件 一句话本质
1 编排循环 思考-行动-观察的 while 循环;Anthropic 叫”哑循环”
2 工具 模式定义 + 注册 + 沙盒执行 + 结果格式化
3 记忆 短期(会话内)+ 长期(跨会话,三层层次)
4 上下文管理 压缩 / 遮蔽 / 即时检索 / 子代理委托——对抗 “lost in the middle”
5 提示词构建 分层优先级栈:系统 > 工具定义 > 开发者 > 用户 > 历史
6 输出解析 原生 tool_calls > 文本解析
7 状态管理 LangGraph 用图 + checkpoint;Claude Code 用 git commit + 进度文件
8 错误处理 10 步 × 99% = 90.4%,错误会复合
9 防护栏 输入 / 输出 / 工具三级;Anthropic 架构上把权限与推理解耦
10 验证循环 规则 / 视觉 / LLM-as-judge;给模型验证手段,质量 ×2-3
11 子代理编排 Fork / Teammate / Worktree 三种执行模型
12 —(并入上面 11 条)

七个架构决策

  1. 单 vs 多 agent —— 先最大化单 agent,工具>10 或明显独立域才拆
  2. ReAct vs Plan-Execute —— ReAct 灵活但贵,LLMCompiler 快 3.6×
  3. 上下文策略 —— 时间清除 / 总结 / 观察遮蔽 / 结构笔记 / 子代理委托
  4. 验证循环设计 —— 计算验证(确定性)vs 推理验证(语义性)
  5. 权限架构 —— 宽松 vs 限制性,看部署环境
  6. 工具范围 —— 更多工具 = 更差性能;Vercel 删 80% 工具后变好
  7. Harness 厚度 —— Anthropic 押”薄 harness + 模型变强”,LangGraph 押”显式控制”

关键洞察:Harness 协同进化

亮点 / 槽点

亮点: - “如果你不是模型,你就是 harness” —— Vivek Trivedy 这句公式化断言,把整个生态切成两半 - “哑循环”命名精准:所有智能都在模型里,循环只管理回合 - 协同进化那段是全文最有力的观点——它解释了为什么 harness 设计不能追求”完备”

槽点: - 12 组件清单是综述性的,每条落地细节浅 - 引用大量 Anthropic / OpenAI / LangChain 文档但没给链接,验证成本高 - 对 Claude Code 的描述偏粉丝视角,对 LangGraph 的描述则略贬(“图 DSL”隐含批判) - Ralph Loop 两阶段模式值得展开,这里只写了两行

延伸

Discussion 补充(2026-04-21)

核心洞察:两种不同类型的 Harness

Justin 的立场:模型能力未到完美、复杂任务需要厚 harness;他的 hub skill “需求越细致越丰富,越需要一定厚度”。

讨论产出的区分(Claude 提出、Justin 认同):

关键推论:Justin 的 skill 永远不会变薄到 Claude Code 那种程度——它的厚度不在”等模型变强”的时间轴上,而在”捕捉个人偏好粒度”的另一个轴上。两者是两种不同类型的 harness,逻辑起点相似但演进方向不同。

→ 这条满足 mental model 准入条件(命名 / 跨 case / 应用锚点 / 来源 / 自包含),候选回写到 mental-models.md

上下文腐烂:已观察到

Justin 确认自己日常用 Claude Code 能感觉到 context rot,通过改进 memory 机制(分层记忆 + vec-search + handoff.md 多时间尺度)在缓解。印证文章第 4 条”上下文管理”是生产级 harness 的关键组件之一。

Git-as-Checkpoint 的技术澄清

讨论中 Justin 追问了 /rewind 和 commit 的关系,厘清了三层区分:

  1. Session 内/rewind 独立于 git,可回滚文件 + 对话
  2. 跨 session:新 Claude 只能通过 git log + handoff.md + 进度文件反推意图,working tree 里的 uncommitted diff 它”看得到代码、读不懂上下文”
  3. 跨 compact/rewind 不保证能穿越压缩点,真正跨 compact 安全的只有 commit / handoff / 进度文件

实操启示:Justin 当前习惯是小事和实验性工作不跑 session-end、直接 exit——最低成本补救是”exit 前花 10 秒往 handoff.md 加一行说明”。

Teammate 模式评估与延后

文章提到 Claude Code 支持三种子代理执行模型(Fork / Teammate / Worktree)。Justin 现在几乎都是 Fork 模式。

讨论中验证了 Teammate 模式(Agent Teams)当前可用但仍 experimental: - 需要 CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 - 已知 bug:session 恢复 / 任务协调 / 关闭行为;subagent 内部不能主动 SendMessage(architecture 是平的)

决定:延后 2 周再评估(已入 GTD,见 GTD/briefs/2026-04-21-teammate-mode-trial.md)。

判别原则沉淀:Worker 之间不需要聊 → subagent;需要互相挑战 / 验证证据 → teammate;需要嵌套层级 → subagent(teammate 不支持)。