從 Context 流失到自我修復 CI:Anthropic 的工程實戰觀察

🌏 Read this article in English


CI 失敗。

你盯著螢幕。進度條卡在「Running tests」。

五分鐘。

你起身倒咖啡。回來,還是五分鐘。

複製錯誤訊息。貼給 AI。等它修正。再 push。

再等五分鐘。

然後?

又失敗了。

你滑開 Slack,同事傳了一則訊息:「好了沒?我在等 merge。」

你回:「CI 又掛了。」

卡的不是你。是流程。

上個月在台北 Meetup,Anthropic 的工程師分享了他們的做法。

現場討論很熱烈。大家不再問「AI 能不能幫我寫程式」。

大家問的是:「如何設計系統架構,讓 AI 成為開發基礎設施的一部分。」

Context 流失:記憶需要被工程化管理

每位深度使用 AI 程式助手的開發者,都經歷過這種時刻。

你花了三十分鐘,建立專案脈絡、說明程式慣例、解釋架構決策。

你覺得 AI 懂了。

然後,context window 一壓縮。

它就把細節「忘光了」。

Context 不是 AI 的記憶體,是你的基礎設施。

Anthropic 的做法很簡單:把 context 寫成檔案,每次開工自動讀回來。

聽起來土法煉鋼?但這就是工程。

你不會期待 RAM 記住昨天的事,你會把它存到硬碟。Context 也一樣。

具體怎麼做?一個 session start hook。

每次 Claude Code 開工,自動把 CLAUDE.md、ADR、規範讀回來。

就這樣。

不是跟 context 限制硬碰硬。是假設它一定會掉,然後設計怎麼撿回來。

一個值得考慮的設計前提,是把 context 流失視為常態,並建立恢復機制。

Key Insight 1: Context 不是 AI 的記憶體,而是你的基礎設施。主動管理 context 的持久化,比依賴模型的自然記憶更可靠。

權限的兩難:在自主性與控制之間取得平衡

你在心流裡。

Claude 跳出來:「要我寫這個檔案嗎?」

你按 yes。

三秒後又跳一次。

再三秒,又一次。

但問題是:安全與效率,從來不是非黑即白。

權限系統的存在,是因為自主執行程式碼確實有風險。包括意外刪除檔案、非預期的系統變更,或敏感資料外洩。

當 repo 已隔離、操作範圍清楚、回滾成本可控時,可以考慮更高自動化權限。

auto-accept hooks 模式,讓開發者能建立自訂邏輯,自動核准特定類別的操作。hook 可以檢查待執行的操作,根據預設規則進行評估,並在無需使用者介入的情況下授予核准。

想像你給實習生一張白名單——這幾個資料夾隨便動,其他要叫我。

舉例來說,hook 可以自動核准特定目錄內的所有檔案寫入。但對該範圍外的操作,仍要求確認。

對於願意承擔全部責任的開發者,dangerously-skip-permissions 旗標可完全移除核准流程。這個旗標,刻意取了嚇人的名字,作為持續提醒使用者,正在做出的取捨。

在 production repo?老老實實一個一個按。

在隔離容器跑實驗?開 dangerously-skip,反正壞了砍掉重來。

差別不在工具,在你願不願意承擔錯誤的代價。

Key Insight 2: 權限控制不是「開」或「關」的二元選擇,而是「在什麼範圍內自動,在什麼範圍內人工」的分層設計。auto-accept hooks 是平衡效率與安全的最務實解。

YOLO Push:讓 AI 進駐你的 CI 流程

然後是 YOLO Push。名字很欠揍。架構意外嚴謹。

10 個工程師。每人每天 10 次等 CI。每次 5 分鐘。

一天 8 小時,沒了。你以為在開發,其實在等。

他們的解法,徹底翻轉這個流程。

CI 掛了。Pipeline 自己裝 Claude Code。把失敗的 context 傳給它。

Claude 讀錯誤、找問題、修、commit。

沒人介入。

重跑一次。過了,繼續。沒過,再試一次,直到次數用完。

聽起來很冒險?關鍵在「Claude 能動什麼」這條線怎麼畫。

允許清單寫死:lint 錯誤、型別錯誤、格式問題、unused import。

拒絕清單也寫死:安全、機密、授權、合規。碰到身分驗證、碰到資料存取——一律人工審。

這條線怎麼落地?用官方的 Claude Code GitHub Action 在 workflow 裡跑,prompt 把允許/拒絕清單塞進去。

自動修的不是 bug,是等待。

這不只是工具的問題。這是工程師如何定義自己價值的問題。當機械性工作被自動化,你的判斷力在哪裡?

Key Insight 3: YOLO Push 的核心不是「讓 AI 寫程式」,而是「讓 AI 處理確定性的機械性錯誤」。透過允許/拒絕清單機制,將 AI 的自主權限制在低風險、高頻率的場景中。

多 Agent 程式碼審查:把 reviewer 分工

單一模型 review,問題不是它不夠聰明,是它同時要看邏輯、安全、風格——人也做不到。

邏輯一個 Agent。安全一個 Agent。風格一個。

這種做法,避免了單一模型的盲點,也減少了假陽性與假陰性的風險。

你 review 過 AI 寫的 PR,會發現它對邏輯敏感但對風格無感。所以分工合理。

單一 reviewer 的盲點不靠更聰明的模型解,靠分工。邏輯、安全、風格各派一個 Agent,最後合議——這才是 review 該長的樣子。

向上管理:如何讓主管接受這個改變?

如果你想在團隊推動 YOLO Push 或 auto-accept hooks,主管的第一反應通常是:「這安全嗎?」

先承認一件事:這確實有風險。

但問題是:你現在的人工審查,真的能擋住所有錯誤嗎?

人工審查在特定情境有效,但對高頻、低風險錯誤,邊際效益下降。

主管把責任與風險放第一,是合理考量。

你可以這樣跟主管說:

「我想在這個小功能上試試看。如果出問題,我負責。兩週後我給你數據。」

這句話讓主管知道:你是在把風險範圍、責任邊界與衡量方式說清楚。

先挑一個影響範圍清楚、回滾成本低的內部工具。把允許清單寫死——只能改 lint、format、unused import。其他一律擋掉。

然後,觀察數據。

CI 失敗率有沒有下降?開發者的等待時間有沒有減少?

用數據說話,比用理念說服更有效。

主管要的不是保證,是責任邊界。

兩週後,CI 失敗率會回答。不是你回答,也不是主管回答。

Sources


你今天的十分鐘,花在哪裡?

是花在等 CI,還是花在修那些 AI 能在允許清單內自動處理的機械性修正?

Leave a Comment