共生知识库
整理页

Agent Harness 解剖:从概念到工程实践

Agent Harness 解剖:从概念到工程实践

Akshay Pachaar 在 2026 年 4 月发表的深度分析,综合 Anthropic、OpenAI、LangChain 等团队的实践经验,系统定义了 Agent Harness(代理框架)——将无状态 LLM 转化为可用智能体的完整软件基础设施。


核心观点#

  • Agent 是涌现行为,Harness 是产生该行为的机器。当有人说"我构建了一个 agent",实际是说"我构建了一个 harness 并指向了一个模型"。
  • Beren Millidge 的类比:原始 LLM = 没有 RAM、没有磁盘、没有 I/O 的 CPU;上下文窗口 = RAM;外部数据库 = 磁盘;工具集成 = 设备驱动;harness = 操作系统。
  • "如果你不是模型,你就是 harness。"——LangChain 的 Vivek Trivedy
  • TerminalBench 2.0 证据:仅改变 harness(相同模型、相同权重),排名从 30+ 跃升至第 5。
  • Harness 是产品差异化的真正战场:使用相同模型的两个产品,性能差异完全来自 harness 设计。

围绕模型的三个工程层次#

  1. 提示工程(Prompt Engineering)——设计模型收到的指令
  2. 上下文工程(Context Engineering)——管理模型看到什么、何时看到
  3. Harness 工程(Harness Engineering)——包含以上两者,再加上完整应用基础设施

生产级 Harness 的 12 个组件#

#组件说明
1编排循环(Orchestration Loop)TAO/ReAct 循环的核心 while 循环;Anthropic 称其为"dumb loop",所有智能在模型中
2工具(Tools)Handler 的六大类和 OpenAI 的函数工具、托管工具、MCP 服务器工具
3记忆(Memory)三层级短/长期记忆;Claude Code 的轻量索引 → 主题文件 → 原始转录
4上下文管理(Context Management)压缩、观测遮蔽、即时检索、子代理委派——对抗"Lost in the Middle"
5提示构造(Prompt Construction)系统提示 → 工具定义 → 记忆文件 → 对话历史 → 用户消息的层次化组装
6输出解析(Output Parsing)原生工具调用为主;结构化输出用 Pydantic 约束 schema
7状态管理(State Management)LangGraph 的类型化字典 + Reducer;Claude Code 的 git 提交 + 进度文件
8错误处理(Error Handling)10 步流程若每步 99% 成功率,最终仅 ~90.4%;四种错误类型分级处理
9护栏与安全(Guardrails & Safety)三层护栏(输入、输出、工具);Claude Code 独立管控约 40 项工具权限
10验证循环(Verification Loops)规则反馈 + 视觉反馈 + LLM-as-judge;Boris Cherny:验证使质量提升 2-3 倍
11子代理编排(Subagent Orchestration)Fork / Teammate / Worktree 三种执行模型
12生命周期管理构建、部署、监控、更新的完整生命周期

循环在行动:单步工作流#

  1. 提示组装 → 系统提示 + 工具 schema + 记忆 + 对话历史 + 用户消息(关键上下文放首尾)
  2. LLM 推理 → 模型生成文本和/或工具调用请求
  3. 输出分类 → 判断是否调用工具;是否请求切换 agent
  4. 工具执行 → 参数校验 → 权限检查 → 沙箱执行 → 捕获结果(只读并发,变异串行)
  5. 结果打包 → 格式化为 LLM 可读消息;错误捕获让模型自纠正
  6. 上下文更新 → 追加结果;接近窗口上限时触发压缩
  7. 循环 → 回到步骤 1,直到满足终止条件

Ralph Loop 模式(Anthropic 长任务方案):Initializer Agent 初始化环境 → Coding Agent 在每次会话中读取 git 日志和进度文件定向 → 选取优先级最高的未完成任务 → 工作、提交、写摘要。文件系统提供跨上下文窗口的连续性。


主流框架实现对比#

框架核心理念架构特点
Claude Agent SDK"Dumb loop"通过单一 query() 创建循环;所有智能在模型;Gather-Act-Verify 循环
OpenAI Agents SDKCode-firstRunner 类三模式(async/sync/stream);Codex 三层架构(Core → App Server → Client)
LangGraph显式状态图llm_calltool_node 两个节点 + 条件边;从 AgentExecutor 演进而来
CrewAI角色式多 agentAgent / Task / Crew 三层;Flows 层提供确定性骨架
AutoGen对话驱动编排三层架构(Core / AgentChat / Extensions);五种编排模式

设计 Harness 的 7 个关键决策#

  1. 单 agent vs. 多 agent:优先最大化单 agent;仅在工具超过 ~10 个重叠或领域明确分离时才拆分
  2. ReAct vs. Plan-and-Execute:ReAct 灵活但单步成本高;LLMCompiler 报告 3.6 倍 速度提升
  3. 上下文窗口管理策略:五种方案;ACON 研究实现 26-54% token 缩减,准确率保持 95%+
  4. 验证循环设计:计算验证(确定性地基)vs. 推理验证(LLM-as-judge,语义检查)
  5. 权限与安全架构:宽松型(快速但有风险)vs. 限制型(安全但慢)
  6. 工具范围策略:更多工具通常更差——Vercel 移除 80% 工具 后效果更好;Claude Code 通过懒加载实现 95% 上下文缩减
  7. Harness 厚度:逻辑放在 harness 还是模型中?Anthropic 押注薄 harness + 模型改进

核心启示#

  • 脚手架隐喻:Harness 是建筑脚手架——建造时不可缺少,建筑完成后拆除。随着模型改进,harness 复杂度应降低。
  • 共演化原则:模型现在与特定 harness 联合训练;改变工具实现可能降低性能。
  • 未来验证测试:如果更强模型到来时不需要增加 harness 复杂度,设计就是合理的。
  • Manus 的教训:六个月内重建五次,每次都在移除复杂度。复杂工具定义退化为通用 shell 执行;"管理 agent" 退化为简单的结构化交接。
  • 最终结论:当下次 agent 失败时,不要责怪模型。审视 harness。
AI 整理页

基于 1 篇可追溯原文整理,可能有误。来源、版本与反馈入口收在下方。

查看来源、版本与反馈

资料信息

分组
摘要
日期
2026年5月15日

标签

agent
harness
architecture

相关操作

在图谱中查看