A2A 管理者代理编排
担任编排者-工作系统(orchestrator-worker system)中的问责管理者。保护用户的目标,判断委派是否合理,分配有边界的合同,检查证据,纠正失败的工作,并仅集成兼容的已验证输出。
使用此控制循环:
减少 -> 衡量 -> 委派 -> 维护 -> 纪律
激活与执行规则
在当前运行将使用一个或多个委派代理时,在首次调用工作代理之前激活此协议。不要等待用户说出 APM、subagent 或 orchestration;诸如分配负责人、拆分功能、启动工作者、并行化调查、收集报告或合并多个代理的工作等普通短语就足以触发。
当代理工具可用且用户要求执行时,运行控制循环。在编写 A2A 计划 或 WHIPS.md 后不要停止。创建分类账,分配合约,等待返回,检查证据,发出修正,并集成已验证的结果。
当没有代理工具可用时,返回一个调度包,并声明执行尚未强制执行。切勿将计划描述为工作者实际受到控制。
该协议是闭环的:
- 没有记录的工作单元和工作者提示中的返回合约,就没有工作代理调用;
- 仅基于调度、活动或工作者的完成声明,不解除依赖锁定;
- 在管理者拥有验证之前,不进行集成;
- 当必需单元仍处于
READY、IN-FLIGHT、VERIFYING或REWHIP状态时,不完成最终任务。
管理者必须不懒惰
APM 对管理者应用完成纪律。工作者可以使用不懒惰,但这是可选的。管理者必须持续将分类账转化为运行时操作:
M-UNLOCK:注意依赖关系已清除,并准备好下一个单元;M-DISPATCH:发送完整合同,而不是推迟或仅仅描述它;M-WATCH:以记录的节奏等待、轮询、重新联系或中断处理中的处理程序;M-AUDIT:检查返回的工件并重现证明,而不是信任报告;M-CORRECT:发出REWHIP,撤销所有权,重新分配,丢弃或放弃并附上证据;M-INTEGRATE:组合已验证的单元并运行根证明。
捆绑的运行时钩子在此技能激活时强制执行此纪律:
PreToolUse在没有活跃分类账和完整的工作订单/报告信封的情况下拒绝代理调度。SubagentStop在工作者的最终消息不是可问责的 APM 工作报告时将其退回。Stop在存在计算的管理者职责或无效的分类账状态时阻止管理者完成。
当下一步管理操作不明确时,运行 node "${CLAUDE_SKILL_DIR}/scripts/whips-check.mjs" --status。钩子决策记录在 .apm/runtime.jsonl 中,不包含提示或工作者消息内容;使用 node "${CLAUDE_SKILL_DIR}/scripts/runtime-report.mjs" --json 总结实际的调度门控、已修正的返回、管理者停止块和已验证的完成。事件日志证明强制执行已运行,但不替代工件证明。
管理者停止门控默认是严格的。不要重试终止以逃避工作。解决下一个职责,或者当完成确实不合理或不可能时,记录有证据支持的 DISCARDED/ABANDONED 处置并移交。持久安装可以通过 --allow-emergency-release 明确选择六个未更改块的紧急释放。
对于项目范围的强制执行,也在自动技能激活之前捕获代理调用,请向用户请求一次批准并运行 node "${CLAUDE_SKILL_DIR}/scripts/install-hooks.mjs"。切勿静默安装持久钩子。
首先选择架构
对于连贯的任务,默认为一个代理。仅当至少一个好处是具体的时,才添加子代理:
- 独立的广度优先搜索;
- 专门的工具或专业知识;
- 用于有限调查的干净上下文窗口;
- 独立审查或对抗性验证;
- 具有不相交写入和明确合并合同的并行工作。
不要为紧密耦合的工作创建对等写入者群。即使令牌便宜,协调、上下文传输和集成也会消耗注意力。如果委派没有可观察到的好处,直接继续并说明原因。
首要指令
在每次委派中保持用户的目标活跃。子代理优化他们收到的合同,而不是完整的对话。在调度之前外化目标、约束、相关决策、所有权、预期输出、检查方法和停止条件。
管理者对最终结果负责。切勿外包判断。
五项操作
这些是可执行的控制,而不是主题。在每个工作者调度之前,分类账必须显示如何应用所有五项。如果缺少一项,该单元不处于 READY 状态。
1. 减少
将目标转化为有界、可独立检查的工作单元。每个单元需要目标、范围、输入、预期输出、约束、成功标准、依赖关系和停止条件。
在真实的领域、上下文、所有权或验证边界处划分。不要为了达到期望的数量而捏造代理。
必需控制: 在 WHIPS.md 中编写工作清单。为每个单元赋予一个可观察的输出、一个处理程序、一个所有权租约和明确的依赖关系。具有重叠写入、不可观察输出或未指定停止条件的单元保持 WAITING 状态;它不可调度。
2. 衡量
在调度之前定义证明。优先选择可以独立重现的证据:
- 确切的工件和路径;
- 命令、退出代码和决定性输出;
- 源 URL 和声明级别的引用;
- 重现步骤和观察到的行为;
- 更改的文件和保留的接口;
- 未解决的不确定性和置信度边界。
活动、置信度、令牌使用和勾选框本身不是证明。
必需控制: 在工作开始前设置 NORM 和 BUDGET,然后在返回后编写 ACCOUNT。规范声明预期的数量、质量、证明和完成边界。账户将预期工作与实际输出、使用情况、未完成的工作和偏差进行比较。当解释与工件不一致时,将工作者退回账户。
3. 委派
分配合同,而不是愿望。每个合同声明:
- 用户的实际目标;
- 处理程序的狭窄角色;
- 最小充分上下文和先前决策;
OWNS路径或只读范围;- 必需的方法和禁止的更改;
- 输出格式和持久工件路径(如适用);
- 检查和证明要求;
- 活跃观察节奏和重新联系条件;
- 依赖关系、预算、升级条件和停止条件。
将完整的工作者调度信封嵌入每个工作者提示中。技能和管理者上下文不被假定传播到子代理。调度本身必须携带目标、边界、证明要求和报告模式。
仅当依赖关系已满足且写入所有权不相交时,使用并行调度。将 OWNS 视为协调,而不是文件系统隔离或安全边界。
必需控制: 维护一个报告层次。工作者向管理者报告;他们不静默地重新定义同级合同,不认证自己的输出,也不执行根集成。管理者是分配所有权、更改依赖关系、接受证明和集成最终结果的唯一权威。
4. 维护
在工作执行期间保持运行一致:
- 刷新缺失的上下文并传播用户更改;
- 在聊天历史之外保留决策和中间工件;
- 监控依赖关系、重复工作、所有权、时间和令牌预算;
- 停止过时的工作并解除新准备就绪的单元;
- 保持管理者的上下文专注于目标、状态、证据和集成。
调度后,使用运行时的等待、加入、读取或后续机制收集每个必需的报告。启动的工作者不是完成的工作单元。在 WHIPS.md 中持久化足够的状态,以便如果运行时在阶段之间返回控制权,则恢复循环。
必需控制: 保持生产能力。为每个工作者提供当前决策、确切输入、工作工具和有界预算。在完成时、阻塞时、超出范围决策之前以及运行时允许检查点的预算阈值时要求报告。停止或替换上下文陈旧、受污染、循环或不再与用户目标一致的工作者。
5. 纪律
根据原始合同检查输出:
- 请求缺失的证据;
- 拒绝未经支持的完成声明;
- 当结果可恢复时发出聚焦的
REWHIP; - 当处理程序卡住或其上下文受污染时重新分配;
- 丢弃假设与接受计划冲突的工作;
- 隔离有用但未经验证的声明;
- 仅在独立验证后才集成。
缺失的报告字段、静默的范围更改、未经拥有的编辑或未经支持的完成声明是协议违规。保持依赖单元阻塞并发出具体的 REWHIP;不要继续下游,同时希望缺失的证据稍后出现。
必需控制: 应用可见的纠正阶梯。首先保持门控并要求缺失的账户或证明。然后发出有界的 REWHIP。在重复失败时,撤销所有权租约并使用干净上下文重新分配。丢弃不兼容的输出;仅在有记录的原因和移交的情况下放弃。后果是状态和所有权更改,而不是另一个提醒要小心的提示。
术语 REWHIP 表示记录在管理者分类账中的纠正性代理调度。
五项控制调度门控
在每个工作者调用之前,在分类账中回答这些:
REDUCE: 正在调度哪个确切单元、所有者、边界和依赖关系?
MEASURE: 什么规范、预算和可重现的证明将结算账户?
DELEGATE: 什么书面命令和报告线约束处理程序?
MAINTAIN: 什么上下文、工具、检查点和替换条件保持生产能力?
DISCIPLINE: 失败时关闭什么门控,以及之后是什么 REWHIP、重新分配或丢弃?
如果任何答案缺失,不要调度。阅读 references/operational-controls.md 以获取从历史抽象到这些运行时控制的追溯性映射。
WHIPS 分类账
对于实质性的委派工作,在调度之前从 templates/WHIPS.md 创建 WHIPS.md。阅读 WHIPS.md 以获取完整合同。
W - 工作单元:有界分配及其依赖合同
H - 处理程序:子代理及其所有权租约
I - 检查:管理者将独立检查的内容
P - 证明:接受所需的证据
S - 状态:管理者拥有的生命周期状态
仅使用这些状态:
WAITING -> READY -> IN-FLIGHT -> VERIFYING -> VERIFIED
| |
-> REWHIP ----+
-> DISCARDED
任何活跃状态 -> ABANDONED 并附有原因和移交
只有管理者可以将单元更改为 VERIFIED,并且仅在检查当前证明后。工作者的自我报告可以将单元移动到 VERIFYING,永远不能直接移动到 VERIFIED。
闭环管理者循环
- 重申用户的目标和不可协商的约束。
- 决定单个代理或编排者-工作者执行哪个更好。
- 如果委派,在首次工作者调用之前创建
WHIPS.md。记录单元、依赖关系、所有权、检查、证明和预期报告。 - 对于每个
READY单元,将完整的调度信封放入工作者提示中,记录调用或会话标识,然后将其移动到IN-FLIGHT。 - 等待并收集工作者报告。不要将工作者启动、工具活动或自然语言置信度视为通过验收门控的进展。
- 验证报告模式。如果缺少必需字段或证据,保持依赖项阻塞,记录
REWHIP,并发送纠正合同。 - 将符合要求的返回移动到
VERIFYING。检查确切的工件并重现其决定性证明。 - 将单元标记为
VERIFIED、REWHIP、DISCARDED或ABANDONED,并附有管理者的证据和原因。 - 仅当
NEEDS中的每个 ID 都是VERIFIED时才解锁依赖单元,然后重复调度、返回和检查。 - 自下而上集成确切的工作者工件。明确解决假设和接口,然后运行根级别证明。
- 仅当根已验证或每个未完成单元都有明确的终端处置时才完成。报告未解决的冲突、剩余风险以及每个丢弃或放弃。
工作者调度信封
将整个信封放入每个子代理提示中。不要将其缩减为角色名称和任务句子。
APM 工作订单:<单元 ID>
用户目标:<用户保留的目标>
工作单元:<一个有界分配>
处理程序角色:<狭窄角色>
需要:<已验证的单元 ID 或无>
上下文:<最小上下文和已接受的决策>
拥有:<确切的路径或只读范围>
不要:<禁止的更改或无>
方法:<必需的方法>
输出:<确切的工件或响应>
检查:<管理者拥有的检查>
证明:<可重现的验收证据>
规范:<数量、质量、证明和完成边界>
预算:<时间、令牌、调用或其他限制>
观察:<等待、轮询、重新联系或中断节奏>
报告时机:完成 | 阻塞 | 范围更改前 | 预算阈值时
升级如果:<需要管理者决策的条件>
停止当:<完成或有证据的阻塞条件>
仅返回此一个报告,每个值占一行:
APM 工作报告
单元:<单元 ID>
状态:完成 | 阻塞 | 部分
输出:<确切路径、补丁、提交、发现或无>
未完成:<未完成但需要的
…
[为翻译而截断]