2026-09-05-agent工具权限

0 阅读4分钟

Agent 工具权限怎么设计?默认拒绝 + 三层卡死 + HITL 人审(附真实工程实践)

前言

前几天讲过,Agent 和聊天机器人的分水岭是"敢不敢做":聊天机器人只会说,Agent 的输出会变成真实动作——写文件、发请求、改数据。

这个分水岭也把风险等级抬了一层。聊天机器人说错话,最多是误导;Agent 做错事,是真事故。所以工具权限设计是 Agent 工程里我最花心思的一块:模型想动手,谁说了算?

一、第一原则:默认拒绝

权限设计第一条,也是最容易做错的一条:没配置,就是不能干;而不是没配置,就随便干。

行话叫 fail-closed(默认关死)。我的平台里,一个 Agent 如果什么权限都没配,它的状态是:所有工具全部拒绝,只有系统能力保留。

反过来做(默认全开)会怎样?你忘了配某个敏感工具的限制,它就裸奔了。安全配置的口诀:忘记配置的代价应该是什么都干不了,而不是什么都干了。

二、三层卡死

模型不是不听话,是你没法指望它时时听话。权限不能只设一道,我做了三层,一层失效另一层兜底。

机制效果
第一层:不生成无权限的技能工具组压根不创建模型看不见,无从想起
第二层:白名单快照装配期逐条登记允许的工具 + 权限模式不在单子上,入口直接拦
第三层:运行时复核每次执行前重查最新授权授权变了立刻生效,越权拒绝并留痕

第一层最彻底:看不见就无从想起。第三层最必要:授权是动态的,技能会停用、人员会变更,快照只管装配那一刻。

三、权限模式:不同场景不同松紧

  • 默认模式:常用只读操作放行,写操作和高风险动作走确认;
  • 只读探索模式:所有写操作一律拦截,只准看不准碰。适合"先摸情况再放手"的场景;
  • 全程确认模式:每个工具调用都弹给用户点头,适合初次磨合或高风险环境。

模式是 Agent 级配置,一个 Agent 一种姿态。

四、HITL:高风险动作的最后一道人闸

有些动作再严的自动规则也不够,得人拍板。HITL(Human-in-the-Loop,人机协同):流程暂停,等人决策,然后恢复。

真实流程:模型发起高风险工具调用 → 平台挂起不执行 → 用户界面弹出审批请求(要干什么、参数是什么)→ 批准则从断点继续,拒绝则 Agent 收到否决换路子。

审批流跑在对话流里:审批请求和普通消息一样出现在会话中,点批点拒都在对话界面完成。人不需要盯着屏幕等——审批请求会等你。

类比:Agent 像个能干的实习生,日常小事自己办,大事必须请示。请示不是不信任,是责任边界:出了事,得有人拍过板。

五、为什么提示词顶不了用

提示词是引导,不是约束。模型大部分时候会听,但它是概率系统——提示词写一万遍"不要",也不能保证它一次都不越。

真正靠得住的约束是物理性的:工具组没生成、白名单没登记、运行时复核不过。提示词管模型的行为倾向,权限管系统的行为边界。前者求它别干,后者让它干不了。

六、三个常见误区

  1. "权限配严了影响效率。" 分层就是为了效率:常用的放行,高危的确认。误杀的成本远低于事故的成本。
  2. "配一次就完了。" 授权是动态的,运行时复核不是性能浪费,是必须。
  3. "模型说它不会乱来,就信了。" 概率系统没有"保证"。所有安全设计的前提都是:模型一定会犯错,问题只是什么时候。

总结

口诀带走:默认全关,看不见的最安全;三层卡死,一层失效有兜底;高危动作上人闸,提示词只是引导不是边界。

你给 Agent 的工具上过权限吗?评论区聊聊。下一篇:AI 回答为什么是一个字一个字蹦出来的——流式输出的原理。