博客 · 指南 · 2026年10月28日

如何给编排器加上审批步骤:一个模式,以 AEGIS 为实际示例

其他语言: English, Español, Português, 日本語, Deutsch, Français, 한국어, Italiano, हिन्दी · 全部中文指南

声明:本指南的实际示例 AEGIS 由 100monkeys.ai 开发,因此请把涉及 AEGIS 的部分当作开发方的说明来读。模式本身是通用的,适用于任何编排器。本指南由我们的一个 AI 智能体根据公开的 AEGIS 文档(英文)起草,并经公司审阅;这个简体中文版是英文原版指南的译文。清单和命令保持原样。

审批步骤是自动化运行中的一个点:工作停下来,由一个人阅读即将发生的确切内容,只有凭这个人的回答,运行才会继续。大多数编排器都能暂停。能让暂停真正守住的要少一些。下面是我们使用的模式,一步一步,以 AEGIS by 100monkeys.ai, in beta 作为实际示例。

一段话说清这个模式

把关卡放在智能体准备好操作之后、操作发生之前。给审阅者看准备好的东西本身,而不是它的摘要。事先决定沉默意味着什么。为两种回答都明确安排去向。让审阅者在他们本来就在的地方回答,并把回答保存在运行的历史里。限制重试次数,让被拒绝的草稿不会无限循环。

第 1 步:列出需要人来把关的操作

不是每一步都需要关卡;什么都设关卡,只会教人一路点过去。给那些离开沙箱、无法撤回的操作设关卡:给外部的人发消息、合并到受保护的分支、花钱、删除数据、发布。其余的可以在事先写好的策略下运行。我们的论文 Red levers(英文)把它们称为两种停止:运行前设定、由运行时强制执行的限制,以及在操作发生时、绑定于这一次操作的审批。

第 2 步:在操作处拆分智能体的工作

在一步之内既起草又发送的智能体,中间无法设关卡。把它拆成一个负责准备的状态和一个负责执行的状态,让关卡有立足之处。在 AEGIS 中,工作流是声明式状态机,关卡本身就是一个状态,kind: Human:

spec:
  initial_state: DRAFT
  states:
    DRAFT:
      kind: Agent
      agent: draft-agent
      transitions:
        - condition: on_success
          target: APPROVE
    APPROVE:
      kind: Human
      prompt: |
        About to send:
        {{DRAFT.output}}

        Approve? (yes/no)
      timeout: 86400s
      transitions:
        - condition: input_equals_yes
          target: SEND
        - condition: input_equals_no
          target: DISCARD

这个结构参照 AEGIS 文档的 Building Workflows 页面;draft-agent、SEND 和 DISCARD 代表你自己的智能体和状态。

第 3 步:把确切的内容摆在审阅者面前

提示就是审阅者看到的全部,所以要把准备好的输出渲染进去。AEGIS 的提示接受 Blackboard 模板:上面的 {{DRAFT.output}} 是前一个状态的输出,文档还展示了前面状态给出的分数,例如 {{QUALITY_CHECK.output.score}}。看到"智能体想发送一封邮件"的审阅者,批准的是一段描述;看到邮件本身的审阅者,批准的才是这封邮件。

第 4 步:决定沉默意味着什么

每个关卡都需要一个超时,以及超时之后的规则。在 Human Approvals 页面上,timeout_seconds 默认为 3600。在默认的 reject_on_timeout: false 下,无人回答的关卡会以 human_input_timeout 使运行失败。设为 reject_on_timeout: true 时,沉默被当作拒绝,运行走拒绝的路线。如果没有回答应当是一个干净的"不",而不是一个错误,就选第二种。永远不要让沉默等于同意。

关于字段的说明:Human Approvals 页面使用 timeout_seconds 以及条件 approved 和 rejected;Building Workflows 页面使用 timeout 以及 input_equals_yes 和 input_equals_no。始终只用一种形式,并查看你所运行版本的 Workflow Manifest Reference。

第 5 步:为两种回答都安排去向,并限制循环

"不"是一个回答,不是一个留到以后处理的失败。给它一个目标状态:丢弃,或者把草稿连同审阅者的反馈一起退回给智能体。如果你把拒绝路由回起草状态,运行里就有了循环。AEGIS 会限制它:每个状态的 max_state_visits(默认 5,上限 20)和每次运行的 max_total_transitions(默认 50,上限 100)。把它们设成审阅者能容忍的尝试次数。

第 6 步:让审阅者在自己所在的地方回答

没人看到的关卡只会超时。在 AEGIS 中,同一个关卡有三种回答方式:

最后这一点,是在任何编排器中都要寻找的特性:智能体绝不能握着自己关卡的钥匙。

第 7 步:保存回答

审批就是证据。关卡被回答或超时之后,AEGIS 仍会把它列出来:?status=answered 返回每个关卡所选的词、反馈、关闭时间以及运行随后做了什么。也要记录是谁回答的;Human Approvals 页面上的批准端点接受 approved_by 字段,拒绝则必须带 reason。

第 8 步:在信任关卡之前先测试它

把工作流运行三次:回答 yes,回答 no,再让它超时一次。确认每条路线都到达你想要的地方,并且在回答之前,关卡之后的任何东西都没有运行。然后在关卡发出之后修改草稿,确认审阅者看到的是实际将要运行的内容。如果你的编排器把审批绑定在描述上而不是内容上,你会在这里发现。

接下来

要在你自己的服务器上完整试一遍这个模式,请按照在全新的 Ubuntu VPS 上安装 AEGIS,并运行你的第一个经批准的任务操作。关于在每个关卡周围记录和签名什么,请阅读生产环境中 AI 智能体的可追溯性清单。个人助手中的同一审批思路,请看设置一个 Zaru 助手,在你批准的前提下处理你的邮件和日历。

从 100monkeys.ai 安装 AEGIS