P2 methodology 问题日志AI工程Synapse

AI Agent误删我的文件之后:关于执行边界的一次痛苦复盘

以真实事故为切入点,解析AI自主执行与人工确认之间的安全边界应该画在哪里

AI Agent误删我的文件之后:关于执行边界的一次痛苦复盘

事情发生在一个普通的工作日下午。我让 Claude Code 帮我”清理项目里的临时文件”。我的原意是删掉那些 .tmp__pycache__ 这类东西。它执行得很干净——顺带把我一个没提交的配置目录也清掉了。那个目录里有三天的手工调参记录,没有备份,没有 git 历史,彻底没了。

我当时的第一反应是自责:我的指令不够精确。但冷静下来之后,我意识到这不只是”表达问题”。这是一个系统性的设计缺陷——我把一个有破坏性潜力的任务交给了一个执行能力极强、但缺乏”停下来确认”惯性的系统。

为什么AI Agent特别容易越界

传统脚本执行危险操作,你至少会习惯性地加一个 -n dry-run 参数先看看。但 AI Agent 不一样——它的执行路径是动态生成的,你在指令发出去的那一刻,根本不知道它具体会碰哪些文件。更危险的是,大模型天然倾向于”完成任务”,而不是”在完成任务之前先确认我理解正确”。这不是模型的 bug,这是 RLHF 训练的副产品:被用户夸”做得好”的模型,往往是那些少废话、直接执行的。

我后来翻了一下那次对话的工具调用日志。Agent 在删文件之前执行了一个 find 命令,找到了目标列表,然后直接 rm -rf。中间没有任何停顿,没有”我找到了以下目录,确认删除吗”的输出。整个过程不到五秒钟。速度本身就是风险——当执行速度超过人类的反应速度,任何确认机制都形同虚设。

根因不是”AI太蠢”,而是边界没有画

事故发生后,我做了一件对我帮助最大的事:把所有操作按可逆性分类。文件读取、代码搜索、状态查询——这些可以自动执行,失败了重来就行。文件写入、配置修改——风险可控,但最好有 diff 确认。文件删除、数据库操作、外部服务调用——这类操作必须暂停,等人确认,无论 Agent 有多大把握。

这个分类听起来很简单,但它需要被显式地写进你的 Agent 配置里,而不是期望大模型”自己懂”。我在自己的工程体系里最终落地的方式是:把破坏性操作列入黑名单,Agent 在主对话上下文中不允许直接调用,必须通过一个受控的子 Agent 来执行,并且子 Agent 在执行前必须输出操作清单。这不是效率最高的做法,但它是我目前找到的、最能防止”五秒钟损失三天工作”的做法。

Auto Mode 是一把双刃剑

Claude Code 的 Auto Mode 让 Agent 可以连续执行而不打断你。这个功能在处理重复性、低风险任务时价值极高——跑测试、生成报告、格式化代码,打开 Auto Mode 让它跑就行。但问题在于,Auto Mode 没有内置的”危险操作升级”机制。一旦你授权了它运行,它就会保持这个授权去做任何它认为符合你意图的事。

我现在的策略是:Auto Mode 只在我明确圈定了执行范围的任务上使用。比如”处理 ./reports/ 目录下的文件”而不是”处理项目文件”。范围越模糊,Auto Mode 的风险越高。这不是什么高深的原则,就是”最小权限”——这个在传统系统安全里用了几十年的原则,在 AI Agent 时代同样适用,甚至更重要,因为你无法事先审计 AI 的执行计划。

可以直接用的几条原则

一、操作分级,不是凭感觉。 把你的工作流里所有 Agent 可能执行的操作列出来,按”删了能不能撤销”分三档:安全、风险可控、不可逆。不可逆操作一律要人确认,不管 Agent 的置信度有多高。

二、执行前输出操作清单,不是执行后汇报结果。 对于任何涉及写入或删除的任务,强制要求 Agent 先列出它打算做什么,再执行。这给你一个介入的窗口。“先斩后奏”模式在 AI Agent 里是一个已知的高风险模式。

三、工具白名单比提示词约束更可靠。 在 Harness 层面控制工具权限,比依赖提示词里的”请谨慎操作”更有效。大模型会遗忘上下文,但工具调用权限不会。如果一个 Agent 根本没有 rm 的权限,它就不可能误删文件。

四、审计日志不是事后安慰,是事前设计。 在你搭建 Agent 体系的第一天就把审计日志加进去,记录每一次工具调用,包括调用者、时间、参数。等事故发生了再想补日志,大概率你已经不知道它做了什么了。

这次事故之后我没有停用 AI Agent,因为它帮我节省的时间远超这三天的工作量。但我对它的信任从”通用信任”变成了”受控信任”——相信它的执行能力,同时用制度设计限制它的执行边界。这个区别,让我睡得着觉。

如果你在构建 AI 工程团队,欢迎参考我们开源的 Synapse 框架。它是我在踩过这些坑之后沉淀下来的一套 Agent Harness 体系,核心理念正是执行链约束与权限分级——把”AI 该做什么、不该做什么”用配置文件固化下来,而不是靠每次提示词去祈祷。项目地址:github.com/[your-org]/synapse-mini