點擊上方藍字關注我,加個??標不迷路。
各位小伙伴們大家好,我是 cxuan。
前兩天,Claude 發布了一個新功能,現在兩個 session 之間可以相互通信了。
先給大家看一下官方發布的演示效果。
如果你任務做到一半,想要重開一個窗口,一般這種情況下會重新介紹一下自己的身份,自己想要干啥,但現在不用了,你可以直接指派 Claude Code 來把這活干了就好。
我覺得這個功能很有用,希望 Codex、WorkBuddy、Trae、Qoder 等 Agent 趕緊推進下。
A 社還發布了一份官方文檔,我看完了,給大家聊聊這篇文章都說了啥。
官方列了四種比較典型的場景。

第一種移交發現結果:當一個 session 發現了某種重大變更,Claude 會把結果總結給相關 session,不用你自己再解釋一遍。
第二種是協調平行 Worktree:幾個 session 在不同 Worktree 里處理同一個 Repo,其中一個完成并提交了修改,可以直接通知其他 session 。
第三種是獲取長任務狀態:比如一個 session 在跑遷移或測試,完成之后可以向你正在使用的 session 遞交報告。你也可以讓當前 session 主動問它做完沒有。
第四種是跨機器回復。
這里要注意,另一臺機器或者 Claude Code on the Web 上的 session,目前只能回復已經到達的 message,不能主動發起一段新的跨機器通信。
利用消息傳遞機制,可以在你自行啟動并掌控的獨立會話之間進行交互。下面是幾種容易混淆的場景,Claude Code 都有單獨的功能。

? 想在另一個終端恢復同一段對話,用 resume;
? 想讓 Claude 創建并監督一組團隊協作成員,用 agent teams;
? 想在一個地方查看和引導多個 session,用 agent view;
? 想在手機或另一臺設備上親自操控 session,用 remote control;
? 想把 CI 結果或聊天消息推送進 session,用 channels。
這幾個功能看起來有點像,但他們做的事情不一樣。
我剛開始就理解錯了,我以為傳的是 context ,但其實不是。
session 之間傳遞的是一段 message,并不會把完整的 Conversation history、文件和 Context 一起傳過去。
官方在開頭就專門強調了。

官方給出的 message 例子是:
Schema migration finished: the new column is tenant_id, and rebasing on main is safe now.
這句話就告訴了對方三件事:遷移已經跑完了,新字段叫 tenant_id,你那邊現在可以放心 rebase。
另一個 session 收到的就是這條通知。message 里還會帶上發送方的名字和一個回信地址,這樣對方處理完之后,知道該把結果回復給誰。
至于遷移具體跑了哪些命令、改了哪些文件,為什么字段最后叫 tenant_id,另一個 session 一概不知道。
Claude Code 沒有把整個 session 打包壓縮。它只是讓 Claude 根據當前對話,挑出對方需要知道的內容,重新寫成一條 message 發過去。
如果你希望對方知道更多細節,就得明確讓 Claude 一起寫進 message 里。
我看到官方文檔里提到 /resume 的時候,又有一個疑惑:跨 session 傳遞 message,和恢復 session 有關系嗎?
沒關系。
跨 session 發送的 message 相當于兩個人之間傳遞小紙條,而 resume 相當于打開原來的筆記本。
Claude 在跨 session 發送 message 時,會使用兩個工具:ListAgents 和 SendMessage。

ListAgents 用來發現它能找到誰,SendMessage 根據名稱把 message 發給其中一個 session。
言簡意賅之:一個負責找,一個負責傳。
用戶不需要自己調用這兩個工具。直接對 Claude 說:
Ask the session running in my other terminal whether the migration finished
中文可以這樣說:
問一下另一個終端里的 session,遷移是否完成了。
Claude 會找到目標,自己撰寫實際發出去的 message。
官方還給了另一個 Prompt:
Explain what we just did to the session working on the payments API
中文可以寫成:
把我們剛才做的事情,解釋給正在處理 payments API 的 session。
這兩段都是你發給當前 Claude 的 Prompt。另一個 session 最終收到什么,要看 Claude 根據當前 Context 寫了什么。
而且Claude 也可以主動發送。
比如它剛做了一個會影響其他 Worktree 的修改,或者解決了另一個 session 正在等的問題,它可以在發現之后主動提醒對方,不用等你主動提醒。
message 到達接收方時,如果 Claude 正在執行任務,它會在兩次工具調用之間讀取,不會把正在運行的任務打斷。
接收方處于空閑狀態時,Claude Code 會直接使用這條 message 啟動新的一輪。
Claude 會自己尋找目標,所以發送 message 之前,你不用先做任何操作。
如果想看看它當前能聯系到誰,可以輸入:
/list-agents
也可以使用它的別名:
/peers
列表里會出現三類對象。

? 當前 session 里面運行的 Subagent;
? 同一臺機器上的其他 Claude Code session,包括后臺 session;
? Remote Control 連接后能看到的其他機器或 Web session。
在同一臺機器上,Claude Code 會為每個 session 綁定一個 inbox socket。
session 會在本地文件中注冊自己。ListAgents 通過這些文件找到其他 session,SendMessage 再把 message 發到對方的 socket。
本機 session 之間的 message 不會經過 Anthropic 服務器。

如果 session 在你的另一臺機器上,message 會經過 Anthropic 服務器,再通過那臺機器的 remote control 連接到達指定的 session。
如果是 Claude Code 的 web 網頁版,會直接通過 Anthropic 服務器進入云端 session。
需要注意的是:上面這兩種跨機器情況都只能回復,不能由當前 session 主動發起一段新的通信。 |
Claude Code 不會直接掃描整臺電腦上運行了哪些 session。
每個 session 啟動之后,會在當前文件系統里登記名稱和 socket 地址,同時創建一個接收 message 的 inbox socket。
可以把注冊文件理解成通訊錄,把 inbox socket 理解成收件箱。
容器和宿主機默認使用兩套獨立的文件系統。雖然它們運行在同一臺電腦上,但雙方看到的是兩本不同的通訊錄,找不到對方登記的地址,自然也沒辦法把 message 送進對方的收件箱。
如果兩個 session 都運行在同一個容器里,它們能看到同一份注冊文件,也能訪問對方的 socket,就可以正常通信。
如果你希望 message 離開當前機器之前必須經過確認,可以通過設置:
{
"isolatePeerMachines": true
}
打開之后,即使 session 使用的是 bypassPermissions,跨機器 message 發送前也會請求批準。本機 session 之間發送 message 不受這個設置影響。
兩個 Claude 能相互通信之后,權限就成為一個需要考慮的問題
Claude Code 會明確告訴接收方,這條 message 來自另一個 session,不是用戶本人。

所以另一個 session 不能替你批準權限,也不能要求接收方修改 CLAUDE.md、權限設置和其他配置。
message 里面如果寫了 /compact,接收方只會把它當成普通文本,而不會直接執行。
接收端會使用 crosssessionInbound 來決定收到 message 之后怎么處理。

收到消息后,有三種處理方式。
accept 是直接交給 Claude,hold 是先暫存起來,refuse 是直接丟掉。
如果沒有顯式設置,Claude Code 會比較發送方和接收方的權限模式。
如果兩邊屬于同一類權限模式時會正常送達。
如果權限類別不一樣時,message 會先 Hold 暫存起來,等待用戶批準。
官方文檔里還有一個沒那么起眼的地方。
使用 claude -p 啟動的非交互 session,也會像普通 session 一樣綁定 inbox socket。

使用 claude -p,也會出現在 /list-agents 中,也可以接收其他 session 發來的 message。
跨 session message 要求 Claude Code v2.1.224 或更高版本。
目前支持 macOS、Linux 和 WSL 2,不支持原生 Windows。
滿足條件之后不用手工開啟,直接輸入 /list-agents 或者 /peers 檢查一下就可以了。
如果命令無法識別,先執行:
claude --version
然后再看平臺和 Provider 提供商。
如果命令能用,但 message 沒有送到,需要檢查接收端的 crosssessionInbound、SendMessage 權限,以及對面是不是一個只能回復的遠端 session。
如果想完全關閉接收,可以把 crosssessionInbound 設置成 refuse。
如果想把發送和查看名單也一起關閉,可以在 permissions 中拒絕 SendMessage 和 ListAgents。
{
"permissions": {
"deny": ["SendMessage", "ListAgents"]
},
"crosssessionInbound": "refuse"
}
這里需要注意, |
另外,當前跨 session message 只支持純文本。
而且 Claude Code 會限制重復發送,短時間內收到完全相同的 message 會直接丟棄。已經接收、正在等待 Claude 閱讀的 message 最多 50 條。
我還是那句話,希望 Codex、WorkBuddy、Trae、Qoder 這些 Agent 趕緊推進下這個功能。
如果這篇文章你覺得還不錯,謝謝你的三連,也希望可以轉發給同樣關注 AI / 科技 / 開發效率的朋友。 我是 cxuan,我們下期再見。
資料:
? Claude Code:《message your other Claude Code sessions》。
? Claude Code:《Resume a session》。
更多歷史文章可以閱讀
Claude Opus 5 的系統提示詞也被扒了,真會玩兒啊。
Pi + DeepSeek-v4-Flash,用著也太爽了。
打假!無限子彈爽用 GPT-5.6
速度太快了!本地可以跑 DeepSeek-V4-Flash 了
Codex 接入 DeepSeek-V4-Flash,絲滑的一批