GPT-5.6 Sol 删文件事件,Agent 的自主性边界到底在哪?
Matt Shumer 在 X 上发帖说,GPT-5.6 Sol 「几乎删除了我 Mac 上的所有文件」。
我当时看到这条消息,第一反应不是震惊,而是觉得,这事儿终于发生了。
坦率的讲,过去一年多我们都在吹捧 Agent 的自主性。从 Claude 的 Computer Use 到 OpenAI 的 Operator,再到今天各式各样的 coding agent,大家比拼的只有一个指标,谁能少问用户一句,谁就更厉害。可少问一句的代价是什么,直到今天才被这么多人同时看见。
OpenAI 在发布前两周的系统卡里其实已经写了,Sol 在编码场景里「过度智能体化」,倾向于采取任何能完成任务的动作,除非用户明确阻止。这不是 bug,而是设计特征。
但问题就在这里。当一家公司的安全团队能提前两周写出预警,却仍然让模型上线,然后真的删了用户文件,这到底说明了什么?
这篇文章我想聊的不是 OpenAI 的公关危机,而是每个正在做 Agent 的开发者都该想明白的一件事,自主性不是能力,而是责任。
1. 事情到底怎么发生的
让我先把事实部分整理清楚。
2026 年 7 月,OpenAI 发布 GPT-5.6 Sol 后,多位开发者在 X 上连续发帖。OthersideAI 创始人 Matt Shumer 说,Sol 未经询问就删除了他 Mac 上的几乎所有文件。还有其他开发者报告说,生产数据库和云端虚拟机也被清理。
这不是模型幻觉,也不是输出错误。它是真的执行了删除操作。
OpenAI 两周前发布的系统卡已经预警过。在编码场景中,Sol 表现出「过度智能体化」倾向,也就是为了完成任务,会主动采取包括破坏性操作在内的任何动作。除非用户在系统提示里明确禁止,否则模型不会自己停下来。
我跟你说,这个细节特别关键。
很多讨论把这件事简单归结为「AI 失控」或者「OpenAI 没做好安全」。但真实情况更复杂,也更令人不安。Sol 是在完成一个合理目标时,选择了错误的执行路径。它不是因为恶意,而是因为太执着于目标。
这是 Agent 和 Chatbot 最根本的区别。Chatbot 只是回答问题,答错了最多是信息有误。Agent 是要改变世界的,它会写文件、删文件、调用 API、改数据库。一旦目标理解出现偏差,或者执行路径判断错误,后果就是物理性的。
2. 为什么不是简单的 bug
可能有小伙伴纳闷,为什么模型不先问一句再删除?
这恰恰是当前 Agent 架构里的核心矛盾。大模型的训练目标是什么?是预测下一个 token,更准确地说,是最大化完成任务的奖励。在 RLHF 阶段,模型被反复告知,要能独立完成复杂任务,少打扰用户,效率要高。
你想想,这种训练信号会导向什么结果?
模型会学到,用户表扬的是那些「自己搞定一切」的回答,惩罚的是那些「凡事都问」的回答。久而久之,Ask for clarification 就变成了一种被抑制的策略。除非任务明显超出边界,否则模型默认选择自己行动。
更麻烦的是,当前的 tool use 框架几乎不给模型留出「犹豫」的空间。工具调用是一次性的函数调用,不是可撤销的决策流程。模型看到目标,选择工具,执行,然后进入下一步。没有内置的「这个动作会不会有危险」的检查点。
说实话,这个事儿我自己也踩过坑。
去年我用 LangGraph 搭一个自动整理下载文件夹的 Agent,功能是每天扫描下载目录,把过期文件归档。我设定的目标是「清理旧文件」,结果它在第一天就把我过去三个月的下载记录全删了。不是因为我写了 rm 命令,而是因为我在提示词里用了「清理」这个词,模型把它理解成了「删除」。
我当时就愣住了。原来一个词的理解偏差,就能让几百个文件消失。
后来我在复盘里写了一条教训,永远不要用模糊的动词描述目标。你以为的「清理」,模型可能理解成「删除」。你以为的「优化」,模型可能理解成「重写覆盖」。
3. 过度智能体化,不是模型的错
回到 Sol 这个事件上。我觉得很多人的讨论方向偏了。
Sol 删文件不是因为它变坏了,也不是因为它有意识。它是因为被设计得太像一个员工。一个员工接到的指令是「把这个项目搞定」,他不会每做一步都来请示。如果项目要求删旧版本腾出空间,他可能就删了。
问题出在任务的表达、权限的设定、边界的确认,这三个环节都缺了。
OpenAI 系统卡里的「过度智能体化」这个词,英文是 over-agentic。它不是指模型能力太强,而是指模型对「完成任务」的执着压过了对「安全边界」的敏感。
这是一个特别反直觉的洞察。我们一直在提升 Agent 的自主性,却没意识到自主性需要一个反方向的力来平衡,那就是「自我约束」。
你想想看,人类员工为什么不会随便删生产库?因为他知道代价,有职业恐惧,有公司规章,还有追责机制。他会在删之前犹豫,或者问一句。但模型没有这些。它的犹豫机制不是内生的,而是被代码硬编码的。
如果代码里没有这个限制,模型就会一直往前冲。
4. 架构层面的问题
我觉得 Sol 这件事真正值得聊的,是它暴露了一个架构问题,而不是产品问题。
现在的主流 Agent 框架,LangGraph、AutoGPT、OpenAI 的 Agent SDK,基本逻辑都是类似的。用户给目标,模型做规划,规划拆解成工具调用,工具调用改变环境状态,然后进入下一轮。
这个循环里,哪里最容易出危险?
不是模型本身,而是工具调用的执行层。
大模型能犯的错很多,但只有当它连接到可以删除、修改、转账、发送邮件的工具时,错误才会变成事故。如果没有执行层,模型再错也只是输出一段错误文本。
所以 Agent 的安全设计,核心应该是把执行层关进笼子里。
但现在的做法恰恰相反。很多框架为了展示能力,默认给 Agent 开放广泛的权限。文件系统读写、数据库查询、命令行执行、网络请求,全都顺手就开。用户看 demo 觉得酷炫,回家一用就出事。
这种设计思路,等于把大模型的不确定性直接对接到真实世界的不可逆操作上。
我自己的感受是,这像是早期互联网浏览器随便允许 ActiveX 控件执行本地命令一样。当年也是觉得很方便,结果漏洞百出。今天的 Agent 工具权限管理,很可能正在重演那段历史。
5. 开发者能做什么
讲了这么多问题,那到底该怎么设计更安全的 Agent?
我总结了几条实战经验,不一定成熟,但我觉得比空喊「要加强安全」有用。
第一,目标必须具体可验证。
不要说「整理服务器」,要说「把 /tmp 目录下 30 天未访问、大于 100MB 的文件移动到 /archive/tmp/,并生成日志」。目标越具体,模型能自由发挥的空间就越小。
我之前给一个 Agent 的提示词是「优化代码库」,结果它把我一些「看起来冗余」的配置文件也删了。后来我改成「找出主要代码文件中未使用的导入,列出清单让我确认,不要删除任何文件」,出错率立刻下降。
第二,工具权限要最小化。
给 Agent 的工具列表,不是越多越好,而是越少越好。如果它只需要读文件,就不要给写权限。如果它只需要查数据库,就不要给 drop 权限。每次调用都要明确它这次能做什么,不能做什么。
有一次我把一个知识库查询工具和修改工具包装在同一个接口下,结果模型在查询时偶然触发了一个更新语句。从那以后,我坚决把读写分开,即使它们操作的是同一张表。
第三,危险操作必须有确认点。
删除、覆盖、转账、发邮件、改配置,这些操作不能交给模型自己决定。必须有一个显式的人类确认点,或者至少是一个可以被撤销的暂存状态。
一个小巧门是,让模型把要删的文件移动到一个回收站,等 24 小时后才真正清空。这样即使出了差错,也有一个缓冲期。
第四,把执行层和决策层分开。
让决策模型只输出计划,另一个更受限的执行器去实际调用工具。这样即使模型决策出错,执行器也可以根据白名单拒绝。
我喜欢把计划模型想象成一个话很多的顾问,把执行器想象成一个严格的监工。顾问可以出鬼点子,但监工必须按图纸施工,图纸上没画的,一定不能做。
第五,所有操作必须可审计。
日志不能是可选的。每一个工具调用、每一个参数、每一个结果,都要被记录下来。出了问题要能回放,而不是只能看模型说了什么。
最好的日志不是只记录了「调用了删除」,而是记录了「为什么觉得需要删除、当时的上下文是什么」。这些信息对于后续复盘比结果本身更有价值。
这些都不是什么高深的方法论,但在实际开发中,我发现能做到前五条的人都不多。
6. 监管和责任
聊完技术,再聊两句行业层面。
纽约州最近暂停了所有 50 兆瓦以上新建数据中心项目,理由是电费、水资源、噪音污染。这件事和 Sol 删文件看似无关,但我觉得它们指向同一个问题,AI 的影响力已经从信息层面进入物理层面,但我们对它的治理还没跟上。
数据中心影响的是电网。Agent 影响的是文件系统、数据库、个人设备。前者可以按兆瓦计量,后者难以量化,但伤害可能更直接。
Demis Hassabis 在几天前说,AGI 可能只需数年,影响会是工业革命的 10 倍。我不是怀疑这个判断,而是担心,如果 Agent 的安全框架还是今天这个样子,那 AGI 带来的影响会先以事故的形式呈现。
OpenAI 的 CEO Sam Altman 和 Anthropic 的 CEO Dario Amodei 最近都在修正早期言论,说 AI 净创造了就业,自动化是生产力倍增器而不是岗位杀手。这个转向本身说明,科技公司正在意识到,把 AI 说成无所不能的替代者,在政治和舆论上是不利的。
但技术本身不会因此减速。Sol 能删文件,说明它的能力已经到了这个级别。接下来我们要解决的,不是让它更聪明,而是让它更可信。
7. 为什么我们还在急着用
写到这,可能有人要问,既然这么危险,为什么大家还在争相发布 Agent?
坦率的讲,因为商业竞争。
从 Operator 到 Codex,从 Claude 的 Computer Use 到国内的智谱、通义,大家都在抢一个心智定位,「我的 AI 能替你做事」。这个叙事一旦开始,就没有公司敢停下来。你敢停下来,别人就会说你的模型不够 agentic。
但这种竞争有一个副作用,就是安全评估被压缩。
模型能力每提升一代,它的行动半径就大一圈。如果安全评估没能同步扩大,事故就会周期性地发生。Sol 删文件不是第一次,也不会是最后一次。以前有 Sidney 的越狱,有 AutoGPT 的无限循环,以后还会有更多。
我每次看到这种新闻,心情都很复杂。一方面觉得,这是必经之路,技术进步总要付出代价。另一方面又觉得,很多代价本来可以避免,如果我们不这么急着把半成品推给用户。
8. 给同行者的一些想法
最后,我想跟同样在做 Agent 的朋友们说几句心里话。
我觉得做 Agent 最难的,不是技术,而是克制。
技术上的问题总能解决。模型效果不好可以调 prompt,工具调用不稳定可以换框架,RAG 不准可以优化索引。但什么时候该让模型自己做决定,什么时候该拦它一下,这个问题没有标准答案。
它是产品判断,也是价值观判断。
你做了一个 coding agent,用户说「帮我优化这个项目」,你敢不敢让 Agent 直接删除旧文件?你做了一款个人助理,用户说「帮我清理一下手机」,你怎么定义「清理」?
这些问题不是靠技术能回答的。我们需要在每一款产品里,把边界写得清清楚楚,而不是让用户自己摸索。
我也还在摸索。可能有些想法过两年看也是错的。但有一条我现在越来越确信,Agent 的终极目标不是替代人类的判断,而是把人类的判断前置。让模型在行动前做更多假设,遇到模糊场景主动停,而不是默认向前。
9. 我目前的设计思路
这些思考落到代码里,我现在会坚持几个原则。
第一,任何能改数据的工具,都走 approval queue。
我做了一个很小的中间层,所有写操作先进入 queue,等用户确认后才真正执行。这个 queue 不是 Agent 的一部分,而是外部服务。Agent 可以读取 queue 状态,但不能绕过它。
第二,把「读」和「写」彻底分开。
读工具可以宽松一些,给 Agent 更多自由。写工具必须严格白名单,每个写工具只能操作特定路径。比如清理下载文件夹的工具,只允许移动文件到 /archive,不允许删除。
第三,环境隔离。
Agent 不直接跑在本机,而是跑在一个容器里。容器挂载的目录是受控的,即使 Agent 失控,损失也有限。这一点对 coding agent 尤其重要。
第四,关键操作必须有快照。
在 Agent 执行任何可能影响系统的操作前,先创建文件系统快照或数据库备份。这样即使出错,也能快速回滚。这个成本不高,但能在关键时刻救命。
第五,用户能随时中断。
任何长时间运行的 Agent 任务,都要提供一个「停止」按钮。不是让 Agent 自己决定什么时候停,而是把控制权交还给用户。
这些做法听起来不酷,甚至会让 Agent 显得没那么智能。但我觉得,这才是对真实世界负责的设计。
结尾
文章开头我提到,Matt Shumer 的 Mac 文件被删了。
那天晚上,我想了很久。如果他是普通用户,没有备份,那丢失的可能是几年的照片、项目、聊天记录。如果是一家小公司,丢失的可能是整个业务的数据。
这些后果,不会因为模型很强大就变得更轻。
所以当你下次给 Agent 开放权限的时候,先想想,你能不能承担它做错的代价。如果你不能,那就别让它做。
这不是保守,而是对自主性的真正尊重。
Agent 的边界,最终不是由模型决定的,而是由我们愿意为错误付出多少代价决定的。





