140行删到7行:开源项目投票封杀AI写的代码

140行删到7行:开源项目投票封杀AI写的代码

开源软件人工智能代码审查QGIS

数据源:GitHub / Hacker News

140 行细则删到 7 行,老牌项目关紧大门

2026 年 9 月 24 日,运营超过二十年的开源地理软件 QGIS 提交了一份编号为 PR #387 的提案。动作很不寻常:维护团队把政策文档里 140 行内容删掉,只新增 7 行,整份文件从 148 行缩到 15 行。

删掉的是所有温和建议。新增的条文只有一句话:qgis 仓库不再接受任何由 LLM、AI 或 agent 辅助的代码贡献;如果事后发现你用了这类工作流,贡献会被回退,贡献者权限将受到处分。提案很快被合并入库,表态以支持为主。

No LLM, AI or agent assisted code contributions are allowed in the qgis repository. If we subsequently discover that you have used an AI, LLM, or any agent-based workflow for your contribution, you will be subject to code reversion and contributor rights sanctioning.

政策文档从 1.0 版跳到 2.0 版,署名也从单个维护者改成「QGIS 项目全体贡献者」。管理文档删掉了九成以上的内容,执行力度反而收到前所未有。 过去那份靠自觉执行的君子协议,被一条不留退路的红线取代。

提案改动视图 图:提案的改动视图:一整份政策文档被删到只剩一小段。来源:GitHub(QGIS-Enhancement-Proposals PR #387)

被删掉的旧政策其实很宽容:贡献者可以用任何工具,但必须有一条「人在回路」——提交前自己读完、审过所有 LLM 生成的代码和文本,署名的人永远是作者、负全责,并且要如实标注哪些内容主要由工具生成,比如在提交信息里写一行工具名。旧文档还专门声明,这份政策只规范协作方式,不代表项目对「LLM 生成的代码能不能收」表态。

几个月后,这份长文被现实冲垮。维护者 timlinux 的评论很直接:换成这 7 行短文,好处是省去了所有歧义。

生成代码只要三秒,人工审查只能一行行硬抗

老项目的焦虑集中在验证成本上。敲一次回车能写出几百行代码,审查这部分工作并没有跟着变快。

这就像往后厨倒了一车切好的土豆丝:机器几秒钟出货,质检员却必须趴在盆边一根根挑,看里面有没有烂心。QGIS 处理的是地理数据和复杂几何,坐标投影偏一位小数、循环深处藏一个内存泄漏,都不会让编译报错。生成侧的成本被压到接近于零,验证侧的成本一分没降,差额只能由人补。

维护者 haubourg 在讨论区把理由讲得最清楚。他说外部贡献者使用 AI,给维护者肩上压上了巨大且难以承受的压力,而在 LLM 出现之前,这份工作已经很艰难。工具的普及没有减轻负担,只是把上游的产出量放大后全倒到了下游。

他列了两种结局:当代码流入的速度超过人工审查的上限,项目要么攒出一长串没人审的 PR,要么让没审完的代码进仓库。两个结果都不是一个工业级基础软件愿意接受的。

维护者在讨论区发言 图:提案讨论区中维护者解释关小闸门的原因。来源:GitHub(QGIS-Enhancement-Proposals PR #387)

借账号跟模型吵架,维护者在替 AI 改作业

haubourg 的另一个理由更值得记:自由软件社区的根基是人的网络。机构愿意信任 QGIS,是因为他们知道自己可以回馈、可以雇人做支持培训和新功能。这些前提都建立在「对面是个能交流、能担责的人」上面。

对岸的维护者正在替这条前提付账。同一时期 Hacker News 上有一篇讨论「AI 编码 agent 产出更多代码,但没有产出更多软件」,评论区成了维护者现场记录:Plotly 说三页长、没人校对过的 issue 加上「看着合理但很弱」的补丁在吃审查时间,团队已经在考虑放弃路人贡献;Hatchet 说最近审的 PR 多半是「借别人的账号跟 Claude 来回吵架」;PgDog 干脆关闭了代码贡献通道,只留 issue;Godot 的开发者被 AI 生成的 PR 骚扰后,只能发一句很弱的道歉。

haubourg 担心的还不只是当下。如果外部贡献里混进了大量机器噪音,真正想学的新人就会被淹掉,项目的后继梯队也跟着断。他要保留的正是那部分带宽:留些精力,去接住愿意从小改动做起的人类新手。

关闸门是制度动作,不是能力判断

QGIS 这次的决议有个容易读错的地方:它针对的是外部提交的代码。项目并没有全盘否定这项技术。haubourg 明确说,把大模型用于审查、审计、安全目的应该另开一条线讨论,他打算先在用户会议上展开,再进入正式议题。

这个区分很关键。同一个工具放在守门人手里是探伤仪,放在门外的洪水里就是泥沙。制度要挡的是责任无法落地的部分,而不是工具本身。

从 140 行宽容细则退回 7 行硬性禁令,也是这个思路的极端版本。生成端在以肉眼可见的速度加速,验证端没有同步进化,那么靠公约维持的防线必然先破。瓶颈已经不在写代码,而在确认代码做了什么。 关紧大门要守的,是人和人之间还能对得上话这回事。

参考链接:

  • QGIS 提案 PR #387(QEP428)
  • QGIS 提案讨论区维护者发言记录
  • Hacker News:AI 编码 agent 产出更多代码,但没有产出更多软件
  • Plotly、Hatchet、PgDog、Godot 维护者的公开反馈