Commit 歸屬權之戰:揭露還是廣告?

Git commit 歷史傳統上是技術文件的神聖空間——一份關於為什麼做出更改以及如何實作的時序記錄。然而,一種新的趨勢已經出現:諸如 "Assisted by blabot" 或 "Co-authored-by: Claude" 等歸屬標籤(attribution trailers)的激增。

最初作為揭露 AI 工具使用情況的方式,現已演變成開發者社群內部的激烈辯論。這究竟是必要的透明度措施,還是僅僅是將價值數十億美元的 AI 公司廣告直接嵌入開源專案原始碼中的免費廣告?

反對「Commit 廣告」的觀點

對於許多開發者而言,在 commit 訊息中加入 AI 工具名稱是一種公然的「暗黑模式」(dark pattern)。其論點很簡單:這些工具通常是訂閱制服務,卻無法為使用它們的開源貢獻者帶來任何財務回報。透過允許這些工具自動將其名稱附加到每個 commit,開發者實際上是在一個永久且公開的帳本中提供免費的廣告空間。

除了 commit log 的美感之外,還有更深層的哲學性反對意見。將 LLM 用於 Co-authored-by 被某些人視為對創作過程的根本性誤導。正如一位評論者所指出的:

"在 Claude 或其他工具的情況下,這不僅僅是一個廣告,它反映了產業正將 LLM 輔助編碼塑造成一種『共同作者』關係,而它應該被視為更像『使用者使用工具』的關係。當你使用 Photoshop 進行設計時...它並不是『由 Photoshop 共同設計』。"

支持揭露的觀點

相反地,有些人認為了解程式碼的出處(provenance)是一個關鍵的技術訊號。在 AI 可以快速生成大量程式碼的時代,知道某個特定區塊是 AI 輔助的,可以提醒審查者保持警惕。

一些開發者比起另一種選擇——「影子 AI」(shadow AI,即由 LLM 生成程式碼卻未進行任何揭露就提交)——更傾向於於這種明確的標記。從這個角度來看,Co-authored-by 標籤並非廣告,而是一種正式的透明度機制。正如一位使用者所指出的,pull request 是短暫的,且往往會消失在「時間的沙塵」中,而 git 歷史則是多年後下游消費者唯一可用的永久記錄。

企業指標與「特洛伊木馬」

有趣的是,討論已從個人開發者的偏好轉向了企業監控。人們越來越懷疑,這些歸屬標籤並非為了閱讀 log 的人類開發者,而是為了企業的儀表板。

有些公司現在透過掃描 commit 歷史中的已知代理程式(agent)簽名來追蹤「AI 採用率」。在這種情況下,Co-authored-by 標籤變成了管理層用來衡量生產力或工具滲透率的指標,而非給其他開發者的有用筆記。

此外,有些人對這些標籤的法律影響提出了疑慮。由於 AI 生成的程式碼在許多司法管轄區目前被視為不受版權保護,在單個「共同作者」的 commit 中混合人類與 AI 的貢獻,可能會在產出的程式碼知識產權方面造成法律模糊性。

尋找折衷方案

如果目標是揭露,但問題在於廣告,開發者應該如何處理 AI 歸屬權?

為了在保持透明度的同時清理 commit 歷史,已提出了幾種替代方案:

  1. 通用揭露: 不命名特定產品(例如 "Claude" 或 "Copilot"),而是使用通用標籤,如 Generated-by: LLM
  2. 技術規格: 遵循 Linux kernel 的做法,指定模型與版本而不帶有企業品牌,例如 AGENT_NAME:MODEL_VERSION
  3. Merge Request 揭露: 在 merge request 或 pull request 的描述中揭露 AI 的使用情況,讓個別的 commit 保持純粹的技術變更。
  4. Custom Trailers: 使用 git-interpret-trailers 來建立自定義、非品牌的標籤,以滿足內部政策而不推廣特定供應商。

最終,這場辯論凸顯了現代開發模式以工具為中心,與希望保持軟體技術歷史乾淨、有目的性且不受企業品牌干擾之間的緊張關係。

Sources