主题
第 6 章 · 行动:受控执行、验证反馈与交付准备
核心观点 + 逻辑框架(构建篇 · 行动与反馈能力域 · 构建篇收口)
▍速览
一句话版(开场,约 20 秒)
模型输出的工具调用只是一项行动意图,不等于身份、授权或结果。Harness 用统一 Action Plane 把意图变成受控的环境事实——Schema 校验、身份绑定、策略决策、审批、执行、Observation、Trace 一条链;Sandbox 防越界、Policy 定允许,双闸缺一不可;Trace 连因果,Evaluation 分层评测,失败聚成补丁、跑回归、过门禁,形成可运行的 Agent。
一段话版(展开,约 60–90 秒)
模型输出的工具调用,只是一项行动意图:它没有自动获得用户身份,不等于策略允许执行,也不能证明远程系统产生了预期结果。真正把意图变成事实的,是 Harness 的行动与反馈系统——Action Plane 连接外部世界、限制影响范围;Feedback Plane 把进度、状态、结果和质量信号反馈给用户和下一个版本。行动链是确定的:模型意图→Schema 校验→身份绑定→策略决策→审批→执行→Observation→写入状态与 Trace。这里要区分三件事:模型看见某个工具,不等于系统注册了它,更不等于当前用户和任务获得了执行授权。统一 Action Request 把各种连接方式变成同一契约,预算、权限、审计、重试和 Trace 不用为每种连接各做一套。Tool 要暴露业务语义:创建变更单和发布生产是两个 Action,一个可以自动,一个必须等审批。三个协议各管一层:Function Calling 是意图接口,MCP 是连接协议,A2A 是远程 Agent 的任务协议——协议不替 Harness 做授权和治理。执行环境要声明 Environment Contract:镜像、读写范围、网络出站、Secret、资源配额;Sandbox 做真实隔离。这里有个双闸原则:Sandbox 防止进程越界,Policy 决定业务上是否允许,缺一不可。权限决策收成 ALLOW、DENY、ASK 三类,ASK 不是默认兜底,优先用更窄的工具、预览和沙箱降低风险;高风险动作走 Preview—Approve—Commit—Verify。HITL 放在计划审批、行动审批、结果验收三处;用户中途纠偏是事件,要进状态机在安全点处理,不是往历史末尾追加一条消息。Prompt Injection 的防线是区分指令与数据:网页、文档、工具结果、远程 Agent 返回都是不可信输入。交互上,事件流按任务语义来:Text、Progress、Tool、State、Approval、Artifact、Error、Usage,可续传、限流、按身份生成视图,不把内部 Trace 原样广播。最后是效果闭环:Task Trace 把版本、Context、行动、状态、成本和 Outcome 连成因果链;Evaluation Harness 从单步、轨迹、最终结果三层比较版本,把真实失败聚类、诊断根因、打最小 Patch、跑回归、过发布门禁。构建篇到此完整:构建 Agent,就是围绕任务、信息、行动三类工程契约构建 Harness,形成可运行、可治理、可优化的 Agent。
- 一条行动链:意图→Schema→身份→Policy→审批→执行→Observation→Trace
- 三事实分离:模型看见 ≠ Harness 注册 ≠ 用户/任务获得授权
- 统一契约:Action Request;Task 状态 ≠ Action 状态;State Patch 统一提交
- 业务语义 Tool:change.create 可自动 vs production.deploy 必须审批
- 三协议分工:Function Calling 意图接口 · MCP 连接协议 · A2A 远程任务协议
- 环境双闸:Environment Contract + Sandbox 防越界 × Policy 定允许
- 权限三态:ALLOW/DENY/ASK(ASK 非兜底)+ Preview-Approve-Commit-Verify
- 指令与数据分离:外部内容一律不可信,防 Prompt Injection
- 效果闭环:Trace→聚类→诊断→Patch→回归→发布门禁→新版本
一句话(收尾)
行动意图不等于环境事实——从"模型想做什么"到"系统允许做什么、环境真的发生了什么",每一步都是 Harness 的工程责任;构建 Agent 的完整答案,就是围绕任务、信息、行动三类契约,把 Harness 做成可运行、可治理、可优化的系统。
▍逻辑框架(记忆卡片)
① 命题:行动意图 ≠ 行动事实
- 左:Action Plane 连接外部世界 · 限制影响范围 把意图变成受控的环境事实
- 右:Feedback Plane 进度 / 状态 / 结果 / 质量信号 反馈给用户与下一个 Agent 版本
模型输出的工具调用只是意图:没有自动获得用户身份、不等于策略允许执行、不能证明远程系统产生了预期结果。Tool / MCP / A2A / Sandbox / HITL / Trace / Evaluation 各有位置,不是并列的产品名词。
② 统一行动链与契约
行动链:Model Intent → Schema → Identity → Policy(ALLOW / DENY / ASK)→ Approval / HITL → Execution → Observation → State / Trace
统一 Action Request(契约字段节选):action_id · task_id · parent_event_id · capability_id · version · actor · purpose · arguments 与输出 Schema · 请求环境与资源范围 · 风险分类 · 幂等键 · timeout · 审批审计要求——预算 / 权限 / 审计 / 重试 / Trace 不为每种连接重写
Action 生命周期:REQUESTED → VALIDATED → AUTHORIZED / WAITING_APPROVAL → RUNNING → SUCCEEDED / FAILED / CANCELLED(异步加 ACCEPTED / WAITING_RESULT);Task 状态 ≠ Action 状态
State Patch:Action Result 带候选 Patch,Harness 统一提交,避免每个 Tool 任意改权威状态
三事实分离:模型看见 ≠ Harness 注册 ≠ 用户 / 任务获得授权
③ 工具、MCP 与远程 Agent 的边界
左:Function Calling 模型与 Harness 的意图接口(模型看见并提名工具)
右:MCP 连接协议 / A2A 任务协议 MCP 对接能力提供方(Server · Tool · 资源);A2A 对接有独立任务循环的远程 Agent(任务 / 消息 / 状态 / Artifact)
协议不替 Harness 完成授权、租户隔离、业务语义验证、效果评估。
面向 Agent 的 Tool:业务语义与 Schema(类型 / 枚举 / 边界 / 示例)· 输出结构化 / 摘要 / 证据引用 · 只读 / 副作用 / 可逆 / 支持预览 / 幂等 · 错误稳定分类:可重试 / 修参 / 转人工 · Secret 留执行侧。
Registry(元数据 / 版本 / 健康 / 作用域)+ Gateway(身份 / 凭证 / 路由 / 限流 / 审计 / 策略);远程 Agent 返回是外部输入,必须过 Schema / 权限 / 安全检查。
Tool 无 Loop · MCP Server 无 Loop 能力实现 · Skill 方法资产 · Subagent 局部 Loop 父责任保留 · Remote Agent 独立治理
④ 执行环境与 Sandbox 契约
五类能力各有风险:File(越界读 / 覆盖 / 路径穿越 / 敏感文件泄漏 → 根目录与读写范围)· Shell(任意代码 / 进程逃逸 / 网络与 Secret 暴露 → 命令策略 / 隔离)· Code Interpreter(不受控依赖 / 资源耗尽 / 恶意输入执行 → 配额)· Browser(Prompt Injection / 会话劫持 / 误提交 → 域名策略 / 内容信任)· Computer Use(影响面难预测 / 视觉误判 / 不可逆操作 → 范围 / 预览 / 确认)。
能用窄 Tool 完成的高风险动作,不优先开放通用 Shell / Computer Use。
Environment Contract:镜像 / OS · 文件挂载读写 · 网络出入站 · Secret 与委派身份 · 工具 / 包 / 版本 · CPU / 内存 / 存储 / GPU 配额 · 超时 / 空闲 / 并发 · 持久化快照 · 审计清理——无法满足就在执行前失败或降级。
隔离粒度 Agent / Session / Task / Action;在线多租户至少按 Task 或 Session;Secret 不进 Prompt / Schema / State / 模型可见环境变量。
左:Sandbox 防止进程越界——真实隔离
右:Policy 决定业务上是否允许——授权决策
双闸缺一不可:网络默认限制出站,浏览器内容标记不可信。
⑤ 权限、HITL 与安全控制
ALLOW 记录依据 · DENY 结构化原因 + 替代项 · ASK 指定人确认——ASK 不是默认兜底:优先更窄 Tool / 参数约束 / 预览 / 资源范围 / Sandbox 降风险。
HITL 三层次:Plan 审批 / Action 审批 / 结果验收;审批请求含意图 · 身份 · 对象 · 影响 · 参数差异 · 可逆性 · 失败处理 · 批准范围。
不可逆高影响动作:Preview → Approve → Commit → Verify——Commit 用幂等键,Verify 查真实系统状态,失败进 Repair / Compensate / Escalate,不把已发送请求当成功。
Steering 是任务事件(状态机安全点处理);恢复前把新要求提交 Task State 再重构 Context,不简单追加历史。
Prompt Injection 防线 = 区分指令与数据:网页 / 邮件 / 文档 / MCP Server / 工具结果 / 远程 Agent 返回一律不可信,不能改变平台政策与授权范围
⑥ Streaming、Channel 与交互协议
- 八类任务语义事件:Text / Progress / Tool / State / Approval / Artifact / Error / Usage——隐藏推理不需要暴露。
- Channel = 适配层(身份映射 · 线程 → Session → Task · 附件 → 统一输入 · Harness 事件 → 渠道卡片 · 跨入口连续);Channel 不应成为唯一状态存储。
- AG-UI = Agent 与应用的双向流式事件交互;A2UI = Agent 输出声明式界面、客户端用受信组件目录渲染——描述"界面是什么" vs "如何交换事件",不互相替代。
- 事件可续传(单调序号 / 游标 / 去重)· 限流(状态 / 审批 / Artifact / 终态不能因背压丢弃)· 按身份生成视图;Cancel 区分"已收到取消"与"底层 Action 已安全停止"。
⑦ Observability、Evaluation 与效果闭环(构建篇收口)
- Task Trace 是因果链:Agent 版本 / 模型 · Session / Task / 父子拓扑 · Context Manifest 与压缩 · 状态迁移 · 模型调用 / 延迟 / 成本 · Action / 策略 / 审批 · 工具结果 · Artifacts · 重试与失败 · Verifier 证据 · 业务 Outcome。
- 两套 Harness 分开:Agent Harness(真实 / 测试完成一次任务)vs Evaluation Harness(一致方式运行回放比较版本);Verifier = 单次完成门禁,Evaluation = 多样本多版本质量判断。
- 三层评测:单步(Context / 模型判断 / Tool 调用)· 轨迹(行动序列:绕路 / 重复 / 越权 / 错误委派 / 过度消耗)· 最终结果(Artifact / 终态 / Outcome)。
- 闭环:Trace + Outcome → Failure Cluster(按症状根因聚类)→ Diagnosis → Harness Patch(最小针对性变更)→ Regression(成功 / 成本 / 安全)→ Release Gate → 新 Agent 版本。
Patch 与根因一一对应:缺事实 → Context / Knowledge · 错误经验 → Memory · 方法不稳 → Skill · 工具误用 → Schema / 权限 · 无进展 → Loop / Plan · 环境不一致 → Contract · 完成误判 → Verifier——只有确定模型能力不足才换模型;回归集 = 原失败 + 相邻正常 + 安全对抗用例。
▍逻辑全景图 · 图 1 · Action Plane 统一行动链:Schema → 身份 → Policy → 审批 → 执行 → Observation(Sandbox 防越界 × Policy 定允许双闸)
从模型提名工具开始,八步把行动意图变成受控的环境事实;Sandbox 防越界、Policy 定允许,双闸共同约束执行。
- 行动链确定性步骤 / Harness 核心
- Sandbox / 执行约束
- Policy / 审批 / 风险
- 观测 / 安全基线
- 中性状态
读法:① 顶部命题卡把三事实分离钉在最前;② 行动链八步从左到右推进,Policy 与 Approval 为橙色风险闸,Execution 受双闸约束;③ 下方双闸面板——Sandbox 管进程隔离、Policy 管业务授权;左下 HITL 三层次与 Preview→Approve→Commit→Verify 覆盖不可逆动作;右下安全基线管住指令 / 数据分离与 Steering 事件。面试一句话:模型想做什么不算数,Schema、身份、Policy、审批、执行、观测、留痕走完整条 Action Plane,Sandbox 防越界、Policy 定允许,双闸缺一不可。
▍逻辑全景图 · 图 2 · 协议分层与效果闭环:FC · MCP · A2A 各管一层 + Trace → Evaluation → Harness Patch
三种协议不越权替 Harness 治理;Trace 连因果,Evaluation 分层比较版本,失败聚类后打最小补丁、跑回归、过门禁。
- Model / Harness 核心
- MCP · 能力提供方
- A2A · 远程 Agent
- 观测 / 评估 / 闭环
- 中性状态
读法:上部是协议分层——Function Calling 对接模型与 Harness,MCP 对接能力提供方,A2A 对接远程 Agent,协议都不替 Harness 治理;中部 Streaming 把任务语义事件流到渠道;下部效果闭环六步从 Trace 到新版本,虚线回流下一轮,Patch 与根因一一对应。面试一句话:FC、MCP、A2A 各管一层,授权与治理留在 Harness;Trace 连因果、Evaluation 分层比较、最小 Patch 过回归门禁,版本持续变好。
▍书中关键图(SVG 重绘版 · 示意)
图 1|Action Plane:从模型意图到环境事实(重绘自 6.1.1 流程图)
图 2|三个协议各管一层(重绘自 6.2.1 职责边界)
图 3|执行环境双闸:Sandbox 防越界 × Policy 定允许(重绘自 6.3 / 6.4)
图 4|效果闭环:从 Trace 到 Harness Patch(重绘自 6.6.2 流程图)
原书 Mermaid 图(可编辑)
以下图来自原书 Markdown,保留原始结构,便于修改和对照。