Claude Code /btw 旁支問題:問一句現場的事,答案不進對話歷史
你正在跟 Claude 改一個結帳流程,對話已經拉得很長。它前面讀過好幾個檔案,也解釋過為什麼挑了某個做法。這時你突然想不起來,剛剛那個設定檔叫什麼名字。
(這是我設想的處境,不是我的親身經歷。)
這種問題很小,答案其實早就在對話裡了,你只是懶得往上捲。但你第一時間想得到的做法,每一種都有點不划算。
先想到的三條路
最直覺的是直接在主對話裡問一句。答案有了,可是你的問題和它的回答都變成對話歷史的一部分,之後每一輪都帶著這兩行。一個跟結帳流程無關的小問題,就這樣躺進了主線。
第二條是另開一個 session 去問。乾淨是乾淨,但新的 session 什麼都不知道,剛剛那個檔案它根本沒讀過,你得先把現場重講一遍。
第三條是派 subagent。官方文件對 subagent 的描述是它有工具、而且從收到的 prompt 開始,不是從你這場對話開始。你要問的是「它已經知道的事」,卻派了一個要重新去找的人。
這三條都在處理同一個彆扭:我要的是一個有現場、但不留紀錄的問法。
它怎麼切進來
/btw 就是為這件事做的。之前在〈Claude Code Context 管理攻略〉裡提過它,那一篇只用一小節帶過;這篇是補完整版。文件的原句是:
Use
/btwto ask a question about your current work without adding to the conversation history.
寫法很簡單,用的就是文件裡那個範例:
1 | /btw what was the name of that config file again? |
它回答的材料只有對話裡已經有的東西:你的訊息、它的回覆、它跑過的工具結果。問答不會進對話歷史,在終端機裡顯示成一個可以關掉的 overlay。旁支問答存在記憶體裡,離開 Claude Code 就沒了,按 x 可以先清掉較早的幾輪。
這裡有一句我自己的推論,文件沒有直接寫成保證:因為旁支問答不進歷史,主對話的內容就不會被它改動,所以前綴快取不會因為你問了這一句而失效。這是我把「不進歷史」和 prompt caching 文件那句「前綴比對是精確的,前面一改,後面全部重算」湊在一起得出的,標成 [推測]。
這篇所有關於 /btw 的行為,包含 overlay、按鍵、f 轉 fork、重播筆數,都是我讀官方文件整理的。我沒有實際開 TUI 跑過一次 /btw,所以沒有任何一句可以寫成「我試過」。
一個容易誤會的地方:它沒有工具
很容易以為 /btw 是一個更輕量的「問 Claude」,什麼都能做,只是不留紀錄。文件講的剛好相反:
side questions answer only from what is already in context. Claude can’t read files, run commands, or search when answering a side question.
文件還補了一個細節。如果 Claude 硬把工具呼叫寫成文字,答案結尾會附一句說明,告訴你什麼都沒有被執行。
這會直接改變你該怎麼問。「剛剛那個設定檔叫什麼」可以問,因為它讀過。「這個檔案現在內容是什麼」就不該問,它不能重新去讀,只能回它 context 裡已經有的那一版。如果那個檔案後來被改過,答案會不會過期,文件沒有明說,我也沒驗證,所以我只把它當成一個要小心的地方。
官方把分工寫成一句話:
Use
/btwto ask about what Claude already knows from this session; use a subagent to go find out something new.
前面那三條路,現在各自歸位。問它已經知道的事用 /btw,要它去找新資訊才派 subagent。想帶著整段現場去試另一條路,那是 fork 的事,細節在〈fork 已經不是你以為的那個 fork〉。overlay 裡按 f 可以直接把這一問一答轉成背景的 forked subagent,文件說這只在本地 session 可用。
20 筆和 5 筆,是兩件事
旁支問題不是每次都從零開始。文件寫的是,後面的旁支問題看得到前面的旁支問題:Claude Code 每次提問會重播最新的 20 筆問答,直到你清掉它們。
另一個數字很容易混進來。畫面上,你最新的 5 筆較早旁支問題會以暗色清單顯示在目前答案上方,更早的只顯示一個數量。
20 是送給模型的量,5 是畫面顯示的量,兩個口徑不同。你在畫面上只看到 5 筆,不代表模型只看到 5 筆。至於按 x 清掉之後,那些問答是不是就不再被重播,文件說「直到你清掉」,我推測是,但沒有驗證。
工作中也能問,以及按鍵
Claude 還在回答主問題的時候也能跑 /btw,它獨立執行,不打斷主回合。它看得到到目前為止的整段對話,只看不到 Claude 正在寫的那則回覆。這對一般指令是不同的待遇:文件說,在 Claude 回應中送出的一般指令會被排隊,等這一輪結束才執行。不過指令文件列出的「立即執行」名單沒有包含 /btw,也沒有明說它排不排隊,我以互動模式那一頁的 “even while Claude is processing” 為準。
overlay 的按鍵,我只挑最常用的幾個,其餘以文件為準:
1 | Space / Enter / Escape 關掉答案,回到輸入框 |
在不同版本,有幾個行為會不一樣,這些數字都是文件內文逐字寫的:
- 在 overlay 裡切換前後答案的
Shift+Left/Shift+Right,需要 v2.1.257 以上;v2.1.187 到 v2.1.256 之間,按的是單純的Left/Right。 - 打開某個 subagent 的 transcript 後,
/btw會從那份 transcript 回答,你可以問它剛剛做了什麼,需要 v2.1.314 以上。 - VS Code 擴充套件的聊天面板裡,
/btw開的是面板,不是 overlay,擴充套件要 v2.1.227 以上,更早的版本沒有/btw。
它還沒解掉的
成本這一塊,文件只寫了一句:對話的 prompt cache 還是 warm 的時候,旁支問題除了答案本身,只花很少的額外成本。「很少」是多少,文件沒有給數字,我也不能替它寫成保證。
快取多久算 warm,是另一份文件的事:前綴在閒置一段時間後過期,每次命中都會重設計時;預設依帳號方式而定:文件表格寫訂閱方案在方案用量內是一小時,用 usage credits、API key 或雲端供應商則是五分鐘。但 /btw 的請求算哪一種快取、有沒有真的命中主對話的快取,文件沒有寫。所以「隔了很久再問一句 /btw 一定很便宜」這種話,我不會寫。
模型是不是跟主對話同一個、答案有沒有長度上限,文件也沒寫。
回到那個檔名
開頭那個結帳流程,照這篇的做法,是打一行 /btw 問檔名,看完按一下 Escape。不用往上捲,也不用開新 session,主線的對話沒有多出任何一行。如果答案讓你想順著查下去,按 f,那一問一答會帶著現場變成一個有工具的分身。
我的立場
我的用法會很窄:/btw 只拿來問對話裡已經有的東西。一旦我發現自己想問「現在實際是什麼樣子」,那就是在叫它去找新資訊,該換 subagent。這條界線要是被推翻,我就重畫:文件改了寫法,或日後有人驗出 /btw 其實能讀檔,邊界就不在這裡了;它的問答若被發現會影響主對話的快取,「不進歷史」這句話的價值也得重新打折。
原文來源:Interactive mode - Claude Code Docs(Side questions with /btw)、Commands、Subagents、Prompt caching


















