当前位置: 首页 > news >正文

07-Hermes 自学习闭环全拆解:复盘 → 提炼 → 生成 → 应用 → 再复盘

Hermes 自学习闭环全拆解:复盘 → 提炼 → 生成 → 应用 → 再复盘

闭环全景

┌──────────────┐ │ ① 任务执行 │ │ Agent 完成 │ │ 一个任务 │ └──────┬───────┘ │ ▼ ┌──────────────┐ ┌────────────────│ ② 自我复盘 │────────────────┐ │ │ 分析做得 │ │ │ │ 好/坏/原因 │ │ │ └──────┬───────┘ │ │ │ │ │ ▼ │ │ ┌──────────────┐ │ │ │ ③ 提炼经验 │ │ │ │ 提取可复用 │ │ │ │ 的规则/模式 │ │ │ └──────┬───────┘ │ │ │ │ │ ┌────────────┼────────────┐ │ │ ▼ ▼ ▼ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 更新持久 │ │ 生成/更新│ │ 关联已有 │ │ │ │ 记忆 │ │ Skill │ │ 知识 │ │ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │ │ │ │ │ │ └────────────┼────────────┘ │ │ │ │ │ ▼ │ │ ┌──────────────┐ │ │ │ ④ 存储到 │ │ │ │ 记忆系统 │ │ │ └──────┬───────┘ │ │ │ │ │ ▼ │ │ ┌──────────────┐ │ └─────────────→│ ⑤ 下次应用 │←────────────────┘ │ 新任务自动 │ │ 加载改进 │ └──────────────┘

关键设计:这不是一个线性的"学习然后结束"的过程,而是一个持续循环。⑤产生的新结果又会在②中被复盘,形成螺旋上升。


第一步:任务执行

闭环的起点是任何一个任务。这个任务可以是你直接要求的,也可以是 Hermes 自己触发的。

任务类型: 直接任务:👤 "帮我写一个用户积分查询接口" 定时任务:Hermes 每天早上 9 点自动推送天气和日程 级联任务:上一个任务的后续("刚才那个接口再加个分页") 无论哪种类型,Hermes 都会在任务执行时记录: - 原始需求(你说的话 / 触发条件) - 执行过程(调用了哪些工具、读了哪些文件、搜索了哪些记忆) - 最终输出(代码 / 文档 / 回复) - 你的反馈(明确的纠正 / 沉默认可 / 追问)

第二步:自我复盘

这是整个闭环中最关键的一步。任务完成后,Hermes 在后台运行一个内化的复盘 Prompt。

复盘的完整 Prompt 模板

[系统指令 — 只在后台执行,用户不可见] 你刚完成了一个任务。请分析以下内容并输出结构化复牌报告: ## 任务信息 - 原始需求: {user_request} - 执行步骤: {execution_steps} - 最终输出: {final_output} - 用户反馈: {user_feedback} ## 分析维度 ### 1. 做得好的地方(What went well) - 哪些输出完全符合用户预期? - 哪些已有的记忆/Skill 被正确应用了? - 哪些工具调用是高效的? ### 2. 做得不好的地方(What went wrong) - 用户有没有纠正?纠正了什么? - 用户有没有追问?(追问 = 之前没说清楚) - 有没有工具调用失败或返回无关内容? ### 3. 原因分析(Why) - 做得好是因为什么?(已有规则明确?任务简单?记忆精确?) - 做得不好是因为什么?(规则缺失?记忆不准确?上下文不足?) ### 4. 改进方向(What to do differently) - 如果同样的任务再来一次,哪里可以改进? - 能不能提取一条可复用的规则? - 有没有需要更新或删除的已有记忆? ### 5. 可提取的规则(Extractable rules) - 格式:IF [触发条件] THEN [正确做法] - 置信度(0-1):你有多确定这是一条稳定的规则而非一次性的情况 - 关联已有记忆:这条规则和哪些已有记忆相关或冲突

复盘的实际产出

以"写用户积分查询接口"为例:

=== 复牌报告 === 1. 做得好的地方: ✅ 代码风格符合已有规则(函数式、列表推导式、Pydantic v2) ✅ API 返回格式正确({code, data, message}) ✅ 数据库操作加了 try/except 2. 做得不好的地方: ⚠️ 积分计算用了 Float(用户在第 3 轮纠正为 Decimal) ⚠️ 没有处理并发扣减的场景(用户追问了"如果同时间扣积分呢") ⚠️ 查询接口没加分页,用户自己加了(说明应该默认加分页) 3. 原因分析: Float 精度问题:已有 memory 中记录了"涉及金额用 Decimal", 但没有关联到"积分"——说明记忆的语义关联不够 并发问题:缺少"金融相关操作要显式处理并发"的规则 分页问题:缺少"列表查询默认加分页"的规则 4. 改进方向: - 扩展 Decimal 规则的关联范围:金额 → 所有数值精确计算 - 新增规则:"涉及扣减/增加的操作要说明并发控制方案" - 新增规则:"列表查询类接口默认加分页参数" 5. 可提取的规则: 规则一(置信度 0.85): IF 涉及数值计算(金额/积分/数量) THEN 使用 Decimal 而非 Float/Float64 关联: [feedback] 金额用 Decimal 规则二(置信度 0.72): IF 接口返回列表 AND 数据量不可控 THEN 默认添加 page/limit 分页参数 关联: 无(新规则) 规则三(置信度 0.65):← 置信度偏低,因为只有一次 IF 涉及增减操作(余额/积分/库存) THEN 显式说明并发控制方案 关联: 无(新规则)

第三步:提炼经验

复盘报告出来后,Hermes 要做的事是——把"报告"变成"知识和行动"。

提炼的三种产物

产物一:更新已有持久记忆(强化或修正) 报告说 "Decimal 规则的关联范围不够" → 更新 [feedback] 金额用 Decimal → 扩展 tags: "amount" → "amount,points,quantity,price" → 更新语义向量(以便"积分"查询能搜到这条) → 置信度不变(规则本身就确认过,只是范围扩展了) 产物二:生成新的持久记忆条目(记录新发现) 报告说 "缺少分页规则" → 创建 [feedback] 列表查询默认加分页 → 置信度 0.72(来自复盘评估) → 标记为 emerging(还有待验证的新规则) 产物三:生成或更新 Skill(可执行的规则) 报告说 "可以提取 3 条规则" → 规则一(置信度 0.85):检查是否已有相关 Skill → 没有 → 创建新 Skill → 规则二(置信度 0.72):低于阈值但接近 → 标记 pending,等进一步验证 → 规则三(置信度 0.65):低于阈值 → 仅存入持久记忆,不生成 Skill

提炼的过滤条件

不是每条复盘发现都会变成记忆或 Skill。Hermes 有一个过滤层:

过滤条件: ① 置信度 >= min_confidence(0.85)→ 直接生成 Skill ② 置信度 >= 0.70 但 < 0.85 → 存入持久记忆,标记 emerging,等更多验证 ③ 置信度 < 0.70 → 仅记录在复牌日志中,不产生行动 ④ 如果和已有记忆冲突 → 先降低已有记忆的置信度,再决定 ⑤ 每天最多自动生成 max_per_day 个 Skill(默认 5)

第四步:存储到记忆系统

提炼完成后,三种产物分别写入:

产物类型 存储位置 下次加载时机 ────────────────────────────────────────────────────────── 更新的持久记忆 SQLite memories 表 下一次检索到关联关键词时 新的持久记忆 SQLite memories 表 下一次检索到关联关键词时 新的 Skill ~/.hermes/skills/auto/ 下一次同类任务加载 Skill 时 更新的 Skill ~/.hermes/skills/auto/ 立即替换旧版本 复盘日志 ~/.hermes/logs/reflection/ 不自动加载(用于审计)

复盘日志的保留

# 查看所有复盘记录hermes reflection list# 输出:# 2026-06-04 15:30 task: "用户积分查询接口" 规则提取: 3 条 Skill 更新: 1 个# 2026-06-04 10:15 task: "JWT 刷新逻辑" 规则提取: 1 条 Skill 更新: 0 个# 2026-06-03 18:00 task: "数据库连接池配置" 规则提取: 2 条 Skill 更新: 1 个# 查看某次复盘的详情hermes reflection show20260604-153000# 复盘日志自动保留 30 天(可在 config.yml 的 logging 中配置)

第五步:下次应用

闭环的最后一步——也是最让用户"体感强烈"的一步。当你发起一个同类的新任务,Hermes 自动加载了改进:

场景:第二天,你提了一个新需求 👤 > "帮我写一个优惠券模块,包含创建和查询列表接口" Hermes 的自动加载过程: 1. 检索持久记忆: → 命中 [user] code_style(函数式、Pydantic v2) → 命中 [project] api_format({code, data, message}) → 命中 [feedback] DB 操作加 try/except → 命中 [feedback] 数值计算用 Decimal(tags 已扩展到 quantity) → 命中 [feedback] 列表查询默认加分页(emerging,但仍在上下文中注入) 2. 检索 Skill: → 匹配 code-style-functional Skill → 匹配 error-message-zh Skill 3. 生成代码时: ✅ 用了列表推导式而非 for 循环(Skill) ✅ 优惠券金额用 Decimal(从"积分"学到的,扩展到"金额") ✅ 查询列表自动加了 page/limit 参数(从上次复盘学到的) ✅ 错误信息用中文(Skill) 4. 你只说了"写一个优惠券模块"——后面三项优化都是自动的。 你甚至可能没有注意到它们的存在。

学习和应用的时间线

学习效率的典型曲线: 第 1-5 个任务(快速增长期): 每个任务都有明显的纠正 → 学习密度最高 平均每个任务产生 2-4 条新规则或 Skill 更新 第 6-20 个任务(稳定增长期): 纠正频率下降 → 常见模式已经被学会 平均每 2-3 个任务产生一条新规则 第 20+ 个任务(微调期): 纠正很少(Agent 已经很懂你) 偶尔出现新规则(新类型的任务 / 你的偏好变了) 大部分复盘报告显示"没有新的可提取规则"

在 config.yml 中控制闭环

advanced:evolution:enabled:true# 自学习总开关# 复盘配置reflection:enabled:true# 是否在任务后自动复盘trigger:"after_every_task"# after_every_task | after_correction_only | manualdepth:"standard"# quick | standard | deepmax_reflection_tokens:4000# 复盘报告最大 Token# 提炼配置extraction:min_confidence_for_skill:0.85# 生成 Skill 的置信度阈值min_confidence_for_memory:0.70# 存入持久记忆的阈值max_new_skills_per_day:5# 每日最多生成 Skill 数max_new_memories_per_day:20# 每日最多新增记忆数# 复盘日志reflection_log:enabled:trueretention_days:30path:"~/.hermes/logs/reflection/"

depth 参数的选择

quick(快速复盘): → 只分析"有没有被纠正",不分析"为什么" → 耗时 < 5 秒,不调额外 API → 适合:简单任务、批量任务 standard(标准复盘,推荐): → 完整五维分析(好/坏/原因/改进/规则) → 耗时 15-30 秒,调用一次 API → 适合:大部分日常任务 deep(深度复盘): → 额外分析:和过去 10 次复盘的关联、跨任务的模式发现 → 耗时 45-90 秒,调用 1-3 次 API → 适合:架构决策、新的项目初始化、发生了严重错误时

加速自学习:你主动做什么

自学习是自动的,但你可以让它更快更准:

技巧一:纠正时附带原因

❌ 只告诉它"不对": 👤 "不对" 🤖 [猜测哪里不对→可能猜错→浪费学习轮次] ✅ 告诉它"为什么不对": 👤 "不对,折扣计算应该用 Decimal,Float 会有精度问题" 🤖 [精确理解问题→置信度直接 0.90+→一次学会] 效果差异:附带原因的纠正,1 次效果 = 不带原因的 3 次

技巧二:在关键任务后手动触发深度复盘

# 完成了一个重要任务(如架构设计、数据库选型)后hermes reflection trigger--depthdeep# Hermes 会做额外的跨任务分析:# "这个任务中的决策和上周的[某任务]有相似的取舍逻辑,# 建议将它们合并为一条更通用的架构决策规则..."

技巧三:定期回顾自动生成的 Skill

# 每周花 5 分钟hermes skills list--sourceauto--sortrecent# 快速浏览:# → 哪些 Skill 一直在用(置信度高,可以不管)# → 哪些 Skill 置信度低或最近被频繁纠正(需要关注)# → 哪些 Skill 好久没用了(可能需要清理)# 清理低质量 Skillhermes skills cleanup --min-confidence0.5--inactive-days30

技巧四:主动纠正记忆和 Skill

当你的偏好发生变化时,不要等 Hermes 自己发现(那需要 3-5 次纠错): 👤 > "我现在改用 Go 了,Python 相关的偏好不用了" 🤖 > 已更新: - 归档 3 条 Python 相关 Skill - 降低 5 条 Python 相关记忆的检索优先级 - 新建 [user] tech_stack: Go 的偏好

和 OpenClaw 的对比

OpenClaw 的"改进"循环: 你改了 System Prompt → 重启 Agent → Agent 行为改变 → 是"你主动升级 Agent" Hermes 的自学习闭环: Agent 完成任务 → 自我复盘 → 发现改进点 → 自己改 Skill → 是"Agent 自我升级" 关键差异: OpenClaw 的 Agent 不会因为做了 100 个任务而变得更懂你 Hermes 的 Agent 每做一个任务都在变得更懂你

这篇文章的要点

1. 五步闭环: 任务执行 → 自我复盘 → 提炼经验 → 存储到记忆系统 → 下次应用 2. 复盘模板五维分析: 做得好的 / 做得不好的 / 原因分析 / 改进方向 / 可提取的规则 3. 提炼的三种产物: → 更新已有记忆(强化或修正) → 新生新的记忆(记录新发现) → 生成或更新 Skill(可执行规则) 4. 置信度过滤: ≥ 0.85 → 生成 Skill 0.70-0.85 → 存为 emerging 记忆 < 0.70 → 只记录不复盘日志 5. 四个加速学习的技巧: → 纠正时附带原因(1 次顶 3 次) → 关键任务后手动深度复盘 → 每周回顾自动生成的 Skill → 偏好变化时主动告诉 Hermes

延伸阅读

  • Hermes Self-Evolution 官方文档
  • Nous Research: Building Agents That Learn
http://www.jsqmd.com/news/1034126/

相关文章:

  • 微信聊天记录永久化工具:三步构建你的个人数据资产库
  • 吡啶二硫基生物素cas129179-83-5,HPDP-Biotin,二硫吡啶生物素
  • 2026年知名的LED显示屏供应商发展现状与市场占有率及排名研究分析报告 - mypinpai
  • 层次聚类实战指南:从树状图解读到RFM用户分群
  • WiFi握手包抓取实战:从原理到捕获的完整指南
  • GLM-5本地化部署实战:构建可交付的中文技术决策工作流
  • 小型夹爪如何甄别优质厂家?2026年专业小型夹爪供应商盘点参考 - 品牌深度评测
  • 戴森球计划蓝图选择终极指南:从新手到高手的工厂布局秘籍
  • 如何快速下载B站视频:BiliDownloader完整指南
  • ROS 2模块化状态机实战:告别幽灵故障
  • 2026年省心的数码快印企业规模分析 - mypinpai
  • JMail组件深度解析:从ASP时代邮件发送到现代技术迁移
  • 文心5.0原生全模态架构深度解析:2.4万亿参数与跨模态耦合设计
  • DeepSeek-V4 TCO逆向工程:从MoE架构到每千token成本核算
  • JMeter插件管理器隐藏功能实战:从数据过滤到关联分析的性能测试进阶
  • 我用 LangGraph 写过 6 次 ReAct 样板代码,DeepAgents 一行就把它装好了
  • 钱学森的理想世界与我们的行动:走向人机共生的新文明
  • 三指电爪该怎么甄别?2026年优质三指电爪供货商家参考 - 品牌深度评测
  • 第10章:多模态输入入门
  • AI驱动三分钟搭建SM2国密应用:InsCode云IDE实战指南
  • ai欧美模特生成与商品展示,AI图工具实测如何助力服饰电商?
  • 售后完善的人力外包公司梳理,小白狮软件多少钱 - mypinpai
  • 豆包AI实操指南:从工具使用到认知协作的进阶地图
  • Gemini 3.1 Pro学术写作7大实战技巧:提升论文产出效率
  • Web自动化测试中的多窗口切换:原理、实战与避坑指南
  • 猎豹浏览器双核切换原理与Chromium内核调优实战
  • 085、PCIE MSI/MSI-X使能与配置
  • 微信聊天数据完全掌控指南:WeChatMsg让你永久保存每一段珍贵对话
  • DeepSeek V4推理经济学:KV Cache压缩与跨平台MoE工程实践
  • 机械臂夹爪怎么选?2026年实力机械臂夹爪厂家合作指南 - 品牌深度评测