文章

Claude Code context 滿了要換 session:Clawdline 的交接,跟直接傳訊息差在哪

為什麼 Clawdline 要做交接、它的機制是什麼,以及它跟「直接傳一則訊息給另一個 session」差在哪:分界線是對方有沒有你的脈絡。

一個 session 的 context 是會用完的。工作沒有。

你可以壓縮它,然後繼續在同一條對話裡走下去——那通常就夠了。但有時候你要的不是「同一個 session 撐久一點」,是讓另一個 session 接手整條工作線:它沒有參與過前面任何一段,卻要能夠繼續做判斷,而且要能跟你意見不同。

為什麼需要一個機制,而不是把摘要貼過去

把摘要貼過去,接手的那一邊只拿到結論,拿不到結論所依據的東西。

而結論正是最不該直接繼承的部分。一份摘要是某個 session 對自己工作的自述——跟「我修好了而且測試全過」是同一種東西。接手方如果只有這份摘要,它唯一能做的就是相信它;一旦前面有一步推錯了,那個錯誤會以「已經確認過」的身分繼續往下傳,而且愈傳愈難查。

所以交接要搬的不是摘要,是出處:哪個檔案的哪一行、哪個指令跟它的輸出、哪一份放在不會消失的位置的文件。摘要可以重寫,出處不行。

Clawdline 的交接是什麼

交接(handoff)是一份固定八個標題的文件,加上一個新開的 session。

八個標題依序是:OBJECTIVE、KEY DECISIONS、CURRENT STATE、REFERENCES、CONSTRAINTS & PRINCIPLES、OPEN THREADS、IMMEDIATE NEXT STEP、VERIFICATION。真正在做事的是第四個和最後一個——REFERENCES 是出處清單,VERIFICATION 是幾個答案刻意不在這份文件裡的問題。

接手方拿到的指示只有一句話:去讀那份文件。然後文件自己要求它做兩件事——把 REFERENCES 走一遍、真的打開;然後用那些來源回答 VERIFICATION,不要用這份交接文件回答。

第二條才是整個設計。用文件本身去回答驗證問題,等於請摘要確認摘要;用來源回答,接手方的理解才不依賴交出方的理解。我們自己有過一次:一個 session 從路由表推出一條錯的規則、告訴另一個 session,第二個回覆說它讀過參考文件、確認無誤。兩個都錯,而那次交換看起來跟驗證一模一樣。

還有兩件事值得講明:

  • 它開的是 root,不是子任務。 沒有逾時、沒有要交回去的結果檔、不佔任何名額。它是一個普通的 session,就在你的清單裡。
  • App 只讀一件事:那份文件在不在。 裡面寫了什麼它不看。這是刻意的——內容是給接手的 session 看的,不是給 parser 看的——但這同時也是誠實的界線:沒有任何東西驗證一份交接文件寫得好不好。

用文件回答

上:交接文件 下:驗證問題。答案從文件來,再回到文件——摘要確認摘要。

用來源回答

先走到右邊的來源:檔案、行號、指令的輸出。答案從那裡回來。

這個圈是整個設計要打斷的東西。一份交接文件是某個 session 對自己工作的自述——用它自己去回答驗證問題,等於請摘要確認摘要,那條線永遠走不出左邊。接手方的理解要不依賴交出方,答案就得從外面繞一趟回來。

交接,跟直接傳訊息給另一個 session

Clawdline 兩件事都做得到,而且它們不能互相代替。

傳一則訊息 交接
對象 一個已經在跑、已經有自己脈絡的 session 一個為此新開、完全沒有脈絡的 session
它搬的是 一句話:狀態、發現、協調事項 一整條工作線,以及繼續判斷它所需要的出處
成本 幾乎沒有。對方的下一輪多讀一行 一個全新的 session,從零讀起
誰負責 不移轉。工作還是原本那個人的 接手方自己對著人回報,在自己的分頁裡
你要先寫什麼 那一句話 那八個標題,而且 REFERENCES 要真的能打開

分界線是「對方有沒有你的脈絡」。

有的話,傳訊息就夠了,而且明顯划算:對方已經知道你在講什麼,你只要補上它不知道的那一件事。這也是為什麼那條路徑刻意做得很窄——它送的是一則訊息,不是一份工作;它不會替對方接下任何責任,也不會繞過寫入範圍的宣告。

沒有的話,訊息就沒有用了。你可以送一百則,對方還是不知道三小時前那個決定是怎麼來的。這時候要的是交接,而它貴的地方也很誠實:你得先把那份文件寫出來,而且要寫到一個陌生人打得開的程度。

會出事的組合是拿訊息去做交接的工作——一條「你接手一下」的訊息送給一個沒有脈絡的 session,它會照做,而且會用它自己編出來的前提照做。

它做不到的事

它不會記錄那些 REFERENCES 有沒有被打開,也不知道驗證問題是用來源回答的還是用文件回答的。Clawdline 知道的只有:一次交接建立了,而第一句話有沒有送達那個被指名的 session。

把差別寫下來,不會讓中間那一步自己發生。它只是讓那一步的缺席變得看得見——而一個下午被一條錯的規則吃掉,通常不是因為沒有人查,是因為沒有人看得出那條規則原本站在什麼上面。

還有一個性質常讓人意外:交接是狀態的複製,不是所有權的移轉。 交出去之後,原本那個 session 不會消失;把一條線分岔出去平行跑,你會有同一棵樹裡兩個地位相等的 root。

接著看哪裡

工作流程指南依序講了 project 列、派工、排程與交付。

如果你要的其實是另一件事——把一件範圍明確的任務交出去、而且自己還要收回結果——那是派工,不是交接,它有自己的一層限制。

常見問題

Claude Code 的 context 滿了:該壓縮,還是交接給新的 session?
同一件事還要自己做完就壓縮;要換一個 session 接手整條工作線,就交接。真正的差別在「接手的那一邊自己驗得動什麼」。壓縮過的對話會留下結論、丟掉結論依據的東西——同一個 session 還記得的時候沒差。交接開的是一個什麼都不記得的 session,所以它帶的是出處而不是摘要:哪個檔案的哪一行、哪個指令跟它的輸出、一份放在不會消失的位置的文件。Clawdline 的交接文件有八個標題,真正在做事的是 REFERENCES 和 VERIFICATION——接手方要把前者走一遍、再用那些來源回答後者,而不是用文件本身回答,因為用文件回答等於請摘要確認摘要。
交接跟直接傳一則訊息給另一個 session,差在哪?
差在對方有沒有你的脈絡。有的話,傳訊息就夠了,而且便宜得多:它把一句話送進一個已經知道你在講什麼的 session,不移轉任何責任,工作還是你的。沒有的話,訊息就沒有用——你送一百則,對方還是不知道三小時前那個決定是怎麼來的。交接會為此開一個 session 並把出處交給它,代價是一個從零讀起的新 session,加上你得先把那份文件寫出來。會出事的組合是拿訊息去做交接的工作:一句「你接手一下」送給一個沒有脈絡的 session,它會照做,而且會用它自己編出來的前提照做。
有沒有東西會檢查一份交接文件寫得好不好?
沒有,而這件事在你依賴它之前就該知道。Clawdline 對一次交接只讀一件事:那份文件在不在,裡面寫什麼它從來不看。它會記錄交接建立了、以及第一句話有沒有送達那個被指名的 session;但它不會記錄那些 reference 有沒有被打開,也不知道驗證問題是用來源回答的、還是用文件本身回答的。那些是這套流程支持、但仍然要靠人維持的紀律——這比「這次交接已被驗證」是小得多的主張,也是唯一為真的那個。