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%。这反而让他的判断更稳。
分水岭不在能不能闻出每一缕烟味。分水岭在维护者是否有权说:我不想为你的自动化省时买单。
答案应该是有权。
而且必须有权。
