![]()
整理|冬梅
近日,開源世界最具影響力的項目之一 Node.js 正面臨一個前所未有的抉擇。一場關于是否允許人工智能生成代碼進入其核心代碼庫的爭議,正在技術社區引發激烈的辯論。
事情是這樣的。
1 1.9 萬行 Claude Code 代碼進入 Node.js 惹爭議
2026 年 1 月,一個引人注目的 Pull Request(PR)被提交到 Node.js 核心代碼庫。這個 PR 包含了近 19000 行代碼(具體為約 14000 行,跨越 66 個文件),旨在為 Node.js 引入一個全新的虛擬文件系統(VFS)功能。
![]()
提交者是 Matteo Collina,Node.js 的技術指導委員會(TSC)成員、Platformatic 公司聯合創始人兼 CTO,也是 Fastify 框架的維護者。他在 PR 描述中明確寫道:“我使用了大量的 Claude Code token 來創建這個 PR。但所有代碼均已由其本人完成審查。”
這個 PR 的出現本應被視為技術勝利——在短短一個圣誕假期內,完成了一個通常需要數月全職工作才能實現的大型功能。
Matteo Collina 公開表示 AI 處理了大量重復性工作,如實現所有 fs 方法、編寫測試覆蓋和生成文檔,而他自己則專注于架構和 API 設計,并逐行檢查代碼。如果沒有 AI,這作為假期業余項目是根本無法完成的。
他在名為《為什么 Node.js 需要虛擬文件系統》的博客中寫道:“說實話,這么大的 PR 通常需要幾個月的全職工作才能完成。這次之所以能成功,是因為我使用了 Claude Code。我讓 AI 處理那些繁瑣的部分,那些讓 14000 行 PR 成為可能但卻沒人愿意手寫的工作:實現每個fs方法變體(同步、回調、Promise),配置測試覆蓋率,以及生成文檔。我則專注于架構、API 設計以及逐行審查代碼。如果沒有 AI,這根本不可能成為一個假期副業項目,它根本不可能實現。”
本來事情已經過去有一段時間了,但是幾日前,長期 Node.js 核心貢獻者 Fedor Indutny 對 Matteo Collina 借助 Claude Code 工具生成代碼提交 PR 的行為產生了質疑。
Fedor Indutny 的擔憂不在于代碼質量,而在于 AI 輔助的代碼是否符合 DCO 1.1 條款(每位 Node.js 貢獻者在提交 PR 時必須簽署的法律證明)。他甚至發起了一份請愿書,要求 Node.js 技術指導委員會(TSC)投票禁止在核心項目中使用 AI 輔助開發。
![]()
請愿書的核心論點包括:
基礎設施的重要性:Node.js 是運行在數百萬臺服務器上的關鍵基礎設施,通過工程師日常使用的命令行工具為他們提供支持。認為對多年來精心編寫的核心代碼進行稀釋,違背了項目的使命和價值觀。
DCO 合規性爭議:盡管 OpenJS 基金會的法律意見認為 LLM 輔助的更改不違反 DCO,但請愿方認為這只是問題的冰山一角。
倫理考量:一些大型大模型公司在訓練中使用了來源不正當的材料,包括受版權保護的作品和未經授權的開源代碼。
教育影響:有證據表明,使用大模型會阻礙學生的學習過程。降低代碼質量標準可能導致對 Node.js 核心的理解下降,危及項目的長期發展。代碼審查流程不僅是為了發現漏洞和安全問題,更是為了幫助提交者學習成長。但 LLM 本身不具備學習能力,審查時間被浪費,貢獻者的技能卻沒有得到提升。
特權問題:使用大模型需要付費訂閱或大量硬件投資才能在本地運行。提交的生成代碼應該能夠被審閱者復現,而無需通過付費訂閱的 LLM 工具。
總之,請愿者給出的理由中,最重要的部分指向 Node.js 的“基礎設施屬性”和代碼的可審計性。
作為運行在全球數百萬服務器上的關鍵運行時環境,Node.js 的核心代碼長期以來依賴開發者以高度審慎的方式手工維護。在他們看來,這種“可追溯、可理解”的代碼生產方式,本身就是項目可信度的重要組成部分。一旦引入 AI 生成代碼,尤其是大規模改動,可能會削弱這種工程傳統,甚至動搖 Node.js 在開發者生態中的聲譽基礎。
沖突的另一核心,在于“可審計性”。在傳統開發流程中,代碼不僅是執行邏輯的載體,更是設計決策的體現。評審者可以通過閱讀代碼,理解開發者在性能、兼容性與架構上的權衡。但 AI 生成代碼往往缺乏明確的設計上下文,使評審過程從“理解設計”退化為“檢查實現”。當這一問題疊加到 1.9 萬行的變更規模時,代碼審查的復雜度被指數級放大。
2 代碼提交者回應爭議:如果有 bug,也是我的責任
請愿書在社區中引發熱議,但卻并非是一邊倒的支持聲。以 Matteo Collina 為代表的“AI 賦能派”提出了有力的反駁。
Collina 在博客文章《The DCO Debate: Who Is Responsible for AI-Generated Code?》中詳細闡述了他的觀點。他將 AI 比作“奶奶用的壓面機”——工具幫助了制作,但最終的成品仍然是奶奶的責任。
![]()
“我選擇了架構。我根據所有審查者的反饋塑造了 API。我做出了設計決策,捕捉并修復了 AI 引入的問題,我理解代碼每一部分的作用和原因。我簽署了 DCO。我的名字在上面。如果有 bug,是我的責任。如果有許可問題,是我認證了合規性。”
Collina 還提出了一個重要觀點:審查者同樣應當被視為共同作者。“審查 PR、建議變更、捕捉邊緣情況、幫助塑造最終實現的維護者——他們難道不是這項工作的共同作者嗎?在 Node.js 歷史上,每次 PR 都是如此。”
此外,Collina 還希望社區能狗就“人工審核”在人工智能輔助貢獻中的真正含義達成共識。僅僅說“我審核過了”是不夠的。我們需要能夠回答諸如此類的問題:你理解這段代碼的功能嗎?你能解釋一下設計選擇嗎?你能在不再次詢問人工智能的情況下回應反饋嗎?你能在一年后維護這段代碼嗎?這些問題我們一直以來都問過貢獻者。工具可能會改變,但對人的期望不會改變。
Collina 還在文章中闡明,更廣泛的開源生態系統已經就 AI 輔助貢獻問題形成了初步共識。
Linux 內核社區:作為 DCO 的創造者,Linux 內核社區對 AI 輔助貢獻有明確的政策文件。他們的 coding-assistants.rst 要求嚴格的人機循環過程。AI 代理不被允許添加 Signed-off-by 標簽。只有人類才能合法認證 DCO。提交代碼的人必須審查所有 AI 生成的代碼,檢查許可合規性,并添加自己的簽名。AI 輔助必須通過 Assisted-by 標簽披露。
Red Hat 的法律團隊:CTO Chris Wright 和法務顧問 Richard Fontana 發布了詳細分析,直接回答了 DCO 問題。他們解釋說,DCO 從未被解釋為要求貢獻的每一行都必須是貢獻者的個人創造性表達。許多貢獻包含例行的、不受版權保護的材料,開發者仍然簽署。DCO 的真正要點是責任。在披露和人工監督下,AI 輔助貢獻完全可以與 DCO 的精神兼容。
OpenJS 基金會:Node.js 自己的法律機構在 PR 上直接表態。執行董事 Robin Ginn 確認,基金會已咨詢法律顧問,對 AI 輔助貢獻的 DCO 兼容性表示滿意,并承諾正式記錄這一立場。
這三個獨立組織——DCO 的創造者、世界最大的開源法律團隊之一、Node.js 自己的基金會——都達成了相同的答案:AI 并不破壞 DCO。重要的是問責制。
3 社區吵翻了
與此同時,Hacker News、Reddit 等社區用戶也就此事吵翻了!
在 Reddit 上,一部分開發者將矛頭直接指向 AI,反對其進入核心代碼。
該用戶表示:“坦白說,雖然我支持大規模的代碼重構和自動化生成,但直接利用大模型來管理這類變更并不是最優解。我更傾向于看到作者通過 AST(抽象語法樹)轉換腳本或其他可編程腳本來實現重構。這種方式邏輯清晰,能讓我更直觀地理解代碼改動的本質及原因。相比之下,大模型生成的變更具有不可復現性,且依賴付費訂閱工具,增加了協作門檻。此外,如果重構過于復雜,我建議將其拆解為多個小的增量 PR,通過循序漸進的方式來降低整體復雜度。”
還有用戶吐槽,既然 PR 提交者自己都說代碼是 AI 寫的,為什么要讓審查員去人肉排雷?他寫道:
“說白了,這個 PR 太大了,大到沒人能保證質量。提交者自己都說‘沒 AI 我可寫不出這么多’,這不就說明連作者自己都未必能完全掌控這 2 萬行代碼嗎?既然你寫起來是‘一鍵生成’,憑什么要求審查員枯坐幾天幾夜去人肉排雷?”
該用戶繼續還提到版權問題更是個大坑。“大家都知道 AI 會‘致敬’訓練集里的代碼,萬一它隨手甩給你一段別人的閉源專利代碼,你根本分辨不出來。小修小補也就罷了,這種成批量、成規模的‘搬運’,法律風險實在太高——誰敢保證這代碼背景干不干凈?萬一以后被告了,這責誰來負?”
![]()
還有用戶算了一筆賬,該用戶表示:
“我算了一下,那是 1.9 萬行代碼。按每行審 2 分鐘算,那就是 (19000 ??2) ? 60 ? 7 約等于 90 個工作日(按每天 7 小時計)。 你確定這些代碼真的都被逐行閱讀了嗎?我的意思是,既然作者連寫都懶得寫,那他們真能耐下性子把這些代碼全部讀一遍嗎? 如果這只是某個私人網站或者某家小公司的業務代碼,冒這個險也就罷了;但對于一個被無數人賴以生存、作為基礎設施的開源項目來說,看到如此海量的、由 AI 生成的‘看起來沒問題’的代碼,簡直讓人毛骨悚然。”
但也有用戶認為,這些代碼出自 Node.js 核心維護者之手,他自己也手動審核了代碼,所以這些提交上去的代碼是值得信任的,如果只是因為使用了 AI 就遭到質疑,是不公平的。
![]()
也有用戶辯證地去看待這件事,他表示:“我堅決反對‘一刀切’地禁止大模型,但我也同樣反對那些僅僅因為 AI 提速了,就毫無節制地提交巨量代碼的行為。不能因為現在能比以前快 100 倍,就理所當然地往社區塞入 100 倍規模的 PR。”
![]()
4 Node.js 創始人:未來軟件不需要人類手搓代碼了
事實上,Collina 用 Claude Code 提交 PR 的做法與 Node.js 創始人 Ryan Dahl 兩個月前的觀點很吻合。
今年 1 月份,Ryan Dahl 在 x 上發文稱,“人類編寫代碼的時代已經結束了,機器現在能夠在幾秒鐘內完成過去需要幾個月才能完成的工作。”
![]()
與人工智能的出現會使開發人員變得多余的觀點相反,Dahl 強調,人類開發人員仍然必不可少,而且他們實際上擁有比以往更有價值的技能。開發人員不再需要執行諸如輸入命令之類的底層編程任務,因為這些工作現在由 AI 算法完成。開發人員的價值更多地體現在他們所擁有的創造力和解決問題的能力上。
“人類的工作不再是編寫每一行代碼,而是協調人工智能工具,以前所未有的速度和質量構建系統。”
此外,初級職位將發生變化,那些只專注于編寫 CRUD 應用或基本功能的入門級職位已經消失了。但新的職位正在涌現:人工智能提示工程師、人工智能質量保證專家和人工智能集成架構師。
在這樣的背景下,了解領域專業知識更為重要。他曾提到,了解醫療保健、金融、物流或任何特定行業遠比掌握 React 的語法重要得多。人工智能可以編寫代碼,但它無法取代深厚的領域知識。
https://yakhil25.medium.com/the-era-of-human-written-code-is-over-ryan-dahls-wake-up-call-to-software-engineers-dc6a4907b8ac
https://adventures.nodeland.dev/archive/who-is-responsible-for-ai-generated-code/
https://blog.platformatic.dev/why-nodejs-needs-a-virtual-file-system
https://www.reddit.com/r/node/comments/1qhulv1/creator_of_nodejs_says_humans_writing_code_is_over/
http://timesofindia.indiatimes.com/articleshow/127107198.cms?utm_source=contentofinterest&utm_medium=text&utm_campaign=cppst
聲明:本文為 InfoQ 整理,不代表平臺觀點,未經許可禁止轉載。
會議推薦
OpenClaw 出圈,“養蝦”潮狂熱,開年 Agentic AI 這把火燒得不可謂不旺。在這一熱潮下,自托管 Agent 形態迅速普及:多入口對話、持久記憶、Skills 工具鏈帶來強大生產力。但這背后也暴露了工程化落地的真實難題——權限邊界與隔離運行、Skills 供應鏈安全、可觀測與可追溯、記憶分層與跨場景污染、以及如何把 Agent 納入團隊研發 / 運維流程并形成穩定收益。
針對這一系列挑戰,在 4 月 16-18 日即將舉辦的 QCon 北京站上,我們特別策劃了「OpenClaw 生態實踐」專題,將聚焦一線實踐與踩坑復盤,分享企業如何構建私有 Skills、制定安全護欄、搭建審計與回放機制、建立質量 / 效率指標體系,最終把自托管 Agent 從可用的 Demo 升級為可靠的生產系統。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.