Agent Harness:模型之外的智能体运行时
一句话定义
Agent Harness 是包在模型外面的确定性运行时:它把任务和环境状态整理成模型可见的上下文,把模型输出约束为动作,在权限与预算内执行动作,再把可审计的观察送回模型,直到成功、失败或触发停止条件。
它不是“再写一个 prompt”,也不等于 LangGraph、OpenHands 或某个 SDK。框架是实现载体;harness 是不随框架变化的职责集合。
用户目标
│
▼
任务规格 ──► 上下文构造 ──► 模型适配器 ──► 动作协议
▲ │
│ ▼
结果判定 ◄── 状态与轨迹 ◄── 观察归一化 ◄── 策略门 ──► 沙箱/工具/环境
╲______________________________╱
预算、审批、追踪、恢复、评测模型决定“下一步想做什么”;harness 决定“这一步是否允许、怎样执行、看见什么、何时必须停”。后者才是可靠性、安全性和可复现性的主要落点。
为什么单列这个专题
已有的 Agentic 框架 介绍 Planner、工具、记忆、多智能体与 Trace 等组成部分。本专题换一个更接近系统研究的视角:
| 旧问题 | Harness 视角的问题 |
|---|---|
| Agent 会不会调用工具? | 工具接口是否让模型容易选对、填对、修错? |
| Agent 能否完成一次任务? | 在重复运行、策略扰动与失败恢复下是否仍可靠? |
| 模型回答是否正确? | 环境最终状态是否正确,且没有越权副作用? |
| 应该用哪个框架? | 哪些控制面必须由确定性代码掌握? |
| Trace 能否调试? | 能否重放到具体模型、prompt、工具版本和环境快照? |
研究进展也支持这个拆分。ReAct 说明“推理—行动—观察”闭环有效;SWE-agent 进一步表明,Agent-Computer Interface 的设计本身就能显著改变结果;AgentDojo 与 τ-bench 则说明,安全与一致性不能靠单次任务成功率代替。
学习地图
| 页面 | 解决的问题 | 最终产物 |
|---|---|---|
| 01 核心架构与术语 | Harness 到底负责什么,边界在哪里? | 一张可用于设计评审的分层图 |
| 02 顶会论文谱系与精读 | 近年顶会把问题推进到了哪里? | 论文主张、证据、局限与工程含义 |
| 03 从零实现最小 Harness | 怎样把概念变成可测试代码? | 零依赖 Python 实现与实验步骤 |
| 04 评测、复现与安全 | 怎样避免“看起来会跑”的假进展? | 指标、数据记录、威胁模型与发布门禁 |
| 05 框架地图与选型 | SWE-agent、OpenHands、基准框架分别适合什么? | 从研究问题反推框架的决策表 |
13 篇独立论文精读
控制与程序: ReAct · Reflexion · DSPy
接口与运行时: CodeAct · SWE-agent · OpenHands
环境与评测: AgentBench · SWE-bench · OSWorld · τ-bench · BrowserGym
安全与前沿: AgentDojo · Beyond the Model(2026 预印本)
Harness 的九项核心职责
| 层 | 最小职责 | 常见失败 |
|---|---|---|
| 任务契约 | 目标、成功条件、不可做事项 | “完成”只由模型自报 |
| 模型适配 | 统一消息、工具调用、重试与用量 | 换模型后协议悄悄变化 |
| 动作协议 | 结构化动作、参数校验、版本 | 靠正则猜自由文本中的命令 |
| 策略门 | allowlist、权限、审批、速率限制 | 模型直接拥有环境最高权限 |
| 执行环境 | 隔离、超时、资源限额、清理 | 命令挂死或污染宿主机 |
| 观察构造 | 截断、分页、去噪、来源标记 | 一次日志淹没上下文 |
| 状态与恢复 | checkpoint、幂等键、重放 | 重试导致重复付款/重复发信 |
| 可观测性 | 事件、因果、版本、成本 | 只存最终对话,无法定位失败层 |
| 评测 | 环境状态验证、重复试验、安全断言 | 把“说做了”当成“确实做了” |
最重要的三个设计判断
1. 动作空间比“更聪明的 prompt”更基础
SWE-agent 把代码导航、查看和编辑做成适合模型的 ACI;CodeAct 把多步工具组合折叠为可执行代码。两者共同说明:模型能力由它能看见和能表达的接口共同决定。工具不是越多越好,而要满足可发现、可组合、反馈短而明确、错误可恢复。
2. 验收必须查看世界状态
SWE-bench 用测试验证补丁,τ-bench 比较最终数据库状态,OSWorld 用环境脚本检查应用状态。共同原则是:
模型声称成功 != 任务成功
最终文本相似 != 环境状态正确
一次运行成功 != 系统可靠因此成功判定器应与 agent 分离,而且尽可能由确定性代码执行。
3. 不可信数据不能获得指令权限
网页、邮件、仓库文件和工具返回值都是数据,不应因为被拼进同一个 prompt 就升级为指令。AgentDojo 展示了间接 prompt injection 对工具型 agent 的现实威胁。Harness 至少要提供来源标记、能力隔离、敏感动作审批和副作用审计;仅靠“忽略恶意指令”的系统提示不是安全边界。
最短阅读路线
只读六篇时,按下面顺序:
- ReAct(ICLR 2023):建立控制循环;
- SWE-bench(ICLR 2024):学习执行式验收;
- SWE-agent(NeurIPS 2024):理解接口就是能力的一部分;
- AgentDojo(NeurIPS 2024):建立不可信观察与能力安全模型;
- OpenHands(ICLR 2025):看完整通用运行时怎样拆层;
- τ-bench(ICLR 2025):把多轮用户交互、政策遵循与一致性纳入评测。
然后运行最小 Harness 实践,逐个替换模型、工具和验收器。不要从搭建大型多智能体系统开始;先证明单 Agent 的协议、权限、恢复和评测闭环是可信的。
专题口径
- 资料核对截至 2026 年 10 月 11 日;
- “顶会论文”只指已经由 ICLR、ICML、NeurIPS 等正式接收的版本;预印本和在审稿另行标记,不混写;
- 论文数字保留其原始模型、数据与实验设置,不当作当前排行榜;
- 工程结论优先来自论文、项目主页和官方仓库;
- 本专题讨论 harness,不展开基础模型训练、检索系统或通用工作流引擎。