你想在 Claude Code 裡開一個分身去做一件事,手上有三個做法:/subtask/fork、或者在某個 skill 的 frontmatter 寫 context: fork

它們的官方說明讀起來都像「開一個 subagent 幫你做事」,選錯了也不會噴錯,就是結果跟你想的不一樣。差別其實只在一個地方:那個分身知不知道你們剛才在幹嘛。

把這一點想清楚,該用哪個幾乎自己浮出來。所以先從這裡拆。

三種分身,差在記憶怎麼給

想像你手上有一疊卷宗,你已經跟同事討論了兩個小時。

/subtask 是把這疊卷宗影印一份給旁邊的同事。他知道前因後果,知道你們剛才否決過哪個方案,做完回來跟你講一句結論。它在同一個 session 裡跑,繼承你的對話。

/fork 是你自己站起來走到另一間會議室,帶著整份卷宗,從這個時間點分岔出去。原本那間會議室繼續開,新的那間也繼續開,兩邊各走各的路。它會複製整個 session 成一個新的背景 session,在 claude agents 裡有自己一列。

skill 的 context: fork 是叫一個外面的人進來,他手上只有一張工單。官方文件寫得很清楚:它不會有你的對話歷史,SKILL.md 的內容就是驅動它的整個 prompt。你們剛才吵了什麼,他完全不知道。

這三個選項的成本結構不一樣,晚一點會講到;但第一個判準永遠是這句:這件事需不需要知道我們剛才討論了什麼。

需要,而且結論要回到這條對話 → /subtask
需要,但我要另外開一條路走下去 → /fork
不需要,這是一個可以獨立說明清楚的任務 → skill 加 context: fork

現在講那個地雷:/fork 換過意思了

這一段是我認為這篇最該傳出去的部分,因為它會讓你在網路上看到的教學失效。

同一個指令名 /fork,在三個版本區間做三件不同的事:

版本 /fork 做什麼
v2.1.117 – v2.1.160 in-session fork,而且要設 CLAUDE_CODE_FORK_SUBAGENT=1 才有(除非伺服器端替你打開)
v2.1.161 – v2.1.211 in-session fork,預設就有
v2.1.212 起 複製整個 session 到一個新的背景 session;in-session 那個改名叫 /subtask

所以 2026 年上半年寫的教學說「用 /fork 開一個繼承對話的子代理,讓它在背景幫你寫測試」,這句話在 v2.1.212 之後執行會得到完全不同的東西:你會拿到一個獨立的背景 session,而你原本期待的那份結論不會回到這條對話裡。

還有一層更容易中的:agent view 被關掉的時候,/subtask 不可用,/fork 會退回去啟動 forked subagent。 也就是說同一個版本、同一台機器上,/fork 的行為會因為你有沒有關掉 agent view 而不同。你在 A 專案關了 agent view、在 B 專案沒關,兩邊打同一個指令會得到兩種東西。

順手講一個我自己的例子。我剛才查了一下本機,Claude Code 是 v2.1.222,但我的環境變數裡還留著這個:

1
2
$ env | grep CLAUDE_CODE_FORK
CLAUDE_CODE_FORK_SUBAGENT=1

這個變數只在 v2.1.117 到 v2.1.160 之間有意義,v2.1.161 之後那個功能預設就開了。它在我機器上一直躺著,什麼都沒做,也不會有任何警告告訴我它已經沒用。設定檔裡的遺物就是這樣累積的:當初為了打開某個功能而加,功能轉正之後沒人回頭刪。

所以寫任何 Claude Code 的筆記給自己或同事,記得把版本號寫進去。這件事以前是禮節,現在是必要條件。

額度:一個很容易忽略的差別

/subtask/fork 還有一個實務差別,跟記憶無關,跟預算有關。

Claude 每個 session 最多可以 spawn 200 個 subagent(v2.1.212 起)。要調高就設 CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION,沒有上限,但這個限制不能關掉。

算進這 200 個的東西比你想的多:嵌套的 subagent、fork、背景 subagent,還有 workflow 裡的 agent 用 Agent tool 開出來的 subagent 都算。已經跑完的也照樣佔數字,它算的是累計不是同時。

然後是三個容易搞混的例外,值得記一下:

你自己下的 /subtask 會花同一份預算,但這個上限只擋 Claude 用 Agent tool 開的 subagent。所以 Claude 撞到 200 之後,你自己打 /subtask 還是開得起來,它永遠不會被這個限制擋住。

/fork 開出來的 session 完全不算。它是獨立的背景 session,有自己的預算。

workflow script 用 agent() 開的也不算,workflow 有自己的 per-run 上限。

這件事在長 session 裡會變成真的問題。你如果讓 Claude 大量派工,跑了半天之後它可能開始說開不出 subagent 了,而你手動 /subtask 反而還能動。看到這個現象不用懷疑環境壞了,那是設計。

背景執行的隱藏代價:工具集會變窄

從 v2.1.198 開始,subagent 預設在背景跑,Claude 只在需要結果才繼續往下走的時候才放前景。這個預設值多數時候是對的,你不用等它。

但背景 subagent 用的內建工具集比前景的小。這裡有個例外很關鍵:fork 對話的那種 subagent 不受這個縮減影響。 換句話說,/subtask 在背景跑,工具集是完整的。

而 skill 的 context: fork 就沒這個豁免。官方文件講得很明白:skill 的 subagent 是一個常規 agent type,「fork 對話的 subagent」那條例外不涵蓋它,所以背景執行的 forked skill 拿到的是那組較窄的工具集。如果你的 skill 步驟需要那組之外的工具,就得在 frontmatter 設 background: false,讓它在呼叫的那個回合裡等結果跑完。

background: false 需要 v2.1.218 或更新的版本。在 v2.1.218 之前,forked skill 一律阻塞當前回合,沒有選擇。所以你如果看到某篇文章說「forked skill 會卡住你的回合」,那句話在舊版是對的。

還有一個權限行為值得知道:背景 subagent 遇到權限提示不會自動拒絕,它會把每一個提示浮到你的主 session 來問你。這是 2026 年 6 月下旬那批版本(v2.1.185 到 v2.1.193)改掉的,改之前是自動拒絕。你如果曾經讓背景任務跑一整晚、回來發現它卡在某個步驟沒動,值得先確認自己在不在舊版。

什麼時候它們反而是壞選擇

判準的另一半是知道什麼時候不要用。

/fork 查一件小事是最常見的浪費。你只是想確認某個函式在哪裡被呼叫,開一個獨立背景 session 的代價是:結論不會回到這條對話,你得自己去 claude agents 那一列點進去看,看完還要手動貼回來。那不如直接 /subtask,它做完會把結論送回你面前。

/subtask 做你其實想盯著的事也不對。它在背景跑,你不會逐步看到它在幹嘛,只會拿到結果。如果這件事你會想中途喊停或改方向,讓 Claude 在前景做,或者你自己做。

context: fork 套在只有準則的 skill 上是最隱形的一種浪費。官方文件特別提醒:context: fork 只對有明確指令的 skill 有意義。如果你的 skill 內容是「這個專案的 API 慣例是這樣」這類準則,沒有任務動詞,那個 subagent 會收到一堆準則、沒有可執行的 prompt,然後回傳一段沒有意義的輸出。錢照付,時間照花。

還有一個容易踩的搭配:context: fork 可以用 agent 欄位指定 agent type,而內建的 Explore 和 Plan 會跳過 CLAUDE.md 跟 git status 來省 context。所以 agent: Explore 的 forked skill 看到的只有 SKILL.md 的內容加上它自己的 system prompt,你專案 CLAUDE.md 裡的規矩它一條都不知道。這件事在你需要它遵守專案慣例的時候會咬人。

順便說,我這台機器上一個用 context: fork 的 skill 都沒有。查了一輪才發現:我寫的 skill 幾乎都需要讀當下的對話脈絡,或者需要完整工具集去寫檔案。這大概也說明了 context: fork 的定位——它適合的是那種「講清楚任務就能獨立完成」的活,而那種活比想像中少。

給你一個明確的預設值

不要每次都重新想。預設用 /subtask,因為它同時滿足最常見的兩個需求:知道前因後果,而且結論會回到你眼前。

只有兩種情況才換掉它。你想從現在這個點分出一條平行的路、兩邊都要繼續走下去,用 /fork。你有一個能用一張工單講完、跟當下對話無關、而且會反覆執行的任務,把它寫成 skill 加 context: fork,順便挑好 agent type。

實際上手長這樣,任務直接接在後面,Claude Code 會用開頭幾個字替它命名:

1
/subtask draft unit tests for the parser changes so far

該補的誠實邊界:/subtask 的行為、200 額度的計算方式、背景工具集的例外,這些我是從官方 sub-agents 與 skills 文件讀出來的,本機版本 v2.1.222 我只實際確認了版本號跟那個沒用的環境變數。如果你的版本比 v2.1.212 舊,先打 claude --version,再決定要相信哪一段。


來源