對抗 AI Slop:Archestra 如何利用 Git 的 --author 旗標來保護開源專案

AI 輔助編碼的興起為開源帶來了矛盾的挑戰:雖然生產力工具正在進步,但低品質、自動化的貢獻——通常被稱為「AI slop」——正呈爆炸式增長。對於維護者而言,這表現為大量未經測試的 pull requests、幻覺問題以及充滿雜訊的評論串,掩蓋了真實的人類互動。

Archestra 最近正面迎擊了這場危機。在為 MCP Apps 支援發布了 900 美元的賞金後,他們的儲存庫(repository)在單個 issue 上湧入了 253 條評論,以及數十個未經測試的 PR。其結果是形成了一道「雜訊牆」,使合法的貢獻者被邊緣化,並迫使團隊成員花費大量時間手動清理儲存庫。

傳統過濾方式的失敗

在採用目前的解決方案之前,Archestra 團隊嘗試了幾種自動化防禦手段:

  • 聲譽機器人 (Reputation Bots): 他們建立了 "London-Cat",這是一個根據已合併的 PR 來計算貢獻者聲譽的機器人。雖然對識別很有幫助,但它無法阻止垃圾訊息的湧入。
  • AI 警長 (AI Sheriffs): 他們部署了 "AI sheriff" 來自動關閉可疑的 PR,但這導致了合法貢獻被誤關。

最終,團隊意識到 AI 生成的雜訊規模已經超出了他們事後過濾的能力。他們需要一種方法,在雜訊進入系統之前就將其攔截。

「核武選項」:透過 Git 歸屬權進行白名單化

GitHub 提供了一項設定,稱為「限制為先前的貢獻者 (Limit to prior contributors)」,該設定會將在 issue 上發表評論或開啟 PR 的權限限制在先前曾對 main 分支進行過 commit 的使用者。然而,這會產生「冷啟動」問題:新的、合法的貢獻者會與機器人一起被鎖在門外。

為了達成此目的,Archestra 實施了一種利用 Git 內部身分識別系統的巧妙技巧。在 Git 中,每個 commit 有兩個不同的身分欄位:Author(撰寫程式碼的人)和 Committer(將 commit 應用到分支的人)。

技術工作流程

透過使用 --author 旗標,維護者可以建立一個歸屬於另一位使用者的 commit。如果使用的電子郵件與 GitHub 帳號匹配,GitHub 就會將該使用者識別為「先前的貢獻者」。

  1. 新手引導 (Onboarding): 潛在貢獻者訪問專用的新手引導頁面,同意 AI 倫理規則,並通過 CAPTCHA。
  2. ID 查詢: 提交後會觸發 GitHub Action,使用 GitHub API 尋找使用者的唯一 ID 以及他們的 noreply 電子郵件地址 (<id>+<username>@users.noreply.github.com)。
  3. 歸屬權 Commit: 系統會自動建立一個 commit 到 main 分支(例如,更新一個 EXTERNAL_CONTRIBUTORS.md 檔案),使用 --author 旗標將該 commit 歸屬於新使用者。
  4. 存取權授予: 因為該使用者現在是 main 分支上某個 commit 的「author」,GitHub 的「限制為先前的貢獻者」設定會自動將他們列入白名單。

社群觀點與反對意見

Archestra 的方法在 Hacker News 上引發了熱烈討論,突顯了開源專案面對的更廣泛系統性問題。

安全與維護疑慮

某些使用者指出,這種技巧會引入新的風險。一位貢獻者指出,GitHub 的安全模型通常會給予先前貢獻者更高的信任度,這可能允許通過 CAPTCHA 的惡意行為者繞過某些針對 fork PR 執行環境的審核要求。

此外,批評者觀察到,這種解決方案只是將雜訊轉移了。透過為每個白名單使用者新增一個 commit,專案的 git 歷史紀錄會充斥著大量的「雜務 (chore)」commit,導致一些人指出 Archestra 儲存庫中近期的一大部分 commit 實際上已變成了雜訊。

「賞金」問題

有一種強烈的觀點認為,財務賞金實際上可能會激勵 AI slop。正如一位評論者所言,承諾金錢會吸引匿名帳號和機器人,這些帳號與機器人優先考慮數量而非品質。有人建議改用基於認可的獎勵,或是實施「Pfand」(押金)制度——即貢獻者支付一小筆費用,在展現誠意後退還——作為對抗低品質垃圾訊息的替代方案。

更廣泛的 AI 影響

這場討論反映了對開源專案「指標驅動」觀態的日益挫折感。雖然 GitHub 可能會慶祝總貢獻次數的增加,而維護者卻在承受品質下降的負擔。正如一位使用者所說,產業正看到「告訴所有人 AI 寫程式碼有多麼厲害」所帶來的結果,導致大量使用者對自己的 AI 輸出結果充滿信心,卻不理解底層的程式碼庫。

結論

Archestra 使用 --author 旗標的做法是在一場針對 AI 機器人的消耗戰中的戰術性勝利。雖然這可能不是一個完美的架構設計方案,但它展示了維護者為了在自動化雜訊時代保留開源開發中的人性元素,必須付出多大的努力。

Sources