Skip to content

请愿书:Node.js 核心代码不应该包含 AI 代码! #427

Description

@mqyqingfeng

2026 年 3 月,一场关于 AI 生成代码的争议在 Node.js 社区掀起轩然大波。

一份请愿书在短短数天内获得超过百名开发者签名,呼吁技术指导委员会(TSC)禁止 AI 生成的代码进入核心仓库。

这场争议不仅关乎技术选择,更触及开源项目的价值观与未来走向。

1. 事件起因:1.9 万行 AI 代码引发的信任危机

2026 年 1 月 22 日,Node.js TSC 成员、Fastify 框架维护者 Matteo Collina 提交了一个震撼社区的 Pull Request(PR #61478)。

这个 PR 包含约 1.9 万行代码,覆盖 80 个文件,旨在为 Node.js 添加虚拟文件系统(VFS)功能——一个社区期待已久的特性。

然而,PR 描述中的一句话点燃了争议的导火索:

“我使用了大量的 Claude Code tokens 来创建这个 PR。我已经亲自审查了所有更改。”

这份声明立即引发了社区的激烈讨论。

尽管 Collina 是资深贡献者,但如此大规模的 AI 生成代码是否符合开发者原创性证书(DCO)的要求,成为争论焦点。

image.png

2. 请愿书:百名开发者的集体发声

3 月 18 日,Node.js 前 TSC 成员、TLS 模块主要作者 Fedor Indutny 在 GitHub 上发起请愿书,要求 TSC 投票否决“允许 AI 辅助开发”的提案,明确拒绝 LLM 生成的核心代码重写。

请愿书在 GitHub 和 Change.org 两个平台同步发布,迅速获得超过 100 名开发者签名支持,其中不乏重量级人物:《You Don‘t Know JS》作者 Kyle Simpson、Zig 软件基金会主席 Andrew Kelley、Gulp 核心维护者 Blaine Bublitz 等。

请愿书开篇即强调:Node.js 是运行在全球数百万服务器上的关键基础设施,多年来由开发者精心手写的核心代码不应被 AI 生成内容稀释,这将动摇 Node.js 的声誉根基和社会价值。

3. 反对方的 3 大核心理由

请愿书列出了反对 AI 生成代码进入核心的三个关键论点:

1. 伦理与版权风险

主流 LLM 模型的训练数据包含大量未经授权的开源代码和版权作品。AI 生成的代码可能埋下版权隐患,而 Node.js 作为全球基础设施,代码版权必须绝对清晰,不能承担潜在的法律风险。

2. 教育价值的断裂

开源项目的代码审查不仅是发现 bug,更是新人学习成长的过程。然而 LLM 无法学习,审查者投入的时间无法转化为贡献者能力的提升,长期可能导致社区出现“技术断层”,威胁项目的可持续发展。

3. 工具特权与可复现性

使用 LLM 需要付费订阅或昂贵的本地硬件。提交的生成代码应该能被审查者无需付费工具即可复现,否则会在贡献者之间制造不平等,违背开源的平等精神。此外,AI 生成的代码不可复现,审查者难以理解设计意图,审查工作从“理解架构”退化为“黑盒找 bug”。

image.png

4. 支持方的反驳观点

尽管请愿书获得广泛支持,但也有不少开发者持不同意见:

1. 问题在于 PR 规模,而非 AI 本身

许多开发者指出,1.9 万行代码的 PR 本身就违反了良好实践,无论是否使用 AI。

Linux 内核维护者 Linus Torvalds 几十年来一直拒绝过大的 PR,现有政策已足够应对。

一位开发者评论道:“即使代码完美无瑕,也没人能理解那么多变更。”

2. AI 是工具,关键在于如何使用

反对请愿书的声音认为,这是对技术进步的“恐慌式反应”。

AI 辅助开发的边界应该被明确定义:是 0% 的 LLM 生成代码(仅用于研究),还是 100% 的“氛围代码”?

如果只是辅助研究和小规模代码补全,为何要一刀切禁止?

3. 制定新政策的成本

批评者质疑:如何执行禁令?要求每个贡献者签署未使用 AI 的声明?关闭 AI 自动补全?新政策会带来流程和官僚主义的成本。一位开发者提出:“审查者已经有权拒绝劣质代码,为什么需要两个政策来解决同一个问题?”

4. 应关注代码质量而非来源

部分开发者认为,重点应该是代码的质量、可维护性和安全性,而不是代码的生成方式。如果 AI 能生成高质量、可审查的代码,为什么要排斥它?

image.png

5. 争议的深层矛盾

这场争论暴露了开源社区面临的深层次冲突:

效率与质量的权衡:AI 能大幅提升开发效率,但代价是什么?当 AI 写代码的速度超过人类审查的速度,代码质量如何保证?

开放与控制的平衡:开源精神倡导开放与包容,但关键基础设施是否需要更严格的准入标准?

进步与传统的碰撞:技术工具在演进,但开源社区“人对代码负责”的价值观是否应该坚守?

值得注意的是,请愿发起人 Fedor Indutny 在 Reddit 讨论中表示,他并非反对所有形式的自动化重构。

如果 PR 作者能编写 AST 转换脚本或其他可复现的工具来完成相同的变更,他会乐于审查。

真正的问题在于:LLM 生成的代码既不可复现,又需要付费工具,还要求审查者承担巨大的认知负担

6. 最新进展

目前,这个 1.9 万行的 PR 已被暂时阻止合并。

Node.js TSC 计划就“是否允许 AI 辅助开发”进行正式投票,结果将为整个开源社区树立先例。

这场争议已经超越了 Node.js 本身。从 Linux 内核使用 AI 修复漏洞,到 Node.js 因 AI 代码陷入治理危机,开源世界正在经历一场关于 AI 工具使用边界的集体反思。

无论最终结果如何,这场讨论都提醒我们:在拥抱新技术的同时,我们必须谨慎思考它对开源价值观、代码质量和社区文化的深远影响

image.png

我是冴羽,10 年笔耕不辍,专注前端领域,更新了 10+ 系列、300+ 篇原创技术文章,翻译过 Svelte、Solid.js、TypeScript 文档,著有小册《Next.js 开发指南》、《Svelte 开发指南》、《Astro 实战指南》。

欢迎围观我的“网页版朋友圈”,关注我的公众号:冴羽(或搜索 yayujs),每天分享前端知识、AI 干货。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions