重點摘要
當 AI 寫了一半的代碼,commit history 該保留對話過程,還是只留最終結果?
git-memento 與 Entire.io 引爆「AI session 該不該進版本控制」辯論,反對派認為充滿雜訊,支持派主張保留決策軌跡
三條技術路線浮現:Git Notes 分離式、專屬分支、精煉文件方案,各有權衡;Cursor 自動加 AI co-author 引發 GDPR、SOX 合規疑慮
產業尚未共識,短期建議先寫 10 行計畫文件記錄非顯而易見的決策,而非儲存完整 session
前情提要
爭議的起點:AI 對話該不該進版本控制
2026 年 2 月 28 日,開發者 mandel-macaque 在 GitHub 發布 git-memento,一個用 F# 編寫的 Git 擴充工具,能將 AI 編碼對話以 git notes 形式附加到 commit。工具支援 GitHub Copilot 與 Claude,上線一週即獲 260+ stars。
幾乎同時,前 GitHub CEO 創辦的 Entire.io 推出商業化方案,將 AI session(含 prompts、responses、檔案變更、token 用量)儲存在獨立分支,並在 commit message 加入 Checkpoint ID。這兩個專案的出現,讓一個潛藏已久的問題浮上檯面:當 AI 協助寫代碼時,那些來回對話、錯誤嘗試、推理過程,該不該成為版本控制的一部分?
爭議迅速在 Hacker News 引爆。一方認為 commit history 的本質是「一系列可回退的檢查點」,AI session 充滿雜訊與誤導線索,保留它們只會污染歷史記錄。另一方則主張,當代碼越來越多由 AI 生成,失去推理軌跡就等於失去可稽核性。六個月後回頭 debug 時,只看到 diff 卻不知道「為什麼這樣改」。
反對陣營:commit history 不是垃圾場
Hacker News 用戶 ottah 一針見血指出核心反對理由:commit history 不是開發過程中所有隨機事件的雜物袋,而是一系列讓你能回退錯誤決策的檢查點。反對派認為,AI session 充滿雜訊、錯誤實作、誤導線索。
一個典型場景是:開發者與 AI 對話 20 輪,其中 15 輪是修正 AI 的誤解或調整 prompt,只有最後 5 輪產出有效代碼。這些中間過程對未來的維護者毫無價值,反而增加認知負擔。staticassertion 直言質疑投資報酬率:你可以用「可能有用」來合理化幾乎任何事,但為什麼現在就付出成本?
技術上,模型的不確定性也讓重現性成為空談——vLLM 層級的 continuous batching 變更或不同 CUDA driver 版本就能完全破壞可重現性。adampunk 更質疑 Entire.io 要求的「詳細到能在多個模型間可靠地一次完成實作的計畫」:為什麼我做一個專案還要負責做這個完全不同、困難得多、甚至可能不可能的專案?
支持陣營:透明度與可重現性
支持者認為 session 保留了意圖與決策過程,這是純代碼 diff 無法傳達的。jtesp 分享實測 entire.io 的心得,列出三大優點:意圖被記錄、可參考如何製作、非正式文件。一位開發者描述其工作流:建立 project.md 描述目標 → 與 AI 迭代 plan.md 直到滿意 → 執行並 commit。
這創造可稽核的推理軌跡——當一年後模型變得更好時,可以回頭要求它們基於過去的計畫和現有代碼重新審視決策。Entire.io 官方說法更直接:傳統 Git 告訴你什麼改變了,但這些改變背後的推理在 AI 的 context window 關閉後往往就蒸發了。
mandel_x(git-memento 作者)在 HN 的發言道出核心動機:我們越來越常將 AI 協助的代碼合併到生產環境,但我們很少保存真正產生它的東西——session。六個月後,當 debug 或回顧歷史時,唯一留下的產物就是 diff。
技術實作的現實考量
實務上,開發者分成三條技術路線,各有權衡。第一條是 Git Notes 方案 (git-memento) :使用 Git 原生 notes 功能,session 與 commit history 分離,可推送至 remote 共享。支援 rebase/amend 時自動改寫 notes,GitHub Actions 整合提供三種 CI/CD 模式。優點是不污染 commit history,缺點是 notes 容易被忽略或遺失。
第二條是專屬分支方案 (Entire.io) :session 存於專屬分支,提供手動 commit 與自動 commit 兩種策略。解決出處斷層問題,但增加 repo 體積與管理複雜度。
第三條是精煉文件方案:不儲存原始 session,而是將需求提煉成高品質 commit message、ADR 或設計文件。這是最輕量的方案,但依賴人工精煉品質。安全考量方面,memento 文件明確指出 transcripts 是不受信任的資料,在 AI 摘要生成時使用明確 prompting 防止 instruction injection。
Cursor IDE 被發現在 commit metadata 自動加入 AI co-author,引發 GDPR Article 22、SOX §404、FINRA Rule 4511 合規疑慮——這提醒我們,AI session 的保存不只是技術問題,還涉及法律責任。社群目前浮現的務實建議是:在啟動 AI 編碼 session 前寫 10 行計畫,並更新其中 2-3 個非顯而易見的決策,與代碼一起 commit。session 不需要進 commit,但推理需要。
多元觀點
正方立場
核心論點:AI session 保留了代碼背後的意圖與決策過程,這是純 diff 無法傳達的關鍵資訊。
支持證據:
- 可稽核性:當代碼越來越多由 AI 生成,失去推理軌跡就等於失去可稽核性。六個月後回頭 debug 時,只看到 diff 卻不知道「為什麼這樣改」,無法判斷當初的決策是正確但環境變了,還是根本就是錯的
- 未來價值:當模型能力提升時,可以回頭要求更好的 AI 基於過去的 session 重新審視決策(「when the models get a lot better in a year, I can go back and ask them to modify plan.md」)
- 團隊學習:新成員可以看到資深開發者如何與 AI 協作、如何精煉 prompt、如何篩選 AI 建議,這是一種隱性知識的傳承
- 防止重蹈覆轍:記錄哪些方案被嘗試過但失敗了,避免未來再次踩坑
Entire.io 的「provenance gap」概念點出痛點:傳統 Git 告訴你 what changed,但 AI 的 context window 關閉後,reasoning 就蒸發了。將 AI 推理視為一等公民、可版本化的原始資料,讓改變背後的「思考過程」變得可搜尋、可分享。
反方立場
核心論點:Commit history 的本質是「一系列可回退的檢查點」,不是「開發過程中所有隨機事件的雜物袋」。AI session 充滿雜訊與誤導線索,保留它們只會污染歷史記錄。
支持證據:
- 雜訊過載:AI session 充滿雜訊、錯誤實作、誤導線索。一個典型場景是:開發者與 AI 對話 20 輪,其中 15 輪是修正 AI 的誤解或調整 prompt,只有最後 5 輪產出有效代碼。這些中間過程對未來的維護者毫無價值
- 重現性幻覺:模型的不確定性讓「重現」本質上不可能——vLLM 層級的 continuous batching 變更或不同 CUDA driver 版本就能完全破壞可重現性。儲存 session 給人一種虛假的可重現感
- 成本收益失衡:repo 體積膨脹、CI/CD 時間增加、團隊認知負擔上升,而潛在收益不明確
- 責任錯置:要求開發者額外產出「詳細到能一次完成實作的計畫」,實質上是要求做兩次工作——一次給 AI,一次給人類。如果計畫已經詳細到這個程度,為什麼還需要 AI?
反對派認為,最終代碼才是重點,session 只是到達終點的臨時腳手架。保留腳手架不會讓建築更穩固,只會讓工地更混亂。
中立/務實觀點
調和框架:問題不在於「該不該保存」,而在於「保存什麼」與「如何保存」。社群浮現的務實建議是折衷路線。
精煉而非原始:不儲存完整 session(20 輪對話的原始 transcript),而是提煉成結構化文件。在啟動 AI 編碼前寫 10 行計畫 (project.md) ,session 結束後更新其中 2-3 個非顯而易見的決策,與代碼一起 commit。「The session doesn't need to be in the commit, but the reasoning does.」
分層儲存策略:
- 必須保存:高層決策(為什麼選 Redis 而不是 Memcached)、非顯而易見的取捨(為什麼用 O(n²) 而不是 O(n log n) ))、已知限制(為什麼暫時沒處理 edge case)
- 選擇性保存:對於關鍵模組或高風險改動,可用 Git Notes 或專屬分支保存完整 session,但不強制全專案採用
- 不必保存:routine 的 CRUD、明顯的 bug fix、格式化調整
工具選擇建議:Git Notes 方案 (memento) 適合想要「分離但可選共享」的團隊;精煉文件方案 (ADR) 適合重視輕量級與人類可讀性的團隊;專屬分支方案 (Entire) 適合願意承擔管理成本、追求最大透明度的團隊。
關鍵是承認「一刀切」不存在——讓團隊根據專案性質(開源 vs 閉源、合規要求、team size)自行選擇,而非強制統一標準。
實務影響
對開發者的影響
如果你是個人開發者或小團隊,短期內可以不做任何改變——傳統的 commit message + code review 仍然有效。但如果你發現自己常常回頭翻 AI 對話記錄找「當初為什麼這樣改」,可以試驗輕量級方案。
具體行為改變建議:在每次啟動 AI 編碼 session 前,花 2-3 分鐘寫一個 plan.md 或在 commit message 草稿中寫下目標。Session 結束後,回頭更新這個計畫,加入 2-3 個非顯而易見的決策。
工具選擇方面,如果你想試驗但不想承擔太多成本,git-memento 的 Git Notes 方案是最低風險選項——它不污染 commit history,隨時可以停用。如果你願意接受更激進的方案,Entire.io 提供商業級支援與 UI 介面,但要注意專屬分支會增加 repo 管理複雜度。
對團隊/組織的影響
對於有合規要求的組織(金融、醫療),Cursor IDE 自動加入 AI co-author 的案例是警訊。你需要制定政策:AI 生成代碼是否需要標記?如何標記?誰負責稽核?
團隊層級的政策建議:不要一開始就強制全員採用 AI session 儲存,而是先在 1-2 個實驗性專案試行,觀察實際價值與成本。如果試行成功,可以制定「關鍵模組必須附 session 或 ADR,routine 改動可省略」的分級政策。
招募與文化方面,這個爭議反映了更深層的分歧:你的團隊文化是「fast iteration, move fast」還是「documentation-heavy, audit trail first」?如果是前者,強制儲存 session 會被視為 bureaucracy;如果是後者,不儲存 session 會被視為 reckless。
短期行動建議
具體步驟如下:
- 個人實驗:下次用 AI 寫代碼時,先寫 10 行計畫(目標 + 預期方案),session 結束後更新 2-3 個關鍵決策,看看一個月後回頭看時是否有價值
- 工具試用:clone git-memento repo,在個人專案試用 Git Notes 功能,評估是否適合你的工作流
- 團隊討論:如果你是 tech lead,在下次 team meeting 提出這個話題,調查團隊目前是否有「回頭找不到 AI session」的痛點
- 合規評估:如果你在受監管產業,檢查 Cursor 等 AI IDE 是否在你不知情的情況下加入了 AI co-author metadata,評估是否需要關閉此功能
社會面向
產業結構變化
如果 AI session 儲存成為主流實踐,會出現新的職能需求:AI session curator(負責精煉與管理 AI 對話記錄)、provenance engineer(確保 AI 生成代碼的可追溯性)。這些職能可能由現有的 DevOps 或 QA 角色擴展,也可能催生新的專業。
就業市場方面,如果產業朝「完整透明度」方向發展,不擅長撰寫清晰 AI prompts 或無法有效精煉 session 的開發者可能面臨劣勢。反過來說,如果產業保持現狀,那些投入時間學習 session 管理的開發者可能發現投資報酬率不高。
技能需求轉移:傳統的「寫好 commit message」技能可能擴展為「寫好 AI session plan + 事後總結」。Code review 的重點可能從「這段代碼做什麼」轉向「這段代碼為什麼這樣做」(因為 what 可以從 diff 看出,but why 需要 session 或 ADR)。
倫理邊界
爭議核心的倫理問題是:透明度與效率的權衡到哪裡為止?Entire.io 主張 AI 推理是一等公民,但這隱含一個假設:所有推理過程都值得保存。反對派質疑這個假設,認為大部分 AI session 是 trial-and-error 的雜訊。
另一個倫理層面是歸屬權 (attribution) 。如果 AI 寫了 70% 的代碼,commit 該署名誰?Cursor 自動加 AI co-author 的做法引發爭議,因為它模糊了人類貢獻與 AI 貢獻的界線。在開源社群,這可能影響 contributor 統計與聲譽累積;在商業環境,這可能影響績效評估與 IP 歸屬。
GDPR Article 22(AI 決策限制)的適用性也是灰色地帶:如果一個 commit 主要由 AI 生成且未經充分人類審查,它是否構成「自動化決策」?如果是,企業是否需要提供「人類可介入」的機制?這些問題目前沒有明確答案。
長期趨勢預測
基於目前討論,可能的演變方向有四種情境:
情境 A:精煉派獲勝(機率 40%)
產業共識形成於「儲存推理而非原始 session」。ADR、spec-kit、OpenSpec 等結構化文件工具成為標配。AI IDE 內建「session summarizer」功能,自動生成精煉後的決策文件。Git 生態系保持現狀,不新增 session 儲存的標準化支援。
情境 B:分層儲存派獲勝(機率 35%)
產業形成「關鍵模組必須附 session,routine 改動可省略」的分級標準。Git Notes 或類似機制被 GitHub/GitLab 原生支援,UI 上可以方便地查看 session。大型開源專案開始要求 contributor 在重大改動時附上 AI session 或等效文件。
情境 C:透明度派獲勝(機率 15%)
Entire.io 式的「完整 session 儲存」成為受監管產業的合規要求。金融、醫療、航空等領域強制要求 AI 生成代碼必須附上完整可稽核軌跡。開源社群分裂,部分專案採用、部分拒絕,形成兩種平行的開發文化。
情境 D:現狀維持派獲勝(機率 10%)
爭議逐漸平息,產業認為傳統 commit message + code review 已足夠。AI session 儲存成為小眾實踐,僅在特定團隊或專案中採用。五年後回頭看,這場爭議被視為「AI hype 時期的過度反應」。
最可能的結果是情境 A 與 B 的混合:產業主流採用精煉文件方案(低成本、輕量級),但 Git 生態系同時提供 session 儲存的標準化選項(讓有需要的團隊可以選用)。關鍵是避免「一刀切」強制,讓團隊根據專案特性自行選擇。
唱反調
儲存 AI session 的成本(repo 體積、CI/CD 時間、團隊認知負擔)遠大於潛在收益,尤其當模型的不確定性讓「重現」本質上不可能時
要求開發者額外產出「詳細到能一次完成實作的計畫」,實質上是要求做兩次工作——一次給 AI,一次給人類,這違反了 AI 協助開發的初衷
社群風向
Commit history 不是開發過程中所有隨機事件的雜物袋,而是一系列讓你能回退錯誤決策的檢查點
根據 entire.io 的理念應該要保存。我保存本地 log 一陣子了,現在正在試用 entire。優點是:意圖被記錄、可參考如何製作、非正式文件
我不太理解這種對沖的意義,你可以用「可能有用」來合理化幾乎任何事,但為什麼現在就付出成本?
為什麼這應該是輸出?為什麼我做一個專案還要負責做這個「詳細到能在多個模型間可靠地一次完成實作的計畫」——這完全是另一個困難得多、甚至可能不可能的專案?
我們越來越常將 AI 協助的代碼合併到生產環境,但我們很少保存真正產生它的東西——session。六個月後,當 debug 或回顧歷史時,唯一留下的產物就是 diff
炒作指數
行動建議
在啟動 AI 編碼前先寫 10 行計畫文件(project.md 或 plan.md),記錄目標與非顯而易見的技術決策,與代碼一起 commit
追蹤 git-memento、Entire.io 的採用情況與社群回饋,觀察是否有大型開源專案採用 AI session 儲存策略
如果你的團隊已大量使用 AI 協助開發,可試驗 Git Notes 方案(不污染 history)或 ADR 精煉方案(輕量級),暫不建議專屬分支方案(管理成本高)