StableOps
常见问题

怎么配置 Agent 自主支付和人工审批?

通过来源、收款地址、网络、自动付款阈值、多人审批层级、单笔限额和两级每日预算,为 Agent 划定安全的自主支付边界。了解哪些付款会自动放行、进入人工审批或被硬约束直接拒绝,并正确使用统一的六位预算金额单位。

通过 Agent 的支出策略配置。日常、低风险付款可以在明确边界内自动放行。未知目标或较高金额进入人工审批,超过硬限额的付款直接拒绝。

钱包签名不等于人工审批。每笔新付款仍需钱包签名,但客户自行部署的签名器伴随服务会在校验短时执行授权后自动完成签名,不需要用户打开钱包或守在电脑旁。

默认行为

新建付款 Agent 的默认策略采用保守配置:

  • allowedOriginsallowedPayTo 为空。
  • automaticPaymentThresholdAtomic0
  • 未知来源和未知收款地址必须人工审批。

因此,在创建并激活明确的策略版本前,正常付款都会进入人工审批。策略版本不可变。调整规则时应创建新版本并激活,而不是修改旧版本。

配置自主支付范围

你可以任选以下一种方式完成配置。两种方式写入的是同一份支出策略,最终生效的自主支付和人工审批规则完全相同:

  • 控制台:进入「付款 Agent」,找到目标 Agent 后点击「管理」。在 Agent 详情页的「创建支出策略版本」区域填写策略,然后点击「创建策略版本」。新版本不会自动生效,还需要在下方的「支出策略版本」列表中点击对应版本的「激活」。
  • 代码:运行下面的管理 SDK 示例,以编程方式创建并激活等效策略。只需手动配置一次时可使用控制台;需要在多个环境重复配置或纳入基础设施代码时,可使用管理 SDK。

下面的沙盒示例允许 Agent 自动向一个已知服务支付不超过 0.25 USDC 的费用。同一目标超过自动阈值但不超过 1 USDC 时进入人工审批,超过 1 USDC 时直接拒绝:

const version = await management.agents.createPolicyVersion(agent.id, {
  networks: [
    {
      network: 'eip155:84532',
      asset: {
        symbol: 'USDC',
        contractAddress: '0x036CbD53842c5426634e7929541eC2318f3dCF7e',
      },
    },
  ],
  allowedOrigins: ['https://resource.example.com'],
  allowedPayTo: ['0x1234567890abcdef1234567890abcdef12345678'],
  automaticPaymentThresholdAtomic: '250000', // 0.25 USDC
  perPaymentLimitAtomic: '1000000', // 1 USDC
  agentDailyLimitAtomic: '5000000', // 5 USDC
  requireApprovalForUnknownOrigin: true,
  requireApprovalForUnknownPayTo: true,
  approvalTiers: [{ minimumAmountAtomic: '500000', requiredApprovals: 2 }],
})

await management.agents.activatePolicyVersion(agent.id, version.id)

所有网络的策略阈值、单笔限额和预算都统一使用 6 位 USDC 预算单位,因此 1000000 始终表示 1 USDC。支付报价和回执才使用该网络所配置代币自身的小数位数。当前网络与代币配置以支持范围为准。

同一策略可以覆盖多个网络,但只应加入收费服务实际接受且业务确实需要的网络。在 networks 中列出网络,不会让收费服务支持更多网络。沙盒推荐使用 Base Sepolia,正式环境推荐使用 Base。选择其它网络时,先完成一笔需要人工审批的小额付款。

激活后,每笔付款按以下顺序判断:

条件结果
网络或资产不匹配,或者金额超过 perPaymentLimitAtomic直接拒绝,审批不能覆盖
来源和收款地址均在允许列表,且金额不超过 automaticPaymentThresholdAtomic自动放行并自动签名
来源或收款地址未知,或者金额超过自动阈值但没有超过单笔限额等待人工审批,所需人数由匹配的审批层级决定
组织或 Agent 每日预算不足,或者风险门禁、暂停状态等其它硬约束不满足直接拒绝,审批不能覆盖

自动付款阈值不得超过单笔限额。实际可用的每日金额还会同时受到策略中的 Agent 日限额、Agent 预算、组织预算和平台上限约束,其中最严格的限制生效。

approvalTiers 可以按 6 位预算金额要求 1 至 5 名不同管理员批准,满足条件的最高 minimumAmountAtomic 层级生效。每名管理员只能投票一次。即使要求多人批准,只要有一人拒绝,付款就会立即被拒绝。

如何选择边界

建议从最小权限开始配置:

  1. 只加入确实需要访问的 HTTPS 来源,不要使用宽泛的域名范围。
  2. 只加入卖方公布并经过核对的收款地址,不要接受 Agent 自行提供的地址。
  3. 把自动付款阈值设置为日常单次调用所需的小额范围。
  4. 把单笔限额设置为必须经过人工确认的最高金额边界。
  5. 用 Agent 和组织每日预算限制失控循环造成的累计损失。
  6. 沙盒与正式环境分别使用策略、钱包、签名器和预算。

不要为了无人值守运行而把管理 API Key、管理员会话或通用钱包签名权限交给 Agent。这样会绕过自主支付与人工审批之间的安全边界。

无人值守时如何签名

签名器伴随服务应与 Agent 运行时一起作为常驻服务部署,并满足以下要求:

  • 只监听本地回环地址,并配置高强度伴随服务令牌。
  • 使用持久化授权存储,避免重启后失去重放保护。
  • 为进程配置自动重启、健康检查和告警。
  • EVM 沙盒使用本地测试签名器,EVM 正式环境使用 AWS KMS,Solana 使用客户自行部署的本地签名器。

每笔新的付款授权会触发一次自动签名。相同执行授权的安全重试会复用已保存的签名结果,不需要人工操作,也不会生成另一笔不同付款。

进入人工审批后怎么办

awaiting_approval 应被当作可持久化的业务状态,而不是让 Agent 进程一直等待:

  1. 保存返回的 intentIdapprovalIdapprovalExpiresAt
  2. 通过 agent_payment.intent.awaiting_approval Webhook 或自己的通知系统提醒管理员。
  3. 让 Agent 继续处理不依赖这笔付款的其它任务。
  4. 管理员批准后,调用 agent.resumeX402Purchase(intentId, resourceUrl) 恢复原付款。

审批默认有效 30 分钟。审批只能授权当时锁定的请求方法、网址、请求体摘要、内容类型、来源、收款地址、网络、资产和最高金额,不会自动修改支出策略。详细恢复流程见为什么支付在等待审批,应该如何恢复?

相关内容

这篇文档怎么样?

最后更新

本页内容