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 任務平均完成時間會變短;指南也寫,模型還是常常選擇等待 |
xhigh/max 時在思考裡先把長交付物寫過一遍 |
跑 high;真要跑高 effort 就把 max_tokens 留夠,並附一段指令 |
四個方向可以合起來看:更安靜、更少粗體、更愛照抄原文、更會整檔重寫。更安靜的解法是把壓制敘述的舊句子刪掉,再打開進度更新的顯示開關。更少粗體的解法是把反格式規則改成「何時該用」。更愛照抄原文的解法是給一個完整正例,指南連正例的理由句都寫好了——一段來源留一句標記過的短句,其他每句話都重寫。更會整檔重寫的解法是一句要求局部編輯的指令。
這四個方向裡,只有前兩個是把 Fable 5 時代加的補丁拆掉,後兩個都要新增。整份指南 16 節數下來也是同一個比例:以刪為主的只有寫作密度與聊天格式兩節,其餘都在教你新增或調整。
effort 那節放在整頁最前面,講的是同一件事的另一面:預設是 high;medium 的結果大致等同 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(加進去的精確時刻沒有可核對的紀錄),要求摘要在內建內容之外,固定附上六段:
- 本次 session 開過的歸屬檔、樞紐檔、事實表與 SOP 的完整路徑,一行一個。
- 使用者親口下的裁定與禁止事項,逐字保留,不改寫也不縮短。
- 已經發出、要人動手的事,以及已經登記進待辦帳本的項目,標明哪些已結、哪些仍開放。
- 沒問過就自己決定的事,每條寫成「問題→預設值→猜錯的代價」。
- 數字只留來源,數值本身一律標成待重取。
- 未結事項與下一步,含還在跑的背景工作、工作樹路徑、暫存檔位置。
還加了一條格式要求:某一段沒有內容要寫「無」,不准整段省略。缺席要能跟「真的沒有」分得開。
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。