Agent Harness:为什么你的模型不是问题所在

LangChain 在 TerminalBench 2.0 上从 30 名开外飙到了第 5 名。他们没有换模型。同一个 LLM。同样的参数。唯一改变的是包裹在模型外面的那层软件——Harness。

另一个团队更进一步:让 LLM 自己去优化 Harness,拿到了 76.4% 的通过率,超过了人类工程师设计的系统。模式是一致的。模型很少是你的瓶颈。它周围的基础设施几乎总是。

Anthropic、OpenAI、Perplexity 和 LangChain 都在造同一个东西——各有各的叫法,各有各的取舍。2026 年初,行业终于给了一个正式名称:AI Agent Harness。

Harness 到底是什么

Harness 是模型之外让 Agent 运转的一切。不停运转直到任务完成的编排循环。给模型双手的工具定义。跨 session 记住事情的记忆系统。决定模型在什么时间看到什么内容的上下文管理。在失败滚雪球之前捕获它的错误恢复。在模型想做危险操作时说不的护栏。

LangChain 的 Vivek Trivedy 说得很直白:“如果你不是模型本身,那你就是 Harness。”

Beren Millidge 的比喻更精准。原生 LLM 就像一个没有内存、没有硬盘、没有输入输出设备的 CPU。上下文窗口是内存——快但容量有限。外部数据库是硬盘——大但速度慢。工具是设备驱动程序。Harness 是操作系统。我们重新发明了冯·诺依曼架构,不是因为它聪明,而是因为它对任何计算系统来说都是最自然的抽象。

Anthropic 把他们的运行时描述为一个”笨循环”。所有智慧都在模型里。Harness 只管理回合切换、工具执行和状态。循环很简单。复杂的是循环要处理的所有状态。

Agent 工程的三个层次

围绕模型的工程化工作分三个同心圆:

提示词工程——精心设计模型收到的指令。这是最内层,也是大多数人开始的地方。

上下文工程——管理模型在什么时间点看到什么内容。窗口里现在有什么?什么被总结了?什么被丢弃了?斯坦福的”迷失在中间”现象就在这一层吃掉你的性能。

Harness 工程——涵盖以上两者,再加上完整的应用架构:工具编排、状态持久化、错误恢复、验证循环、安全执行和生命周期管理。这是决定生产级 Agent 成败的一层。

大多数团队在提示词工程上过度投资,在 Harness 工程上投资不足。TerminalBench 的结果表明,这个比例搞反了。

12 个组件,按最先出问题的顺序排列

一个生产级的 Harness 有十二个独立组件。你不需要第一天就全部到位。但你需要知道把系统推到生产时,哪一个会先崩。

心脏:编排循环

这就是那个 while 循环,执行 思考→行动→观察 直到任务完成。组装提示词,调用模型,解析输出,执行工具调用,喂回结果,重复。描述起来简单,实现好很难——因为这个循环要处理模型可能产生的每一种状态,包括你没预料到的那些。

双手:工具

工具是注入到模型上下文中的结构化模式,让模型知道它能做什么。Harness 负责注册、参数提取、沙箱执行和结果格式化。Claude Code 提供六大类工具:文件、搜索、执行、网页访问、代码分析和子 Agent 生成。OpenAI SDK 支持函数工具、托管工具(网页搜索、代码解释器)和 MCP 服务器工具。

关键洞察:工具应该按当前步骤限缩范围,而不是暴露给整个 Agent。超过大约十二个同时可见的工具,模型就开始选错了。

记忆:短期、长期和索引

记忆在不同时间尺度上运作。短期记忆是单次 session 内的对话历史。长期记忆跨 session 持久存在——磁盘上的文件、按命名空间组织的 JSON 存储、SQLite 驱动的会话。

Claude Code 实现了三层架构:一个约 150 字符的轻量级索引始终加载;详细的主题文件按需调用;原始对话记录仅通过搜索访问。设计原则是:Agent 把自己的记忆视为提示,而非真理。每条回忆在行动前必须根据当前状态验证。

上下文窗口:模型真正看到的东西

上下文管理是大多数 Agent 悄悄翻车的地方。窗口中间的关键信息会使模型表现下降超过 30%——这就是斯坦福的”迷失在中间”发现。即使是百万 token 的窗口,指令遵循能力也随上下文增长而退化。

生产策略:压缩——总结对话历史,同时保留架构决策和未修复的 bug;观察掩码——隐藏旧工具输出但保留调用记录;即时检索——按需加载而非预加载一切;子 Agent 委托——每个子 Agent 深度探索,但只返回 1000-2000 token 的浓缩摘要。

目标,正如 Anthropic 的上下文工程指南所说:找到信号最强的最小 token 集合,最大化达成目标的概率。

胶水:提示词构建、输出解析、状态

提示词构建是层级化的:系统提示词在最上面,然后是工具定义、记忆文件、对话历史,最后是当前用户消息。OpenAI Codex 使用严格优先级栈,服务端控制的系统消息覆盖它下面的一切。

输出解析依赖原生工具调用——模型返回结构化的 tool_call 对象,而不是需要你写正则解析的自由文本。Harness 检查:有工具调用吗?执行它,继续循环。没有?这就是最终答案。

状态管理因框架而异。LangGraph 把状态建模为在图中节点间流动的类型化字典,在关键步骤存档——支持中断恢复,甚至时间旅行式调试。Claude Code 用 git commit 做存档点,用进度文件做结构化草稿纸。

安全网:错误处理、护栏、验证

错误处理重要是因为失败会累积。一个 10 步流程,每步 99% 成功率,端到端可靠性只有大约 90%。LangGraph 把错误分为四类:临时性的(延迟重试)、模型可恢复的(把错误作为工具消息返回,让模型自己调整)、人类可修复的(暂停等待)、异常错误(上报调试)。

护栏分多层运作:输入护栏在第一个 Agent 运行前检查;输出护栏检查最终结果;工具护栏在每次工具调用前检查。触发绊网,Agent 立即停止。

验证循环是区分玩具 demo 和生产系统的那个东西。Anthropic 推荐三种方法:基于规则的反馈(测试、代码检查)、视觉反馈(通过 Playwright 截 UI 图)、LLM 当裁判(另一个子 Agent 评估输出)。Claude Code 的创建者 Boris Cherny 指出,让模型能够验证自己的工作,能把产出质量提升 2-3 倍。

舰队:子 Agent 编排

Claude Code 支持三种子 Agent 模式:fork(克隆父级上下文)、teammate(独立窗口,通过文件邮箱通信)、worktree(独立 git 分支)。OpenAI 支持 Agent 作为工具(专家处理特定子任务)和移交(专家接管后续控制权)。模式是一样的:子 Agent 做深度探索,摘要回到编排器。

Harness 设计常犯的错误

过早构建太多 Harness。脚手架这个比喻不是装饰——建筑脚手架是临时的。它让工人够到本够不到的高度,但房子盖好后要拆掉。随着模型能力提升,你的 Harness 应该越来越薄,而不是越来越厚。如果你每次升级模型都要加复杂度,你就是做反了。

过度设计编排循环。Anthropic 的”笨循环”哲学对大多数场景是正确的。模型比你手写的路由逻辑聪明。给它好工具、好上下文、清晰目标,然后让路。

把记忆当作真理。Claude Code 的架构明确将存储的记忆视为需要验证的提示。把它们当作基础事实,会产生自信地基于过时信息行动的 Agent。

跳过验证。从 demo 到生产的跳跃,是从”模型说它对”到”系统证明它对”的跳跃。如果你的 Agent 不验证自己的输出,你交付的就是一个 demo。

现在如何思考 Harness 设计

从简单开始。一个 Agent。一个循环。几个精准限缩的工具。在加任何东西之前先把验证循环做对。TerminalBench 的证据是清晰的:一个好模型上的薄 Harness,好过一个顶级模型上的复杂 Harness。

每个 Harness 架构师要面对的七个选择:

  1. 单 Agent 还是多 Agent——先穷尽单 Agent 能力
  2. ReAct 还是先规划后执行——ReAct 灵活但贵;先规划更快
  3. 压缩还是检索——总结对话还是按需加载
  4. 规则打分还是 LLM 当裁判——硬测试还是另一个模型打分
  5. 自动批准还是逐步确认——工具执行上的速度与安全
  6. 工具范围——暴露比拥有更少的工具;按当前步骤限缩
  7. Harness 厚度——多少逻辑写在代码里,多少留给模型发挥

协同进化原则:现在的模型在训练时就考虑了 Harness 的存在。如果你的 Harness 设计得好,模型升级时你不需要增加复杂度,性能就会自动提升。Harness 随时间变薄,而不是变厚。

两个使用完全相同模型的 Agent,性能可以天差地别。差距永远是 Harness。TerminalBench 用 25 个名次的跃升证明了这一点。你的生产日志正在证明这一点。

下次你的 Agent 表现不佳,别急着找更好的模型。先找更好的 Harness。从循环开始。然后是记忆。然后是验证。当系统证明它对的时候再发布——而非模型说它对的时候。

来源:https://x.com/dotey/status/2053601852261110201

相关文章

多自主才算太自主

Agent 的自主性是一根滑杆,不是一个开关,正确档位由任务决定的多过由技术决定的。把滑杆推到"完全自主"的本能是真的,因为那样 demo 看起来很神奇。代价后来在客服队列里出现,那时一个 Agent ...

Claude Code 2.1.136:当 AI Agent 的安全阈门从‘相信’变成‘验证’

Claude Code 2.1.136:当 AI Agent 的安全阈门从‘相信’变成‘验证’

你让 Claude Code 在 auto mode 下跑一个长任务,回来发现它把你的 AWS credentials 写进了日志文件。或者更糟:它在你没看到的一个弹窗里点了 "允许",然后把一个安全 ...

Agent 失败时:不会无限循环的恢复模式

Agent 的失败不抛异常。它们产出看起来合理但错误的输出,或者用稍微不同的方式悄悄重试同一个坏方法。把 Agent 包在 try/catch 里是错误的心智模型——Agent 没崩,它只是继续往一个 ...

没有标准答案的 Agent 怎么评测

评测一个 Prompt 已经很难。评测一个在给出答案前要跑十次工具调用的 Agent,是另一个量级的难。能产生正确答案的轨迹很少完全相同。能产生错误答案的轨迹常常一直看起来合理,直到第七步。标准的精确 ...

Agent 护栏:在不阉割 Agent 的前提下

给 Agent 加护栏属于那种简单版本太严苛、谨慎版本太宽松的任务。挡得太狠 Agent 拒绝完全合理的任务;挡得太松,新闻头条自己就写出来了。第一版要么是什么都不肯做的聊天机器人,要么是不该做那件事 ...

Agent 记忆:情景、语义,以及该留下什么

你建的第一个 Agent 没有当前对话之外的任何记忆,这能撑大约一周。然后用户回来,期望连续性,你开始往上贴记忆:一张数据库表、一个向量库、把过去会话的摘要塞进 system prompt。三个月后, ...

Multi-Agent 系统:协调才是真正的难点

Multi-Agent 架构很有诱惑力,因为它映射到人类组织工作的方式:专家、协调者、交接协议。第一次把复杂任务在"研究员"Agent 和"作者"Agent 之间拆分时,结果确实更好。第三次的时候,你 ...

Planner-Executor 拆分:什么时候该拆,什么时候该合

第一天,让单个模型同时做规划和执行,看起来很优雅。三个月后,trace 日志会讲一个不同的故事:Prompt 里负责规划的那部分在工具调用上下文中开始漂移,负责执行的那部分开始幻觉出从未被规划过的步骤 ...

Postiz Agent CLI:把 28 个社交平台的发布权交给你的 AI

你写了一个能读 RSS、能总结论文、能生成配图的 AI Agent,结果发现最后一英里卡住了:它没法把内容发出去。 不是技术问题,是生态断层。大多数社交媒体平台只给人类设计 UI,API 文档散落在 ...

生产环境的 ReAct:经得起跑题的推理循环

ReAct 是一个干净的想法:思考、行动、观察、循环。在生产环境里,循环本身才是最容易崩的部分。模型在前几步推理得还算合理,然后要么过度解释,要么对工具调用反复纠结,要么自说自话地认定任务已经完成。教 ...

用经典编程规则喂饱你的 AI 编码 Agent

用经典编程规则喂饱你的 AI 编码 Agent

AI Coding Agent 写代码的速度远超人类,但它们不天然知道什么代码算是好代码。没有明确约束,Agent 产出的代码在 demo 里看起来功能完整,三个月后在维护追索里看起来一团乱——函数过 ...

工具选择:什么时候该模型挑,什么时候该你挑

会用工具的 Agent 在 demo 里看起来很有力,因为模型在选下一步做什么。它在生产里看起来很脆弱,因为模型在选下一步做什么。可用工具的空间随特性线性增长,随边界情况二次增长——超过大约十二个工具 ...

Claude Code 102 教给学术研究者的五件事

Claude Code 102 教给学术研究者的五件事

2026 年 5 月 11 日,Mushtaq Bilal, PhD 发布了《Claude Code 102 for Academic Researchers》,这是他教程系列的第二篇。第一篇 Cla ...

Dexter:为金融研究而生的自主 Agent

Dexter:为金融研究而生的自主 Agent

金融研究是一个天然适合 AI Agent 的领域——数据公开、步骤可结构化、输出是分析而非行动。但多数通用 Agent 在这个场景里会暴露两个问题:碰到的数据格式太多太杂,每步都要重新理解上下文;缺少 ...

文件驱动的 Agent,不需要构建步骤

周五晚上还在排 pitch deck 格式的投行分析师,并没有在创造 alpha。他们在给数字画框——那些数字早就从 CapIQ 拉出来了,早就在模型里交叉验证过了,早就被 VP 批过了。横在数据和格 ...

OpenClaw 终于长出手和眼:Peekaboo v3

OpenClaw 终于长出手和眼:Peekaboo v3

OpenClaw 之前能接消息、能调 Agent、能把结果送到各个聊天渠道,但缺一双手和眼睛。Agent 在聊天框里给建议容易,要它实际操作桌面上的按钮、菜单、弹窗、输入框,之前没有可靠的本地执行层。 ...

WiseClaw:医疗 AI 不缺 Demo,缺的是一个能长出来的 Agent OS

WiseClaw:医疗 AI 不缺 Demo,缺的是一个能长出来的 Agent OS

医疗行业不缺 AI Demo。随便打开一家医院的公众号,大概率能找到某个"智能问诊助手"——能回答 5 个预设问题,然后引导你去挂号。Demo 做完,项目就死了。 问题不出在模型。WiseDiag、 ...