ECHO:讓 Terminal Agents 免費學習世界模型

@DimitrisPapail
英語2 個月前 · 2026年5月18日
474K
922
115
51
1.2K

TL;DR

Microsoft 研究人員推出了 ECHO,這是一種混合式強化學習(RL)目標,旨在訓練 CLI Agent 預測終端回應,進而實現更快的訓練速度、更佳的動態建模,並降低對專家數據的依賴。

以下是您提供的英文内容翻译成繁體中文的版本:


與 @VaishShrivas 合著

我們教導 CLI Agent 在強化學習(RL)期間預測終端回應,並搭配標準的 GRPO 動作損失。這個改變很小:相同的對戰(rollout)與前向傳遞,只是不再遮罩終端輸出 token。但效果巨大:所有評估指標都提升了,且最終模型確實學會了終端的運作方式。

CLI Agent 可以免費學習一個終端模型——並利用它來表現得更好!

這就是 ECHO:一個混合目標函數,同時針對互動的兩端進行訓練:Agent 寫出的內容,以及終端回應的內容。

查看完整的論文和基於 SkyRL 的程式碼

如果你太忙而沒時間讀完整篇文章,以下是我們的發現:

  • 標準 Agent RL 拋棄了環境的回應。GRPO 只訓練動作 token,並遮罩終端回應,即使它們已在上下文中、已通過模型,並且是關於 Agent 動作如何影響環境的真實信號。
  • ECHO 透過同時訓練互動的兩端來解決這個問題。它保留了對動作 token 的常規 GRPO 損失,並在終端輸出 token 上添加了一個簡單的環境交叉熵損失。這只是在任何 GRPO 訓練器上添加幾行程式碼。相同的對戰與前向傳遞,只是對 logits 應用了不同的遮罩。
  • ECHO 有效,而且它是免費的!ECHO 在我們測試的所有基準上,都提升了 Qwen3-8B、OpenThinker-Agent-v1-SFT 和 Qwen3-14B 的表現。ECHO 的訓練速度也快了 2.3 倍,可達到相同性能。TerminalBench-2.0 的 pass@1 在 8B(2.7 → 5.2)和 14B(5.2 → 10.8)規模上幾乎翻倍。
  • ECHO 教導終端動態!在保留的軌跡上,環境 token 的交叉熵在 ECHO 下急劇下降,而純 GRPO 則幾乎沒有變化。這直接證明了 ECHO 教導模型終端實際如何回應。那些能更好預測終端輸出的檢查點,也能解決更多任務。
  • ECHO 可以替代專家教師。從一個沒有專家示範的基礎 Qwen3-8B 模型開始,ECHO 幾乎能達到在專家示範上進行 SFT 後再應用 GRPO 的效果。
  • ECHO 讓 Agent 無需驗證器獎勵即可自我改進!在沒有任何驗證器獎勵的情況下,ECHO(不含任何 GRPO)僅透過在環境中行動並預測結果,就能讓 Agent 進一步改進。

這始於一個簡單的問題:如果每個指令都會產生終端回應,為什麼 RL 只訓練指令?

Vaish 完成了所有工作來找出答案。我貢獻了一個愚蠢的迷宮實驗*、對標題的強烈意見,以及在她向我展示第一個結果時說「哇靠」。感謝 Ahmed Awadallah 給予我們空間——以及 GPU——去追逐這樣的想法,即使它們最初只是研究上的癢處。

值得一提的是:ECHO 的第一次叢集運行是在 3 月 29 日啟動的 😊。

這項工作是在 AI Frontiers 完成的,這是微軟研究內部的一個精品研究實驗室。

你如何持續學習?

這個想法首次出現時,是源於一個關於自我改進和持續學習的簡單問題。一個 Agent 如何僅透過在世界中行動來變得更好?

Vaish 和我從去年秋天就開始討論 CLI Agent 的自我改進,也就是說,從與環境(亦即終端)互動中變得更好意味著什麼,特別是在沒有驗證器的情況下。

無驗證器的 RL 是一個人們已經研究多年的問題,而大多數嘗試都面臨同樣的困境:如果沒有獎勵,監督訊號從何而來?

大約在同一時間,我的一篇愚蠢 Twitter 貼文導致了與 @willccbb 的電話會議,再次討論持續學習。在這次談話中,我記得我說了這樣一句蠢話:

也許持續學習就是訓練模型去學習環境對你的行動所回應的任何內容。

Dimitris Papailiopoulos - inline image

這應該能教會模型一些東西,對吧?

結果證明,是的!

世界就是一個損失函數!

當一個 Agent 在環境中行動時,環境對該行動的回應總是真實的。

物理世界中的一個例子:如果你撥動電燈開關,燈會亮,或者不會亮。如果它不亮,那是一個合理的回應:它告訴你關於燈泡、或電線、或斷路器的一些資訊。無論如何,回饋的資訊都是一小部分關於你的行動如何改變了世界。你並未接觸到電力、開關和燈泡運作的完整機制,但你確實看到了結果。燈亮了嗎?這就足以讓你開始建立一個關於撥動開關如何讓燈亮起的心理模型。

終端的工作方式有點類似。

在 bash 指令之後的輸出,是對電腦/容器狀態在執行指令後如何改變的一個小型摘要。你會看到 stdout、stderr、退出碼、檔案列表等。你不會看到核心狀態、行程樹或任何非常詳細的資訊。

Dimitris Papailiopoulos - inline image

你看到的回饋是背景發生事件的一個低維度投影,這也是 CLI Agent 用來選擇下一步行動以達成任務的資訊。就像電燈開關一樣,這足以構成建立一個心理模型——或者如果你願意,可以稱之為世界模型——關於系統如何運作的信號。

最棒的是,終端輸出——再次強調,這是系統狀態改變的反映——是一個監督信號,在每一輪互動中都為你免費計算好了。

酷!

問題在於,標準的 Agent RL(例如 SkyRL 中的 GRPO)只對動作 token 進行梯度推導,而忽略終端輸出 token。儘管終端輸出已經在上下文中。模型關注了它,前向傳遞為它計算了 logits,但訓練器卻將它從損失中遮罩掉了。

真是浪費了好 token 😊。

那麼,如果我們不這麼做呢?

模型已經以這些 token 為條件。它已經產生了對這些 token 的機率分佈。添加一個交叉熵損失幾乎不花費任何成本。

如果我們這麼做……模型就有理由學習終端實際如何運作,因此可以在自身內部建立一個它所作用系統的隱含模型。為了預測 ls 會回傳什麼,模型必須追蹤它剛剛建立了哪些檔案,哪些檔案在哪裡等等。

正如 Ilya 所說:

很好地預測下一個 token 意味著你理解了導致該 token 產生的底層現實。

在我們的情境中,這意味著:一個擅長預測終端輸出的 Agent,在微小但真實的意義上,建立了一個對終端的隱含模型。

那麼我們如何讓 Agent 去預測終端輸出呢?

ECHO:無需付出代價即可學習世界模型

一個終端 Agent 的對戰(rollout)已經交織了兩種 token 流:Agent 的動作 token 和環境的觀察 token。標準的 GRPO 只對動作 token 應用損失。

這尤其浪費,因為終端獎勵是稀疏、延遲且二元的。在我們的 Qwen3-8B 設定中,對於許多任務,少於 15% 的線上策略對戰是成功的。但失敗的軌跡並非無用的數據:它們仍然包含檔案列表、錯誤、日誌、堆疊追蹤、grep 輸出以及 Agent 指令的其他後果。

我們的方法是以最令人尷尬的簡單方式從這些後果中學習 😊。

我們在環境觀察 token 上添加了一個長度歸一化的交叉熵損失,與對動作 token 的標準 GRPO 損失並行。ECHO 就是這個混合目標函數:

其中 Actions 是 Agent 動作的位置,Observations 是終端輸出的位置。

一些技術細節:

  • ECHO 是線上策略學習。ECHO 不是從基礎模型或教師的固定終端轉錄集合中訓練,而是從 RL 期間當前模型產生的終端回應中學習。隨著 Agent 變得更好,它會探索環境的新部分,並從新的動作→觀察轉換中獲得新鮮的監督。更好的策略會引發更好的反饋;更好的反饋預測則為策略提供更好的動作先驗。一個循環!多有趣?
  • 在聯合目標函數中,λ 很重要。如果它非常小,環境損失就不會對模型產生太大影響。如果太大,策略可能會優化為可預測的輸出,而不是任務進展。必須平衡!
  • 目標 token 很重要。我們訓練的是實際的終端輸出,而不是 harness 警告。警告很容易記憶;有用的信號是實際的終端回應——檔案名稱、堆疊追蹤和錯誤訊息。

那麼這需要多少成本?

敏銳的讀者可能會問:

如果你在更多的 token 位置反向傳播梯度,反向傳遞不是會更昂貴嗎?

幾乎不會。反向傳播的昂貴部分是在注意力層和 MLP 層中進行的矩陣乘法,而這些運算是在相同的 token 序列上進行的,無論哪些輸出位置對損失有貢獻。每個回應位置的 logits 已經為了 GRPO 計算好了。動作遮罩和觀察遮罩只是在不同的損失項中收集了它們的不同子集。

在此暫停一下:我們添加了一個世界建模損失,而成本基本上是零!沒有額外的對戰、教師模型,也沒有額外的前向傳遞。

ECHO 有助於訓練更好的 CLI Agent 嗎?

我們在多輪終端任務上進行了最乾淨的比較:相同的模型、相同的 GRPO 配方、相同的任務、相同的對戰和輪次預算、相同的訓練步驟數。如果 Agent 在 n 輪後通過測試案例,獎勵為 1,否則為 0。

唯一的區別在於終端輸出 token 是否也納入損失中。

粉紅色曲線是 ECHO,青色是 GRPO。在不同的模型規模和評估切片中,答案都一樣:添加環境預測使 Agent 顯著更好。

Dimitris Papailiopoulos - inline image

ECHO 在所有三個保留的驗證集上持續提升性能——粉紅色曲線很早就與青色分離,並且通常保持在較高位置。

ECHO 的學習速度也明顯更快:ECHO 在 Terminal-Bench Lite 上,比 GRPO 達到 500 步的性能快了 280 步!速度提升 2.3 倍,而且還在繼續攀升 😊。

這些結果證實了我們對 ECHO 的直覺。GRPO 僅使用稀疏的二進位結果獎勵進行訓練。對於終端任務等困難領域,小模型的通過率很低,這意味著許多任務的訊號很少或根本沒有。

ECHO 透過將失敗的動作轉化為監督,使訓練的樣本效率大大提高。即使動作未能解決任務,終端回應仍然教會了模型該動作導致了什麼!預測失敗動作的後果可以幫助 Agent 選擇更好的動作。

如果你更希望在評估中看到數字,表格形式也講述了同樣的故事:

Dimitris Papailiopoulos - inline image

看看每個區塊的最後一行:ECHO。TerminalBench-2.0 的 pass@1 在 8B(2.7 → 5.2)和 14B(5.2 → 10.8)規模上幾乎翻倍。重要的是,這並非來自額外數據、對戰、教師模型或不同的驗證器。對戰中已經包含了終端回應。ECHO 只是從中學習。

「性能幾乎翻倍且無額外成本」這句話在你的整個研究生涯中極少見到 😊。

ECHO 在所有基準測試和模型規模上都大幅超越了 GRPO 的性能,樣本效率更高,而且成本基本上為零。你隨著策略改進而學習世界模型,這有助於它更快改進。

不過,懷疑論者可能會反駁:你真的學到了世界模型嗎?

我們來看看!

ECHO 真的學習了終端動態嗎?

我們這裡要稍微迴避一下,因為世界建模圈的人有時會比較激烈。

我們不會宣稱 ECHO 在最嚴格的意義上學習了一個世界模型。但我們會宣稱,ECHO 訓練出的策略,其隱藏狀態已經吸收了關於終端如何運作的一些東西,並且其預測終端將做什麼的能力有了可衡量的提升。

如果你反轉 Ilya 的引言,你會得到一個更可被證偽的版本。對於我們的情境,它會是這樣:

如果模型已經學習了終端動態,它必須擅長預測終端輸出。

因為沒有其他方法可以持續地將高機率分配給正確的 token。一個更好的預測器,在資訊理論上,是一個更好的對其所預測系統的壓縮器。

所以問題變成了經驗性的:ECHO 真的使模型成為一個更好的終端輸出預測器嗎?

是的,而且好很多。

為了使這個測試乾淨,我們使用一個更強的教師模型 Qwen 3 32B(未用於我們的任何訓練運行)為每個驗證集生成軌跡。然後我們評估了我們的起始策略、用 GRPO 訓練的策略以及用 ECHO 訓練的策略,並測量了每個模型對產生的終端輸出 token 的「驚訝」程度。

每個面板上的模式都相同:GRPO 相對於起始策略,幾乎沒有改變環境 token 的交叉熵。ECHO 則急劇降低了它。

Dimitris Papailiopoulos - inline image

所以我們不會說大寫 W 的 World Model。但我們會這樣說:

ECHO 產生的策略,在它們未生成的軌跡上,可測量地更善於壓縮終端動態。

這是標題所宣稱的操作性版本,也是一個完全可辯護的版本。

令人驚訝的發現 1:ECHO 減少了對專家 SFT 的依賴

Agent RL 的一個常見配方是:首先從較強模型的行為克隆專家軌跡,然後執行 RL。這對於終端 Agent 尤其常見,因為獎勵稀疏且動作空間巨大。

在我們的設定中,專家 SFT 基線是 OpenThoughts-Agent-v1-SFT (OT-SFT):在由較強 GLM-4.6 教師生成的終端 Agent 示範上微調的 Qwen3-8B。

所以我們問:在不進行行為克隆教師的情況下,ECHO 能恢復多少專家 SFT 的好處?

ECHO 能讓你跳過專家 SFT 嗎?在我們的設定中,大部分情況下是的!

Dimitris Papailiopoulos - inline image

這張圖比較了三種運行:基礎模型上的純 GRPO、基礎模型上的 ECHO、以及 SFT 模型上的 GRPO(SFT + GRPO)。相對於 GRPO 和 SFT+GRPO 之間的差距(例如,從 SFT 開始提供的增益),ECHO 在 ITD 上恢復了 104% 的增益,在 Terminal Bench Lite (TBLite) 上恢復了 89%,在 TerminalBench-2.0 (TB2) pass@1 上恢復了 50%。

這個結果表明,專家 SFT 的很大一部分價值可能來自於教導模型一個互動先驗,而不僅僅是一個專家策略先驗。專家示範同時展示了如何像終端 Agent 一樣行為——檢查檔案、運行測試、跟蹤回溯等——以及在特定狀態下專家會做什麼。ECHO 不模仿這些專家選擇。相反,它訓練模型預測自身動作的終端後果,因此它學會了哪些指令能暴露有用的狀態、哪些錯誤具有診斷意義、以及哪些終端輸出 token 標誌著進展。更好的策略可以透過互動而非模仿來湧現。

這也有助於解釋基準測試的差異。在 ITD 和 TBLite 上,ECHO 幾乎比得上專家 SFT,這表明 SFT 在這些方面的優勢很大程度上來自於更好的終端互動模型。在 TB2 上,ECHO 在沒有示範的情況下仍然恢復了 50% 的巨大差距。剩餘的差距與 TB2 更難且分佈上離訓練集更遠是一致的。

我們不會將其視為固定的天花板:在類似 TB2 的任務上進行更廣泛或更長時間的訓練應該能進一步改善 Agent。

所以關鍵不是專家 SFT 過時了,而是專家 SFT 帶來的好處中有很大一部分可能來自於更好的終端互動模型,而這部分可以直接從環境中學習。

總而言之:終端就是老師!

令人驚訝的發現 2:無需獎勵的自我改進火花

到目前為止,ECHO 是帶有輔助環境損失的 GRPO。驗證器仍然告訴 Agent 它是否解決了任務,而 GRPO 在動作 token 上更新模型。所以是標準的 RL 設定,加上一個小的額外項。

但是,如果 ECHO 確實在教導策略關於終端如何運作的一些東西,那麼也許我們根本不需要驗證器信號。

我們問:如果我們關閉驗證器會怎麼樣?沒有獎勵可以學習,只有這個:

也就是模型行動、觀察,僅透過預測其自身動作的終端輸出結果來更新。

這聽起來不應該提升任務表現。沒有標籤說明哪個動作是好的。如果策略變好了,那一定是因為學習預測終端間接地重塑了策略的動作先驗。

所以我們試了!

我們拿來最強的 Qwen3-8B+ECHO 檢查點,完全移除 GRPO 項,然後僅使用環境交叉熵損失,在保留的任務上再訓練 100 步。問題是模型能否在它從未見過的 OOD 任務上改進,僅僅透過與環境互動並預測回饋的內容。

這個瘋狂的想法有用嗎?有點用!

Dimitris Papailiopoulos - inline image

在 val100(分佈內):+3.8 個百分點。在 ITD 上:+5.2 個百分點。在 PyTerm(一個保留的 OOD 集合,包含 Python 為主的終端任務)上:在過濾到乾淨的工具呼叫軌跡後,+10.0 個百分點。

當終端輸出是有用的監督時,僅環境訓練會改善策略。沒有獎勵信號,模型只訓練預測其自身動作引起的輸出,因此增益取決於這些輸出是否暴露了有用的動態。

在 val100 上,它接近訓練混合集,增益是真實但微小的:+3.8 個百分點後飽和。策略已經在 ECHO 訓練期間學到了大部分局部動態。

在 ITD 上,較弱的起始策略會產生嘈雜的軌跡——無效指令、解析錯誤、死循環。過濾到乾淨的對戰可以去除噪聲,並帶來 +5.2 個百分點的增益。

不過,僅有乾淨的軌跡是不夠的。相同的過濾並未持續改善 TBLite,而 PyTerm 從相似的通過率開始,但在相同的配方下有所改善——這表明瓶頸不僅僅是策略強度。關鍵區別在於觀察的資訊量:Python 任務提供密集的動作連結反饋——程式碼→回溯→修復——而更廣泛的終端任務則透過檔案、配置和多步驟設定更間接地揭示狀態。

我們相信無驗證器適應是可能的:一旦 RL 產生了一個足夠好的探索模型,Agent 有時可以僅從後果中持續改進——但僅當它的對戰是乾淨的且終端反饋具有資訊性時。這才是令人驚訝的部分。不是 Agent 完美地自我改進,而是它竟然能夠自我改進,僅僅從行動和預測回饋中學習。

這將我們帶到何處

ECHO 的核心教訓很簡單:Agent 對戰中包含的監督不僅僅是最終獎勵,我們應該利用它。

Agent 執行的每個指令都會產生終端回應——stdout、錯誤、追蹤、檔案、日誌等——而標準 RL 只將這些 token 用作下一步行動的上下文。ECHO 將它們變成訓練目標。無需教師模型、額外對戰或單獨的世界模型。我們只是停止丟棄已經在轉錄中的環境 token。

這個小改變帶來了三個令人驚訝的結果:更強的 RL 性能、對專家 SFT 的依賴大大降低,以及在某些設定中,僅從環境互動中進行無驗證器的自我改進。我們不認為這意味著獎勵或示範過時了。專家軌跡仍然教導策略,驗證器提供最清晰的任務層級信號。但 ECHO 表明,在「模仿專家」和「等待稀疏獎勵」之間,存在一個密集且未充分利用的監督來源:Agent 自身動作的後果。

更廣泛的想法是輔助預測的延續,這在 RL 中有著悠久的歷史,而最近的工作已經復興了 LLM Agent 的世界建模目標,例如,Agent Learning via Early Experience 將動作-後果信號作為 RL 前的階段,VAGEN 為 VLM Agent 添加了世界建模獎勵,RWML 預訓練於下一個狀態預測,而 CWM 則在觀察-動作軌跡上中間訓練程式碼模型。ECHO 是同一想法在線上、在 RL 循環中、以 CLI 為特色的版本。

這個想法能走多遠?

下一步是使這個環境信號更強大——並測試它能推廣到多遠。ECHO 使用原始終端輸出,因為它們已經在對戰中,但最佳的學習目標可能是一個更乾淨、更緊湊的表示:狀態的摘要或任務相關視圖。另外:我們應該訓練哪些觀察?我們何時應該過濾軌跡?我們應該如何權衡環境預測與策略優化?同樣的想法能否應用於終端之外:瀏覽器 Agent、多工具系統、長期編碼 Agent,或使用者面向的助手,其中跟進、修正和偏好是另一種形式的互動反饋?

我們的賭注是,在任何 Agent 行動且世界以 token 回應的地方,這些回應 token——或它們更好的表示——都應該成為學習信號的一部分。ECHO 是我們能想到的這個想法的最簡單版本,我們懷疑某種形式的環境 token 預測將在 2026 年底成為 Agent RL 訓練器的標準配置。

查看完整的論文和基於 SkyRL 的程式碼

試試 ECHO,並告訴我們你的 Agent 訓練速度快了多少。

腳註:在我的筆電上訓練迷宮世界模型……算是吧

還記得我說我「貢獻了一個愚蠢的迷宮實驗」嗎?這就是那個愚蠢的迷宮實驗。

設定是 ECHO 的一個極小版本:一個在迷你終端中的網格迷宮。Agent(一個循環中的 10M 參數 Transformer)發出一個方向——上、下、左、右——而終端回應 Agent 相對於其「鄰居」的位置(基本上是一個在 2D 網格中的尋路問題),以及到目的地的距離。所以對戰看起來完全就像(以小的數值來說)一個 CLI Agent 的對戰,只是簡單得多 😊:動作→ 環境回應→ 動作→ 環境回應等。

我在一個從頭開始訓練的 10M 參數 Transformer 上測試了兩種條件:1)只訓練動作 token;2)訓練動作 token 和終端回應(鄰居、距離等)。全部在新鮮的 6×6 / 7×7 / 8×8 迷宮上訓練。

Dimitris Papailiopoulos - inline image

這個迷宮玩意兒是 Nature 論文嗎?不是。但:我認為我一直在提出的一個觀點持續被證明是正確的。

幾乎每個乾淨的想法都有一個微觀世界:一個可以在一個晚上在你的筆電上執行的縮小版,告訴你這個想法是否值得擴大規模。

迷宮並沒有證明 ECHO 會成功。它給了我足夠的信心給 Vaish 發一條 Teams 訊息,而不是忘記這個想法。結果 Vaish 也一直在獨立地圍繞同一個想法,當她的第一次叢集運行帶回結果時,我感到興奮且真正驚訝。ECHO 迷宮暗示了方向是對的,但它無法預測 TerminalBench 分數翻倍、恢復大部分專家 SFT、或無獎勵自我改進。那些是 Vaish 的成果。「大致解決一個 6×6 迷宮」和「在 TerminalBench 上翻倍」是非常不同的認知狀態。

但這份附錄的重點不在於筆電取代了叢集實驗。重點是,我的大多數想法都是錯的,而筆電實驗(藉助 Claude Code 和 Codex)能告訴我哪些想法該放棄,免得浪費別人的時間。偶爾會有一個想法存活下來,而當它存活時,或許就能爭取到合作者的時間和 GPU 資源。

ECHO 就是其中之一。

存到 YouMind

使用 YouMind 深度閱讀爆款文章

保存原文、追問細節、總結觀點,並在一個 AI 工作空間裡把爆款文章沉澱成可複用筆記。

了解 YouMind
寫給創作者

把你的 Markdown 變成乾淨的 𝕏 文章

圖片上傳、表格、程式碼區塊,往 𝕏 上手動重排太痛苦。YouMind 把整篇 Markdown 一鍵轉成乾淨、可直接發佈的 𝕏 文章草稿。

試試 Markdown 轉 𝕏

更多可拆解樣本

近期爆款文章

探索更多爆款文章