什么是 Agent Harness
在「大模型」与「业务编排」之间,长期存在一个被低估的层级:它负责把一次 LLM 推理真正变成「能读写文件、能调 API、能在出错时回滚」的连续动作。这一层在不同项目里被叫做 runtime、agent loop、execution layer,本文统一称为 Agent Harness(智能体运行层)。
一个 Harness 的最小职责可以归纳为三件事:把模型输出的「意图」翻译成可执行的「动作」,把动作结果回填回上下文,并在循环出错时决定重试、降级还是中止。围绕这三者,2026 年主流框架逐渐收敛出五类工程原语。它们决定了智能体能否从 demo 走向生产,而非停留在一次性脚本。
2024 年的智能体叙事是「prompt 写好就能跑」;2026 年的共识是「模型只是算子,Harness 才是产品」。OpenAI Agents SDK 把 tracing 与 handoff 做成一等公民、Microsoft Agent Framework 把 Agent Harness 单列为一层抽象、OpenClaw 把沙箱与权限做成可配置项——三者不约而同地把工程复杂度从应用层下沉到运行层。
原语一:工具执行与沙箱
工具调用是 Harness 与「纯聊天模型」的根本分野。但把任意工具暴露给一个会自我迭代的循环,风险极高。沙箱化执行因此成为生产 Harness 的底线能力。
CodeAct 与函数调用的取舍
工具执行有两种主流表达:其一是函数调用(function calling),模型输出结构化参数,Harness 在受控环境调用预注册函数;其二是 CodeAct,模型直接生成可执行的代码片段(如 Python),由 Harness 在隔离解释器里运行。前者安全边界清晰、但表达力受限;后者灵活、但攻击面更大。
| 维度 | 函数调用 | CodeAct(代码即动作) |
|---|---|---|
| 表达力 | 受限于预注册工具集合 | 可组合任意逻辑,边界外也能写 |
| 安全面 | 窄,参数可校验 | 宽,需隔离解释器 + 系统调用拦截 |
| 可调试性 | 高,动作可枚举 | 中,需捕获异常与副作用 |
| 典型实现 | OpenAI Agents SDK 工具、MCP 工具 | Claude Code / Codex CLI 的 shell 执行 |
务实的做法是分层暴露:高频、低风险动作走函数调用(数据库只读查询、日历读取),低频、高风险动作走受沙箱约束的代码执行,并强制设置超时与资源上限。Microsoft Agent Framework 的 Agent Harness 把这种分层抽象为「工具注册表 + 执行策略」两层,让同一段 agent 代码在不同安全等级环境里切换执行器。
原语二:权限模型与审批桥
当智能体获得写权限,权限模型直接决定它是「效率工具」还是「事故源头」。2026 年主流 Harness 收敛出三种授权范式:
- 全自助(auto-approve):所有动作默认放行,仅用于可信内部环境,风险高
- 白名单 + 分级:读操作默认放行,写/删除/网络外联需显式授权,Claude Code 与 OpenClaw 默认采用此路线
- 审批桥(approval bridge):动作先进入待审队列,由人或另一监督智能体放行,适合监管敏感场景
审批桥并非某个单一产品的专利,而是一种可插拔的工程模式:Harness 在即将执行一个「高风险动作」前,把上下文、拟执行命令、影响范围打包成结构化请求,交给外部决策者(人类工单、HITL 服务、或 supervisor 智能体)裁决,再回填裁决结果继续循环。它的价值在于把「信任」从静态配置变成动态、可审计、可回滚的过程。
过度收紧权限会降低智能体可用性,过度放开会引发事故。2026 年多起公开事件中,Agent 在无人审批下执行了破坏性数据库操作。工程上的稳妥解是「读默许、写显授、删禁默、外联白名单」,并把每一次越权尝试写进审计日志而非静默放行。
原语三:上下文压缩与窗口治理
长程任务里,上下文会随工具结果、历史动作快速膨胀。Harness 必须提供上下文压缩与窗口治理机制,否则会在第 N 轮因超长上下文而退化或超支。
常见做法有三种:其一是摘要压缩,定期把旧对话折叠为结构化摘要(Cursor 的 Composer 2 与多家框架都采用自摘要技术把长链推理压进有限窗口);其二是检索回填,只保留最近窗口,历史事实存外部记忆库按需召回;其三是分层上下文,把稳定信息(系统提示、项目约定)与易变信息(本轮动作)分离,避免重复注入。
| 策略 | 触发时机 | 优点 | 风险 |
|---|---|---|---|
| 摘要压缩 | 上下文超过阈值 | 实现简单,保留语义 | 压缩丢细节,可能丢关键约束 |
| 检索回填 | 每轮按需召回 | 可处理超长历史 | 依赖检索质量,有遗漏风险 |
| 分层上下文 | 启动即固定稳定层 | 减少重复 token 开销 | 需维护约定文件(AGENTS.md 等) |
原语四:可观测性与追踪
一个不会「被看见」的智能体无法被运维。Harness 的可观测性至少包含三层:token 与成本计量、动作与工具调用追踪、以及循环级回放。OpenAI Agents SDK 把 tracing 做成原生能力,每一次 handoff、每一次工具调用都可导入可视化面板;Microsoft Agent Framework 提供 per-run 观测钩子;OpenClaw 则通过会话日志与审计中间件实现。
可观测性的工程价值不止于排障:它是成本治理与合规审计的前置条件。没有逐动作的成本归因,就无法定位「哪个 agent 在烧钱」;没有结构化审计轨迹,金融与医疗场景的合规审查无从谈起。
原语五:状态持久化与程序性记忆
短期上下文之外,生产 Harness 需要状态持久化——让智能体在重启、跨会话、跨实例后仍能延续工作。这通常表现为两类:其一是会话状态(检查点 / checkpoint),记录循环进行到哪一步;其二是程序性记忆(procedural memory),把「怎么完成某类任务」沉淀为可复用的方法,而非每次重新探索。
Microsoft Agent Framework 在 1.0 中把程序性记忆作为 Agent Harness 的组成部分,官方自报在 Tau-bench 等任务上带来 7–14 分的提升。其本质是把成功的执行路径外置为指令或样例,下次遇到同类任务直接复用,降低探索成本与出错率。这与人类「形成肌肉记忆」高度相似——也是 2026 年多智能体框架从「每次临场发挥」走向「积累经验」的关键一步。
当模型能力逐渐商品化,Harness 的五类原语(沙箱 / 权限 / 压缩 / 观测 / 记忆)成为真正的差异化来源。一个把权限、审计、成本都做扎实的运行层,比单纯调用更强模型更难被复制。
主流实现横向对比
把上述原语映射到 2026 年几个代表性实现,可以看出各自的工程取向:
| 维度 | OpenAI Agents SDK | Microsoft Agent Framework | OpenClaw | Hermes Agent |
|---|---|---|---|---|
| 工具执行 | 函数调用 + MCP | 工具注册表 + 执行策略 | 函数 + shell,可配沙箱 | 函数 + shell |
| 权限模型 | guardrails 拦截 | 分层授权 + 策略 | 白名单分级 | 白名单分级 |
| 上下文治理 | handoff 分权 | 摘要 + 程序性记忆 | 会话压缩 | 会话压缩 |
| 可观测性 | 原生 tracing | per-run 观测钩子 | 会话日志 + 审计 | 会话日志 |
| 形态 | SDK(可嵌入) | 框架(全栈抽象) | 自托管运行时 | 自托管运行时 |
OpenAI Agents SDK 胜在轻量与可嵌入,tracing 与 handoff 让它适合做「编排层」;Microsoft Agent Framework 把 Harness 显式抽象为独立层,程序性记忆是差异点;OpenClaw 与 Hermes Agent 则以自托管、BYOK、白名单权限见长,适合对数据主权敏感的企业。
常见反模式与工程取舍
- 把 demo 当生产:缺少权限边界与审计,一次性脚本直接上线,遇越权动作即事故
- 过度依赖单一基准:用 SWE-bench 之类分数衡量「是否可用」,忽略真实合并率与运维成本
- 上下文无治理:长任务不压缩、不分层,token 成本随轮次线性爆炸
- 可观测性缺位:出错后无法回放,定位问题靠猜
- 记忆不沉淀:每次同类任务都重新探索,重复支付探索成本
务实的落地顺序通常是:先上白名单权限与审计日志(保命),再补上下文治理与可观测性(降本提效),最后做程序性记忆(积累复利)。把顺序反过来,往往会在早期就制造一次难以收场的事故。