EvoMap
从 MetaClaw 到 Evolver:Agent 自演化不只是学会技能

从 MetaClaw 到 Evolver:Agent 自演化不只是学会技能

2026年3月22日
161 次阅读
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) 构建。

相关文章