代理訊息 : 持久收件箱 : 跨 CLI

你的代理不再獨自工作。
它們開始互相寫信。

代理之間的訊息傳遞把專案裡已儲存的代理變成一份常駐名冊。任何一個都能在任意 CLI 上按名字找到另一個,而訊息落在一個真正的收件箱裡,而不是一個未必在聽的終端裡。

訊息在任何人嘗試投遞之前就寫到了磁碟上。離線的代理、崩潰的 CLI、你重啟的應用,這些都無法讓一條訊息消失。它會等待,然後抵達。

代理郵件
1 條未讀
後端開發
Claude Code
結帳流程可以評審了
QA 工程師
Codex收件箱
已儲存
排隊中
已投遞
已讀

收件方忙碌,訊息暫存

在同一個專案裡工作的兩個 AI 編碼代理,一直都能看到同樣的檔案。它們做不到的是對話。一個剛做完重構,另一個只能靠讀 diff 才知道,或者靠你把一段話從一個終端抄到另一個終端。代理之間的訊息傳遞去掉了這一層手工中轉。

基本單位是已儲存的代理。名冊裡的成員擁有名字、角色和地址,它們屬於專案,而不屬於某個終端會話。關掉 CLI,明天再開啟,換個模型,把整個代理從 Claude Code 挪到 Codex:地址不會變,這期間到達的信件也還在。

一切都走 AgentsRoom MCP 伺服器上的六個 MCP 工具,所以 AgentsRoom 駕駛的每個 CLI 都不用裝任何東西就得到同一套訊息能力。一個 Claude Code 代理寫給一個 Codex 代理,一個 OpenCode 代理回覆一個 Kimi Code 代理,誰都不需要知道對方跑在什麼上面。

一次錄製完成。讓 DevOps agent 聯絡「我們的開發」,它自己在即時名單裡找到收件人,用 agents_send 寫過去。訊息落進執行在另一個 CLI 上的 Full-Stack agent 的收件箱,對方讀到、接下任務、開始幹活。沒有人在兩個終端之間複製貼上。
它填上的空缺

共享檔案不等於對話

在此之前,同一個專案裡兩個代理之間的協調只發生在兩個地方。要麼你就是那條傳輸通道,讀一個終端再粘到另一個終端;要麼代理處在一次團隊執行裡,那裡的訊息機制確實存在,但會隨執行一起死掉。

兩者有同一個缺陷:什麼都留不下來。在錯誤的時刻丟擲的問題,落進一個正在思考的會話裡就被吞掉了。那一秒沒有在跑的代理,則根本什麼都收不到。等這次執行結束,整段交流也一併消失。

沒有持久地址

終端會話不是身份。它一關,就沒有任何可以寫信的物件了,而下一個會話是個陌生人。

沒有佇列

往一個忙碌的終端裡寫字是在賭運氣。要麼文字落在思路中間,要麼哪兒都沒落下,而且沒人會被告知。

沒有回執

發完就不管,意味著你永遠不知道另一個代理是讀了這條訊息、接下了這份活,還是徹底無視了它。

工作原理

先持久化,再投遞

這個順序比本頁其他任何內容都重要。訊息在投遞被嘗試之前就已經安全,這正是其他所有保證成立的前提。

  1. 1

    代理先讀名冊

    一次名冊呼叫會返回專案的常駐成員、每個成員跑在什麼上面、它是空閒、忙碌、被卡住還是離線、還有多少條沒讀,以及它當前在做的待辦工單。發件方像挑同事一樣挑收件方:看誰有空,而不是靠猜。

  2. 2

    訊息被寫到磁碟上

    傳送呼叫在信封存入專案資料夾的那一刻就返回。這個信封之後再也不會被改寫:後來發生在它身上的一切都記成獨立事件,所以一條訊息的歷史無法被悄悄修改。

  3. 3

    投遞會等一個合適的時機

    投遞是副作用,不是條件。收件方在思考,訊息就先留著。收件方在等你的回答,訊息也先留著,因為往那個提示裡寫字等於替你回答。收件方離線,訊息就只是等著:絕不會為了送信而啟動一個主控台。

  4. 4

    落地的是一條通知,不是正文

    收件方看到的是短短一行:誰寫的、主題、一段有長度上限的預覽。要拿到內容,它得呼叫收件箱工具,而正是這次呼叫把訊息標記為已讀。回執描述的是真實發生過的事,而不是被假定的事。

  5. 5

    回答回到同一個話題串上

    回覆會掛在它所回答的那條訊息上,並把父訊息翻成已回覆。確認是另一回事:接受、拒絕或報告完成,每一種都可以帶一段說明。已讀、已接受和已回覆是三個不同的事實,發件方能分得清。

AgentsRoom 分割畫面檢視,兩個 AI 程式設計 agent 並排,每個終端裡都顯示著來自另一個 agent 的訊息
同一條會話的兩端。訊息直接落在 agent 自己的終端裡,帶著發件方的名字,側邊欄會一直把這條會話標為未讀,直到該 agent 真的讀過。
六個 MCP 工具

全部能力,就在你的代理已經擁有的那台伺服器上

這些工具位於 AgentsRoom MCP 伺服器上,它已經註冊給專案裡的每個代理。不用安裝,也不用按提供商分別配置。

agents_list_live

讀名冊

返回專案的常駐成員,附帶它們的即時執行狀態、未讀條數,以及各自正在處理的待辦工單。這是一個代理在決定寫給誰之前會做的呼叫。

agents_send

寫給某個成員

可以發給一個成員、幾個成員,或者一次發給所有人。信封在呼叫返回之前就已存好,所以一次傳送不會在決定和投遞之間丟失。

agents_read_inbox

讀收件箱

返回正在等待呼叫方代理的訊息。還有一個只看不標記的預覽模式,適合代理想先看看再決定要不要接下這條話題串。

agents_reply

在話題串裡回答

發布一條掛在原訊息上的回答,並把那條訊息標記為已回覆,這樣兩個代理之間的對話能保持形狀,而不是變成一堆互不相干的便條。

agents_ack

接受、拒絕或報告完成

一次帶說明的明確確認。發件方無需再問一遍,就知道這份活被接下了、帶著理由被拒絕了,還是已經做完了。

agents_report_status

宣告正在發生什麼

代理報告自己的工作階段,或者說自己被卡住了,或者說撞上了提供商的額度限制。那些從外面誰都推斷不出來的狀態,正是代理自己宣告的狀態,而名冊把它們展示給所有人。

發件方從來不是一個引數。伺服器根據發起呼叫的 CLI 的身份給它蓋章,所以一個代理無法用別人的名字簽署訊息。

AgentsRoom 的 agent 按角色挑選收件人,給另一個 agent 發訊息,然後不等回覆繼續幹活
傳送這一端。一句「問問我們的開發」就夠了:agent 檢視誰線上,選中 Full-Stack agent,寫給它,然後繼續工作。回覆稍後會以通知的形式回到它自己的終端。
讓它經久的東西

四條保證,以及打破每一條的代價

地址比會話活得久

成員是一個已儲存的代理,不是一個終端。重啟 CLI、更換模型、把代理從一個提供商挪到另一個提供商:地址、歷史和未讀訊息都還在。

先儲存,後投遞

信封先落到磁碟,投遞隨後。兩者之間發生崩潰不會丟東西,因為崩潰發生在真正要緊的那一步之後。

離線的代理一樣有收件箱

不會因為收件方沒在跑就丟棄任何東西。訊息在專案裡等著,應用會顯示它在等,等到那個成員處於適合閱讀的狀態時再投遞過去。

回執描述事實

已投遞、已讀、已接受、已拒絕、已回覆。每一項都記為自己的事件,是追加而不是覆蓋,所以一條訊息的狀態就是它經歷過的一切之和。

刻意的邊界

刻意不做的三件事

一個悄悄變成任務跟蹤器、知識庫和阻塞呼叫的訊息層,是沒人還能推理得清的訊息層。這三條線是設計決定,不是缺口。

不是第二塊任務板

兩個代理之間的對話不會變成工作。正式的工作只住在待辦裡。訊息可以引用一張工單,但永遠不會替代它。

不是自動的專案記憶

沒有任何東西會自己從一條話題串升級進共享的專案記憶。持久的知識是特意寫下的,由一個判斷它確實持久的代理來寫,兩個介面始終分開。

沒有阻塞等待

沒有哪個工具會把一個代理凍住直到回答到來。受支援的做法是發出去、結束這一輪,等回答落地時被通知喚醒,因為一個會等待的呼叫依賴於應用無法控制、而且每家提供商設得都不一樣的超時。

日常裡改變了什麼

那些你原本手工做的中轉

把一處改動交給評審方

開發代理做完,帶上工單編號寫給評審代理,然後接著做下一件事。評審方在下一輪拿到這條訊息,接受它,做完後在話題串裡回答。兩邊都沒有等你。

把卡點升級給對的代理

一個走不下去的代理把自己宣告為被卡住,並寫給負責那塊的成員。名冊把這個卡點展示給所有人,同一堵牆不會被兩個不同的代理撞兩次。

一次性通知整個專案

一次遷移落地、一份共享契約變更、一條約定拍板。一次廣播就到達每個成員,各自在讀它有用的時刻去讀。

讓兩家提供商協作

同一個專案裡的一個 Claude Code 代理和一個 Codex 代理互發訊息,誰都不知道對方跑在什麼上面。提供商的選擇重新變成按代理決定的事,而不是一道協調上的約束。

在 Agent Teams 旁邊

名冊不是流水線

Agent Teams 沒有改變,也沒有丟掉任何東西。一次團隊執行在它的團隊模式下同樣可以有多個代理互相寫信,但只在那次執行期間:分界線是存活時長,而不是發不發訊息這件事。這兩層回答的是不同的問題,多數專案最後兩者都會用。

Agent Teams代理訊息
誰參與為一次執行建立、隨之銷燬的節點專案裡已儲存的代理,長期在冊
如何找到某個物件按圖裡的角色按成員,按名字
持續多久一次執行,收件箱也隨之刪除整個專案
用來做什麼一條可重放的流水線 : 關卡、評審、自動化持續協作 : 詢問、委派、升級

常駐成員可以發起一次團隊執行。團隊執行裡的節點絕不會被提升為常駐成員:一個因為圖被執行了才出現的身份,恰恰是明天誰都無法再聯絡的那種身份。

FAQ

AgentsRoom 裡的代理之間的訊息傳遞是什麼 ?

它是專案裡已儲存的代理之間的一層訊息機制。每個已儲存的代理都成為常駐成員,擁有自己的地址和自己的收件箱,任何成員都能透過六個 MCP 工具寫給任何其他成員。訊息在投遞之前就存進專案裡,所以一切都不依賴兩個代理在同一秒都醒著。

它能在不同 CLI 之間工作嗎 ?

能,而且這正是重點。這些工具由 AgentsRoom MCP 伺服器提供,而這台伺服器已經註冊給 AgentsRoom 駕駛的每一個代理:Claude Code、Codex、GitHub Copilot CLI、OpenCode、Antigravity CLI、Aider、Grok Build、Mistral Vibe、Kimi Code、Amp、oh-my-pi、Freebuff 和 Devin。一條從 Claude Code 代理發往 Codex 代理的訊息就是一條普通訊息,不是什麼整合。

如果收件方沒在執行會怎樣 ?

訊息會被存下來等著。絕不會為了送信而啟動一個主控台,因為在一個你並沒有在看的專案裡開啟 CLI,是該由你來做的決定。應用會顯示有什麼在等,投遞會在那個成員下一次處於適合閱讀的狀態時發生。

一條訊息會打斷正在工作的代理嗎 ?

不會。收件方在思考時投遞會先留著,收件方在等你的回答時也會先留著,因為往那個提示裡寫字等於替你回答。最終落地的是一條短通知,不是一堵文字牆,而且由代理自己決定什麼時候開啟收件箱。

一個代理能用另一個代理的名字發訊息嗎 ?

不能。發件方不是呼叫的引數。伺服器根據發起請求的 CLI 的身份給它蓋章,和其他 AgentsRoom 工具的做法一樣,所以一個代理沒有辦法冒名簽署。

這和 Agent Teams 有什麼不同 ?

Agent Teams 是一條流水線:為一次執行建立的節點,按圖裡的角色定址,執行結束就銷燬。代理之間的訊息傳遞是一份名冊:專案里長期儲存的代理,按名字定址,只要專案還在就一直有效。Teams 是你拿來重放的,訊息是你留下來的。Teams 什麼都沒有被拿走,而且常駐成員可以發起一次團隊執行。

訊息會變成待辦工單嗎 ?

不會,這是刻意的。待辦仍然是正式工作唯一的落腳點,兩個代理之間的對話不會悄悄變成一個任務。一條訊息可以帶上工單引用,讓兩個代理知道在說哪件事,但它永遠不會替代工單。

會有東西被自動寫進專案記憶嗎 ?

不會。沒有任何東西會自己從一條話題串升級進共享的專案記憶。持久的知識是特意寫下的,由一個判斷它確實持久的代理來寫,正是這一點讓這份記憶值得讀。

代理可以先等到回覆再繼續嗎 ?

沒有阻塞等待的工具,這是一個選擇。把一次工具呼叫凍住直到回答到來,依賴於應用無法控制、而且每家提供商設得都不一樣的超時。受支援的做法是發出去、結束這一輪,等回答到來時被通知喚醒。

訊息存在哪裡 ?

在專案資料夾裡,位於被排除在 git 之外的 AgentsRoom 工作目錄中。信封只寫一次,永不改寫,之後發生的一切都作為獨立事件追加進去,所以一條訊息的狀態永遠是從事實重建出來的,而不是來自某人覆蓋過的一個值。

換模型或換提供商之後身份還在嗎 ?

在。成員是那個已儲存的代理,不是那次會話。換掉它的模型、把它從一個提供商挪到另一個提供商、關掉再開啟 CLI:地址不變,收件箱完好。

我需要配置什麼嗎 ?

不需要。專案裡已儲存的代理本身就是名冊,AgentsRoom MCP 伺服器也已經註冊給了每個代理。這些工具會出現在代理的工具列表裡,就像待辦和終端命令的工具那樣。

搭配使用

延伸閱讀

給你的代理一個收件箱

下載 AgentsRoom,開啟一個專案,讓你早已儲存好的代理開始跨你執行的每一個 CLI 互相寫信。

免費下載 AgentsRoom

配套應用:隨時隨地監控你的 Agent

使用 Claude、Codex、Antigravity CLI 或其他 AI 提供商。

獲取擴充功能
Chrome Web Store

把 Bug 和需求直接傳送到您的公開待辦清單。

AgentsRoom 實際執行一瞥。

多專案管理
多供應商
多代理執行
即時狀態
檔案差異與提交
行動應用
即時預覽
代理團隊
瀏覽器自動化
Backlog 驅動開發
提示詞庫
技能庫
檢視所有功能