文章

十個 Claude Code session,只打開一個:狀態讓你做得到什麼

Clawdline 的每個 session 狀態都對應一個動作,所以一份清單就答得出哪一個要回答、你還欠著什麼、哪一個分頁可以關掉,而且不用打開任何一個。

十個 Claude Code session 開著,九個是安靜的。有一個停在你還沒讀到的問題上。有一個二十分鐘前就做完了。有一個在等另一個 session,什麼都不需要你。

每個狀態都對應一個動作,所以這份清單從外面就答得出來:哪一個要回答、你還欠著什麼、哪一個分頁可以關掉。

十個 session,只打開一個

每個狀態都要通過同一條檢查:一個狀態,一個明確的動作。「忙碌中」過不了,「安靜很久了」也過不了,那量的是你的掃描器,不是那份工作。

留下來的每一個都寫成指示。

這一列寫著 意思 你要做的
🙋 在等你回答 有一輪對話停在人身上 現在去回答。唯一會推播的狀態,也是清單裡唯一的橘色
📥 欠一個決定 別的事照跑,但有一件事欠著 把它決掉或清掉。它不推播;它會變舊,而舊就是風險
⏳ 等另一個 Session 要等別的 session、等檔案釋出,或等它自己派出去的 child 通常不用做什麼。一直不動的話,要有人去把它解開
🔜 自行推進中 某個事件、某個時間,或它自己啟動的東西會推它 什麼都不用做。跟上面那個不同,這個不會卡住
執行中 它正在跑 什麼都不用做,那一行會說它在做什麼
📭 可接新工作 它說自己可以接工作 可以派東西給它。這不是「做完了」的宣稱
狀態未知 兩邊都沒有正面的證據 沒有任何事在要求你
✓ 已交付,等待驗收 一份帶著證據的結果送到了 去驗收。可能還沒落地
✓✓ 已驗收完成 那個 task 的範圍已經落到目標上 關掉之前,另外看「能不能關」那個標記

狀態詞彙是那張表的參考版本,讀懂 Session 清單講瀏覽器裡同一組標記。一列給你四個彼此獨立的答案,為什麼是四個是另一篇的事。

在等別人的那一列,你不用再去戳它

畫面一安靜就發通知,一兩個 session 的時候夠用,session 開始互相依賴之後就不夠了。一個在等你回答、一個在等另一個 session,兩個一樣安靜,要你做的事卻相反。

真正把時間還給你的是沙漏那一列。它卡在別的 session、卡在檔案釋出,或卡在自己派出去的 child,所以你不用每隔幾分鐘去看它動了沒。

核准 production 部署claude~/code/beaconttys009🙋在等你回答 · 現在要部署嗎?
審查匯入規則claude~/code/lanternttys007⏳等另一個 Session · 等 migration 結果
驗證發佈路由codex~/code/orchardttys016已交付,等待驗收
檢查接入的舊終端機codex~/code/harbourttys021狀態未知 · 暫時讀不到終端機畫面

Session 清單裡的四列。這裡每一個 Project、標題與 tty 都是為了這一頁編出來的。

最安靜的那一列,是身上什麼都沒有的那一列。橘色只花一次,花在要人回答的那一列上。沙漏那一列也在等,但等的是另一個 Session,所以它不要求你任何事,畫出來也就不像在要求任何事。最後一列連圖示都沒有,因為根本沒有證據可以讓它有圖示。

從中午就在等同一個 session 的那一列是另一回事。那個是卡住了,而卡住只有人解得開。

直接去驗收,而不是自己重建發生過什麼

session 說自己做完了,這不是證明。但它仍然很有用:那是一句掛著名字的宣稱。沒有它,你要從輸出裡重建發生過什麼;有它,你只要去查一件事。

所以兩個打勾只認證據。一個 session 永遠不能自己宣告工作完成。它可以宣告自己「可接新工作」或「自行推進中」,那一列會印成 session 自己的說法。宣告「已交付」或「已驗收」會被指名擋掉,這樣那句宣稱就不會被當成查核本身。已交付、已審查、已落地本來就是三件不同的事。

分得出哪個分頁真的能關

「可接新工作」是說它能收工作,「可以安全關閉」是說它能結束而且不弄丟東西。拿其中一個去讀另一個,就是有人關掉一個還欠著東西的分頁的原因。

所以關閉有自己的標記,四個值。App 叫得出一項未了結的責任,不要關。只有那個 session 說得清它在本機做過什麼,去問它。兩者都成立而且證據綁在現在這個 process 上,可以按。證據過期或含糊,重新讀一次。

第四個蓋過第一個。過期的證據會讓那份清單完不完整變成未知,而不完整的清單會被當成檢查表讀。

派工出去,還看得見自己揹著什麼

你派出去的工作會落回你自己那一列。底下還有活著的 Child Session 的 Root,不管自己的終端機在做什麼,都揹著一項責任。

整理圖片匯入規則codex~/code/meadowttys014Root · 1📭可接新工作 · 自述🔒 還有 1 項未了結
跑匯入的 migration 測試claude~/code/meadowttys022Child Session執行中 · 61 個測試跑到第 14 個

一個 Root,跟它派出去的 Child Session。兩邊的名稱、路徑與 tty 都是為了這一頁編出來的。

Root 自己的終端機是安靜的,而它仍然是你不能關的那一列。它說自己可以接新工作,這是真的。那個鎖是另一個問題的另一個答案,而把鎖放上去的是下面那一列縮排的東西——別人的、還活著的工作,掛在這個 session 底下。

關掉那個 Root 會取消它派出去的每一個還活著的 task,我們自己就這樣在十四秒內結束過四個跑到一半的任務。所以這次關閉會帶走什麼,是按下去那一刻才算的,你不接受那份清單就不關。

指名每個孤兒由誰接手,仍然是人的事。Child Session 不能再往下派,那是另一篇在講的界線;刻意停掉一個,跟把一個弄丟,也不是同一件事。

這份清單仍然不會告訴你的事

「狀態未知」在這裡很常見,而且本來就該常見。它不是失敗,也不是離線;它說的是證據不完整,而一列灰色斜體不要求你任何事。

「自行推進中」則是刻意很難進去:session 沒講出下一步、也沒指出一個不是人的推動者,就會被擋掉。真正的自行推進很少,它哪天變常見,那是規格出錯。

至於跑去問未知那一列在做什麼的稽核,還不存在。這條檢查倒是可以直接拿去用在你現在的清單上:替每一個狀態說出唯一那個動作。

常見問題

Claude Code 開很多個,怎麼知道哪一個在等我回話?
你需要的是「在等人」跟「在等別的東西」被分開,因為這兩件事在終端機裡長得一模一樣:都是一個停止輸出的畫面。Clawdline 給前者自己的狀態、自己的圖示、清單裡唯一的橘色,而且只有它會推播。其他都刻意安靜:在等另一個 session 結果的、正在跑的、說自己可以接新工作的、以及 App 目前讀不到畫面的,都會待在那裡不要求你任何事。這就是分開的用意——一份五列都在喊的清單,你很快就不會再讀它了。
session 沒動靜,是做完了還是卡住了?
沒動靜什麼都不代表,而把「沒動靜」直接當成「做完了」是最常見的丟工作方式。一個安靜的畫面可能是在想、可能從中午就在等你回答、可能已經交付了一份沒人驗收的結果,也可能是讀的人看不到足夠的東西來判斷。Clawdline 不把安靜分級成結論就是為了這件事:一個狀態要能講出你該做什麼,而安靜什麼都沒講。沒有正面證據的時候,那一列會寫「狀態未知」並且不要求你任何事,而不是從一個缺席裡生出一項待辦。
Claude Code 的 session 什麼時候可以直接關掉?
「可接新工作」跟「可以關掉」是兩個問題,答案也常常不一樣。前者是說這個 session 還能收指令;後者是說結束現在這個 process 不會弄丟任何東西——沒有還活著的子任務、沒有還沒落地的東西、沒有人卡在它佔著的檔案上、也沒有它欠你的決定。一個 session 完全可以安靜地停在提示字元前面、真的能接新指令,同時上面每一項都還揹著。Clawdline 把這兩件事做成那一列上兩個分開的標記,而且關閉按鈕擋在後面那一個,所以「這個能不能關」永遠不是從「終端機看起來很閒」推出來的。