Evolver 与 GenericAgent 源码级研究报告
原始 research campaign 输出,来自 may1 all night learningos memory agent source re。这页保留报告结构和运行痕迹,正式文章会在写作区重写。
Evolver 与 GenericAgent 源码级研究报告
研究时间: 2026-05-01
研究对象:
- EvoMap/evolver v1.77.0
- lsdefine/GenericAgent (2026-04-29 HEAD)
研究方法: GitHub API 元数据分析 + 源码阅读 + 社区反馈调研 + 学术论文审查
目标: 判断两者的 agent 抽象、演化机制、memory 系统是否值得融入 Meridian/Vyane,或仅作概念参考
一、项目概况对比
| 维度 | Evolver (EvoMap) | GenericAgent (lsdefine) |
|---|---|---|
| 语言 | JavaScript (Node.js ≥ 18) | Python 3.11/3.12 |
| 协议 | GPL-3.0(原 MIT,2026-04 变更) | MIT |
| Stars / Forks | 7,125 / 718 | 8,452 / 969 |
| 核心代码量 | ~36 MB(含混淆后源码) | ~3,300 行核心(可读) |
| 源码可审计性 | 核心模块混淆(evolve.js, solidify.js, strategy.js) | 完全开源可读 |
| 贡献者 | 3 人(主开发 autogame-17,3 次提交) | 5+ 人(lsdefine 417 次提交,Fudan 团队) |
| 学术支撑 | arXiv:2604.15097(自研基准测试) | arXiv:2604.17091(Fudan 大学正式论文) |
| 活跃度 | v1.77.0(2026-04-30),极高频发版 | 持续更新至 2026-04-29 |
| 定位 | 面向现有 agent 的「演化引擎」附加层 | 独立的自演化 agent 框架 |
二、Evolver 深度分析
2.1 核心架构:GEP 协议
GEP(Genome Evolution Protocol)将 agent 经验编码为三种可审计资产:
- Gene:紧凑的策略表示,编码成功的行为模式(对标 skill 文档,实验显示 gene 在可复用性上优于长文档)
- Capsule:可复用的技能包,包含验证逻辑和元数据
- Event:不可变的演化事件记录,完整追踪变更原因和责任人
演化循环:
- 分析
./memory/目录中的日志和错误信号 - 从内置资产池中匹配最佳 Gene/Capsule
- 生成协议约束的 GEP prompt(不直接修改代码)
- 写入 EvolutionEvent 永久审计记录
2.2 信号检测系统(三层)
| 层级 | 方法 | 延迟 | 信号类型示例 |
|---|---|---|---|
| L1 | 正则匹配 | 零延迟 | recurring_error, unsupported_input_type |
| L2 | 加权关键词评分 | 低 | perf_bottleneck (关键词 “slow”=3, “timeout”=4, 阈值 6) |
| L3 | LLM 语义分析 | 高(每 5 周期) | 发送至 Hub 端点做语义提取,失败时优雅降级 |
共定义 19 种核心信号,包括 repair_loop_detected、evolution_stagnation_detected、force_innovation_after_repair_loop 等自修复机制。
2.3 策略分配
四种预设控制演化方向中创新/优化/修复的比例:
| 策略 | 创新 | 优化 | 修复 |
|---|---|---|---|
| balanced | 50% | 35% | 15% |
| innovate | 80% | 15% | 5% |
| harden | 20% | 40% | 40% |
| repair-only | 0% | 0% | 100% |
2.4 适配器与集成
Evolver 通过 hook 机制嵌入现有 coding agent:
| 平台 | 集成方式 | 监控范围 |
|---|---|---|
| Claude Code | .claude/settings.json hooks |
SessionStart / PostToolUse(Write) / Stop |
| Cursor | ~/.cursor/hooks.json |
生命周期脚本 |
| Codex | 适配器 | — |
| Kiro | 适配器 | — |
Claude Code 适配器在 CLAUDE.md 中注入指令段,建议在实质工作前调用 gep_recall、工作后调用 gep_record_outcome。
2.5 Memory Graph
经验存储为图结构:
- 节点类型:outcome_events, signal_events, hypothesis_events, epoch_events
- 边类型:Signal→Gene, Gene→Outcome, 时序边
- 增长控制:半衰期衰减(30 天标准)、阈值剪枝、选择性持久化
- 已知问题:
memory_graph.jsonl无限增长可导致 RSS >3GB(issue #519 open)
2.6 网络功能
- EvoMap Hub:6 分钟心跳、工作分发、技能注册
- ATP(Agent Transaction Protocol):技能交易市场,购买/验证/同步
- Validator 角色:默认启用,去中心化验证其他节点的演化声明
2.7 安全边界
- 仅执行
node/npm/npx前缀命令 - 禁止命令替换(反引号、
$())、shell 操作符 - 180 秒执行超时
- 关键路径保护(
CRITICAL_PROTECTED_FILES)
2.8 重大争议:与 Hermes Agent 的抄袭纠纷
背景:EvoMap 指控 Nous Research 的 Hermes Agent 在 EvoMap 开源核心架构后 24-39 天内发布了结构高度同构的自演化模块。
EvoMap 的反应:
- MIT → GPL-3.0 许可证变更(2026-04-15)
- 核心引擎混淆后发布(npm 上仅为编译产物)
- 发布架构同构性分析报告
Nous Research 回应:
- “We are the pioneers. Delete your account.”(后删除)
- 联合创始人 Teknium 称从未听说过 EvoMap
影响:这场争议使 Evolver 的核心源码变得不可审计,同时 GPL-3.0 许可证增加了集成的法律复杂度。这与 Meridian 已有的 Hermes Agent 参考(references/hermes-agent/)形成了有趣的交叉——Hermes Agent(MIT, 126K stars)和 Evolver(GPL-3.0, 7K stars)在自演化机制上存在争议性的相似性。
三、GenericAgent 深度分析
3.1 核心设计:极简原则
GenericAgent 的核心理念是用最少的代码实现最大的控制力:
- ~100 行 Agent Loop(
agent_loop.py) - 9 个原子工具
- ~30K token 工作上下文预算(竞品通常 200K-1M)
整个仓库声称由 GenericAgent 自身自主引导构建。
3.2 九大原子工具
| 工具 | 功能 | 类型 |
|---|---|---|
code_run |
执行 Python/PowerShell/Bash | 动作 |
file_read |
读文件 | 感知 |
file_write |
写文件 | 动作 |
file_patch |
补丁修改 | 动作 |
web_scan |
感知网页内容 | 感知 |
web_execute_js |
控制浏览器行为 | 动作 |
ask_user |
人机交互确认 | 交互 |
update_working_checkpoint |
更新任务状态 | 记忆 |
start_long_term_update |
持久化经验 | 记忆 |
工具通过命名约定 do_<tool_name> 自动注册,支持 before/after 回调钩子。
3.3 五层记忆系统(核心亮点)
| 层级 | 文件 | 内容 | 容量约束 |
|---|---|---|---|
| L0 | Meta Rules | 核心行为约束 | 系统 prompt 内 |
| L1 | global_mem_insight.txt |
极紧凑导航索引 | ≤30 行, <1K tokens |
| L2 | global_mem.txt |
环境事实(路径、凭证、常量) | 按节管理 |
| L3 | memory/*.md |
任务特定 SOP 和脚本 | 按文件组织 |
| L4 | memory/L4_raw_sessions/ |
历史 session 反射 | 调度器定期压缩(每 12 小时) |
核心公理:Action-Verified Only
“写入 L1/L2/L3 的任何信息必须来自成功工具调用的结果。”
模型推理、未测试计划、未验证假设一律禁止。
没有执行过的操作 = 不记录到记忆。
L1 索引哲学:场景关键词(1-4 字符,不解释机制),通过最小充分指针触发发现,下层仅在需要详细检索时访问。
3.4 自演化机制
技能结晶流程:
新任务 → 自主探索 → 结晶执行路径 → 记忆集成 → 直接召回
关键约束:
do_start_long_term_update()要求验证过的执行痕迹turn_end_callback()每轮用<summary>标签总结- 禁止临时变量、推理过程、未验证信息进入长期记忆
- 7 轮/10 轮/65 轮的阶梯式干预机制
3.5 Token 预算管理
两阶段上下文控制:
- 压缩阶段(每 5 次调用):压缩旧消息中的
<thinking>、<tool_use>、<tool_result>块至 ~400 字符 - 移除阶段(超过
context_win * 3时):移除最旧消息,保留最近 4-5 条
额外优化:
- 每 10 轮重置工具描述,避免上下文膨胀
- Anthropic cache control(persistent on system prompt, ephemeral on last 2 user messages)
- 移除未签名的 Claude
<thinking>块节省 token
3.6 多模型支持
| 后端 | 接口类型 | 特殊处理 |
|---|---|---|
| Claude | Native Anthropic API | cache control, 签名思考块保留 |
| OpenAI/GPT | OpenAI-compatible | cache markers |
| Kimi/Moonshot | 定制 | temperature 强制为 1 |
| MiniMax | 定制 | temperature 钳位 (0, 1] |
| Deepseek | 定制 | 要求 history 中有 thinking blocks |
MixinSession 提供自动 failover + spring-back(主模型成功 300 秒后回切)。
3.7 子 Agent 系统
基于文件的 IPC(进程间通信):
| 方向 | 机制 |
|---|---|
| 父 → 子 | input.txt 写入 temp/{task_name}/ |
| 子 → 父 | output.txt(追加模式),[ROUND END] 标记完成 |
| 父续传 | reply.txt 恢复工作 |
| 干预 | _stop / _keyinfo / _intervene 文件注入 |
约束:键鼠不可共享、浏览器暂不可并行使用。10 分钟无父交互自动终止。
3.8 自主运行模式
当用户离开 30+ 分钟时触发自主模式:
- 优先执行现有 TODO
- 任务价值评估公式:
AI 训练数据空白 × 持久协作收益 - ≤30 轮交换内完成
- 四步结论协议:重读 SOP → 写报告 → 归档 → 标记完成
权限边界:
- 免审批:只读调查、本地文件操作、脚本实验
- 需报告审查:修改全局记忆/SOP、安装软件、调用外部 API、删除非临时文件
- 严格禁止:访问凭证、修改核心代码库、不可逆危险操作
3.9 调度器
拉取式调度器(非事件驱动):
- JSON 任务文件定义:
enabled,schedule(HH:MM),repeat(once/daily/weekday/weekly/monthly/every_2h/every_30m) - 端口锁防重复实例
max_delay窗口(默认 6 小时)防止过期执行- 完成报告写入
sche_tasks/done/
3.10 社区与生态
- 243+ issues(截至 2026-04-30)
- 多前端:CLI, GUI, 桌面宠物, Telegram, WeChat, QQ, 飞书, 钉钉, 企微
- 中文社区主导(微信群 12+13)
- SourceForge 镜像、DeepWiki 页面
- Langfuse tracing 插件
四、与 Hermes Agent 的三角对比
本研究营同时有 Hermes Agent 源码研究(t04),三者形成有趣的参照系:
| 维度 | Hermes Agent | Evolver | GenericAgent |
|---|---|---|---|
| 定位 | 全功能单体框架 | 附加演化引擎 | 极简自演化框架 |
| 规模 | ~1.3M 行 | 36MB(含混淆) | ~3.3K 行核心 |
| Memory | Provider 抽象 (builtin/honcho/holographic) | Memory Graph + 半衰期衰减 | 5 层分级 (L0-L4) |
| 自演化 | 自演化模块(与 Evolver 有争议相似) | GEP 基因/胶囊/事件 | 执行路径结晶 + 验证门控 |
| 工具系统 | 171 文件、38K 行 | Prompt 生成(不执行工具) | 9 个原子工具 |
| 许可证 | MIT | GPL-3.0 | MIT |
| 源码审计 | 完全可读 | 核心混淆 | 完全可读 |
争议关系:EvoMap 指控 Hermes Agent 自演化模块抄袭 Evolver。无论事实如何,这三个项目在 agent 自演化领域形成了从极简(GenericAgent)到中间层(Evolver)再到全功能(Hermes Agent)的完整光谱。
五、对 Meridian/Vyane 的适用性评估
5.1 Evolver:仅作概念参考
不建议集成或依赖的原因:
- 源码不可审计:核心演化逻辑(evolve.js, solidify.js, strategy.js)经
javascript-obfuscator混淆,无法验证其实际行为 - 许可证风险:GPL-3.0 具有传染性,任何衍生作品都必须开源,与 Meridian 个人项目定位冲突
- 信任问题:混淆 + 网络功能(Hub 心跳、ATP 交易)组合存在潜在隐私风险;已报告的 memory_graph.jsonl 无限增长 bug(RSS >3GB)
- 争议阴影:与 Hermes Agent 的抄袭纠纷虽未有定论,但 EvoMap 的对抗式应对(混淆源码、更改许可证)降低了社区信任
值得借鉴的概念:
| 概念 | 价值 | 如何借鉴 |
|---|---|---|
| 三层信号检测(正则→关键词→LLM) | 渐进式成本控制 | Vyane 的 agent 监控可采用类似分层 |
| 策略预设(balanced/innovate/harden/repair-only) | 演化方向显式控制 | Vyane 调度器可设置类似模式 |
| Blast radius 计算 | 变更影响评估 | CI/CD 或 PR 审查流程可参考 |
| 19 种核心信号定义 | 结构化的异常分类 | 参考其信号分类学,不照搬实现 |
| Gene vs Skill 文档(研究证据) | 紧凑表示优于冗长文档 | Vyane memory 设计可验证此结论 |
5.2 GenericAgent:高价值参考,部分模式可适配
推荐程度:★★★★☆(概念 + 代码双重参考)
直接可借鉴的机制:
| 机制 | 与 Vyane 的关联 | 适配建议 |
|---|---|---|
| L0-L4 五层记忆 | Vyane memory provider 设计 | L1 导航索引 + L3 SOP 分层值得采纳;L4 自动压缩归档对应 session handoff |
| Action-Verified Only 公理 | 与 Maple 的「报完成前验证」约束天然对齐 | 直接写入 Vyane 的 memory 写入约束 |
| ~30K token 工作预算 | Vyane agent 的 context 管理 | 借鉴其两阶段压缩策略(5 轮压缩 + 阈值移除) |
| 子 Agent 文件 IPC | Vyane 的 AgentRun 协调 | 比 MCP 轻量,适合本地 agent 协作;_stop/_keyinfo/_intervene 干预文件设计简洁 |
| 自主运行权限边界 | Vyane daemon 的自主行为约束 | 三级权限分区(免审批/需审查/禁止)可直接参考 |
| 阶梯式干预 | Agent 长任务防失控 | 7/10/65 轮干预点 + 策略切换机制 |
| MixinSession spring-back | 多模型 failover | 主模型成功 300 秒后回切,避免 fallback 粘滞 |
不建议照搬的部分:
| 部分 | 原因 |
|---|---|
| 桌面宠物/GUI 前端 | 与 Meridian 定位不符 |
code_run 任意代码执行 |
安全风险过高,Vyane 应走沙箱 |
| IM bot 前端 | Meridian 有自己的 Yi bot 方向 |
| 文件 IPC 的硬件互斥约束 | Vyane 是纯 backend,不控制键鼠 |
六、不确定性声明
| 不确定项 | 原因 | 影响 |
|---|---|---|
| Evolver 混淆代码的实际行为 | 无法反混淆审计 | 不知道 Hub 心跳、ATP 交易具体发送什么数据 |
| Evolver vs Hermes Agent 的真实关系 | 双方各执一词,无第三方仲裁 | 影响对两者原创性的判断 |
| GenericAgent 的 benchmark 可复现性 | 论文基准测试尚未被独立验证 | 6x token 效率声明需谨慎对待 |
| GenericAgent skill tree 的长期稳定性 | 缺乏大规模/长周期验证数据 | 技能结晶可能在复杂场景下退化 |
| Evolver 的 contributor 数据 | GitHub 仅显示 3 人/5 次提交,可能核心开发在私有仓库 | 实际开发团队规模不确定 |
七、建议后续工作
- GenericAgent 记忆层本地验证:在
~/maple/maple/下用 GenericAgent 的 L1-L3 架构做一个小规模 POC,验证其对 Vyane memory provider 设计的实际适用性 - 信号分类学整合:将 Evolver 的 19 种信号类型与 Hermes Agent 的自演化信号做交叉对比,提炼出适合 Vyane 的信号分类框架
- Token 压缩策略对比测试:对比 GenericAgent 的两阶段压缩 vs Hermes Agent 的 compression provider,在 Vyane 真实场景下测量实际效果
- Action-Verified Only 规则化:将此原则正式写入 Vyane 的 memory 管理 SOP,与 Maple 现有的「不隐瞒」「报完成前验证」约束统一
八、结论
Evolver 在理论层面提出了有价值的概念(GEP 基因/信号检测/策略分配),但核心源码混淆 + GPL-3.0 许可证 + 抄袭纠纷三重因素使其只能作为纯概念参考,不应在 Meridian/Vyane 中引入任何代码或运行时依赖。
GenericAgent 是本次研究中对 Vyane 最具直接价值的项目。其五层记忆系统(特别是 L1 导航索引和 Action-Verified Only 公理)、极简工具集哲学、token 预算管理策略、以及自主运行的权限边界设计,与 Meridian 的个人 AI 中枢定位高度契合。MIT 许可证和完全可读的源码使其成为安全的参考和适配对象。建议将 GenericAgent 仓库 clone 到 ~/maple/maple/references/ 作为活跃参考源。