# RecursiveMAS：讓多個 AI Agent 別再打字，直接交換向量


<!--more-->

## 前言

現在的 multi-agent system（MAS）幾乎都長同一個樣子：Agent A 生一段文字，丟給 Agent B，B 讀完再生一段文字丟給 C。這個設計很自然，因為 LLM 本來就是吐文字的東西。但它其實把一件很浪費的事情變成了預設值。

論文《[Recursive Multi-Agent Systems](https://arxiv.org/abs/2604.25917v1)》（UIUC、Stanford、NVIDIA、MIT 合作）的主張是：**Agent 之間根本不需要看懂人類的文字**。既然接收端也是模型，那就直接把最後一層的 hidden state 傳過去就好，中間那段「投影到十幾萬維詞表、逐字解碼、對方再重新 embedding 讀進來」的來回全部可以省掉。

省掉之後，還多送一個附加價值：向量是連續的，所以整條溝通路徑變成可微的。整個 Agent 團隊可以被當成一張大的計算圖來做端到端訓練——而且只需要訓練 0.31% 的參數。

{{< admonition abstract "Key Takeaways（TL;DR）" >}}
- **溝通媒介從文字換成向量**：Agent 之間直接傳遞最後一層 hidden state（潛在思考），省掉投影到詞表、逐字解碼、對方重新 embedding 的三重開銷。
- **溝通路徑變成可微分的**：透過帶殘差的 RecursiveLink（Inner 負責自我循環、Outer 負責跨模型翻譯），整個 MAS 可以被當成一張計算圖，用兩階段訓練（個人預熱 + 團隊協同）做端到端最佳化。
- **只訓練 0.31% 的參數**：LLM 主體全程凍結，13.12M 參數的 RecursiveLink 撐起整套系統，準確率反而比 LoRA、full-SFT 都高。
- **多繞幾圈反而更快**：省掉巨大的詞表投影與重新 prefill，讓 RecursiveMAS 在 \( r=3 \) 時比文字版遞迴快 2.4 倍、省 75.6% token。
{{< /admonition >}}

這篇文章會把這套機制從頭拆一遍：溝通媒介怎麼換、跨模型的維度怎麼對齊、兩階段訓練怎麼設計、以及一個乍看反直覺的結果——明明多做了好幾輪推論，為什麼反而比文字版更快。

## 文字當溝通媒介，到底貴在哪裡

### 痛點一：每講一個字都要查一次巨大的字典

LLM 生文字是 auto-regressive 的。每生一個 token，都必須把隱藏層向量（維度 \( d_h \)，常見約 4096）投影到整個詞表空間（\( |V| \)，常見 10 萬到 15 萬）。因為 \( |V| \gg d_h \)，這一步在中間溝通上會產生 \( O(m|V|d_h) \) 的成本。

換個比喻：兩個外星人明明有心電感應，卻被規定必須把腦中的想法用地球人的打字機一個字一個字敲出來，對方收到後再把文字翻譯回腦波。中間那兩層翻譯是純粹的損耗——因為接收端根本不是人類。

### 痛點二：離散文字切斷了反向傳播

文字是離散的，這件事直接把神經網路最依賴的反向傳播鏈條剪斷了。

就算你用一些數學技巧（例如 softmax 軟近似）硬把文字空間變得可導，論文的 Theorem 4.1 也證明了：只要經過多輪反覆溝通，梯度會無可避免地指數級衰減為 0。

拿企劃案傳閱來想比較好懂：如果 Agent A 印成紙本給 Agent B，最後老闆說企劃案很爛，這股「退件的怒氣」很難沿著紙本精準追溯到 A 到底哪一句話想錯了。但如果大家是在同一份雲端文件上工作（連續的潛在空間），就能一路追蹤回去修正。

結果就是：我們沒辦法把整個 Agent 團隊當成一個統一的個體來做系統級的聯合優化。Agent A 永遠不知道自己該怎麼改。

### 痛點三：想讓團隊變強，只剩兩條爛路

過去要讓 MAS 變強，選項大致只有兩個。改 prompt，治標不治本，模型本身沒有變聰明；或者把團隊裡每個模型（動輒 7B、70B）拆開來各自做 full fine-tuning，光是 VRAM 和運算成本就完全不切實際。

而且就算你把每個 Agent 都單獨練強了，也不代表他們組隊之後就會有默契。缺的是一種輕量的方法，專門用來訓練「團隊合作」這件事本身。這也是為什麼像 [ChatEval](../chateval/) 這種讓多個 Agent 靠文字互相辯論的框架，依然逃不開上述三個痛點——溝通媒介沒有換，痛點就還在。

## 核心概念：把 hidden state 直接當成「想法」

{{< image src="architecture.png" alt="RecursiveMAS 的整體架構圖：Agent A1 透過 Inner Link 自我循環產生潛在思考向量，再經 Outer Link 轉換後拼接進 Agent A2 的輸入序列，最後一個 Agent 才解碼成文字，右側標示 Looping 表示整個流程會繞回起點。" caption="圖一 — 整體架構。注意右下角那個 Looping 標記：資訊傳完一輪不是就結束了，最後一個 Agent 的思考會再餵回第一個。（來源：原始論文。）" >}}

標準推論流程裡，模型最後一層產生的 hidden state \( h \) 會被投影到詞表，變成「蘋果」這種具體的字。RecursiveMAS 的做法是把這一步整個拿掉，直接把 \( h \) 當成 Agent 的**潛在思考（latent thought）**——一個高維向量，承載的語意比一個離散的 token 豐富得多。

這帶來的關鍵性質是可微。梯度可以穿透溝通媒介，從 Agent B 一路流回 Agent A。

第二個核心觀念是**把 Agent 當成一層網路**。不要把每個 Agent 看成獨立個體，把它看成一個超大號 Transformer 裡的一個 block：Agent A 是前幾層，Agent B 是中間層，整個 MAS 組成一張統一的運算圖。論文把這個過程形式化成 \( S^{(0)} \to S^{(1)} \to \dots \to S^{(n)} \)，系統狀態隨著遞迴圈數不斷精煉。

那為什麼要繞圈？就跟人遇到難題會「再想一遍」是同個道理。透過重複遞迴，系統可以在**不增加任何參數**的前提下，用時間換取更深的推理深度。

## 架構：RecursiveLink 怎麼搭

Agent 之間傳遞資訊靠的是 RecursiveLink，它有兩種形態。

{{< image src="recursivelink-design.png" alt="Inner 與 Outer RecursiveLink 的結構對照圖：兩者都是 Linear、GELU、Linear 的三層堆疊加上殘差連接，差別在於 Outer 版本的殘差路徑上多了一個線性投影層。" caption="圖二 — Inner 與 Outer 的差別只有一處：Outer 的殘差路徑上多了一個投影矩陣，用來對齊不同模型的維度。（來源：原始論文。）" >}}

### Inner RecursiveLink：大腦內部的電梯

當 Agent 處在「憋著不說話、繼續想」的模式時，它需要一個機制把深層的想法送回淺層的輸入。論文稱之為 dense-to-shallow transition。

$$\mathcal{R}_{in}(h) = h + W_2 \sigma(W_1 h)$$

\( W_1 \)、\( W_2 \) 是輕量線性層，\( \sigma \) 是 GELU。

拿電梯來想：模型頂層產生的 \( h \) 是高度抽象的「結論」，\( \mathcal{R}_{in} \) 這台電梯把它從頂樓運回一樓，翻譯成輸入層看得懂的特徵分佈，模型才能基於這個結論繼續往下想。

實際跑起來是這樣的循環：產生第 1 個向量 → 過 \( \mathcal{R}_{in} \) → append 到輸入序列 → 產生第 2 個向量。整段過程**完全沒有文字產生**，輸入序列後方會慢慢累積 \( m \) 個連續的潛在思考向量。

### Outer RecursiveLink：跨模型的翻譯官

當 Agent A 要交棒給架構完全不同的 Agent B，會撞到兩個障礙：維度可能不同（例如 2048 對 4096），語意空間也不一樣。Qwen 的腦波 Llama 聽不懂。

$$\mathcal{R}_{out}(h) = \mathbf{W_3} h + W_2 \sigma(W_1 h)$$

跟 Inner 版本比，多的就是那個 \( W_3 \)，負責物理維度的線性投影。

比較容易被誤解的是接收端怎麼吃這些向量。**不是取代，是融合**：Agent B 仍然保有自己的 system prompt 和原始問題，系統把 B 的文字 prompt 轉成 embedding 之後，在預留的 slot 位置把 A 傳來的 \( m \) 個向量拼接進去。論文的 prompt template 裡就有 `{Latent Thought Embeddings}` 這樣的佔位符。

### 殘差連接是定海神針

那個不起眼的 `+ h`，是整套系統能撐過多輪遞迴訓練的關鍵，理由有兩層。

**語意層面**：原本的 \( h \) 已經帶有很強的語意。如果不加 \( h \)，一個隨機初始化的 \( \mathcal{R} \) 網路會把這些資訊直接毀掉。加了之後，網路只需要學「分佈的微小偏移」，學習難度大幅下降。

**數學層面**：在遞迴系統裡，梯度要繞好幾圈、經過數十個 Agent。若沒有殘差，連鎖律的連乘效應會讓梯度迅速歸零。有了殘差，

$$\frac{\partial (h+F(h))}{\partial h} = 1 + F'(h)$$

那個 **1** 保證了就算旁邊那條變換路徑 \( W_2\sigma(W_1 h) \) 完全沒學到東西，錯誤訊號仍能原封不動流回上一個 Agent。這其實是 Theorem 4.1 的另一面：同一個定理先說明離散文字擋不住梯度衰減，再說明連續空間配上殘差就擋得住。

這不是嘴上說說，作者有做對照：

{{< image src="table-design-ablation.png" alt="一張四列的表格，比較 1-Layer、Res+1-Layer、2-Layer、Res+2-Layer 四種 RecursiveLink 設計在三個基準上的準確率，帶殘差的兩層版本在三個基準上都最高。" caption="表一 — RecursiveLink 的設計消融。同樣層數之下，有沒有殘差的差距相當明顯。（來源：原始論文。）" >}}

## 訓練：先練個人基本功，再練團隊默契

{{< image src="training-pipeline.png" alt="兩階段訓練流程圖：上半部是每個 Agent 平行進行的 inner-loop 預熱，以回歸損失對齊潛在思考與真實分佈；下半部是整個 MAS 展開多輪遞迴的 outer-loop 協同訓練，藍色箭頭為前向傳遞、紅色為反向傳播。" caption="圖三 — 兩階段訓練。上半部每個 Agent 各練各的，下半部整個系統展開一起練。（來源：原始論文。）" >}}

如果 RecursiveLink 是硬體，訓練演算法就是賦予它靈魂的軟體。作者拆成兩階段。

### 第一階段：Inner-loop 預熱

在把 Agent 串起來之前，得先讓每個 Agent 學會「隱形寫字」——讓 Inner Link 輸出的向量，在語意上精準對齊真實的單字。

用的是 teacher forcing。就像教練在池邊扶著你的手練划水：預熱階段不會讓模型真的去吃自己產生的錯誤向量，而是給它讀標準答案，讓它在正常狀態下學習映射。

具體來說，當模型處理到第 \( t \) 個字、產生隱藏狀態 \( h_t \) 時，強迫 \( \mathcal{R}_{in}(h_t) \) 要長得像**下一個字**的 embedding：

$$\mathcal{L}_{in} = 1 - \cos(\mathcal{R}_{in}(h_t), \text{Emb}(y_{t+1}))$$

用餘弦相似度而不是 L2，是因為在向量空間裡「方向」才代表核心語意。

這一階段跑完，模型就學會了憋氣思考：沒開口說話，但產出的每一粒向量都精準承載了下一個字的語意。

### 第二階段：Outer-loop 協同優化

基本功練完，接著是全系統實戰。這時候沒有教練扶著，A 產生的向量直接丟給 B，B 再丟給 C，甚至繞回 A。

流程是：系統依照預設圈數（例如 \( r=3 \)）進行純向量的遞迴傳遞 → 直到最後一圈、最後一個 Agent 才吐出文字答案 → 與標準答案比對算 cross-entropy loss。這份 loss 代表整個團隊這三圈合作下來的總體誤差。

### 梯度累加與信用分配

這是工程和數學結合得最漂亮的一段。因為中間傳的全是連續向量，loss 產生的梯度可以沿著計算圖跨越不同 Agent、跨越不同遞迴圈數，一路倒流回起點——本質上就是 RNN 訓練裡的 BPTT（backpropagation through time，沿著時間軸把網路展開再做反向傳播）。

這裡有個實作細節值得單獨拎出來：在三圈的運算中，**同一個 OuterLink 被使用了很多次**，會產生好幾組梯度。根據多元連鎖律，框架會把各圈產生的梯度自動加總（`grad += new_grad`）。意義在於，這讓 OuterLink 被迫學成一個「全能翻譯官」：無論在討論初期（第 1 圈）還是收尾期（第 3 圈），都得提供夠精準的翻譯。

信用分配也是這套機制自動完成的。如果最後答錯了，梯度會告訴系統是第 1 圈 Agent A 的計畫寫太爛，還是第 2 圈 Agent B 審查太馬虎，然後精準修正那些扯後腿的連結參數。

### 成本：只訓練 0.31% 的參數

{{< image src="table-cost-analysis.png" alt="一張三列的表格，比較 LoRA 訓練、Full-SFT 與 RecursiveMAS 的峰值 GPU 記憶體、可訓練參數量、估計成本與平均準確率，RecursiveMAS 在四項指標上都最好。" caption="表二 — 整個 LLM 主體全程凍結，訓練的只有 RecursiveLink 那 13.12M 個參數。（來源：原始論文。）" >}}

整個訓練過程中，幾十億參數的 LLM 主體是**完全凍結**的。真正被訓練的只有 RecursiveLink，13.12M 個參數，佔比 0.31%。峰值 GPU 記憶體 15.29 GB，估計成本 4.27 美元，而平均準確率反而比 LoRA 訓練和 full-SFT 都高。

這是很典型的四兩撥千斤：不動模型本身，只教它們怎麼互相講話。

## 推論：為什麼多做了那麼多次推論反而更快

這是整套設計最違反直覺的地方。系統在潛在空間裡繞了好幾圈、每圈每個 Agent 都要跑 \( m \) 次推論，怎麼會比傳統 MAS 快？

原因有三個，而且都很具體。

| 傳統 text-based MAS | RecursiveMAS |
|---|---|
| 每走一步都要投影到 15 萬維的詞表矩陣，\( O(\|V\|) \) | InnerLink 只是 \( d_h \times d_h \)（如 4096×4096）的小矩陣，運算量少了數十倍 |
| 要產生數百個 token 才能把一段推理講清楚 | 潛在步數 \( m \) 設在 80 步左右就足以承載完整語意 |
| 下一個 Agent 收到文字後要重新 embedding、重新 prefill | 向量無縫插入，省掉重新編碼與預填充 |

第一點是最大宗的節省。傳統模型每產生一個 token 都要付一次巨大的 LM head 投影，RecursiveMAS 把這筆開銷整個換成小矩陣運算。

第三點常被忽略但很實在：文字版每交棒一次，接收端都得把那段文字重新 tokenize、重新 embedding、重新跑一次 prefill，等於同一份資訊被編碼兩遍；向量是直接插進去的，這筆完全省掉。

至於第二點的 80 步，不是隨便挑的：

{{< image src="figure-latent-length.png" alt="一張折線圖，橫軸是潛在思考長度 m 從 0 到 128，三條曲線分別是 MATH500、GPQA-D、LiveCodeBench 的準確率，三者都在 m 約 64 到 80 之後趨於平緩。" caption="圖四 — 潛在思考長度的消融。三個基準都在 64 到 80 步左右進入平原期，再加下去效益有限。（來源：原始論文。）" >}}

### 不同協作拓樸怎麼接

**Mixture style（混合型，多對一的星狀拓樸）**：總結者的 prompt 裡設有數個 slot（像是 `{Math_Latent}`、`{Code_Latent}`），不同專家的向量各自過自己的 \( \mathcal{R}_{out} \) 轉換後同時填進去，Summarizer 一次前向傳播就能讀完所有專家的腦波。而且是雙向的——下一圈開始時，Summarizer 的總結向量會廣播回所有專家，讓他們根據上一輪的集體共識修正自己的方向。

**Deliberation style（深思熟慮型，過程中要呼叫外部工具）**：這裡有個根本矛盾——潛在空間不講話，但外部工具只看文字。解法叫**延遲解碼（late decoding）**：前面幾圈 Tool-Caller 和 Reflector 完全處在憋氣模式，只用向量把「要搜尋什麼、要寫什麼 code」的邏輯先對齊好；只有最後一圈，Tool-Caller 才切換模式、用 LM head 吐出真實文字（例如 `<search>...</search>`），這時外部工具才介入。

說白了就是三思而後行。它避免了模型在文字空間裡不斷嘗試、報錯、修正的 token 浪費，在腦中先校對過一遍，確保最後下筆時一擊必殺。

整個推論流程收攏起來是這樣：

```
① Input              問題轉為 embedding sequence
② Agent Internal     跑 m 次推論，經 R_in 產生 m 個潛在向量並 append
③ Cross-Agent        m 個向量經 R_out 翻譯，拼接進下一個 Agent 的指令序列
④ System Recursion   繞行 r 次大圈
⑤ Final Output       最後一圈、最後一個 Agent 改用 LM Head 逐字解碼成文字
```

## 實驗結果

### 效率與準確率不再是蹺蹺板

{{< image src="table-main-results.png" alt="一張大表格，比較 Recursive-TextMAS 與 RecursiveMAS 在三個遞迴圈數下、六類任務上的準確率、執行時間與 token 用量，RecursiveMAS 在每一組設定下都同時更準、更快、更省。" caption="表三 — 主結果表。三個區塊分別是遞迴 1、2、3 圈，最右欄是相對於文字版的改善幅度。（來源：原始論文。）" >}}

以 \( r=3 \) 為例，跟文字版遞迴（Recursive-TextMAS）比：

| 指標 | Recursive-TextMAS | RecursiveMAS |
|---|---|---|
| MATH500 準確率 | 85.8% | **88.2%** |
| 執行時間 | 6,010 秒 | **2,320 秒**（2.4 倍加速） |
| Token 用量 | （基準） | **少 75.6%** |

比單點數字更值得注意的是趨勢：**遞迴圈數愈多，RecursiveMAS 的成本優勢愈誇張**。文字版每多繞一圈就得多付一輪完整的解碼開銷，時間和 token 都是往上疊的；RecursiveMAS 把溝通壓力轉移到極輕量的向量空間，多繞一圈的邊際成本小得多。

{{< image src="figure-token-reduction.png" alt="三張並排的長條圖，分別對應遞迴第 1、2、3 圈，比較 RecursiveMAS 與 Recursive-TextMAS 的 token 用量倍率，隨著圈數增加，差距從平均 34.6% 拉大到 75.6%。" caption="圖五 — Token 節省率隨遞迴圈數放大：第 1 圈省 34.6%，第 3 圈省到 75.6%。（來源：原始論文。）" >}}

### 遞迴系統也有自己的 scaling law

{{< image src="figure-performance-landscape.png" alt="上半部是四張熱力圖，橫軸為訓練遞迴圈數、縱軸為推論遞迴圈數，顏色愈深代表準確率愈高，右上角最深；下半部是三組長條圖，分別對應混合型、深思熟慮型、蒸餾型三種協作模式下各角色與 RecursiveMAS 的準確率比較。" caption="圖六 — 上半：訓練與推論圈數的效能地形圖。下半：三種協作模式下的表現。（來源：原始論文。）" >}}

熱力圖要橫著看也要豎著看。橫著看是 **test-time compute scaling**：同一個訓練好的模型，推論時多繞幾圈，準確率就穩定往上。豎著看則是訓練圈數的效果。兩者同步增加時，系統會落在圖的右上高地——代表訓練時經歷過深度遞迴洗禮的模型，更懂得怎麼利用推論時的遞迴步數去修正錯誤。

這跟現在追求「增加思考時間」的推理模型是同一個思路，差別在 RecursiveMAS 是在資源便宜得多的潛在空間裡完成的。

下半部則說明架構不挑陣型：

- **混合型（Mixture）**：數學、程式、科學專家平行協作，準確率比單一最強專家高出 6.2%。
- **深思熟慮型（Deliberation）**：引入外部搜尋與程式執行，即使必須跟外部文字互動，仍能在搜尋前用向量互動減少無效嘗試。
- **蒸餾型（Distillation）**：大專家帶小學生，小模型準確率提升 8.0%，同時還保有 1.5 倍的速度優勢。

### 那些向量真的不是雜訊嗎？

這是個很合理的疑問——中間傳的東西人看不懂，你怎麼知道模型不是在傳隨機噪音？作者用 PCA 把每一圈產生的潛在思考向量投影到 2D 平面來回答。

{{< image src="figure-semantic-alignment.png" alt="三張並排的散佈圖，分別對應遞迴第 1、2、3 圈，橘色點是 RecursiveMAS 產生的語意分佈、藍紫色點是標準答案的分佈，兩組虛線橢圓從第一圈的明顯錯開逐漸靠攏到第三圈的幾乎重合。" caption="圖七 — 三圈下來，生成答案的語意分佈逐步收斂到標準答案的分佈上。（來源：原始論文。）" >}}

第一圈時，生成分佈和標準答案分佈明顯錯開（想法還很模糊）；第二圈開始重疊，偏移縮小；到第三圈幾乎完全重合。

這個結果的說服力在於，它把「遞迴」這個抽象操作跟一個看得見的過程對應起來了：遞迴就是**語意精煉**。模型透過每一圈的互動，在潛在空間中不斷修正自己的座標，直到鎖定正確答案的語意中心。

## 代價與尚未解決的問題

這套設計不是沒有代價，最直接的一個就是**可讀性**。傳統 text-based MAS 有個隱形的好處：中間過程是人看得懂的文字，出事的時候你可以直接讀 log 看是哪一步想歪了。RecursiveMAS 把這層可讀性換成了效率——中間全是向量，除非額外做投影分析（像上面那張 PCA 圖），否則你很難知道系統第 2 圈在想什麼。對於需要稽核、需要除錯的正式系統，這是要先想清楚的取捨。

另外兩個是論文自己留下的開放問題：

**遞迴深度是固定的。** 目前圈數是超參數（例如 \( r=3 \)），系統不會自己判斷「這題我想懂了，不用再繞了」。理想上這應該是動態的，簡單題早停、難題多繞，但論文沒做到這一步。

**目前只驗證了語言模態。** 如果傳遞的潛在向量不只包含語言邏輯，還能帶上視覺特徵，這套框架理論上可以延伸成多模態團隊——但這還只是方向，不是結果。

## 結論

RecursiveMAS 的核心動作只有一個：**把 Agent 之間的溝通媒介從離散文字換成連續向量**。但這一換帶來三個連鎖效果。

省掉 LM head 投影和重新 prefill 的開銷，讓多輪遞迴反而比文字版更快、更省 token，而且圈數愈多優勢愈明顯。溝通路徑變成可微的，整個 MAS 可以當成一張計算圖做端到端訓練，梯度跨 Agent、跨圈數地累加，系統真的學得到「團隊默契」而不只是個別能力。而支撐這一切的只有那個帶殘差的小小 RecursiveLink——0.31% 的可訓練參數，主體模型全程凍結。

代價是中間過程不再是人看得懂的文字。這在追求極致效率的場景值得換，在需要稽核與除錯的場景就得三思。

