刷到个新闻,IT之家 10 月 4 号的:System76 更新了 COSMIC 项目的 PR 模板,加了个强制检查项,贡献者必须确认提交内容里没有 AI 生成的代码、注释和描述,不然连 PR 都交不上去。
COSMIC 是 System76 用 Rust 写的 Linux 桌面环境,Pop!_OS 以后就靠它了。之前开发是允许用 LLM 辅助的,这次等于把门关上了。目前全公司唯一豁免的仓库是 cosmic-flatpak,理由挺务实:那些面板小程序之类的深度绑定组件,本来就没法进 Flathub,爱咋咋地。
先说结论:这事我举双手赞成。
有点讽刺的是,我自己就是个 AI 用得飞起的人,博客上不少功能就是我跟 AI 一起折腾出来的。但用 AI 干活和往别人的开源项目里塞 AI 代码,完全是两码事。
System76 的理由说白了就一条:AI 没有大型项目的完整上下文,生成出来的代码看着能用,实际上难以维护,最后所有审查成本都压在人类维护者身上。
这话是真有体会。我往自己的博客里塞 AI 代码,出了问题我自己兜底,改烂了大不了回滚,或者干脆摆烂不管。但开源项目不一样,你今天省了半小时,维护者明天就要花三小时看懂你这段代码。你人早就走了,债留在仓库里。
Ladybird 浏览器今年 6 月就干过同样的事,Godot 也有类似规定。观察下来这些项目的共同点是:都是需要长期维护的重资产型项目,浏览器、游戏引擎、桌面环境,随便一段代码都可能活十年。这种项目里塞生成代码,跟往混凝土里掺沙子差不多。
而且我个人特别理解禁止 AI 注释和描述这条。AI 写的注释都有股翻译腔,读起来像教科书,但经常跟代码实际干的事对不上,比没注释还坑。
当然也不是说 AI 一无是处。自己玩的项目随便用,学习新语言、写一次性脚本、生成测试数据,AI 是真提效。问题出在“个人项目自己负责,开源项目大家一起扛”,责任归属不一样。
所以这个规定看起来激进,其实挺温和的,管的是别人往公共池子里倒垃圾。真正头铁的项目反而没人敢乱来。
不过说回来,这个趋势继续下去,以后简历上“熟练使用 AI 辅助编程”可能得换个写法了。
就这样,滚去继续搬砖了。