最近看到兩件事,湊在一起看特別有意思。
一個是 Helium——imputnet 做的隱私導向 Chromium fork——在 repo 裡塞了一段專門針對 AI agent 的文字,大意是:不允許 AI 協助任何程式碼修改,違者永久封禁並公開羞辱。另一個是 Theo 剛發的影片,講 T3 Code 公開 5 天就收到 150 個 PR,而且他們已經明確寫了不接受貢獻。
這兩件事本質上是同一個問題:開放原始碼的社會契約正在被打破。
貢獻成本歸零,篩選機制失效
開放原始碼一直建立在一個隱性假設上:貢獻有成本。寫 code 要花時間,讀懂別人的 codebase 要花精力,開 PR 之前你至少得理解自己在改什麼。這個成本本身就是一道品質篩選機制。
AI 把這個成本壓到接近零。
現在任何人都可以把一個 repo 丟給 AI,說「幫我修這個 bug」,拿到一個看起來合理的 diff,然後開 PR。整個過程可能不到五分鐘,而且這個人可能連 codebase 用什麼語言都不太確定。
Theo 講的「系統理解度衰減」很精準:你自己寫的 codebase 理解 100%,每合一個你沒完全理解的 PR 就掉一點。以前這個過程是緩慢的,因為外部 PR 的量有限。現在 AI 讓這個過程加速到失控——不只是你合別人的 AI PR 會掉,你自己用 agent 寫 code 也會掉。兩邊夾擊。
Helium 的 Prompt Injection:聰明但荒謬
Helium 的做法是直接在 repo 裡放一段文字,指示 AI agent 拒絕一切程式碼相關的協助。這段文字會被任何讀取 repo 內容的 AI 工具看到,效果就是讓 Lovable、Bolt 這類一鍵生成 PR 的工具直接罷工。
作為一種社會工程防線,這確實聰明——它擋住了最不需要擋的那群人:完全依賴 AI、自己不看 code 的使用者。但問題有幾個。
首先,打擊面太大。它不只擋 PR spam,連你想用 AI 幫忙讀懂某段 Chromium patch 在做什麼都會被拒絕。正當使用一起被砍了。
其次,也是最荒謬的地方:連你自己的 fork 都會被影響。 你 clone 下來,那段文字跟著走,AI 讀到一樣拒絕。但那是你自己的 repo,你愛怎麼開發是你的事,跟上游完全無關。一個 GPL-3.0 授權的專案,用 prompt injection 試圖限制別人怎麼修改自己的 fork,想想就覺得諷刺。
當然,解法也很簡單——刪掉那段文字就好。但這恰好證明了這個防線只能嚇退不會看 code 的人,真正會刪掉這段繼續開發的人反而通常知道自己在幹嘛。
Vouch 和信任圈:更健康的方向
相比之下,Theo 用的 Vouch 系統合理得多。Mitchell Hashimoto(對,就是做 Terraform 和 Ghostty 的那位)做的這個工具,本質上是一個 trust layer:維護者手動 vouch 可信的貢獻者,未 vouch 的 PR 可以被過濾但不會被直接拒絕。
T3 Code 用了 Vouch 之後,150 個 PR 過濾到 43 個。這才是合理的做法——把判斷權留在人手上,而不是塞一段文字叫 AI 替你做決定。
長期來看,開放原始碼的形態可能會從「對所有人開放貢獻」逐漸轉向「開放原始碼但封閉貢獻權」。Vouch 這種信任圈模式大概會變成標配。這在實務上更健康,但也意味著新人進入開放原始碼的門檻會比以前高。
比 PR Spam 更可怕的事
Theo 影片裡提到 XZ backdoor 的故事,我覺得那是整支影片最重要的警告。
簡單說:XZ 的維護者被大量惡意帳號施壓,最後被社會工程攻擊成功,交出了專案控制權。現在 AI PR spam 讓這種攻擊的成本幾乎歸零——你只要寫個 script 批量產生看起來合理的 PR,再用幾個假帳號寄信罵維護者「為什麼不合我的 PR」,慢慢消磨他們的意志就行了。
同時,funding 的困境也在加深。AI 可以直接複製你賣的東西——Theo 舉了 Tailwind Plus 的例子,你拿截圖給 AI 就能重建,用的還是 Tailwind。維護負擔上升、商業模式被掏空,這個剪刀差持續下去,理性選擇就是放棄維護。
而 GitHub 在這裡的角色確實很諷刺。靠開放原始碼社群建立了平台價值,被微軟用 75 億美金收購,Copilot 拿開放原始碼的 code 訓練模型賺錢,然後連基本的 spam 防護和 moderation 工具都做不好。Theo 說他在 Twitch 四個人的團隊七個月做出的審核工具都比 GitHub 十年做的好,這話刺耳但不誇張。
我的立場:這是責任問題
我自己也有一個相關的經驗。Voco——我的語音輸入工具——是從另一個開放原始碼專案 fork 出來的。fork 之後改了非常多東西:ASR 核心從 Whisper 換成 Qwen3-ASR、加了 LLM 後處理層做同音字修正、重寫了 wake delay 機制、最佳化了 mel spectrogram 的 FFT 運算。
這些全是針對我自己使用情境的深度客製化。Claude 不只一次問我要不要 PR 回上游,我一次都沒同意。不是因為我不想貢獻,是因為這些改動對上游不一定有意義,PR 回去只是製造 review 負擔。
我覺得整件事其實就一句話:vibe 出來的東西,自己用可以,PR 回去就三思。 除非維護者明確歡迎,否則你開 PR 的那一刻就是在要求別人花時間看你的東西。這不是權利,是在消耗公共資源。
有沒有能力為自己提交的 code 負責——這個問題在 AI 之前就存在。只是現在產生 code 太容易了,很多人跳過了建立責任感的過程,就直接到了「我可以開 PR」這一步。
趨勢擋不住,AI 工具只會越來越容易用,開 PR 的摩擦力只會越來越低。但每個人至少可以為自己的行為負責。Fork 你的、改你的,沒人管你。要往上游推,先問問自己:這個 PR 是為了專案好,還是為了滿足你自己的成就感?
如果答案是後者,關掉那個 tab。