Skip to content
查看 GitHub 源文件

源文件:https://github.com/lennonli/licheng-AI-tutorials/blob/main/docs/agent-permissions-guardrails-ABL-20260831-V1.md

AI优先|不要让AI自动化失控:给Agent设计权限、审批和兜底机制

前面讲过:

真正成熟的AI工作系统,不应该每件事都等人来启动。

很多重复、稳定的任务,应该逐渐变成:

  • 定时执行;
  • 条件触发;
  • 自动处理。

但自动化能力越强,就越容易出现另一个问题:

如果AI做错了怎么办?

尤其当Agent已经不只是“回答问题”,而是可以:

  • 修改文件;
  • 运行脚本;
  • 调用API;
  • 发送邮件;
  • 操作服务器;
  • 访问业务系统;
  • 甚至触发外部动作,

这时候就不能只考虑:

“AI能不能做。”

还必须同时考虑:

“AI可以做到什么程度。”

所以我现在越来越认为:

一个成熟的AI工作系统,不只是要设计能力。

还要设计:

权限、审批和兜底。

一、AI能力越强,越不能默认“全部放权”

AI刚开始只是聊天工具的时候,风险其实很有限。

它最多回答错。

但Agent不一样。

如果它有真实操作权限,错误就可能从:

“答案错了”

变成:

“事情真的做错了”。

比如:

  • 覆盖了原始文件;
  • 误删了项目资料;
  • 把内部文件发给错误的人;
  • 修改了服务器配置;
  • 把测试环境操作到了生产环境;
  • 执行了一条不可逆命令。

所以我越来越不认可一种思路:

为了追求自动化,就把所有权限一次性全部给AI。

真正成熟的自动化,应该是:

能力越强,边界越清楚。

二、最简单的原则:读取权限可以宽,写入权限要谨慎

我觉得权限设计可以先从一个非常简单的区分开始:

读。

和:

写。

很多AI任务,只需要读取。

比如:

  • 读合同;
  • 查法规;
  • 分析邮件;
  • 检查文件夹;
  • 读取服务器日志;
  • 查看项目状态。

这类动作通常风险比较低。

可以适当放宽。

但一旦进入:

  • 修改;
  • 删除;
  • 发送;
  • 发布;
  • 部署;
  • 支付;
  • 提交,

风险就完全不同。

所以一个很实用的原则是:

读权限可以相对宽。写权限要分级。不可逆操作必须谨慎。

三、不要只分“允许”和“不允许”,最好分三级

如果只设计:

AI可以做;

AI不能做,

其实太粗。

我更喜欢把操作分成三个层级。

第一层:AI可以自行执行。

例如:

  • 读取文件;
  • 搜索;
  • 整理;
  • 分析;
  • 生成新文件;
  • 创建草稿;
  • 生成报告。

第二层:AI可以准备,但必须人工确认后执行。

例如:

  • 发送邮件;
  • 覆盖现有文件;
  • 修改正式合同;
  • 提交外部系统;
  • 修改服务器配置;
  • 对外发布内容。

第三层:原则上不交给AI直接执行。

例如:

  • 删除核心资料;
  • 不可逆生产操作;
  • 高风险资金操作;
  • 未经审核的正式法律结论直接对外发送。

这样比“AI有权限/没权限”更接近真实工作。

四、最好的自动化,不是取消审批,而是把审批放在关键节点

很多人一说自动化,就觉得人工确认越少越好。

我觉得不一定。

真正应该减少的是:

无意义的确认。

而不是所有确认。

比如AI扫描100份文件。

没有必要每处理一份都问:

“要继续吗?”

但如果它准备:

  • 删除20个文件;
  • 发送一封正式邮件;
  • 修改生产服务器,

这时候应该停下来。

所以好的工作流应该是:

普通步骤自动执行。关键节点集中审批。

这和前面讲的“复杂任务设置检查点”其实是同一个逻辑。

人不需要一直陪着。

但必须守住关键闸门。

五、尽量让AI先生成“草稿”,而不是直接执行

这是我特别喜欢的一种设计。

比如发送邮件。

不要让Agent直接发送。

可以让它:

  • 读取邮件;
  • 分析背景;
  • 起草回复;
  • 列出附件;
  • 等待确认。

人只需要最后看一眼。

确认后再发。

同样:

  • 合同修改先生成修订版;
  • 服务器操作先生成执行计划;
  • 数据库变更先生成SQL;
  • 发布内容先生成草稿。

这其实是一个非常好的中间层:

Draft First。

先形成可检查的结果。

再执行真实动作。

这样既保留了AI效率,也保留了人的控制权。

六、可逆操作和不可逆操作一定要区分

还有一个非常重要的判断标准:

这件事情做错以后,能不能恢复?

如果可以恢复,自动化程度可以高一些。

例如:

  • 生成一个新文件;
  • 复制一个文件夹;
  • 创建草稿;
  • 生成临时报告。

错了可以重来。

但如果是:

  • 删除;
  • 覆盖;
  • 外发;
  • 提交;
  • 部署;
  • 执行交易,

一旦发生,很难恢复。

这类任务应该提高审批等级。

所以权限设计可以简单记住一句:

越不可逆,越需要人工确认。

七、文件系统最好默认“原件只读”

前面我讲项目文件系统时,一直强调:

不要覆盖原始文件。

这其实就是一种权限设计。

最稳妥的结构是:

  • Input目录只读;
  • Working目录允许AI修改;
  • Output目录允许生成结果;
  • Archive目录原则上不动。

这样即使Agent出了问题,它的破坏范围也有限。

这就是所谓的:

最小权限原则。

不要因为AI只需要处理一个合同,就给它整个硬盘的写权限。

它需要什么,就给什么。

八、服务器和代码环境更要做隔离

如果Agent可以运行代码、SSH服务器,风险会进一步提高。

我比较倾向于:

先让AI在测试环境做;确认以后再动生产环境。

比如:

  • 代码先在分支修改;
  • 脚本先跑dry-run;
  • 配置先备份;
  • 数据库先导出;
  • 服务器操作前先记录当前状态。

这样即使失败,也有恢复空间。

所以Agent自动化不是:

“AI直接上生产。”

而应该是:

AI执行 + 环境隔离 + 可回滚。

九、一定要保留日志

如果AI已经开始自动执行任务,我觉得日志是必须的。

至少应该知道:

  • 什么时候执行;
  • 执行了什么;
  • 调用了哪些工具;
  • 修改了哪些文件;
  • 生成了什么结果;
  • 有没有报错;
  • 最终状态是什么。

原因很简单:

如果AI做错了,你必须能够回答:

它到底做了什么?

没有日志,就无法排查。

特别是多Agent、定时任务和Subagent同时存在以后,如果没有任务记录,很容易彻底失控。

所以一个成熟的AI工作系统,应该让每一次自动执行都有:

可追踪记录。

十、重要操作之前,先让AI备份

这是最简单,也最有效的兜底机制之一。

例如:

  • 修改Word前保存原件;
  • 批量重命名前生成映射表;
  • 修改服务器配置前备份配置;
  • 调整代码前提交Git;
  • 修改数据库前导出;
  • 更新知识库前保留旧版本。

很多问题并不是不能犯错。

而是:

犯错以后能不能回来。

所以我觉得AI系统应该形成一种默认习惯:

先备份,再修改。

这比要求AI“绝对不要出错”现实得多。

十一、不要只防止AI犯错,也要防止任务本身定义错

还有一个经常被忽略的问题。

AI可能完全正确地执行了一条错误指令。

比如你写:

“删除所有重复文件。”

AI真的删了。

但你后来发现:

有些“重复文件”其实是不同项目里的证据副本,不能删除。

这时候模型本身并没有犯错。

是任务设计有问题。

所以高风险自动化最好增加一道:

执行前自检。

例如让AI先输出:

  • 拟删除文件清单;
  • 拟修改文件列表;
  • 拟执行命令;
  • 影响范围;
  • 潜在不可逆后果。

然后再决定是否执行。

这一步本质上是在检查:

任务本身是否合理。

十二、异常情况不要让AI无限重试

自动化系统还有一种风险:

遇到错误以后不断重试。

例如:

  • API失败;
  • 登录失败;
  • 文件不存在;
  • 权限不足。

如果Agent被设定成“必须完成”,它可能不断尝试各种方案。

有时候反而把问题扩大。

所以我觉得应该设置:

失败阈值。

比如:

  • 连续失败两次后停止;
  • 发现权限异常立即停止;
  • 发现数据结构和预期不一致时停止;
  • 涉及未定义的高风险操作时停止。

然后把问题交还给人。

成熟的Agent不是:

无论如何都完成。

而是知道:

什么时候应该停。

十三、自动化最重要的能力之一,其实是“拒绝继续”

我们通常评价Agent,会看:

能不能完成任务。

但我觉得以后还有一个很重要的指标:

什么时候不应该继续做。

比如:

  • 输入文件版本冲突;
  • 客户身份无法确认;
  • 法律依据存在重大不确定;
  • 服务器状态异常;
  • 即将执行不可逆操作;
  • 发现任务可能超出原授权范围。

这时候好的Agent应该停下来。

告诉人:

  • 发生了什么;
  • 为什么不能继续;
  • 需要确认什么。

这种“停手能力”,本身就是可靠性。

十四、权限最好跟着任务走,而不是永久开放

还有一种风险是:

为了方便,给Agent长期保留大量权限。

但很多权限其实只在某个任务里需要。

比如某一次需要访问一个项目文件夹。

任务结束以后,就没有必要继续开放。

所以更好的模式是:

按任务授权。

  • 需要读哪个文件夹,就开哪个;
  • 需要操作哪个系统,就开哪个;
  • 任务结束后权限收回。

这和现实组织里的权限管理一样。

不是因为某个员工曾经需要一次权限,就永远保留。

AI也一样。

十五、真正成熟的AI自动化,是“放手但不失控”

所以我理解的AI自动化,绝对不是:

什么都让AI自己决定。

真正成熟的状态应该是:

  • 低风险任务,尽量自动;
  • 重复工作,尽量自动;
  • 可逆操作,尽量自动;
  • 高风险操作,必须审批;
  • 不可逆操作,严格控制;
  • 所有执行,有日志;
  • 重要修改,可回滚;
  • 异常情况,会停止。

这样人可以真正从执行中退出。

但仍然掌握:

最终控制权。

十六、AI系统越强,治理能力越重要

前面几篇一直在讲:

让AI自己工作;

调用Subagent;

接MCP;

写脚本;

设置定时任务;

条件触发。

这些能力越强,系统效率确实越高。

但与此同时,另一个能力也必须同步增长:

治理。

  • 谁能访问什么;
  • 什么可以自动做;
  • 什么必须审批;
  • 什么必须记录;
  • 什么出错以后可以恢复;
  • 什么情况必须立即停止。

这其实和管理一个真实团队非常像。

员工能力越强、权限越大,制度就越重要。

Agent也是一样。

所以AI工作系统真正成熟的标志,不只是:

“它能做很多事情。”

而是:

“它能在明确边界里稳定地做很多事情。”

前面讲的是:

让AI越来越主动。

这一篇补上的就是另一半:

AI越主动,人越要提前把边界设计清楚。

真正好的自动化,不是把控制权全部交出去。

而是:

该放手的地方彻底放手,该卡住的地方一定卡住。

这才是一个AI工作系统能够长期运行,而不是迟早出事故的基础。

内容同步自 GitHub 仓库,仅作为工具教程与工作流说明。

CONTACT

联系李成律师

扫描二维码添加微信,沟通法律 AI、非诉业务及相关合作事项。

手机端可点击二维码查看原图并长按识别。

李成律师微信二维码扫码添加微信