Hermes Agent 自我优化与持续进化系统

一套完全插件化的 agent 自我进化机制 — 通过每日"梦境整理"和"飞书审批流"实现闭环自我优化

零侵入核心代码 完全插件化 GLM-5.1 / Qwen 降级 飞书审批流

核心架构:五层闭环

观察 → 评估 → 反思 → 学习 → 进化,形成持续自我改进的闭环循环。

📡 观察 遥测采集
post_tool_call
📊 评估 质量评分
on_session_end
🌙 反思 梦境整理
凌晨 1:00
🧠 学习 进化提案
策略生成
🚀 进化 飞书审批 → 执行
19:00 推送
💾 存储 evolution.db
strategies.json

每日流程

从凌晨梦境整理到晚间飞书推送,一天的自动进化循环。

01:00 — 梦境整理(自动执行)
DreamEngine.run() — 分析前日全部 session
1
数据汇总
读取 state.db(只读)+ evolution.db,计算各 session 质量评分
2
错误分析(重点)
  • 工具调用失败统计(按工具、按错误类型分布)
  • 反复重试检测(同一工具同一 session 调用 > 2次)
  • 未完成 session、用户纠正消息、API 错误
  • 错误连锁分析(一个失败是否引发后续失败)
3
时间浪费分析(重点)
  • 耗时最长的工具调用 TOP 10
  • 重复操作(多次读同一文件、重复搜索)
  • 低效 session(迭代轮数过多、工具调用过多)
  • 可缩短的工具调用链
4
深度反思(GLM-5.1 优先 / Qwen 降级)
将分析结果发送到本地模型,产出结构化 ReflectionReport:错误根因 + 浪费根因 + 可操作建议
5
模式识别 + 生成进化提案
高成功率模式 → 候选技能 | 重复错误 → 候选规避策略 | 系统性浪费 → 候选流程优化
19:00 — 飞书推送进化方案
FeishuNotifier.send_daily_report()
读取当日凌晨产出的 pending_approval 提案,格式化为飞书交互卡片推送给用户。
用户审批后 — 执行进化
EvolutionExecutor.execute()
飞书回调触发执行:技能创建 / 策略调整 / 记忆更新 / 工具偏好变更。执行后自动创建 A/B 测试追踪单元。

飞书卡片消息预览

🌅
Hermes 每日进化报告 (2026-04-18)
📊 前日概况
完成 sessions23
平均质量评分0.78 ↑0.03
工具调用 / 成功率156次 / 91%
❌ 错误分析
browser_tool 失败5次 (超时3次)
未完成 session2个
用户纠正3次
⏱️ 时间浪费分析
重复读取同一文件8次
web_search→browser 冗余6次
平均迭代轮数12轮 (理想8轮)

📋 进化提案 (3项)
[1] 🛠️ 创建技能: web_search_pipeline
预期: 搜索任务成功率 +15% | 风险: low
[2] ⚡ 策略调整: 优先 grep 替代 find
预期: 文件搜索效率 +25% | 风险: low
[3] 🧠 记忆更新: 用户偏好中文回复
预期: 用户满意度提升 | 风险: low

质量评分体系

每个 session 结束时自动计算复合质量评分,零 API 成本。

session_quality = 0.40 × completion_rate + 0.20 × efficiency_score + 0.15 × cost_efficiency + 0.25 × satisfaction_proxy

completion_rate 权重 0.40

任务是否完成。completed=1.0, interrupted=0.5, failed=0.0

efficiency_score 权重 0.20

迭代效率。理想轮数 / 实际轮数,上限 1.0

cost_efficiency 权重 0.15

工具使用效率。期望调用数 / 实际调用数,上限 1.0

satisfaction_proxy 权重 0.25

满意度代理。单轮完成=0.9, 多轮完成=0.75, 预算耗尽=-0.2

Claude Code 设计参考

本方案借鉴了 Claude Code 开源项目中的四个核心设计模式。

plugins/hookify/agents/conversation-analyzer.md
梦境整理 ← conversation-analyzer
分析对话历史 → 识别纠正/沮丧/重复问题信号 → 提取可匹配正则规则 → 按严重程度分级(高/中/低)。

我们的扩展:从手动触发升级为每日自动运行,增加错误分析和时间浪费分析。
plugins/ralph-wiggum/
进化执行 ← Ralph Wiggum
自我引用反馈环:Stop hook 拦截退出 → 重喂 prompt → agent 看到自己的修改 → 自动迭代直到满足条件。

我们的扩展:进化执行后创建验证追踪单元(类似 completion_promise),不满足条件自动回滚。
plugins/learning-output-style/
策略注入 ← SessionStart hook
通过 SessionStart hook 在每个 session 自动注入行为上下文,等效于 CLAUDE.md 但更灵活。

我们的扩展:使用 pre_llm_call 钩子注入已学习的行为提示,完全隔离于核心代码。
plugins/hookify/core/rule_engine.py
规则引擎 ← rule_engine
LRU 缓存编译正则(128 上限),支持 regex_match/contains/equals/not_contains,区分 block/warn 级别。

我们的扩展:策略注入条件化,根据 session 特征(平台/任务类型/模型)匹配最相关规则。

隔离策略:零侵入核心代码

所有功能以插件形式实现,通过钩子集成,不修改任何上游核心文件。

插件文件结构

self_evolution/ ├── plugin.yaml ├── __init__.py # register(ctx) ├── db.py # 独立 SQLite ├── hooks.py # 3个钩子 ├── quality_scorer.py # 质量评分 ├── reflection_engine.py # 梦境整理 ├── rule_engine.py # 条件匹配 ├── evolution_proposer.py ├── evolution_executor.py ├── feishu_notifier.py ├── strategy_injector.py ├── strategy_store.py ├── cron_jobs.py ├── models.py ├── agents/ │ ├── dream_analyzer.md │ └── evolution_planner.md └── prompts/ └── reflection.md

钩子集成方式

功能集成方式修改核心
工具调用遥测post_tool_callNO
Session 评分on_session_endNO
策略注入pre_llm_callNO
定时任务cron/jobs.jsonNO
飞书通知gateway/ 飞书网关NO
技能创建skill_manager_toolNO
记忆更新memory_toolNO
历史数据state.db 只读NO

独立数据库设计

独立于核心 state.db,7 张表存储于 ~/.hermes/self_evolution/evolution.db

tool_invocations
session_id TEXT
tool_name TEXT
duration_ms INT
success BOOL
error_type TEXT
session_scores
session_id TEXT PK
composite_score REAL
completion_rate REAL
efficiency_score REAL
task_category TEXT
outcome_signals
session_id TEXT
signal_type TEXT
signal_value REAL
metadata TEXT JSON
reflection_reports
sessions_analyzed INT
avg_score REAL
error_summary TEXT
worst_patterns TEXT JSON
recommendations TEXT JSON
evolution_proposals
id TEXT PK
proposal_type TEXT
title, description TEXT
status TEXT pending→approved→executed
improvement_units
proposal_id TEXT FK
baseline_score REAL
current_score REAL
status TEXT active→promoted / reverted
strategy_versions
version INT
strategies_json TEXT
avg_score REAL
active_from / active_until REAL

安全机制:防止退化漂移

六层防护确保进化方向正确且可回滚。

🗄️
独立数据库
不碰 state.db,上游 schema 变更无影响
🔒
只读核心
所有集成通过钩子完成,不修改核心文件
🚧
人工闸门
进化方案必须通过飞书审批,不自动执行
版本回滚
策略变更版本化,评分连续下降自动回滚
🛡️
有界变更
只能写 PERFORMANCE.md、创建 learned skills
📚
拒绝学习
被拒绝的提案会被分析,避免重复提出

实施路径

四个阶段,每阶段约 1 周。

01
基础设施
02
梦境整理
03
飞书审批
04
进化执行

模型配置

# ~/.hermes/self_evolution/config.yaml model: primary: provider: "zhipu" # 优先使用 GLM-5.1 model: "glm-5.1" fallback: provider: "ollama" # GLM 不可用时降级到本地 Qwen model: "qwen3:32b" base_url: "http://localhost:11434" schedule: dream_time: "0 1 * * *" # 凌晨 1:00 propose_time: "0 19 * * *" # 当日 19:00

Hermes Agent Self-Evolution System — Designed with reference from Claude Code open-source patterns

conversation-analyzer · Ralph Wiggum · learning-output-style · rule_engine