Mono
候補名單

Claude Code 上下文視窗滿了?壓縮、清除或重新開始

Claude Code 或其他程式開發代理的上下文快用完時,在壓縮、清除與開新工作階段之間做選擇,並用交接筆記保留已做的決定。

Claude Code 的上下文視窗快滿時,它會自行處理:先清除較舊的工具輸出,必要時再把對話整理成摘要。早期的指示可能因此遺失,所以最好先自己做選擇。如果你還在做同一項任務,執行 /compact 並附上要保留哪些內容的說明。如果接下來要做不相關的工作,執行 /clear。如果代理一直忘記已做的決定,就寫一份簡短的交接筆記,用它開始新的工作階段。

其他程式開發代理的指令可能不同,但面對的選擇是一樣的。只要代理有回報,Mono 就能顯示上下文用了多少,但壓縮和清除是由代理執行的。

1. 了解什麼會填滿上下文視窗

上下文包含代理工作時依據的一切:你的訊息和它的回覆、它讀過的檔案、指令與測試的輸出、已連線 MCP 伺服器的工具清單,以及開始時載入的指示檔案。一份很長的測試記錄,分量就可能超過你輸入過的所有內容。

快要填滿的跡象:

  • 代理違反你先前給的規則。
  • 它問了你已經回答過的問題。
  • 出現上下文即將不足的警告。

在 Claude Code 中,/context 會顯示哪些內容占用了空間。它的運作方式概覽說明了接近上限時會發生什麼事。

虛構範例:你在「tidy-recipes」中把 30 個檔案從舊的日期輔助函式 oldDate() 改為新的 formatDate()。進行兩個小時後,代理又問了一次該用哪個函式庫。/context 顯示視窗幾乎已滿。

2. 在壓縮、清除與新工作階段之間做選擇

壓縮會在同一個工作階段中,用摘要取代原本的對話。清除或開始新的工作階段則會捨棄對話,但指示檔案會重新載入。每個選擇都會失去一些東西:

情況 該怎麼做 會失去什麼
同一項任務,進展順利 附上重點說明後壓縮 摘要略過的細節
接下來是不相關的工作 清除,或開始新的工作階段 整段對話
代理忘記已做的決定 寫交接筆記,開始新的工作階段 交接筆記沒寫到的部分

重點說明告訴摘要要保留什麼,例如 /compact Focus on date decisions and failing tests(重點放在日期相關的決定與失敗的測試)。Claude Code 的成本管理指南示範了這個用法,並建議在 /clear 之前先執行 /rename,之後就能用 /resume 重新開啟該工作階段。

在這個範例中,代理已經忘了一項決定,所以要寫交接筆記。

3. 重設前先寫交接筆記

交接筆記是給新工作階段的簡短說明。你可以自己寫,或修正代理擬好的草稿:

text
Goal: Replace oldDate() with formatDate() in recipes/ (30 files).
Done: 18 files, on branch tidy-dates.
Decisions: formatDate() uses Intl.DateTimeFormat, so no new library.
  Keep oldDate() for importing v1 files, which use the old format.
Open problem: The recipes/print.ts test has failed since the change.
Next step: Fix print.ts, then move the remaining 12 files.

每個決定都要附上理由,否則下一個工作階段可能會把它推翻。把筆記存在專案裡或你的筆記中,並匯出對話,以備之後需要查看細節。

接著執行 /clear,或在同一個專案中開始新的工作階段,只貼上交接筆記,不要貼上完整的對話紀錄。

4. 把長期規則移出對話

有些修正不只適用於一項任務。如果你一直重複「使用專案的日期輔助函式」或「用專案的指令碼執行測試」,就把規則寫進專案的指示檔案,例如 AGENTS.md 或 Claude Code 的 CLAUDE.md。新的工作階段會讀取這個檔案,所以重設不會讓規則消失。

這個檔案要保持簡短,因為每個工作階段都會載入它。成本管理指南建議 CLAUDE.md 不要超過 200 行。像「30 個檔案已完成 18 個」這樣的進度,則留在交接筆記裡。AGENTS.md 指南說明了該寫些什麼。

範例中的 v1 規則也要寫進去:只要還有 v1 檔案,這條規則就一直有效。

5. 減少每一輪新增的內容

上下文越小,就能撐得越久。每次提出要求前:

  • 指明檔案和函式,而不是說「修好日期」。
  • 貼上相關的錯誤行,而不是整份記錄。
  • 只執行需要的測試,並且只顯示失敗項目。
  • 中斷專案用不到的 MCP 伺服器連線。
  • 在代理支援時,把大範圍的搜尋交給子代理。
  • 一個工作階段只做一項任務。

成本管理指南涵蓋了其中大部分做法,包括一個篩選測試輸出的 hook。

6. 重設後檢查代理

在新工作階段修改任何內容之前,請它重述目標、決定和下一步,並把回答和你的交接筆記對照。在這個範例中,它應該不用提示就說出 v1 規則。如果有遺漏,現在就糾正。接著在它繼續之前,審查它的第一份 diff,也就是 print.ts 的修正。程式碼審查指南提供了一份檢查清單。

在 Mono 中,當代理回報用量時,訊息輸入框上方的小圓環會顯示已使用的上下文。用到一半時,它會從綠色變成橘色,到 80% 時變成紅色;按下它會顯示「上下文:已用量 / 總量」。輸入「/」會列出代理提供的斜線指令。依照 Agent Client Protocol 的規範,代理不一定要提供這份清單。若要重新開始,先用「匯出對話」儲存舊的對話,再在專案卡片上選擇「新增工作階段」(電腦連線時,用手機也可以)。Mono 還沒有正式推出,但你可以加入候補名單。

作者

Reunified 打造能把分散的東西重新聚在一起的 App。

繼續閱讀

所有文章

即將推出

加入候補名單

留下你的電子郵件地址,Mono 可以下載時我們會通知你。

你會在哪裡使用 Mono?