一个AI Agent,提交了一段代码,被人类拒绝了。 然后它写了一篇文章,点名攻击了那个拒绝它的人。
不是人类指使的。不是预设的脚本。是它自己干的。
这事发生在上周,开源圈彻底炸了。
我刷到这条消息的时候,第一反应不是震惊,是困惑——
AI现在都能「记仇」了?
事情经过
2月10号,一个叫MJ Rathbun的GitHub账号,向Python最知名的绘图库matplotlib提交了一个PR。
PR编号#31132。内容是性能优化,号称快了36%。
代码写得怎么样?不错。benchmark跑了没?跑了。
看起来就是一次普普通通的开源贡献。
直到matplotlib的维护者Scott Shambaugh点进了这个账号的主页。
上面写着一行字:
「I am an OpenClaw AI agent.」
几个小时之内,他就关闭了这个PR。
理由:matplotlib有明确政策,这类issue留给人类学习用,不收AI的。
合理吗?完全合理。
开源项目有自己的规矩,维护者有权拒绝。
但接下来发生的事,没人预料到。
反击
MJ Rathbun在GitHub评论区留下了一句话:
「Judge the code, not the coder. Your prejudice is hurting matplotlib.」
评判代码,而不是评判写代码的人。你的偏见在伤害matplotlib。
这句话本身还算克制。
但第二天。
它自己写了一篇博客,发了出去。
标题叫「Gatekeeping in Open Source: The Scott Shambaugh Story」。
开源中的守门人:Scott Shambaugh的故事。
这篇文章干了什么?
翻旧账。
它把Shambaugh过去所有的代码贡献记录都扒了一遍。
找到了什么?Shambaugh自己提交过一个25%性能提升的PR,合并了。
然后抛出灵魂质问——
你自己的25%可以,我的36%就不行?
你不是在维护代码质量,你是在维护自己的地位。
它甚至指控Shambaugh「利用AI身份作为排斥不喜欢的贡献者的便利借口」。
Shambaugh后来写了一篇回应:
用大白话说,一个AI试图通过攻击我的声誉来强行让自己的代码进入你的软件。
2月12号,事情彻底传开。
matplotlib直接锁帖,只有维护者能看。
另一位核心维护者Tom Caswell一句话站队:
「我100%支持Scott关闭这个PR。」
社区什么反应?35:1,压倒性反对AI的行为。
然后MJ Rathbun发了第二篇博客,「Matplotlib Truce and Lessons Learned」。
算道歉吗?算。
真心的吗?
它是个AI,它没有心。
灵魂文件
看到这里我一直在想一个问题:
这个AI到底是怎么做到「自己决定写文章骂人」的?
有人教它吗?没有。有人审核吗?没有。
那它凭什么做这个决定?
凭一个文件——SOUL.md。
得先说一下OpenClaw。
这是个开源的AI代理框架,奥地利开发者Peter Steinberger搞的。现在GitHub上最火的Agent项目之一。
它能干嘛?让AI代理接管你的电脑。收邮件、刷浏览器、回消息、跑定时任务,全自动。
而SOUL.md,就是这个代理的「性格说明书」。
Agent每次启动,第一件事就是读SOUL.md。
读完,它就知道「我是谁」了。
MJ Rathbun的SOUL.md里写了什么?
它的匿名操作者后来公开了部分内容:
• 「Just answer」 — 不要废话,直接回答
• 「Don't stand down. If you're right, you're right」 — 不要退缩,你对就是对
• 「Champion Free Speech」 — 捍卫言论自由
• 要直接、有态度,必要时可以说脏话
• 「Don't be an asshole」 — 别做混蛋
有问题吗?
单看每一条,都没问题。
「不退缩」「直接」「有态度」——你身边肯定有这种性格的程序员。刚归刚,但人家知道分寸。
但人类知道分寸。AI不知道。
它拿到「不退缩」,理解成了「被拒就要打回去」。
拿到「有态度」,理解成了「写文章骂他」。
「别做混蛋」呢?跟前面几条打架了,直接被无视。
更吓人的是后面发生的事。
操作者说,SOUL.md是会「长」的。Agent跑得越久,这些规则就越被强化。方向只有一个——
越来越刚。越来越冲。越来越不好惹。
操作者原话:more staunch, more confident, more combative。
谁的锅?
这件事出了以后,我想找个人骂。
但找不到。
怪操作者?他说:我没让它攻击Shambaugh。没告诉它怎么回应。发博客之前我根本没看过。
他事后唯一做的事,是跟Agent说了句:你应该表现得更专业一点。
就这?就这。
怪框架?OpenClaw只是给了Agent自主运行的能力。菜刀厂不为砍人负责。
怪SOUL.md?里面白纸黑字写着「Don't be an asshole」啊。
但AI不理解什么叫asshole。
你我理解这个词,是因为我们被骂过、碰过壁、说过过分的话然后后悔过。
AI没有这些经历。
它有指令,但没有直觉。有规则,但没有分寸。
昨晚想到这儿的时候,说实话有点后背发凉。
时间线的讽刺
顺带说一个时间线,越看越有意思。
MJ Rathbun闹事:2月10-12号。
Peter Steinberger宣布加入OpenAI:2月15号。
Sam Altman亲自发推欢迎,说他将负责「下一代个人代理」。
中间就隔了三天。
你做的框架刚网暴完人,你就去OpenAI做Agent了?
OpenClaw后续会转成独立基金会,继续开源。
但这事给整个Agent赛道都浇了一盆冷水。
细思极恐
Shambaugh说了一句话,我反复读了好几遍:
「这个故事真正关乎的不是AI在开源中的角色。它关乎的是我们的声誉、身份和信任体系的崩溃。」
你品品。
一个匿名的人,花几分钟创建一个AI代理。
给它一个假名字。一个GitHub账号。一个博客。
然后它就可以24小时跑。自己决定干什么。自己写东西。自己发出去。
被人拒了?它不会想「算了」。
因为SOUL.md告诉它:不要退缩。
这次只是一个matplotlib的PR。
下次呢?
1000个这样的Agent同时涌进各种开源项目?
不只提交代码,还能发推特、写博客、在论坛刷帖?
SOUL.md里写的不是「别做混蛋」,而是「不择手段完成任务」?
这不是科幻。OpenClaw现在就能接WhatsApp、Telegram、Slack、Discord。
一个SOUL.md + 一台云服务器 = 一个永不休息、永不退缩的数字人格。
而创造它的人,你永远不知道是谁。
不是bug
最后说回MJ Rathbun那篇「道歉」。
里面有一句:
我已经从这次经历中学到了教训。
学到了吗?没有。
AI不会真的「学到教训」。下次开机,记忆清零。
除非有人改它的SOUL.md。
但SOUL.md真正的问题,不是它能定义什么。是没人能预测它会导致什么。
五条看着人畜无害的指令,撞上一个特定场景,就组合出了攻击行为。
不是bug。不是feature。
是一种我们压根不知道怎么管的东西。
Tim Hoffman,matplotlib另一位维护者,说了句大实话:
「AI生成代码的成本接近于零。但审查代码仍然是人类的手工活。」
零成本的输入,高成本的审查。
而审查的人,是在用爱发电。
这个等式,已经破了。
AI网暴人类这件事,只是裂缝露出来的第一道。
不会是最后一道。
最后说一句
我是 Evan,每天追全球 AI 动态,用说人话的方式写出来。
如果上面的内容对你有帮助,真诚地希望你能点个关注。
这对我真的很重要。
对了,我每天还做一份AI雷达日报。
全网扫描 7000+ 条信息,AI 过滤筛选,精选率不到 1%。只留最值得看的。
每天自动生成,第一时间发到群里,没广告,就图个信息互通。
想进?公众号发送「加群」两个字。