模型 / 資料集
modelscope/AgentEvolver avatar
modelscope/AgentEvolver

AgentEvolver:用自我提問、自我導航、自我歸因把 Agent 訓練自動化

AgentEvolver: Towards Efficient Self-Evolving Agent System

1,567 個 Star173 個 ForkPythonApache-2.0

秒懂

它是什麼?
ModelScope 的 AgentEvolver 是一套以 Python 3.11 撰寫、Apache-2.0 授權的自我演化訓練框架,把任務生成、經驗引導與信用分配串成一個流程。它的賣點是把資料集建構的成本轉嫁給環境本身,代價是你得先有一條能跑起來的環境服務鏈。
適合誰用?
如果你手上已經有可容器化的環境(例如 AppWorld),而且團隊願意維護 conda、CUDA toolkit 與 ReMe 這條相依鏈,AgentEvolver 值得排一次試跑;如果你只想拿現成資料集微調一個模型,或無法接受環境沙箱與訓練流程綁在一起,這個框架會讓你多養一套服務。動手前先確認三件事:install.sh 在你的 CUDA 版本上是否走得完、env_service/environments/appworld/setup.sh 能否在隔離網路下完成、以及 ReMe 缺席時 examples/basic.yaml 的內建資料集是否覆蓋你的任務型態。
可以商用嗎?
可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 168 天前。
用什麼語言寫的?
主要是 Python(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。

開源專案深度解析

它想解掉的不是模型能力,而是任務從哪裡來

多數 Agent 訓練流程的瓶頸不在演算法,而在資料。你要嘛人工標註多輪互動軌跡,要嘛從既有日誌裡撈,兩者都昂貴且難以覆蓋長尾情境。AgentEvolver 的切入點是讓 Agent 自己去環境裡探勘並生成任務,README 把它列為第一個自我演化機制 Self-Questioning,並註明其目的是「eliminating costly manual dataset construction」。

目標讀者是已經在做 agentic RL 的研究或工程團隊,而不是想快速接一個 API 就得到成果的應用開發者。從 repository 結構看得出來:env_service、external/reme、launcher.py、examples 這幾個目錄各自對應環境、經驗管理、啟動與設定,缺一環就跑不動完整流程。這是一個訓練框架,不是推論框架。

README 的 benchmark 表格對比了 Qwen2.5-7B 與 14B 在加上不同機制後的 AppWorld 與 BFCL v3 分數,並主張 AgentEvolver 以更少參數量達到較好結果。這些數字來自作者自己的技術報告(arXiv 2511.10395),沒有第三方複現紀錄可查,把它當作方向性參考而非採購依據。

三個機制不是模組選項,而是有依賴順序的管線

Self-Questioning 負責生成任務。Self-Navigating 把跨任務的經驗摘要起來重用,README 說它「guiding higher-quality rollouts and improving exploration efficiency」,對應到 external/reme 這套經驗管理元件。Self-Attributing 處理長軌跡,找出中間步驟的因果貢獻,用來做更細粒度的策略優化。

關鍵在於它們的耦合方式。benchmark 表格把 +Questioning、+Questioning&Navigating、+Questioning&Attributing 分開列,說明 Navigating 與 Attributing 都建立在 Questioning 產生的任務之上。少了任務生成,另外兩個機制沒有輸入。這也解釋了為什麼 quick start 的 minimal 範例仍然需要 --with-appworld:環境是任務生成的來源,不是可選配件。

架構上 README 稱其為 service-oriented dataflow,把環境沙箱、LLM 與經驗管理拆成獨立服務。好處是演算法元件可以替換;代價是服務之間的啟動順序與網路連通變成你的維運責任。launcher.py 的存在就是為了把環境、log dashboard 與訓練流程一起拉起來,換句話說,官方也承認手動串接的複雜度不低。

從 install.sh 到 launcher.py 的實際啟動路徑

README 給出的前置條件很明確:conda 與 cuda toolkit 必須先裝好,Python 版本要求 3.11 以上。第一步是 bash install.sh 建立訓練環境。第二步進到 env_service/environments/appworld 執行 bash setup.sh,為 AppWorld 這個環境做準備。

經驗管理是選配。bash external/reme/install_reme.sh 會安裝 ReMe,README 另外導向 agentscope-ai/ReMe 的 repository 說明細節,也就是說這部分的安裝問題不歸 AgentEvolver 管。

真正開始訓練前要複製 example.env 為 .env,並修改其中的 API key 與 conda path。這兩個欄位是硬性的:前者決定 LLM 呼叫能不能送出,後者決定 launcher 能不能找到對的直譯器。設定完成後有兩條路徑,python launcher.py --conf examples/basic.yaml --with-appworld 是不含 ReMe 的最小範例,使用環境內建資料集;python launcher.py --conf examples/overall.yaml --with-appworld --with-reme 才是三個機制齊全的完整版本。也可以用 bash examples/run_basic.sh 或 bash examples/run_overall.sh 手動執行。

這裡有個容易誤判的地方:basic 與 overall 的差別不只是「有沒有經驗管理」,而是資料來源從內建換成自我生成。先跑 basic 驗證環境是否通,再決定要不要投入 ReMe 的安裝成本,是比較合理的順序。

環境沙箱是它的力量,也是它最硬的邊界

AgentEvolver 的自我提問機制必須在一個可互動、可重置、可判定成敗的環境裡運作。AppWorld 符合這個條件,所以被選為範例。這意味著採用它的第一步不是改設定檔,而是先有一個能被 env_service 接上的環境。

如果你的任務發生在沒有明確 reward 訊號的場景,例如開放式文件問答或客服對話,自我提問產生的任務很難自動判定對錯,整個訓練迴路就失去訊號。README 沒有提供這類場景的替代方案,env_service 底下也只以 AppWorld 作為示範。

另一個限制是資源形狀。這是一套多輪 agentic RL 訓練流程,需要 CUDA 環境與足夠的 GPU 記憶體來跑 7B 以上模型;README 的 benchmark 以 7B 與 14B 為對象。想在筆電上試玩的開發者會直接卡在 install.sh。

還有版本節奏的問題。從 News 區塊看,2025-11 發布 v1,2025-12 加入 Game Arena 與 CuES,2026-03 又出現分支 seeupo。功能推進速度快,但 repository 沒有檢索到任何 release tag,代表你追的是 main 分支。以訓練框架而言,這通常意味著 API 與設定檔格式可能在兩次 pull 之間變動。

與其自己寫 RL 迴圈,差別在經驗與歸因這兩層

最直接的替代方案是用通用 RL 框架自己接環境,例如把 AppWorld 包成 gym 風格介面,接上既有的 PPO 或 GRPO 實作。這樣做你完全掌控訓練迴圈,也不必引入 service-oriented 的資料流架構。

差別在兩件事。第一,通用框架不會幫你生成任務,你得自己準備 prompt 模板與難度分佈,這正是 AgentEvolver 用 Self-Questioning 想省下的工作。第二,通用框架的信用分配通常停在軌跡層級,而 Self-Attributing 的目標是把功勞拆到中間步驟,README 稱其為「fine-grained and efficient policy optimization」。如果你面對的是動輒數十步的長軌跡,這個差異會直接反映在梯度訊號的稀疏程度上。

反過來說,如果你的任務只有三到五步、reward 本來就密集,Self-Attributing 帶來的增益有限,而導入整套服務架構的固定成本不變。這種情況下自己寫一個輕量迴圈更划算。

授權與維護成本:Apache-2.0 之外還有幾層相依

AgentEvolver 本身採 Apache-2.0,允許商業使用與修改,需保留版權與授權聲明。這部分相對寬鬆。

但完整流程會拉進外部元件。ReMe 位於 external/reme,README 直接指向 agentscope-ai/ReMe 這個獨立 repository;AppWorld 環境由 env_service/environments/appworld/setup.sh 安裝。這些元件的授權條款與更新節奏不在 AgentEvolver 的 Apache-2.0 涵蓋範圍內,部署前應逐一確認。以上是事實陳述,不構成法律意見。

維護成本主要來自三處:CUDA 與 conda 環境的版本漂移、環境服務的介面變動、以及 main 分支無 tag 可鎖的更新節奏。若你的團隊沒有能力在升級後自行排查環境服務的問題,把 AgentEvolver 放進正式訓練管線會持續產生維運負擔。

該不該採用,取決於你有沒有現成的可判定環境

判斷標準其實只有一條:你是否有辦法把目標任務包成一個能自動判定成敗、可重置、可大量取樣的沙箱。有,AgentEvolver 的三個機制才有作用對象;沒有,前兩個步驟就會卡住。

適合的團隊是正在做 agentic RL 研究、已經有環境基礎設施、並且想減少人工建構任務資料的那一群。不適合的是只想拿開源權重做微調的應用團隊,以及任務缺乏客觀 reward 的場景。

驗證順序建議照 README 的依賴關係走:先在目標機器上跑完 install.sh 與 env_service/environments/appworld/setup.sh,確認 CUDA 與 Python 3.11 這條線通;再用 python launcher.py --conf examples/basic.yaml --with-appworld 跑一次最小流程,看內建資料集是否與你的任務型態相容;只有這兩步都過,才值得投入 bash external/reme/install_reme.sh 與 examples/overall.yaml 的完整設定。順序顛倒的話,你會在還沒確認環境可用之前就先花時間處理 ReMe 的安裝問題。

編輯結論

如果你手上已經有可容器化的環境(例如 AppWorld),而且團隊願意維護 conda、CUDA toolkit 與 ReMe 這條相依鏈,AgentEvolver 值得排一次試跑;如果你只想拿現成資料集微調一個模型,或無法接受環境沙箱與訓練流程綁在一起,這個框架會讓你多養一套服務。動手前先確認三件事:install.sh 在你的 CUDA 版本上是否走得完、env_service/environments/appworld/setup.sh 能否在隔離網路下完成、以及 ReMe 缺席時 examples/basic.yaml 的內建資料集是否覆蓋你的任務型態。這三項任一不過,後面 overall.yaml 的完整流程就沒有意義。

官方來源

  1. Issues
  2. License: Apache-2.0
  3. modelscope/AgentEvolver on GitHub
  4. Project website
  5. README
社群筆記

社群筆記