SDL 向 AI 代码说不:一个老牌开源项目,为什么在 2026 年选择“禁用 LLM”

开发工具 2026年4月16日
SDL 向 AI 代码说不:一个老牌开源项目,为什么在 2026 年选择“禁用 LLM”
老牌跨平台多媒体库 SDL 正在把“拒绝 AI 生成代码”写进项目规则,这不是情绪化表态,而是开源社区对版权、责任和代码质量的集体焦虑。比起追逐工具红利,SDL 这次更像是在提醒整个行业:当 AI 越像“默认选项”,人类越需要重新划清边界。

一场发生在 GitHub issue 里的“技术分水岭”

如果你是游戏开发者,或者折腾过 Linux、模拟器、跨平台图形程序,大概率听说过 SDL。这个全名 Simple DirectMedia Layer 的开源项目,谈不上时髦,却是无数应用和游戏背后那层沉默工作的基础设施。它像一根不爱出风头的水管,平时没人夸,一旦出问题,半个生态都会跟着冒泡。

也正因为如此,SDL 最近在 GitHub 上围绕“LLM 政策”展开的讨论,远不止是一场社区口水战。事情起因很直接:维护者发现,最近几天已经有贡献“疑似由 AI 辅助甚至完全生成”,而且提交者并没有披露。SDL 核心维护者 icculus 的态度非常鲜明——他个人最想要的规则是:只要 PR 里有 AI 生成代码,直接关闭,不再讨论。

一开始他还担心这会不会太激进,结果评论区很快给出答案:在 SDL 这个项目里,这种立场不仅不算离谱,甚至成了不少贡献者眼中“最合理的做法”。随后,相关 PR #15353 被提出,方向也非常干脆:不是“规范使用”,不是“要求披露”,而是“no AI at all, period”——彻底拒绝 AI 生成贡献。

这个转折很有意思。过去两年,科技圈讨论 AI 写代码,常见叙事是“效率提升”“个人开发者增强”“Copilot 已成标配”。可在 SDL 这样的基础开源项目里,叙事突然倒过来了:AI 不再是加速器,而更像一个来源不明、责任不清、还可能埋版权雷的陌生包裹。

SDL 在担心什么:不是讨厌新技术,而是讨厌无法追责

外界很容易把这种政策理解成“老派开发者反 AI”。但认真看讨论,你会发现 SDL 社区真正焦虑的,不是技术新不新,而是三件非常实际的事:代码质量、许可证来源、审查责任。

先说质量。icculus 在评论里半开玩笑地说,自己偶尔会拿 ChatGPT 当搜索引擎替代品,但“它至少有 50% 的时间在胡说”。这句话很糙,却异常准确。LLM 最危险的地方,不是它写不出代码,而是它经常能写出“看起来像那么回事”的代码。对于赶 demo、做小工具的人来说,这种幻觉也许只是多花半小时 debug;但对 SDL 这种底层库来说,一段貌似合理、实则边界条件一塌糊涂的代码,可能会在不同平台、不同架构、不同编译器上慢慢炸开。

更关键的是许可证问题。SDL 使用的是 zlib 许可证,维护者 slouken 的表态几乎点中了问题核心:既然 AI 生成代码的来源无法确认,那项目就不能确定自己是否有权在 zlib 许可下接收和分发它。这也是不少开源项目对 LLM 最硬的那根刺。今天的大模型训练数据到底吃进去了什么,行业并没有给出令人放心的透明度。于是“AI 帮你写了一段代码”,在法律语境里,常常会变成“你不知道它像不像从别处洗过来的代码”。

这也是评论区有人提到“license washing”——许可证漂白。这个词不如“幻觉”那么出圈,却可能更致命。开源社区最看重的不是代码能不能跑,而是它能不能被清清楚楚地继承、修改、分发。要是源头脏了,再漂亮的提交记录也救不了。

从 QEMU 到 musl:开源世界正在悄悄拉起一条线

SDL 不是第一个这么做的项目。讨论中,参与者列举了 QEMU、Servo、LXC、Inkscape、musl、LÖVE 等项目,它们都已经明确拒绝 LLM 生成代码。把这些名字放在一起看,就会发现一个规律:最警惕 AI 代码的,往往不是最边缘、最保守的社区,反而是那些对稳定性、可维护性和许可证洁癖要求极高的项目。

这其实很好理解。越靠近基础设施层,越不欢迎“差不多就行”的东西。应用层可以快速试错,商业公司也能用人力兜底,但底层开源库一旦引入模糊来源代码,后续维护成本会沿着整个生态链扩散。今天一个模糊的 PR,明天可能就变成下游项目的安全隐患、发行版的打包争议,甚至企业法务的红线。

还有一个很现实的背景是,AI 编程助手已经越来越像“默认打开”的功能。GitHub Copilot、Claude Code、各种 PR Review Bot,不再只是个别极客尝鲜,而是在很多团队里悄悄变成工作流的一部分。SDL 的争论因此特别有代表性:当 AI 从“可选工具”变成“环境噪音”,开源项目必须明确说清楚,什么能进门,什么不能。

有个细节颇有黑色幽默。SDL 维护者后来专门把政策写进 AGENTS.md,希望“提醒 AI 机器人做正确的事”。结果他拿 ChatGPT 测试后发现,对方基本没在意这个文件;另一位贡献者测试 Claude,也发现它不会自动检查,除非你明确要求它去看系统提示。这个场面有点像门口贴了“禁止外卖入内”,结果送餐员根本不看告示,直接敲门。AI 工具正在被大规模嵌入软件开发流程,但它们对项目规则、社区习惯和许可证约束的理解,显然还远没到让人放心的程度。

这不只是 SDL 的决定,也是开源社区在争夺“解释权”

这件事真正重要的地方,不在于 SDL 禁不禁 AI,而在于谁来定义开源协作的边界。

过去几十年,开源社区形成了一套朴素但有效的信任机制:你提交代码,你对它负责;维护者审阅代码,也对接收它负责;许可证则给这种协作提供法律骨架。AI 的出现,让这套机制突然出现了一个灰区。代码还是那段代码,但作者到底是谁?责任主体是谁?一旦出问题,是提交者负责,模型提供商负责,还是没人负责?

SDL 给出的答案很直接:既然现在回答不清楚,那就先不接受。这个决定未必“先进”,但非常清醒。科技行业过去两年有个坏习惯,看到新工具能提效,就下意识默认“先用起来再说”。可基础开源项目没那么多试错预算。它们不是融资驱动的创业公司,也不是可以靠法务团队善后的大厂。很多时候,维护者靠的是志愿劳动和多年经验在守门。站在这个位置上,“保守”不是落后,而是一种责任感。

当然,SDL 的做法也会引出另一个问题:什么算 AI 生成?如果开发者只用模型解释一段 API 文档,算不算?让 AI 帮忙润色 commit message 呢?查思路、改注释、写测试、重构建议,这些灰区会越来越多。icculus 最早其实也提出过一个相对温和的版本,比如要求披露 AI 使用、承诺维护者不用 AI 写代码、每三个月重新审视政策。但随着讨论推进,社区明显倾向于更硬的边界。

我自己的判断是,这种“硬边界”在短期内会越来越常见,尤其是基础设施型项目。原因不是大家突然反技术,而是行业尚未建立起足够清晰的合规与责任框架。在这个阶段,开源社区先把门关严一点,反而比含糊其辞更诚实。

一次看似保守的表态,可能会影响更多项目

SDL 这次动作的象征意义,不只是它加了一段贡献规则,而是它给许多还在犹豫的项目打了个样:你可以公开地、明确地拒绝 AI 代码,而且不会显得不可理喻。对很多维护者来说,这种示范效应比政策文本本身更重要。

我很在意 icculus 后面那句感慨:他们其实已经“绕着这个问题跳舞”一段时间了。这个表达很形象。过去一年多,很多开源项目都处在同样状态:知道问题来了,但又不想立刻把话说死,怕显得顽固,怕挡住新贡献者,怕卷入意识形态争论。SDL 这次等于先把牌摊开了。你愿不愿意跟,不是一回事;但至少没有继续假装问题不存在。

这也是为什么我觉得这条新闻比表面上更重要。它不是“某项目禁用了某功能”那么简单,而是一次有关开发伦理、开源治理和工具边界的公开表态。AI 编程当然不会因为 SDL 的政策就停下来,恰恰相反,它会继续渗透,继续变便宜,继续更像水电煤一样无处不在。也正因此,那些敢于说“不”的项目,会成为未来几年最值得观察的一批样本。

开源世界一直有种迷人的笨拙:它不一定追最新,但特别在乎这东西能不能长久。SDL 这次的选择,正是这种笨拙的体现。说得不客气一点,在一片“先接上 AI 再说”的热闹里,这种谨慎反而显得难得。

Summary: SDL 这次对 AI 代码亮红灯,我认为是一次务实而非保守的决定。对底层开源项目来说,版权来源不清、责任主体模糊、代码质量难追溯,这三件事叠在一起,足以让“效率提升”失去吸引力。接下来会有更多基础设施型项目跟进类似政策,而真正决定风向的,不是模型再变强一点,而是行业能否给出可验证的许可证、审计和责任机制。在那之前,开源社区的门只会关得更紧。
SDLAI 生成代码LLM开源社区GitHub版权代码质量PR #15353Simple DirectMedia Layericculus