很多人以为自己在造 AI Agent,其实只是在模型外层接了几个工具,配上 Prompt,然后管这叫"智能化"。Demo 演示完美,线上环境一跑就崩。模型"失忆"了,工具悄无声息地返回空值,上下文窗口塞满了噪音。
这时候直觉反应是:模型不行,换一个。
通常这是错误的诊断。真正的问题在模型之外,有一个名字:Agent Harness。
Harness 是什么?
Agent 不是单个组件,而是一种涌现行为——多个系统协同工作时才会出现的东西。Harness 就是那套产生这种行为的机械装置。
把 LLM 拆开看,它本质上只是一个计算引擎。没有持久记忆,不和外部世界交互,也不管跨步骤的状态管理。Harness 填补了这些空白:编排、工具执行、记忆、上下文、安全、状态——全部由它负责。换句话说,它把一个无状态的模型变成了能行动的东西。
一个贴切的类比:Raw LLM 等于没有操作系统的 CPU,Harness 就是让这台 CPU 可用的 OS。
这个框架也澄清了一个常见误解:当你听说某人"做了一个 Agent",实际上他做的是一个 Harness,然后接上了一个模型。
三层工程
理解 Harness 的位置,要先分清三个层次:
- Prompt 工程:模型收到什么指令
- Context 工程:模型何时看到什么信息
- Harness 工程:其余一切——编排、工具、记忆、状态、安全
大多数人的精力都花在第一层。真正有竞争力的系统都在第三层发力。Harness 不是围绕 Prompt 的薄封装,它是让迭代式、目标导向行为成为可能的底层系统。
编排循环
每个 Agent 核心都是一个循环,描述为 Thought–Action–Observation 三阶段:
- 组装 Prompt
- 调用模型
- 解析输出
- 执行工具调用
- 将结果填回上下文
- 重复,直到满足终止条件
概念上很简单,实现里往往就是一个 while 循环。真正的复杂度不来自循环本身,而来自循环必须正确管理的所有子系统。
一次循环里实际发生了什么
具体走一遍:系统先构建完整 Prompt——系统指令、可用工具、相关记忆、对话历史、当前用户请求。模型生成输出,可能是一个最终答案,也可能包含结构化的工具调用。如果涉及工具调用,Harness 要做这些事:验证输入、在受控环境执行、捕获结果,再把结果格式化成模型能理解的消息格式。系统更新上下文,进入下一轮循环,直到终止——工具调用完毕、达到最大步数、或触发安全约束。
这个看似简单的循环,实际在协调多个子系统:上下文管理、错误处理、权限控制、状态追踪。
系统真正崩在哪里
Agent 系统的失败大多不是模型推理能力的问题,而是系统设计的问题。常见失败点:
- 上下文窗口被低信号数据填满
- 工具返回不一致或格式错误
- 缺乏重试或恢复机制
- 不验证中间结果
这些问题会跨步骤叠加。即便每步只有很小的失败率,多步工作流也会整体崩溃。结论很直接:可靠性是系统工程问题,不只是模型问题。
上下文管理才是真正的瓶颈
最被低估的挑战是上下文。往 Prompt 里加越多信息,性能并不会线性提升,反而经常下降。重要细节被埋没,模型的一致性变差。
高效系统的做法:把上下文当稀缺资源,而不是往 Prompt 里倾倒所有信息。具体策略:
- 压缩和总结历史交互
- 仅在需要时检索相关信息
- 分离短期记忆和长期记忆
- 将子任务委托给更小、更专注的循环处理
目标不是更多上下文,而是更好的上下文。
超越对话历史的记忆
Agent 系统里的记忆是多层的。短期记忆是当前对话,提供即时连续性。长期记忆跨会话持久化——文件、数据库或结构化存储。还有一种工作记忆:执行过程中演变的任务特定状态。
关键设计原则:记忆不能被盲目信任。强健的系统把存储信息当作参考,在行动前对照当前状态进行验证。
工具作为 Agent 的接口
工具是 Agent 与外部世界交互的方式。通常通过 Schema 定义——描述每个工具做什么、需要什么输入。模型根据这些描述决定何时调用、如何调用。
Harness 负责围绕这个决策的一切:注册可用工具、验证输入、安全执行(通常在沙箱中)、把输出格式化成循环能理解的形式。设计糟糕的工具,对系统的损害不亚于糟糕的 Prompt。
Thin Harness 与 Thick Harness
核心设计决策之一:多少控制权放在 Harness 里,多少交给模型?
- Thin Harness:把更多决策委托给模型,更灵活但可靠性依赖模型能力
- Thick Harness:把更多逻辑显式编码,更可靠但复杂度更高
随着模型能力增强,趋势明显向 Thin 发展——模型自身越来越擅长处理规划和执行,Harness 可以变得更简单。
核心洞察
两个系统用同一个模型,可以产生完全不同的结果。差异不在模型,在 Harness。Harness 决定了上下文如何管理、工具如何使用、错误如何处理、决策如何验证。工程杠杆的主要发力点就在这里。
结语
Agent 挂了,直觉反应是换模型。很多时候,更好的做法是检查模型周围的系统。因为模型只是故事的一部分。Harness 才是把它变成真正能跑的东西的关键。