Andrew Kelley 那句“你可以抽烟,但别在我家抽”,刺到的不是 AI 编程本身,而是开源项目的边界。

这里的“烟”,指 LLM 辅助生成的 PR。Kelley 是 Zig 创始人。他在 Lobsters 评论里说,过去几个月他们未必抓到了 100% 的 LLM 辅助提交,但人类犯错和 LLM 幻觉的形态不同,很多时候能看出来。

他还用了一个很准的词:digital smell。来自 agentic coding 世界的人,自己闻不到;不用的人,像不抽烟的人闻到烟味一样,很快就知道。

Simon Willison 只是转引了这段评论。材料里看不到 Zig 官方发布全面 AI 代码禁令。把这事读成“Zig 封杀 AI”,太急了。

争议不是 AI 写代码,而是谁来付审查成本

这件事的事实很短。

问题目前能确认的信息
谁说的Andrew Kelley,Zig 创始人
原话来源Lobsters 评论,Simon Willison 转引
核心判断LLM 辅助 PR 不一定难识别,AI 幻觉和人类错误有不同痕迹
核心比喻LLM 使用者有一种“digital smell”,像吸烟者进屋
关键边界Kelley 没说别人不能用 LLM,而是说不要把这类产物带进他的项目
受影响对象开源维护者、用 AI agent 提 PR 的贡献者、高审查标准项目

支持 AI 编程的人会说,工具只是工具。用 Copilot、Claude Code、Cursor,和用 IDE、搜索引擎、Stack Overflow 没有本质区别。只要最后代码对,来源不重要。

这话只说对了一半。

开源维护者看的不只是“这几行能不能跑”。他们还要看意图、上下文、风格、边界条件、API 约定、长期维护成本。

LLM 最麻烦的地方,不是它一定写错。它经常写出一种“看起来像懂了”的错。变量名合理,注释顺滑,测试也可能补上几个,但问题藏在抽象层、边界条件和项目惯例里。

这类 PR 审起来很累。

人类错误通常有路径。哪里没理解,哪里偷懒,哪里经验不足,维护者能顺着错误找到人的理解断点。LLM 幻觉更像雾,表面完整,内部空心。

你不是在 review 一段代码。你是在反向审讯一段没有责任主体的自信文本。

维护者要写规则,AI 贡献者要补责任

这事对两类人影响最大。

对象现实影响该怎么做
开源维护者PR 数量可能上升,审查成本被动增加在贡献指南里写清 AI 辅助代码是否接受、是否必须披露、哪些类型 PR 不收
AI 编程贡献者“能生成 PR”不等于“能被项目接受”提交前自检,说明改动意图,披露 AI 使用,能逐行解释关键逻辑

维护者真正需要的,不是反 AI 宣言,而是可执行规则。

比如:是否接受 LLM 辅助 PR;是否要求贡献者披露使用了 AI;是否拒绝大规模机械重构;是否要求附上人工验证说明;是否对新贡献者的 agent PR 提高审查门槛。

这些规则不必写得像法律条文,但要够明确。否则每次拒 PR 都会变成价值观争吵。

AI 贡献者也别把“工具自由”当通行证。

如果你用 agent 生成了改动,就要能解释每一处关键选择。为什么这样改,影响哪些调用,边界条件是什么,失败时怎么回滚。回答不上来,维护者当然会怀疑你只是把模型输出转手丢了过来。

这里有个现实约束:Kelley 也承认,不可能抓到 100%。所以问题不该变成“谁能完美识别 AI 代码”。那是伪命题。

真正可执行的分水岭是:项目能否要求贡献者承担解释责任。不能解释,就别提交。解释不清,就别让维护者替你补课。

开源是开放的,但不是无主的

我更赞成 Kelley 的边界感。

不是因为 AI 编程没价值。恰恰相反,AI 编程会长期存在,也会变得更强。问题是,工具效率提升经常制造一种错觉:提交者省下的时间,会自动变成项目收益。

很多时候,不会。

贡献者用 agent 快速生成 PR,维护者花更多时间判断它到底有没有理解项目。前者拿到参与感,甚至拿到简历素材;后者承担审查、解释、拒绝和社区摩擦。

这就是激励错配。

“天下熙熙,皆为利来。”这句话放在这里不难懂。AI agent 降低了发起 PR 的成本,却没有同步提高承担后果的责任。低成本供给涌进来,高成本筛选留给维护者。

规模一大,维护者立规矩不是傲慢,是自保。

有人会说,开源不就是开放吗?

开放不是无主。项目有 maintainer,有风格,有路线,也有很有限的注意力。一个项目能不能活下去,常常不取决于有没有更多 PR,而取决于维护者还能不能保持判断质量。

开源最稀缺的从来不是代码行数,是可信审查。

这事也不是保守派反技术。历史上每一种降低发布成本的技术,都会把治理成本带进来。印刷术降低出版门槛,小册子会泛滥;博客降低写作门槛,垃圾内容会膨胀;社交平台降低传播门槛,审核灾难会到场。

LLM PR 是这条老路在代码世界里的新版本。当然不完全一样。代码比文章更容易测试,也更容易被自动化工具检查。但测试不能覆盖所有意图,CI 也不能替维护者理解项目方向。

Kelley 那个“别在我家抽烟”的比喻狠在这里:它把争论从道德高地拉回责任边界。

你抽不抽烟,是你的自由。我家让不让抽,是我的规则。

开源项目也是房子,不是无人看管的广场。成熟的 AI 编程用户,接下来要学的可能不是更多 prompt,而是更基本的贡献礼仪:披露、解释、自检,尊重项目规则。

接下来最该看的,不是哪个项目喊了反 AI 口号,而是哪类项目开始把 AI PR 规则写进 CONTRIBUTING、review policy 或 maintainer 指南。规则一旦写进去,AI 编程就从“个人效率工具”进入“社区治理问题”。

Kelley 承认抓不到 100%。这反而让他的判断更稳。

分水岭不在能不能闻出每一缕烟味。分水岭在维护者是否有权说:我不想为你的自动化省时买单。

答案应该是有权。

而且必须有权。