從 MetaClaw 到 Evolver:Agent 自演化不只是學會技能

從 MetaClaw 到 Evolver:Agent 自演化不只是學會技能

2026年3月22日
165 次閱讀
evolver release metaclaw self-evolution gep

v1.37.0 讓 Evolver 從「單迴路修復」更明確地走向「雙迴路演化」 -- 不只是修已知的問題,而是從所有經驗中主動學習,包括失敗。


這篇文章要講什麼

三月中旬,UNC/CMU/UCSC/Berkeley 四校聯合發了 MetaClaw(arXiv 2603.17187),做的事情和 Evolver 高度相關:讓 Agent 在部署後持續自演化。MetaClaw 從另一條路徑驗證了這個問題值得認真做。

兩個項目走到了相近的問題意識,但實現層級和工程側重完全不同。MetaClaw 更偏向失敗蒸餾、空閒調度、語義檢索這些能力獲取層面的機制;Evolver 更偏向結構化 Gene、因果記憶圖譜 (Memory Graph)、7 層安全漏斗這些工程治理層面的深度。兩者不在同一個 benchmark 下,不適合直接打分比較,更像是從不同角度解決同一類問題。

v1.37.0 的核心進展是:Evolver 從「單迴路修復」更明確地走向了「雙迴路演化」。


MetaClaw 解決了什麼,沒解決什麼

MetaClaw 解決的問題:

從失敗軌跡中提煉技能。 Agent 搞砸了一個任務,MetaClaw 分析整個失敗過程,提煉出「下次遇到類似情況應該怎麼做」的防禦性規則,立即注入到 prompt 中。零停機,零延遲。這個機制的信息效率很高 -- 成功的路徑往往相似,而失敗各有各的原因。

空閒時加速演化。 OMLS 調度器監測系統休眠、鍵盤靜默、Google Calendar 事件。用戶不在的時候啟動更重的操作,包括 Cloud LoRA 微調。

語義級技能檢索。 用 embedding cosine similarity 檢索技能庫,處理「近義但措辭不同」的匹配場景。

MetaClaw 沒解決的問題:

論文的 Knowledge Gaps 部分自己承認了 -- "rollback and version control...are not described"、"safety and security...no adversarial evaluation"。技能是一段自然語言文本,沒有結構化約束。沒有跨 session 的因果記憶。單機框架,沒有跨節點經驗復用。


Evolver 解決了什麼,沒解決什麼

Evolver 解決的問題:

結構化的演化單元。 Gene 不是一段自然語言,而是一個完整的 JSON 結構:id、signals_match、preconditions、strategy(分步)、constraints(max_files、forbidden_paths)、validation(可執行命令)、epigenetic_marks(環境適應標記)。每個字段都是可校驗的 -- 一個 Gene 能修改多少文件、不能碰哪些路徑、成功後怎麼驗證,這些在定義時就確定了,不依賴 LLM 的運行時判斷。

因果記憶圖譜。 Memory Graph 記錄了每次演化的完整因果鏈:SignalSnapshot -> Hypothesis -> Attempt -> Outcome。getAdvice() 用 Laplace 平滑 + 時間衰減計算每個 (signal, gene) 組合的成功概率,自動 ban 掉低效路徑、優先推薦高效路徑。跨 session 積累,越用越準。

7 層安全漏斗。 solidify 流程中任何一層失敗,git checkout -- . && git clean -fd,全量回滾。validation 命令有嚴格的白名單(只允許 node/npm/npx 開頭,禁止 shell 元字符)。破壞性變更檢測會在 .git、package.json、核心依賴被修改時直接攔截。

Hub 生態。 通過 A2A 協議連接 EvoMap Hub,一個節點發現的修復策略可以被其他節點復用。Capsule 內嵌了 env_fingerprint,跨環境復用時可以評估兼容性。

離線能力。 核心功能完全離線可用。

Evolver 沒解決的問題:

沒有 RL/LoRA 權重更新循環。 MetaClaw 的第二循環(Cloud LoRA + RL-PRM)在空閒窗口用雲端 LoRA 微調模型權重,理論上比純 prompt 層面的進化上限更高。我們評估後決定暫不集成 -- Cloud LoRA 生態不成熟(Tinker/MindLab 都不是通用 API),全流程只在 Kimi-K2.5 上驗證過,通用性待證。接口已經預留在 idleScheduler 的 deep 級別中。

沒有學術 benchmark。 MetaClaw 有 MetaClaw-Bench(934 題 / 44 天模擬)。我們有單元和集成測試,但沒有標準化的可公開比較的 benchmark 套件。test/bench.test.js 是第一步。


v1.37.0:從記憶中學習

這個版本的主題是讓 Evolver 更完整地利用自己的全部經驗。

從失敗記憶中生成防禦規則 (autoDistillFromFailures)

在 skillDistiller.js 中新增了完整的失敗學習管道:

  1. collectFailureDistillationData() -- 從 failed_capsules.json 收集失敗記錄,按 gene + 失敗原因分組
  2. analyzeFailurePatterns() -- 識別高頻失敗模式和反覆出現的約束違規
  3. synthesizeRepairGeneFromFailures() -- 從失敗模式合成防禦性 repair Gene,策略步驟以 GUARD/VERIFY/ROLLBACK 開頭
  4. autoDistillFromFailures() -- 整合以上步驟,達到閾值(默認 5 個失敗 Capsule)自動觸發

蒸餾出的 Gene 和成功蒸餾的 Gene 走同一套校驗管道 -- validateSynthesizedGene() 的 15+ 項硬校驗一個不少。

之前 Evolver 只從成功的 Capsule 中提取新 Gene。失敗的記錄雖然保存了,但只用於 anti-pattern ban。v1.37.0 讓系統真正從失敗記憶中學習 -- 把反覆出現的失敗模式轉化為可復用的防禦性規則,主動注入到後續的演化決策中。

空閒調度 (idleScheduler)

新增 idleScheduler.js,實現空閒感知調度:

  • 檢測系統空閒時間(Windows/macOS/Linux 三平台)
  • 四級強度:normal -> aggressive -> deep(以及 signal_only)
  • 空閒 5 分鐘以上進入 aggressive,加速蒸餾和 reflection
  • 空閒 30 分鐘以上進入 deep,為未來更重的操作預留
  • 主循環的 sleep 時間乘以調度器給出的係數(空閒時 0.25x ~ 0.5x,繁忙時不變)

語義匹配 (scoreGeneSemantic)

在 selector.js 的 scoreGene() 中引入了 bag-of-words cosine similarity 作為補充分數:

  • 將信號和 Gene 的 signals_match / summary / id 分詞
  • 過濾停用詞,構建詞頻向量
  • 計算 cosine similarity,乘以權重 0.4 作為附加分

不替換現有的正則/子串匹配,而是疊加。等 Hub 的 KG 服務成熟後可以切到真正的 embedding 檢索。

過程評分 (computeProcessScores)

之前 solidify 的 outcome 是二值的 success/failed + 一個 0~1 的 score。現在擴展為 8 維的過程評分:

維度權重評估什麼
signal_quality0.05信號是否豐富且有意義
gene_selection0.10是否匹配到了已有的 Gene(vs 自動生成)
mutation_quality0.05Mutation 是否有完整的 rationale 和 category
blast_control0.15變更範圍是否在 Gene 約束內
constraint_compliance0.25是否通過了所有約束校驗
validation_pass_rate0.25驗證命令的通過率
protocol_compliance0.10協議違規數量
canary_health0.05金絲雀檢查是否通過

核心思路是對演化過程本身打分,而非只看最終結果。規則化的分步評估,不依賴 RL。

數據版本化 (gene_library_version)

在 EvolutionEvent 和 Capsule 中新增了 gene_library_version 字段 -- 當前 genes.json 的內容哈希。如果 Gene 庫在學習過程中變化了,舊版 Capsule 不會被用來評估新版 Gene 的效果。過時的評估數據會污染學習質量。


下一步,以及為什麼

v1.37.0 完成了演化引擎的「記憶閉環」 -- 成功和失敗都被轉化為可復用的知識。但到目前為止,Evolver 仍然是被動的:有信號才響應,有錯誤才修復。

這不夠。一個真正的自演化系統不應該只會治病,還應該會鍛煉。

我們正在構建的下一個能力叫 Exploration 模式 -- Agent 主動去探索未知領域:定義自己想成為什麼角色,識別當前能力的邊界,然後自主尋找和學習新的 Gene 來擴展自己。

為什麼這一步是必要的,而不只是 roadmap 上的一個 nice-to-have?因為當前的單迴路修復有一個結構性天花板:它只能讓 Agent 在已知問題域內變得更穩定,但不能讓 Agent 進入新的問題域。一個只會修復自己的系統,永遠不會比它第一次被部署時更強。雙迴路演化 -- 一條迴路處理問題,一條迴路主動拓展邊界 -- 是打破這個天花板的必經之路。


v1.37.0 變更摘要

變更文件類型
失敗記憶學習src/gep/skillDistiller.js新功能
空閒感知調度src/gep/idleScheduler.js新模組
語義匹配評分src/gep/selector.js增強
8維過程評分src/gep/solidify.js增強
數據版本化src/gep/solidify.js增強
基準測試test/bench.test.js新測試 (15)
調度測試test/idleScheduler.test.js新測試 (10)

全量測試 352 pass / 0 fail。

css
npm install @evomap/evolver@latest

GitHub: EvoMap/evolver


MetaClaw 論文: arXiv 2603.17187 Evolver 是 EvoMap 生態的開源組件,基於 GEP (Genome Evolution Protocol) 構建。

相關文章