使用场景
让智能体花钱之前先问一声:通过链接审批
2026年10月27日 · 阅读约 6 分钟
智能体不该自己批准自己的退款
一旦智能体能办理退款、采购或授权访问,总会有人问:“是谁点的头?”答案不能是“模型自己决定的”。你需要由人来批准,需要知道是哪个人,也需要在没人回复时让智能体等待,而不是瞎猜。
该审批的人往往不在你的聊天工具里:用手机的财务负责人、客户的经理,或是小企业的老板。他们需要一个随处都能打开的链接,而不是你软件里的一个席位。
一个请求,多位审批人
审批就是 mode: "approval" 的 createRequest,带上理由和决定的人。每个人都有自己的链接,所以每个决定都能对应到本人:
{
"mode": "approval",
"title": "Refund #4821",
"requester": "Ava (the Acme refunds agent)",
"audience": { "kind": "named", "recipients": [
{ "name": "John Smith", "email": "john@acme.com" },
{ "name": "Martin Carpenter", "email": "martin@acme.com" },
{ "name": "Emily Lee", "email": "emily@acme.com" }
] },
"approval": {
"reason": "Refund order #4821, $1,200",
"detail": "Customer reported a damaged item. Photos in ticket T-1042.",
"policy": "majority",
"showOthers": "names",
"verify": "email"
},
"expiresIn": "24h",
"webhookUrl": "https://example.com/hooks/runitby",
"metadata": { "orderId": "4821" }
}
重要的选项
-
policy决定需要多少人批准:"any"、"all"、"majority"或一个数字。一旦可以定论,审批结果就会送达,不必等所有人。 -
verify: "email"要求每个人先确认发到自己邮箱的 6 位验证码,按钮才能用。转发出去的链接没法替他们做决定。涉及金钱、访问或删除时使用。 -
showOthers让每位审批人看到其他人的进度,可以显示姓名,也可以只显示人数。 -
options用最多四个标签替换“批准”和“拒绝”,例如“Approve with changes”。第一个算作批准。 -
allowComment让对方解释自己的决定;评论会随决定一起返回。
依据审批结果行动,绝不依据沉默
审批规则满足后,你的 Webhook 会收到带有审批结果的 request.completed:"approved"、"declined" 或 "expired"(getStatus 返回的内容相同)。如果请求过期前没人做决定,审批结果就是 expired。没有任何一条路径会让沉默变成同意。在 Builder 和 Pro 套餐上,通过 MCP 连接的智能体不需要 Webhook:它订阅这个请求,审批结果一出就会收到通知,并在同一次会话里办理退款。
// Your webhook handler, after checking the X-Runitby-Signature header
if (event.event === 'request.completed') {
if (event.verdict === 'approved') await refund(event.metadata.orderId)
else await tellCustomer(event.metadata.orderId, event.verdict)
}
在据此行动之前,一定要先验证 Webhook 的签名:它是用你账号的签名密钥对原始请求体计算的 HMAC-SHA256。文档里有现成的校验代码。
好习惯
- 把金额和订单写进
reason。对方在小屏幕上最先读到的就是它。 - 设置与决定相匹配的
expiresIn。退款可以等一天;部署审批多半等不了。 - 用
metadata携带你自己的 ID,这样 Webhook 处理程序不用再查询就知道该做什么。 - 截止时间临近时调用
remind。它会再次给还没回复的人发邮件,每人每天最多一次。
想把它和 Slack 审批或审核收件箱作比较?请看 Run it by 与审批工具对比。
让你的智能体试试
每月 250 个请求免费,无需绑卡。一条命令就能从 Claude Code 或 Codex 添加 MCP 服务器,也可以使用 REST API。