aire.
·15 分鐘

Claude Fable 5.1 指南要摘要留六件事,Claude Code 在 CLAUDE.md 加一段就能交代

9 月 1 日隨 Claude Fable 5.1 上線的 prompting 指南,有一節把壓縮摘要該留的東西列成六項,包括講定的事、目前進度、答應過還沒做的事、名字數字日期這類難重建的細節。Claude Code 官方文件寫著,在 CLAUDE.md 加一段 Compact Instructions 可以控制壓縮保留什麼。照著加了六段,在舊 session 手動壓縮,摘要長出六段——一次觀察,不是官方承諾。

收進
本文涉及工具

事實分級:指南內容來自 Anthropic 開發者文件「Prompting Claude Fable 5.1」(2026 年 9 月 1 日隨 Fable 5.1 上線);Claude Code 壓縮機制來自 code.claude.com 的三頁官方文件(How Claude Code works、Explore the context window、How Claude remembers your project),都在 9 月 2 日重新核對過。「在 user 層 CLAUDE.md 加一段 Compact Instructions」的效果是同一天晚上一個 session 的一次觀察,官方文件沒有寫 user 層是否適用;摘要捏造數字的例子來自作者自己的工作紀錄,去掉了客戶與專案名稱。

9 月 1 日隨 Claude Fable 5.1 一起上線的 prompting 指南,開頭第一句先說舊 prompt 不用改也應該跑得好——「Your existing Claude Fable 5 prompts should perform well on Claude Fable 5.1 without changes」,接著才補一句,有幾個行為差異值得知道。整頁 16 個小節,形式一致:先描述你可能觀察到的症狀,再給建議做法,多數還附一段可以直接貼進 system prompt 的文字。頁面本身沒有標發布日,適用範圍寫的是 Fable 5.1 與 Mythos 5.1(供應現況見這篇)。

16 節裡最值得整段抄走的一節,標題是 Tell the model what to preserve in compaction summaries。指南說 Fable 5.1 對「明白告訴它摘要必須留下什麼」反應很好,然後把該留的東西列成六項,寫死在一段可以直接貼的指令裡:踩過的坑、放棄過的選項、講定的事、目前進度、還開著或答應過還沒做的事、難以重建的細節。

Claude Code 那邊,其實早就開好了對應的入口。how-claude-code-works 頁寫著,要控制壓縮期間保留什麼,可以在 CLAUDE.md 加一段 Compact Instructions,或者執行 /compact 時帶上焦點。9 月 2 日晚上照這句話加了六段進去,當晚在一個 7 月就開著的舊 session 手動下 /compact,摘要把六段帶回來了。

指南 16 節裡,多數建議是刪掉舊 prompt 裡的句子

指南開頭放了一份症狀索引,要人從符合自己觀察到的現象的那一節讀起。把 16 節攤平之後,形狀很清楚。

你可能看到的 指南的建議
長工具回合中間幾乎不報進度 先刪掉舊 prompt 裡壓制敘述的句子,例句是「hold all findings for the final response」;進度改走 progress-update thinking block,thinking.display 預設 "omitted" 時是空的,要設 "updates""summarized"
粗體變少,標題與清單也少了 舊 prompt 裡的反格式規則拿掉,或改寫成「什麼時候該用」
文字比 Fable 5 更密,句子更長、段落更少 貼指南給的「mannered prose」定義段;短版直接請它把那類文字全部拿掉,也常有效
引用檢索到的來源時整段照抄,卻沒標成引文 system prompt 放一個完整正例:一段來源留一句標記過的短引文,其餘每句都改寫
描述接下來要做什麼而不去做,或停下來問一個原請求已經涵蓋的步驟 貼「你正在自主運作」那兩段 system prompt
low effort 時較少呼叫搜尋與檢索工具,更常憑記憶回答 該回合把 effort 調高,或在 system prompt 加一句「認得名字不等於知道現況,照使用者的寫法搜一次」
整個檔案重寫,而不是改那幾行 給一句要求局部編輯的指令;結果通常一樣,但輸出 token 與時間會少
有時順手修了旁邊的 bug,或多 commit 了測試檔 給一段限定範圍的指令;指南寫,多出來的東西與被 commit 的測試碼會明顯變少,任務成功率沒有可量測的變化
資安分類器誤攔 假陽性比 Fable 5 上市時少,找原始碼漏洞是被允許的;較容易誤觸的三種是 compile-check 措辭、冷門語言、tool output 含 base64
coding 或 computer-use 迴圈裡一輪只呼叫一個工具 官方說一句 nudge 可以改善,並建議用 turn-scoped system message 每輪重貼
subagent 在跑的時候 lead agent 停著等 給指令讓 lead agent 繼續做,coding 任務平均完成時間會變短;指南也寫,模型還是常常選擇等待
xhighmax 時在思考裡先把長交付物寫過一遍 high;真要跑高 effort 就把 max_tokens 留夠,並附一段指令

四個方向可以合起來看:更安靜、更少粗體、更愛照抄原文、更會整檔重寫。更安靜的解法是把壓制敘述的舊句子刪掉,再打開進度更新的顯示開關。更少粗體的解法是把反格式規則改成「何時該用」。更愛照抄原文的解法是給一個完整正例,指南連正例的理由句都寫好了——一段來源留一句標記過的短句,其他每句話都重寫。更會整檔重寫的解法是一句要求局部編輯的指令。

這四個方向裡,只有前兩個是把 Fable 5 時代加的補丁拆掉,後兩個都要新增。整份指南 16 節數下來也是同一個比例:以刪為主的只有寫作密度與聊天格式兩節,其餘都在教你新增或調整。

effort 那節放在整頁最前面,講的是同一件事的另一面:預設是 highmedium 的結果大致等同 Fable 5,成本更低;low 時在每任務成本上常能跟 Opus 級與 Sonnet 級模型競爭,分數還更高。指南另外提醒,effort 的名稱在不同模型之間不對應同樣的思考量,換模型要重跑一次 sweep。

壓縮摘要要留哪六件事,指南把清單寫死了

這一節的第一句是說,長對話被壓縮時,Fable 5.1 對「被明白告知摘要必須保留什麼」反應很好。接下來的分工要看清楚。指南寫的是「Server-side compaction already does this」——server 端的壓縮已經在做這件事;在 client 端自己動手壓縮的人,才需要把後面那段指令貼進去。症狀索引裡對應這節的一行,描述的症狀是:client 端壓縮出來的摘要掉了限制、決定或確切細節。

那段指令要求摘要包在 <summary></summary> 標籤裡,目的寫得很具體:讓一個新的 context window 直接接手,不必重做已經做過的工作,也不必再被餵一次相關的限制與背景。然後是六項。

官方要求保留 白話
(1)出現過的困難與問題,以及當時怎麼處理 踩過哪些坑、怎麼繞過去的
(2)提過、試過、放棄的選項與原因 哪些路走過發現不行,為什麼不行
(3)被要求、決定、同意、排除,或被立為偏好、限制、邊界的事——原文要求「stated exactly」 講定的事照原話留,不要改寫成自己的話
(4)現在進度到哪 做完了哪些、正在做哪一件
(5)仍然開放、未解、已承諾、預期接下來要發生的事 還欠的東西
(6)難以重建的細節:名字、數字、日期、確切措辭、連結與參照——原文要求「kept exactly」 重查一次要花時間的東西,原樣保留

指令另外加了一句:這六項寧可寫長也要寫完整,其他部分則盡量精簡。還有一條規則很少人自己想得到。指南要求「Weight the two voices differently」——使用者說過、要求過、分享過、確立過的東西,要小心地貼近他自己的用字留下來;模型自己的解釋與推理則可以壓得很扁,壓到「結論是什麼、產出是什麼」就好,前提是上面六項一個都沒掉。

一份摘要裡有兩種聲音,一種要保鮮,一種可以脫水。這個切法比「摘要要簡短」有用得多,因為它給了刀往哪邊落的方向。

作者的判斷是,六項裡最常掉的是第 3 項和第 6 項:原話與數字。原因不難猜——摘要器是照著「講清楚這段對話在做什麼」的目標在寫,而原話與數字在敘事上是冗餘的,講定的事可以用一句概括代過,數字可以寫成「約幾萬」。偏偏續作的時候,能救命的就是那句原話跟那個數字,其餘的概括自己再讀一次程式碼就有了。

六項裡有兩項被加了 exactly 這個字,位置正好落在原話與細節上。

還有一點要先講明白:指南把這六項放在「在 client 端自己壓縮」的那段話底下。Claude Code 內建的摘要器是不是已經照這六項在跑,官方文件沒說;指南只寫 server 端壓縮已經在做,Claude Code 算不算 server 端,兩邊文件都沒有交代。

Claude Code 的 CLAUDE.md 裡可以加一段 Compact Instructions

how-claude-code-works 頁的 When context fills up 小節,寫了兩件事。第一件是壓縮的順序:先清掉較舊的 tool output,需要時再摘要對話。如果單一檔案或單次輸出大到每次摘要完立刻又把 context 塞滿,Claude Code 會在幾次嘗試之後停止自動壓縮並報錯。

第二件就是入口。官方寫,要控制壓縮期間保留什麼,可以在 CLAUDE.md 加一段 Compact Instructions,或者跑 /compact 時帶上焦點。同一小節還補了一句立場:使用者的請求與關鍵程式碼片段會被保留,對話早期的細節指示可能會掉,所以持續有效的規則要放進 CLAUDE.md,別靠對話歷史撐著。

至於壓縮之後每樣東西的下場,context-window 頁有一張表。

項目 壓縮後 官方原文
System prompt 與 output style 不變;本來就不屬於訊息歷史 Unchanged; not part of message history
專案根目錄的 CLAUDE.md 與未限定路徑的 rules 從磁碟重新注入 Re-injected from disk
Auto memory 從磁碟重新注入 同上
plan mode 裡寫下的計畫 從磁碟重新注入 同上
paths: frontmatter 的規則 讀到相符的檔案時才重載
子目錄裡的 CLAUDE.md 讀到該子目錄的檔案時才重載
讀過或改過的檔案 最多重讀 5 個,最近修改的優先
被叫用過的 skill 內容 重新注入,每個上限 5,000 tokens、總計 25,000 tokens,最舊的先丟
稍早由 hook 加進來的 context 跟對話其他部分一起被摘要 Summarized with the rest of the conversation
符合 compact 來源的 SessionStart hook Claude Code 會執行,並把輸出加進壓縮後的 context

這張表其實是一份分類法:哪些東西該寫進磁碟上的檔案,哪些東西只配留在對話裡。表上標為重注入的那幾類會依各自的限制回來(skill 內容有單項與總量的 token 上限,最舊的先丟);帶條件的那幾類——路徑規則、子目錄 CLAUDE.md、讀過的檔案——要等觸發或受數量限制;其餘留在對話裡的內容隨摘要處理,官方另外寫明使用者的請求與關鍵程式碼片段會保留。

同一頁還有幾條補充。超過 5,000 tokens 的檔案回來的不是內容,是一個路徑參照,介面上顯示 Referenced file。規則若要跨壓縮存活,做法是拿掉 paths:,或直接搬到專案根目錄的 CLAUDE.md。skill 被截斷時保留的是檔案開頭。自 v2.1.198 起,摘要請求會繼承 session 的 extended thinking 設定。

memory 頁講得更直接,一句話:「Project-root CLAUDE.md survives compaction」,壓縮之後 Claude 會從磁碟重讀並重新注入。同一頁的位置表把兩層分開列:user 層是 ~/.claude/CLAUDE.md,放跨專案的個人偏好;專案層是 ./CLAUDE.md./.claude/CLAUDE.md

要注意的是,官方在講「壓縮後會回來」的時候,點名的是專案根目錄的 CLAUDE.md 與未限定路徑的 rules。user 層的 ~/.claude/CLAUDE.md 沒有被點名;它算不算後者那一類、壓縮後會不會重注入,官方沒有寫。

手動控制的開關有四個:/compact 帶焦點;/rewind 選一則訊息,然後選擇從該處開始摘要、或摘要到該處為止;/autocompact 500k 改觸發點;/clear 直接換題。另外,大量閱讀的工作可以丟給 subagent,讓主線的 context 不要被吃掉。

一次觀察:user 層加了六段,手動 /compact 之後的摘要長出六段

9 月 2 日晚上,在 user 層的 ~/.claude/CLAUDE.md 加了一節 Compact Instructions(加進去的精確時刻沒有可核對的紀錄),要求摘要在內建內容之外,固定附上六段:

  1. 本次 session 開過的歸屬檔、樞紐檔、事實表與 SOP 的完整路徑,一行一個。
  2. 使用者親口下的裁定與禁止事項,逐字保留,不改寫也不縮短。
  3. 已經發出、要人動手的事,以及已經登記進待辦帳本的項目,標明哪些已結、哪些仍開放。
  4. 沒問過就自己決定的事,每條寫成「問題→預設值→猜錯的代價」。
  5. 數字只留來源,數值本身一律標成待重取。
  6. 未結事項與下一步,含還在跑的背景工作、工作樹路徑、暫存檔位置。

還加了一條格式要求:某一段沒有內容要寫「無」,不准整段省略。缺席要能跟「真的沒有」分得開。

21 點 32 分,在一個 7 月 12 日建立、之前已經壓縮過兩次、當晚仍然開著的 session 裡,手動送出 /compact,沒有帶焦點。21 點 35 分摘要回來,末尾長出了完整六段。

第一段是 8 條完整檔案路徑,記憶檔、排程腳本、狀態檔、當日歸檔各有幾條——對應的是「完整路徑,一行一個」那句要求。第二段是使用者三句原話,逐字,其中一句短到三個字。第三段是兩件要人動手的事,各標「已結」。第四段是三條代為決定的事,每條後面附上猜錯的代價。

第五段最有意思。數字每一項都列了來源——檔案路徑、log、URL——並標上「待重取」,但括號裡仍然附著摘要當時的舊值,行數、位元組數、評分都在。指令要求數值一律標成待重取,它照做了一半。第六段是未結事項,含觀察點與暫存目錄。

比較意外的是第三段。摘要在那裡自己標出了一條程序疏漏:兩件要人動手的事當晚都在對話裡結案了,卻沒有照規則登進待辦帳本,並且註明續作的 session 不需要補救、需要引以為戒。

這件事不是指令裡要求的。指令要求的是標明已結或開放。

摘要本身仍然含 Claude Code 內建的九段結構(Primary Request、Key Technical Concepts、Files、Errors、Problem Solving、All user messages、Pending、Current Work、Next Step)。六段是附在內建段落之後,不是取代內建摘要。

同一晚新掛的一個 SessionStart hook(matcher 是 compact)在同一個舊 session 也執行了,transcript 裡留著紀錄:耗時 31 毫秒,exit code 0。它印出來的卻是 fallback 句:讀檔帳本從 2026 年 8 月 26 日才開始記,該 session 的讀檔動作早於起算日,所以帳本裡查不到,只能請續作者以摘要的必重開清單為準。hook 的原理是兩步:拿 session 前 8 碼去各專案記憶目錄的讀檔帳本裡找這個 session 讀過哪些檔並列出;再掃待辦帳本的開放中段落,找出含該 session 碼的未勾項。任何一步失敗就靜默結束。

所以那晚真正接住東西的是摘要裡的六段,不是 hook。

必須把話說清楚:這是一次觀察。一個 session、一次手動 /compact、user 層的 CLAUDE.md。官方文件在講壓縮存活時點名的是專案根目錄的 CLAUDE.md 與未限定路徑的 rules,也另外寫明 CLAUDE.md 被當成 context 而不是強制設定,真要硬擋某個動作得改用 PreToolUse hook。user 層的內容壓縮後會不會重注入,官方沒有寫;Compact Instructions 這段的格式要求——標題字樣要不要精確、該放哪一層——官方也沒說。自動觸發的壓縮會不會長出同樣的六段,這次沒有觀察到。

所以「user 層加了會生效」是看到一次的現象,不是官方承諾。

還有一件事得講:這六段跟指南的六項不是同一份清單。官方的第 1、2 項——踩過的坑、放棄的選項——沒有出現在我們的版本裡;反過來,「數字只留來源」與「決定要附猜錯的代價」也不在官方清單上。作者認為差別在用途:官方清單放在 client 端 summarizer 那一段裡,寫法是通用的;這份是針對自己工作流做的檢查表,偏重的是「哪些東西不能被摘要器美化」。

摘要會過期也會捏造,所以數字只留來源

2026 年 7 月 24 日訂下的規則就一句:壓縮摘要是一份敘事快照,會過期,也會捏造。實例是一個庫存數字。某份摘要寫出 95,000,而該客戶專案的庫裡並沒有這個數字,正確值 77,052 就躺在那個專案的記憶檔裡——差距超過兩成,而且錯的方向是往上,看起來比實際更漂亮。

於是規則後面接一條硬的:凡是要對外交付、或要拿來做決定的數字,一律回頭對檔案或 API 重取,不引用摘要裡的數字。

把數字留在摘要裡,比把它刪掉更危險。刪掉會逼你回去查;留著會讓你以為查過了。

工作節奏上還有一條配套:重要段落收線的做法是先更新記憶,再開新 session,不靠一層又一層的壓縮續命——官方寫明 CLAUDE.md 與 auto memory 在每個新對話開始時載入,新 session 一開始讀的是磁碟上的正本;壓縮過的 session 接著讀的是摘要。這條跟切換 AI 服務時真正卡住人的那份交接是同一個問題的兩個面。真要壓縮後續作,壓縮完要做的第一件事是重開歸屬檔、核對關鍵數字。

/rewind 在這裡比 /compact 好用。官方給的能力是選一則訊息,然後從該處開始摘要或摘要到該處為止;實際用法是只砍掉失敗的那條尾巴,前面談定的東西原封不動,不用把整段對話都送去摘要一次。

快取讀取變便宜之後,指南自己說早壓縮未必划算

指南有一節在講對話歷史要維持 append-only,理由跟壓縮直接相關。2026 年 8 月 31 日之後建立的新帳號,Fable 5.1 的 thinking block 只在產生它的那個對話裡有效。前綴——system prompt、tool list、任何較早的訊息——改過再重送會回 400;或者設 thinking.block_binding.prefix_mismatch_behavior: "drop_block"(beta header thinking-binding-controls-2026-08-01),改成丟掉受影響的 block。指南寫,未來的模型預期會對全部帳號執行這項檢查,沒有給時程。「新帳號」這個限定詞現在還在。

會踩線的編輯有三種:每輪注入或移除提醒、就地摘要舊的回合、中途改 system prompt。指南建議改用 turn-scoped system message 與 mid-conversation system message,修剪則交給 server 端壓縮或 context editing。真要在 client 端自己壓縮,最簡單的形狀是整段歷史換成一則摘要訊息,加一個新的 user turn,其他都不重播。

節尾那句是這樣的:因為快取讀取現在便宜了(價格細節在這篇),為了省錢而提早壓縮,在 Fable 5.1 上可能不再是划算的取捨,所以指南要人「experiment with later compaction points」。語氣是「可能不再是」,不是「別再這樣做」。

多晚算晚,指南沒有給數字。這件事得自己量,而快取要讀夠幾次才回本,另一篇算過。壓縮點往後挪的前提,是摘要本身可信。自己在 client 端壓縮的人,六項清單先寫好,晚一點壓縮才有意義;清單沒寫就把壓縮點往後推,只是把同一場資訊損失延後發生。

自主運作 system prompt 的效果,指南說主要來自開頭第一句

指南裡另一段可以直接貼的文字,處理的是另一種失敗。沒有這段 nudge 的時候,模型有時會描述接下來要做什麼而不去做,或者停下來問一個原請求早就涵蓋過的步驟要不要執行。指南把這兩種現象的原句都寫進症狀描述裡了。

官方給的是兩段 system prompt,並寫明兩段一起用;如果需要限制 prompt 長度,就只用第一段,效果大部分還留著。第一段的開頭句是「You are operating autonomously」,後面接的是使用者沒有在即時看著、也不能在任務中途回答問題。指南自評,告訴模型「使用者沒在看」的這個開頭承載了大部分效果,要照原樣留著、不要改寫。

副作用官方也寫了:這段會讓模型比較不傾向針對模糊需求發問,要在自己的任務上檢查這個取捨值不值得。自主完成那段跟壓縮清單,是同一件事的兩面:一個防模型忘,一個防模型停。自主那段明說使用者不在即時看著;壓縮那段講的是讓新的 context window 接手時不必重講一次。兩者都在降低續作中斷的風險——沒人在看的時候,模型停下來等問題沒人回答,模型忘掉的東西也沒人補。

所以回到開頭那句。不用改的是 prompt;值得補的,是交代它壓縮的時候該留下什麼——自己在 client 端壓縮的人補進 summarizer 的指令,用 Claude Code 的人補進 CLAUDE.md。

給非工程師的一句話

把 AI 想成一個用記事本工作的人。本子會寫滿,寫滿了就得翻頁,翻頁的時候它會把前面幾十頁濃縮成一頁摘要,然後接著做。問題出在濃縮的那一步:它會照著「這段故事在講什麼」去寫,於是你當初講定的原話被改寫成大意,具體的數字被寫成「大約幾萬」,你說過不要碰的東西變成一句籠統的提醒。

現在有兩個新消息。一是 AI 的開發商公開了一份清單,寫明翻頁時該原樣抄下哪些東西——講定的事、數字、日期、名字、還沒做完的事。二是你可以在翻頁之前先把要求交代下去,讓它照著抄。

翻頁前先講清楚要抄什麼,翻頁後別直接相信它抄的數字。

這兩句得一起用。只做前一句,摘要會漂亮但仍然可能寫錯數;只做後一句,你每次都得從頭重講一遍需求。真正省時間的是前一句,真正省事故的是後一句。

常見問題

Claude Code 壓縮對話(compact)之後會保留什麼?

官方文件列了一張表。system prompt 與 output style 不變;專案根目錄的 CLAUDE.md 與未限定路徑的 rules、auto memory、plan mode 裡寫下的計畫會從磁碟重新注入;帶 paths: frontmatter 的規則與子目錄的 CLAUDE.md 要等讀到相符檔案才重載;讀過或改過的檔案最多重讀 5 個;被叫用過的 skill 內容會重注入但有 token 上限。稍早由 hook 加進來的內容,則是跟對話其他部分一起被摘要掉。官方另外寫明,使用者的請求與關鍵程式碼片段會留著,對話早期的細節指示可能會掉。

怎麼控制 Claude Code 壓縮時要留下什麼?

官方文件寫的做法有兩種:在 CLAUDE.md 加一段 Compact Instructions,或執行 /compact 時帶上焦點,例如聚焦在某一批改動上。另外 /rewind 可以選一則訊息,從該處開始摘要或摘要到該處為止,/autocompact 可以改觸發點。要提醒的是,這段該放在哪一層 CLAUDE.md、標題字樣要不要精確,官方沒說。放在 user 層有效的紀錄目前是一次觀察,不是官方承諾。

Fable 5.1 的 prompt 要改嗎?

指南開頭寫的是舊 prompt 不改也應該跑得好,但有幾個行為差異值得知道。實際翻完 16 節會發現,多數建議是刪句子而不是加句子:壓制敘述的句子、反格式規則、Fable 5 時代補的各種補丁,可以先拿掉再看行為。要新增的多半是指南寫好的幾段 prompt:自主完成、限制改動範圍、要求局部編輯而不是整檔重寫,以及在 client 端自己壓縮時補上摘要保留清單。

壓縮後的摘要可以直接相信嗎?

結構可以當續作的線索,數字不能直接用。摘要是一份敘事快照,會過期,也會生出來源裡不存在的數值——曾經有一份摘要寫出庫存數字 95,000,而正確值是 77,052。比較安全的做法是要求摘要在數字的位置列來源、標成待重取,續作時回頭對檔案或 API 重取一次;一次觀察裡,摘要照要求標了待重取,括號裡卻仍附著舊值,所以標了也不能拿舊值當依據。指南要求難以重建的細節原樣保留,方向是一樣的。

📚 收進你的工具

For AI Reading Era

把這篇文章交給你日常用的工具——做研究、整理筆記,或當 AI 的 context。

 
延伸閱讀
Claude Fable 5.1Prompt EngineeringClaude CodeContext CompactionCLAUDE.mdAnthropic
← 回到編輯室