
Agent Harness 原语分类
大模型包含推理、生成和语言理解能力,但仅有模型还不能构成一个能够长期工作的 Agent。
让模型真正进入现实环境、持续完成任务的,是模型周围的 Agent Harness。
Harness 可以被理解为一套运行时系统:它负责组织上下文、提供工具、执行动作、保存状态、控制权限、观察结果,并在模型与真实世界之间形成反馈循环。
为了设计和比较不同 Agent Harness,我们需要一套相对完整的原语分类。这里首先要区分两个概念:
- Agent 能力是系统最终表现出来的行为,例如规划、记忆、执行代码和自我验证。
- Harness 原语是实现这些能力的基础机制,例如文件系统、工具协议、状态存储、审批策略和测试钩子。同一种能力通常由多个原语组合产生。例如,“长期自主执行”不是某一个工具带来的,而是持久化状态、目标管理、上下文压缩、故障恢复、规划和验证共同作用的结果。
通过分析 Codex 源码,本文从 Agent 与信息、环境、人类及其他 Agent 的关系出发,将 Agent Harness 原语划分为八类:
- 感知原语
- 认知与编排原语
- 记忆与上下文原语
- 行动原语
- 协作原语
- 治理原语
- 持续执行原语
- 验证与交付原语这八类原语共同构成一个生产级 Agent 的完整能力闭环。
一、感知原语:让 Agent 看见真实世界
模型只能直接处理当前上下文中的信息。现实世界中的文件、网页、日志、界面和运行状态,必须先经过 Harness 转换为模型能够读取的上下文。
感知原语负责回答:
Agent 如何知道现在发生了什么?
典型原语包括:
- 文件和目录读取
- 代码与文本搜索
- Web Search 和网页读取
- 浏览器 DOM、无障碍树和页面状态
- 图像、截图和视觉输入
- 日志、测试输出和终端输出
- 数据库、API 和企业数据连接器
- 文件监听与环境状态更新
- 当前分支、工作区和进程状态检测文件系统是最基础的感知界面,但不是唯一界面。随着 Agent 从编码扩展到通用计算机操作,浏览器、截图、GUI、结构化文档和外部系统查询都会成为重要感知原语。感知能力还涉及信息可信度。对话历史只能提供线索,当前工作区、测试结果和外部系统状态才可能是事实来源。因此,一个可靠的 Harness 不只是把信息交给模型,还要标明信息的来源、时间、权限和权威性。在 Codex 中,文件系统、Shell 输出、Web Search、Browser、Screenshot、MCP、Connectors 和 World State 都属于这一层。
二、认知与编排原语:组织模型的推理过程
推理能力主要来自模型,但 Harness 可以决定模型在什么条件下推理、获得哪些提示,以及如何把复杂目标组织成可执行过程。
认知与编排原语负责回答:
Agent 应该如何思考、分解和选择下一步?
典型原语包括:
- System Prompt 和开发者指令
- 任务目标与完成条件
- 结构化计划和 TODO 状态
- 工具描述与调用规范
- Tool Search 和工具选择
- 工作模式,例如执行模式、规划模式和审查模式
- 子任务分解
- 子 Agent 路由与角色分配
- 反思、批评和独立复核提示
- 停止条件与完成审计Harness 并不能替代模型推理,但可以给推理建立结构。例如,计划工具把“下一步做什么”从一段自然语言变成 pending、in_progress 和 completed 的明确状态;目标机制则把“什么时候算完成”从模型的主观判断变成持久化的生命周期。工具描述同样属于认知原语。工具名称、参数结构、返回格式和提示方式都会影响模型能否正确选择工具。模型与 Harness 共同训练后,这种接口设计甚至会直接影响模型性能。在 Codex 中,update_plan、Goals、Collaboration Modes、Tool Search、Skills、Prompt Templates 和 Subagent Routing 都属于这一层。
三、记忆与上下文原语:管理有限的上下文窗口
模型的上下文窗口既是工作内存,也是稀缺资源。Harness 必须决定哪些信息进入上下文、哪些信息保存到外部,以及上下文即将耗尽时如何继续。
记忆与上下文原语负责回答:
Agent 如何记住重要信息,又不被过多信息淹没?
典型原语包括:
- 对话历史
- Rollout 或事件日志
- 会话恢复和分叉
- AGENTS.md 等项目记忆文件
- 用户偏好与长期记忆
- 文件系统中的中间产物
- 语义检索、关键词检索和引用
- Context Injection
- Compaction 和历史摘要
- 工具输出截断
- 大型输出文件卸载
- Skills 渐进式披露
- Deferred Tools 和按需工具加载
- 上下文预算与优先级这里至少包含三种不同记忆:
- 工作记忆:当前上下文中正在使用的信息。
- 情节记忆:之前发生过的对话、工具调用和任务事件。
- 语义或程序记忆:稳定知识、项目规范、用户偏好和可复用工作流程。文件系统是重要的记忆原语,但文件不会自动进入模型上下文。只有配合检索、选择、摘要和上下文注入,持久化数据才会转化为 Agent 可以使用的记忆。在 Codex 中,这一层由 Rollout JSONL、SQLite Thread Store、AGENTS.md、Memory、Compaction、Skills 和 BM25 Tool Search 等机制共同实现。
四、行动原语:让模型改变真实世界
只有感知和推理的模型仍然只是一个顾问。行动原语让模型能够执行命令、修改文件、调用服务,并对现实环境产生影响。
行动原语负责回答:
Agent 能够对环境做什么?
典型原语包括:
- 文件创建、修改、移动和删除
- apply_patch 等结构化代码编辑
- Bash、PowerShell 和代码执行
- Git、测试框架和构建工具调用
- 浏览器点击、输入和导航
- API 和 MCP 工具调用
- 数据库读写
- 云服务与企业系统操作
- 动态编写并执行临时工具
- 长时间运行进程和交互式终端Bash 与代码执行是通用行动原语。它们允许模型根据当前任务临时创建工具,而不必要求 Harness 设计者提前实现所有可能的操作。专用工具依然有价值。结构化工具可以提供更明确的参数、更好的权限控制、更稳定的返回值和更容易审计的语义。成熟 Harness 通常同时提供通用执行工具和高价值专用工具。在 Codex 中,Shell、Exec、PTY、Apply Patch、Browser、MCP、Plugins 和 Connectors 构成了行动层。
五、协作原语:让 Agent 与人和其他 Agent 共同工作
自主并不等于脱离人类。高质量 Agent 系统需要让用户能够理解、控制和纠正执行过程,也需要让多个 Agent 在复杂任务中协调工作。
协作原语负责回答:
Agent 如何与用户及其他 Agent 建立共同工作状态?
典型原语包括:
- 中间进度更新
- Commentary 与 Final Answer 区分
- 用户中途 Steering
- 澄清问题和结构化输入请求
- 批准、拒绝和修改动作
- 暂停、恢复和中断
- 计划共享和状态展示
- 子 Agent 创建与任务委派
- Agent 间消息
- Agent 状态查询和等待
- 共享文件系统与共享工作账本
- 结果汇总、冲突发现和责任归属多 Agent 并不只是“同时启动多个模型”。真正的协作还需要任务依赖、并发限制、父子关系、通信协议、结果归并和冲突处理。同样,人机协作也不只是最终展示答案。用户需要在 Agent 工作期间看到关键进展,并能够在不破坏当前任务状态的情况下调整方向。在 Codex 中,Commentary Phase、Follow-up Steering、Approvals、Request User Input、Agent Registry、Spawn、Message、Wait 和 Interrupt 都属于协作原语。
六、治理原语:控制 Agent 的权限与风险
行动能力越强,治理越重要。一个能够运行任意代码、访问网络和修改文件的 Agent,如果没有权限边界,就不能安全地进入真实生产环境。
治理原语负责回答:
Agent 被允许做什么,谁为动作授权,发生问题后如何追溯?
典型原语包括:
- 文件系统沙箱
- 网络隔离与域名策略
- 命令允许和拒绝规则
- 风险分类
- 用户审批策略
- 企业强制要求
- 工作区信任
- 身份认证与凭证管理
- Secrets 隔离
- 最小权限 Token
- 插件和连接器权限
- 审计日志
- Prompt Injection 防护
- 进程硬化和资源隔离沙箱只是治理的一部分。完整治理链通常是:
模型提出动作 ↓ 策略判断动作风险 ↓ 检查用户和企业权限 ↓ 必要时请求审批 ↓ 在沙箱中执行 ↓ 记录动作和结果
治理能力不能被模型原生智能完全替代。即使模型变得非常可靠,身份、权限、隔离和审计仍然必须由模型之外的确定性系统执行。
在 Codex 中,Sandbox Policy、Approval Policy、Exec Policy、Requirements、Guardian、Network Proxy、Keyring、Secrets 和 Process Hardening 共同构成治理层。
七、持续执行原语:让 Agent 跨越时间和故障
复杂任务不会在单次模型调用中完成。Agent 需要跨多个 Turn、多个上下文窗口,甚至多个会话持续工作。
持续执行原语负责回答:
Agent 如何一直工作到目标完成,而不是因为上下文、错误或进程结束而丢失任务?
典型原语包括:
- 持久化任务目标
- 计划与进度状态
- Turn 和 Thread 生命周期
- 自动续跑循环
- 定时器、等待和事件唤醒
- 会话恢复与 Fork
- 重试、退避和超时
- 取消与安全终止
- 幂等工具调用
- 中间检查点
- Git 版本历史
- Token、时间、成本和并发预算
- 阻塞、暂停、限额和完成状态
- 多上下文窗口之间的状态重建经典 Ralph Loop 通过拦截模型退出并重新注入目标来延续任务。更结构化的实现可以把目标保存为持久状态,在每次 Turn 结束后检查目标是否完成,再决定继续、暂停、阻塞或结束。持续执行还必须防止无限循环。预算、重复失败检测、阻塞审计和停止条件与“继续工作”同等重要。在 Codex 中,Goals、Thread Store、Rollout、Compaction、Stop Hooks、Resume、Fork、Timeout、Usage Limit 和 Agent Concurrency Limit 都属于持续执行原语。
八、验证与交付原语:证明工作正确并形成成果
Agent 完成了动作,不代表任务已经正确完成。Harness 必须提供观察结果、发现错误、反馈修复,并最终生成可审查成果的机制。
验证与交付原语负责回答:
Agent 如何证明结果正确,并把工作可靠地交给用户?
典型原语包括:
- 单元测试、集成测试和端到端测试
- 编译、类型检查和 Lint
- 日志、退出码和错误输出
- 浏览器检查与截图
- 数据一致性检查
- 独立 Reviewer 或 Critic Agent
- Stop Hook 和测试门禁
- 完成条件逐项审计
- Diff 和 Patch 展示
- Git Commit、Branch 和 Pull Request
- 回滚与失败恢复
- 结构化输出
- 文档、报表、图片和其他 Artifact
- 证据引用和来源追踪自我验证循环通常表现为:
实现 ↓ 运行测试或观察环境 ↓ 读取失败证据 ↓ 定位并修改 ↓ 重新验证 ↓ 满足完成条件后交付
验证必须尽可能依赖外部证据,而不是模型对自己输出的主观评价。测试结果、实际截图、数据库状态和可运行产物,比“代码看起来正确”更可靠。
在 Codex 中,Shell 测试、Browser、Screenshot、Logs、Stop Hooks、Goal Completion Audit、Diff、Git 和 Artifact 输出共同形成验证与交付层。
九、八类原语如何构成 Agent 闭环
八类原语并不是彼此独立的功能列表,而是一个持续运转的循环:
┌────────────治理────────────┐ │ 权限、身份、隔离、审计 │ ▼ │ 感知 → 认知与编排 → 行动 → 验证与交付 ↑ │ │ │ │ ▼ ▼ │ └──── 记忆与上下文 ← 持续执行 ←──┘ │ ▼ 人类与多 Agent 协作
一次典型任务可能经历以下过程:
- 感知原语读取工作区、需求和运行状态。
- 记忆原语注入项目规则和历史工作。
- 认知原语形成目标、计划并选择工具。
- 治理原语检查动作权限。
- 行动原语修改文件、执行命令或操作浏览器。
- 验证原语运行测试并观察结果。
- 持续执行原语决定继续、重试、暂停或完成。
- 协作原语向用户报告进展,或把子任务交给其他 Agent。
- 最终结果通过 Diff、Commit、PR 或 Artifact 交付。任何一类原语缺失,Agent 都可能表现出明显缺陷:
- 没有感知,只能依赖用户复制粘贴。
- 没有记忆,跨会话会丢失状态。
- 没有行动,只能给出建议。
- 没有治理,无法安全进入真实环境。
- 没有持续执行,复杂任务容易过早停止。
- 没有验证,Agent 可能把错误结果当作成功。
- 没有协作,用户无法理解或控制执行过程。
十、Agent Harness 的成熟度阶梯
基于上述原语,可以把 Agent Harness 粗略分为六个成熟度等级。
Level 0:对话模型
- 只有文本输入与输出
- 不访问真实环境
- 不保存跨会话状态
Level 1:工具 Agent
- 具备文件读取和工具调用
- 能执行简单命令
- 仍以单轮任务为主
Level 2:有状态 Agent
- 具备持久化会话和工作区
- 支持计划、记忆和上下文压缩
- 可以恢复之前的任务
Level 3:可靠 Agent
- 具备沙箱、审批和权限控制
- 能运行测试并根据失败反馈修复
- 能处理超时、重试和部分失败
Level 4:协作 Agent
- 支持用户中途 Steering
- 支持多 Agent 委派与通信
- 能共享任务状态并汇总结果
Level 5:长周期自治系统
- 目标和状态跨会话持久化
- 能在预算和治理约束下持续运行
- 能动态发现工具和上下文
- 能用外部证据验证完成条件
- 能处理异步事件、失败恢复和正式交付当前 Codex 已经覆盖 Level 4 的大部分能力,并在 Goals、Compaction、Hooks、Plugins 和多 Agent 等方向上进入 Level 5,但距离“数百 Agent 自动协作、自主分析 Trace 并修复 Harness”的完全自治系统仍有距离。
结语
Agent Harness 的价值,可以归纳为四件事:
- 让模型看到真实世界。
- 让模型能够安全地改变真实世界。
- 让工作跨越上下文、故障和会话持续存在。
- 让结果能够被观察、验证、治理和交付。因此,一个更完整的 Agent 定义是:
一个在 Harness 提供的感知、记忆、行动、协作、治理和验证机制中,围绕持久目标持续运行的模型系统。
本文学习参考
Agent = Model + Harness 的最常用定义 https://www.langchain.com/blog/the-anatomy-of-an-agent-harness
Codex 源码结构分析 https://github.com/openai/codex