Agent 能调工具,就意味着它能造成真实后果。这节是我们的上线检查清单。
可复现前提: 本文的策略配置示例基于我们内部的网关。具体实现不通用,但四道闸的思路可以照搬。
闸一:权限最小化,按人不按服务
Agent 用调用者本人的身份访问后端,不用服务账号。这样越权问题天然被现有的权限体系挡住。
我们踩过的坑写在 MCP 集成实录 里,一句话总结:共享 token 迟早出事。
闸二:危险操作二次确认
分级:
| 级别 | 例子 | 策略 |
|---|---|---|
| 只读 | 查询、检索 | 直接执行 |
| 可逆写 | 建工单、发草稿 | 直接执行,记录日志 |
| 不可逆 | 删除、发布、转账 | 必须人工确认 |
| 高危 | 批量操作 > 10 条 | 禁止,走人工流程 |
闸三:全量审计日志
每次工具调用记录:调用者、工具名、参数、返回摘要、耗时、会话 ID。
{"ts":"2026-08-14T09:22:31Z","user":"zhangkun","tool":"create_ticket",
"args":{"title":"..."},"result":"ok:T-8821","ms":340,"session":"s_91af"}出事时能回溯是底线要求。参数里的敏感字段要脱敏后再落盘。
闸四:熔断
三个触发条件:
- 单会话工具调用 > 50 次 → 中止(通常是死循环)
- 单用户每分钟 > 30 次调用 → 限流
- 某工具错误率 5 分钟内 > 40% → 摘除该工具,Agent 降级运行
第 1 条救过我们一次:有个 Agent 因为工具返回格式变化陷入了重试死循环,15 分钟调了 1200 次。熔断后只损失了几毛钱。
上线检查清单
- 所有不可逆操作已确认需要人工批准
- 审计日志已接入,敏感字段已脱敏
- 熔断阈值已配置并演练过
- 有一键关闭开关,且值班同学知道在哪
评论与复现反馈 1
熔断那三条我们全接了。第 1 条确实救命——上周刚拦下一个死循环,15 分钟 900 多次调用。