Skip to content

AI Agent Harness 架构

Hsinyan
Published date:
2 min read

Table of contents

Open Table of contents

什么是 Agent Harness

Harness 是包裹在大语言模型之外的完整软件架构,包括编排循环、工具、记忆、上下文管理、状态持久化、错误处理和护栏。Anthropic 在 Claude Code 文档中直指 SDK 就是”驱动 Claude Code 的 Agent Harness”。OpenAI Codex 团队同样将 Agent 和 Harness 等同。

LangChain 的 Vivek Trivedy 的定义公式:“如果你不是模型本身,那你就是 Harness。”

关键区分:AI Agent 是用户感知的行为体现(有目标、用工具、自我纠错),Harness 是产生这些行为的背后机器。

类比:LLM 是 CPU,Harness 是操作系统

Beren Millidge (2023) 的类比:

“我们重新发明了冯·诺依曼架构。“

工程化三层次

层次内容
提示词工程精心设计模型接收的指令
上下文工程管理模型在什么时间点看到什么内容
Harness 工程涵盖上述两者 + 工具编排、状态持久化、错误恢复、验证循环、安全执行、生命周期管理

Harness 不仅仅是提示词的套壳,它是让 Agent 自主行动的完整系统。

12 个核心组件

1. 编排循环

系统的”心脏”。实现思考-行动-观察(TAO/ReAct)循环:整合提示词 → 调用 LLM → 解析输出 → 执行工具 → 反馈结果 → 重复,直到任务完成。本质是一个 while 循环,复杂的是循环要处理的状态和逻辑。Anthropic 将其描述为”笨循环”,智慧全在模型里。

2. 工具

Agent 的”双手”。结构化模式(名称、描述、参数类型)注入模型上下文,负责注册、校验、参数提取、沙箱执行、结果捕获。Claude Code 提供六大类工具:文件操作、搜索、执行、网页访问、代码分析和子 Agent 创建。OpenAI Agents SDK 支持函数工具、托管工具和 MCP 服务器工具。

3. 记忆

三层时间尺度:

Claude Code 实现:轻量索引(~150 字符,始终加载)→ 按需调用的详细主题文件 → 仅搜索访问的原始对话记录。核心原则:Agent 将记忆视为”提示”,行动前必须根据实际状态验证。

4. 上下文管理

核心问题:上下文腐烂——关键信息在窗口中间时模型表现下降 30%+(“迷失在中间”现象)。即使百万 token 窗口,指令遵循能力也随上下文增长退化。

应对策略:

目标:找到信号最强的、能最大化目标达成概率的最小 token 集合。

5. 提示词构建

层级化组装:系统提示词 → 工具定义 → 记忆文件 → 对话历史 → 当前用户消息。OpenAI Codex 使用严格优先级栈。

6. 输出解析

现代 Harness 依赖原生工具调用(结构化 tool_calls 对象而非自由文本)。检查是否有工具调用 → 有则执行并继续循环 → 无则是最终答案。结构化输出通过 Pydantic 模型进行模式约束。

7. 状态管理

8. 错误处理

10 步过程每步 99% 成功率 → 全流程仅 90.4%。错误会滚雪球。

LangGraph 四类错误:临时性(延迟重试)、模型可恢复(将错误作为工具消息让模型调整)、用户可修复(暂停等人工干预)、意外错误(上报调试)。

9. 护栏与安全

OpenAI SDK 三级护栏:输入护栏(首次运行前检查)→ 输出护栏(检查最终结果)→ 工具护栏(每次调用前检查)。触发绊网立即停止。

Anthropic 将权限执行与模型推理分离:模型决定想做什么,Harness 决定允许做什么。

10. 验证循环

区分”玩具演示”和”生产级 Agent”的关键。三种方法:

Claude Code 创建者 Boris Cherny:让模型验证自己工作,产出质量提升 2-3 倍。

11. 子 Agent 编排

12. 循环步进式流程

  1. 提示词组装 → 2. 模型推理 → 3. 输出分类(无工具调用则结束)→ 4. 工具执行(校验、权限、沙箱)→ 5. 结果打包 → 6. 上下文更新(必要时压缩)→ 7. 返回步骤 1

主流框架实现对比

框架策略
Anthropic (Claude Agent SDK)通过 query() 暴露 Harness,“笨循环”,智慧在模型
OpenAI (Agents SDK)代码优先,工作流用 Python 直接表达
LangGraph显式状态图,精细流程控制
CrewAI基于角色的多 Agent 协作,流程层管理确定性逻辑
AutoGen (微软)多种编排模式:顺序执行、群聊、移交、动态任务管理

脚手架比喻

建筑脚手架是临时基础设施,让工人触及原本够不到的高度。脚手架本身不盖房子,但没它工人上不去高层。

关键洞察:房子盖好后,脚手架要拆除。 随着模型能力提升,Harness 复杂度应逐渐降低。

协同进化原则:现在模型训练时已考虑 Harness 的存在。Harness 设计得好,模型升级时不需要增加复杂度,性能自动提升。

7 个关键设计决策

  1. 单 Agent vs 多 Agent:先充分挖掘单 Agent 潜力。多 Agent 带来额外开销和信息损耗
  2. ReAct vs 先规划后执行:ReAct 灵活但成本高,先规划后执行更快
  3. 上下文管理策略:总结 vs 动态加载
  4. 验证循环设计:硬性代码测试 vs LLM 打分
  5. 权限与安全架构:速度优先自动批准 vs 安全优先步步确认
  6. 工具范围:暴露当前步骤所需的最小工具集往往效果最佳
  7. Harness 厚度:多少逻辑写死在系统,多少留给模型发挥

核心结论

两个使用相同模型的 Agent 性能天差地别,原因全在 Harness 设计。TerminalBench 证据:仅仅改变 Harness,排名可变 20 多位。LangChain 仅改变底层架构就让排名从 30+ 飙升至第 5。

Harness 不是已解决的问题。它是硬核工程能力的体现:如何管理上下文这一稀缺资源?如何设计验证循环防止错误累积?如何构建不产生幻觉的记忆系统?模型越强,Harness 越薄,但永远不会消失——即便最强模型也需要系统来管理窗口、执行代码、保存状态和验证工作。

Next
【22.08.29 已恢复服务】空课室查询系统