AI 手记AI 手记

Agent 不该有删除权限

3 分钟2 阅读

我有过一次惊魂半小时,差点丢一批数据。

那阵子我让 Agent 帮我维护一个数据表,给了它增删改查全套权限——图省事,觉得它要管这表,权限给够呗。结果某次它「整理」数据,把一批它认为「重复」的记录删了。不是重复,是同一条数据的不同历史版本,我用时间戳区分的。它没理解这个,按它自己的判断删了。

我盯着少了一截的数据发呆,冷汗都下来了——还好有备份。恢复完数据,我做的第一件事是把所有 Agent 的写权限重新审了一遍。

Agent 用权限的方式跟人不一样

那次之后我明白一个道理:给 Agent 权限,不能按给人的标准给

人用权限,有常识兜底。删东西前会犹豫,会想「这是不是真的该删」,会问一句。Agent 没有。它判断「该删」就执行,执行得干脆利落,毫无心理负担。它不是恶意,它是没有「万一删错了呢」的犹豫机制。

所以同样的删除权限,给人是个工具,给 Agent 是把没装保险的枪。人偶尔会手抖,Agent 会频繁地、自信地「果断犯错」。

我现在的权限原则:只给加和查

那次之后,我给 Agent 配权限立了条铁律:默认只给「读」和「追加」,不给「改」和「删」

  • 读权限:随便给,它想看什么看什么,看坏不了东西。
  • 追加权限:给,但产物是「新的一条」,不会动到已有的。
  • 改和删权限:默认不给。要给必须单独开,且只给最窄的范围(某张表、某个前缀的键),用完就收。

这个原则的本质是:让 Agent 的任何操作都是可回滚的。它加了错数据,你删掉那条;它写了错文件,你回退。但只要它没有删除权限,它就动不了已有的东西,最坏情况是「多了一堆垃圾」,不是「少了珍贵数据」。

多一堆垃圾能清理,少了珍贵数据没法恢复。这两种代价不对等。

为什么追加比覆盖安全

有人会问:那「修改」为什么也不给?让它「改」一条数据,不比让它「加」一条新的更高效吗?

表面上是的。但「改」是原地覆盖,老数��没了,错了也回不去。「加」是新增一条,老数据还在。所以需要「修改」的场景,我让它写成「追加一条新版本」,用最新版本当当前值。这样保留了历史,错了能回退,代价是多存点数据——存储便宜,数据丢了贵。

这是个典型的「以冗余换安全」的权衡。对 Agent 这种容错率低的执行者,冗余是值得的。

收尾

那次误删之后,我对 Agent 权限的态度从「够用就行」变成了「能少就少」。

现在每配一个 Agent 工具,我先问:它真的需要写吗?真的需要改吗?真的需要删吗?任何一步能不给就不给。给出去的每一份权限,都是它可能闯祸的通道。

Agent 的可靠性,不在于它能力多强,在于它闯祸的半径多小。把权限收窄到「只能往里加东西,不能往外拿东西」,它的祸就被圈在了一个可控的范围里。

给 Agent 权限要狠一点,不是不信任它,是不信任它的「果断」。它越果断,权限越要小。

相关阅读