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

第七章:技能、记忆与自学习闭环

第七章:技能、记忆与自学习闭环

这是 Hermes Agent 最具特色、与其它 Agent 最大差异化的一章。Hermes 不是"无状态问答机",它内建了一套完整的 学习闭环

经验(每次会话)│├─ 写入持久记忆(MEMORY.md / USER.md)├─ 沉淀为可复用技能(SKILL.md,自动可被斜杠命令唤起)├─ 索引到 SQLite + FTS5(session_search 跨会话检索)└─ 经 Curator + Honcho 提炼成更高阶用户画像

本章把这四块讲透,并给出"让 Agent 一周比一周聪明"的工程方法。

7.1 持久记忆:MEMORY.md 与 USER.md

7.1.1 两个文件、两份职责

文件 职责 字符上限
MEMORY.md Agent 自己的笔记:环境、约定、踩过的坑、做过的事 2,200 字符(约 800 token)
USER.md 用户画像:偏好、沟通风格、技术水平 1,375 字符(约 500 token)

存放位置:~/.hermes/memories/(Profile 隔离)。

每次会话开始,两个文件被 冻结快照 注入系统提示;会话期间 Agent 用 memory 工具读写,改动立即落盘但当次系统提示不变——这样既保留了 Anthropic Prompt Cache 命中率,又能让长期记忆持续生长。

7.1.2 系统提示中的样子

══════════════════════════════════════════════
MEMORY (your personal notes) [67% — 1,474/2,200 chars]
══════════════════════════════════════════════
User's project is a Rust web service at ~/code/myapi using Axum + SQLx
§
This machine runs Ubuntu 22.04, has Docker and Podman installed
§
User prefers concise responses, dislikes verbose explanations

§ 是 entry 分隔符,每条 entry 可以是多行。Header 提供使用率,让 Agent 知道还能写多少。

7.1.3 memory 工具的三种 action

memory(action="add", target="memory",content="Project myapi uses sqlx-cli for migrations, run with `make migrate`")memory(action="replace", target="memory",old_text="dark mode",content="User prefers light mode in VS Code, dark mode in terminal")memory(action="remove", target="user",old_text="prefers verbose")

replace/removesubstring 匹配,无需复制完整 entry,只要给一个唯一短句就行;如果匹配到多条,Agent 会被工具回执提示"请更具体"。

没有 read action——因为内容已经在系统提示里。Agent 看到的就是它"记得"的。

7.1.4 记什么 / 不记什么

✅ 该记:

  • 用户偏好:"我用 TypeScript 不用 JavaScript" → user
  • 环境事实:"这台服务器跑 Debian 12 + PostgreSQL 16" → memory
  • 纠正过的坑:"Docker 不要加 sudo,用户在 docker 组" → memory
  • 项目约定:"tabs,120 字宽,Google docstring 风格" → memory
  • 完成的工作日记:"2026-01-15 把 MySQL 迁到 PostgreSQL" → memory
  • 显式请求:"记住我每月轮换 API key" → memory

❌ 不要记:

  • 太琐碎:"用户问了 Python"——没信息量;
  • 容易再查到的事实——浪费空间;
  • 大段原始数据/日志/代码块——挤爆容量;
  • 一次性临时路径或调试上下文;
  • 已经写在 SOUL/AGENTS 里的内容。

7.1.5 容量管理

满了之后,Agent 会自动合并相似 entry丢弃次要。你也可以在 config.yaml 调上限:

memory:memory_char_limit: 2200user_char_limit: 1375flush_interval: 0   # 0 = 仅在会话结束时落盘;正数为对话轮数

7.1.6 你能怎么做

  • 直接告诉 Agent:"把刚才这段经验记下来"——它会调 memory
  • 直接编辑文件/memory 进编辑器;改完保存即可下次生效(注意 § 分隔);
  • 从 OpenClaw 迁移hermes claw migrate 自动带过来;
  • 跨机器同步:把 ~/.hermes/memories/ 放进你的 dotfiles 仓库或 syncthing。

7.2 Skills(技能):Agent 自己的小程序

7.2.1 什么是 Skill

一段"做某件事的可复用步骤说明",由 SKILL.md 文件 + 可选附属文件组成,存在 ~/.hermes/skills/<name>/

它有几个鲜明特征:

  • 兼容 agentskills.io 开放标准(多个 Agent 框架共享);
  • 自动注册成 /<skill-name> 斜杠命令;
  • 采用 Progressive Disclosure(渐进披露) 加载方式,省 token;
  • Agent 可以自己创建 / 修改 / 删除任何技能——这是真正自学习的关键。

7.2.2 Progressive Disclosure 的三层

Level 0: skills_list()           → [{name, description, category}, ...]   (~3k tokens)
Level 1: skill_view(name)        → 完整内容 + 元数据                        (按需)
Level 2: skill_view(name, path)  → 引用文件                                  (按需)

启动时模型只看到所有技能的"标题 + 一行描述"——不到 3k token。当需要某个技能时调用 skill_view 拉全文;如有引用文件再二次拉取。这一设计让 Hermes 哪怕装了几十个技能也不会让 prompt 爆炸。

7.2.3 SKILL.md 格式

---
name: my-skill
description: 一句话说清楚这个技能解决什么问题
version: 1.0.0
platforms: [macos, linux]   # 可选:限定 OS
metadata:hermes:tags: [python, automation]category: devopsfallback_for_toolsets: [web]   # 仅当 web toolset 缺席时显形(Fallback 技能)requires_toolsets: [terminal]  # 必须有 terminal 才显形config:- key: my.settingdescription: "这个值控制什么"default: "value"prompt: "Setup 时问用户的提问"
---# Skill Title## When to Use
触发条件,例如"当用户要求生成 PR 描述时"## Procedure
1. 步骤一
2. 步骤二## Pitfalls
- 已知失败模式与修复## Verification
怎么知道做完了

platformsfallback_for_toolsetsrequires_toolsets 给了你条件化激活:例如"在没有付费 web 工具时使用一个用 curl + DuckDuckGo 拼出来的 fallback 技能"。

7.2.4 内置技能(Bundled Skills)

Hermes 安装时会拷贝几条标杆技能到 ~/.hermes/skills/,举例:

  • plan —— 给我一份实施计划而不是直接执行;
  • github-pr-workflow —— 标准 PR 工作流;
  • axolotl —— Axolotl 微调框架的常见操作;
  • gif-search —— 搜 GIF;
  • excalidraw —— 拉起 Excalidraw 画图;
  • safety-checklist —— 操作生产前要走的清单;
  • 还有 30+ 个,详见 reference/skills-catalog.md

7.2.5 Optional Skills 与 Skills Hub

reference/optional-skills-catalog.md 列出了官方维护的 可选技能集,比如:

  • kubernetes-ops
  • aws-troubleshooter
  • nginx-config-review
  • docker-best-practices
  • python-async-debugger
  • react-state-debugger
  • ……

通过 /skills 进入 Skills Hub 可以浏览/下载(也可以接你自己的远程 hub):

/skills                    # 进入 hub
/skills install kubernetes-ops
/skills update kubernetes-ops
/skills uninstall kubernetes-ops
/skills list --installed

7.2.6 用技能:三种方式

/plan 给团队搭一个 PR Review 流
/github-pr-workflow 把当前 branch 推成 PR
/<skill-name>          # 不带参数:Agent 加载技能再问你需求

也可以让 Agent 在自然对话里识别:"请用 axolotl 微调 LLaMA 3,配置如下:…" → Agent 自动 skill_view。

7.2.7 Agent 自己创建 / 改进技能

这才是关键。每次你解决一个新问题,Hermes 都可能问你:

"刚才那条流程比较复杂,要不要我把它沉淀成一个技能 release-tag-process?"

或者它会主动调 skill_create / skill_edit 工具:

skill_create(name="release-tag-process",description="把当前 main 打 tag、写 changelog、发到 GitHub Release 的标准流程",body="""# Release Tag Process## When to Use
当用户说"发版"或"发新 release"时。## Procedure
1. 跑 ./scripts/run_tests.sh
2. 检查 CHANGELOG.md 是否最新
3. 用 git tag -a vX.Y.Z 打签
4. 推 tag: git push --tags
5. 用 gh release create 写 release notes
"""
)

下次同类问题,/release-tag-process 直接唤起。这就是"经验沉淀"的工程化。

7.2.8 外部技能目录

skills:external_directories:- ~/work/team-skills- ~/.config/personal-skills

Hermes 会把这些目录视作只读的"额外技能源",便于团队共享。可以放在 git 里。

7.3 Session Search 与跨会话检索

每次会话都被持久化到 ~/.hermes/hermes.db,并通过 SQLite FTS5 建立全文索引。

7.3.1 工具调用形态

session_search(query="postgres index performance", limit=5, since="2025-10-01")

返回每个命中的:会话 id、摘要、片段、时间。

Agent 通常这样用:

User: 我们之前讨论过 PostgreSQL 索引怎么优化,你能整理成一份 cheatsheet 吗?
Hermes ☤ (thinking)[tool: session_search] query="postgres index", limit=10...[tool: read_file] (拉出当时贴的 schema)...
Hermes: 整理好了,主要有 BTree / GIN / BRIN 三类...

7.3.2 用户层接口

  • TUI:/recall <keyword>/sessions
  • CLI:hermes sessions search "<keyword>"hermes sessions show <id>
  • 在自然语言里说:"搜一下我上周在做 ANTLR 那段会话"——Agent 自己调工具。

7.3.3 隐私与清理

hermes sessions list --since 2025-01-01
hermes sessions delete <id>
hermes sessions vacuum            # 重写 DB 释放空间

或在 config.yaml

sessions:retention_days: 365fts_enabled: true

7.4 Curator:让 Agent 主动整理记忆

7.4.1 它解决什么问题

让 Agent 写记忆很容易——难的是 不让记忆变垃圾场。Curator 子系统会定期"提示"Agent:

  • 查阅当前记忆是否有矛盾、过期、冗余;
  • 把多条相似 entry 合并;
  • 把已转化为技能的步骤从 MEMORY.md 中精简掉;
  • 把 USER.md 里的"偏好"重新组织成更紧凑的画像。

7.4.2 怎么开

config.yaml

curator:enabled: trueinterval_messages: 50    # 每 50 条 user/assistant 消息触发一次interval_minutes: 60     # 或每 60 分钟use_auxiliary_model: true

启用后 Agent 会偶尔在对话末尾低调地说"我整理了一下记忆"。

7.4.3 与 Skills 的协作

Curator 也会观察"哪些操作已经被你重复请求多次",主动建议把它们沉淀成技能。详细见 user-guide/features/curator.md

7.5 Honcho:辩证用户建模(高阶)

Honcho 是 Plastic Labs 的开源项目,提供辩证用户建模(dialectic user modeling)——它不只是把"用户说过的事实"存起来,而是不断生成、检验、修正"关于用户的推断"。

Hermes 提供 Honcho 作为记忆 Provider 插件

cd ~/.hermes/hermes-agent
uv pip install -e ".[honcho]"   # 或仓库内 plugins/memory/honcho/
hermes plugins enable memory:honcho

启用后:

  • Agent 把"事实候选"提交给 Honcho,Honcho 用辩证算法生成"关于用户的推论";
  • Hermes 在每次会话开始把 Honcho 维护的 USER 画像作为 USER.md 的内容来源;
  • 你的 MEMORY.md 依然由 Hermes 自己维护。

何时该用:你已经长时间高频使用 Hermes,开始觉得 USER.md 容量不够、或者想要更"心理化"的画像而不是单纯偏好列表。

7.6 让 Hermes "越用越聪明"的 7 条最佳实践

  1. 明确"该记的":偏好/约定/环境/教训立刻让 Agent 写进记忆;
  2. 每天结束做复盘:让 Hermes 写一段"今日学到的"并落盘;
  3. 遇到重复操作就让它沉淀技能:复用 3 次以上的就值得 /skill create
  4. 定期 /skills 浏览 hub:把成熟外部技能拿来即用;
  5. 跨机器同步 ~/.hermes/{memories,skills}:用 git 仓库托管你的 Hermes "灵魂";
  6. Curator 别关:让它替你做 GC;
  7. 大型团队接 Honcho:让用户画像不止是事实集合,而是动态 mental model。

7.7 团队级共享:"灵魂仓库"模式

很多团队让自己的 Hermes 共享一份基础人设和工作约定。做法:

  • 建一个 git 仓库 team-hermes-core/
  • 内含 SOUL.mdAGENTS.mdskills/<...>/
  • 团队成员把这些目录 symlink 进自己的 ~/.hermes/
  • 结合 skills.external_directories 把团队技能合并进来;
  • 个人 MEMORY.md/USER.md 仍各自独立。

效果:每个人本地 Hermes 既保留个人画像,又共享团队习惯与流程。

7.8 一段示例:从无知到有"经验"的 Hermes

Day 1
User:  我用 TypeScript 不用 JavaScript,回答尽量简洁
Hermes: 好的,已记入用户画像。[tool: memory] action=add target=usercontent="prefers TypeScript; concise replies"Day 1
User:  这个 repo 用 pnpm
Hermes: 好的。[tool: memory] action=add target=memorycontent="Repo myapp uses pnpm, not npm/yarn"Day 3
User:  发新 release 的流程:跑测试 → 改 changelog → tag → push → gh release
Hermes: 这看起来值得沉淀成技能。[tool: skill_create] name=release-tag-process ...Day 5
User:  /release-tag-process v1.2.0
Hermes: ✓ 已运行测试;✓ 更新 CHANGELOG;✓ 打 tag v1.2.0;✓ 推送;✓ 创建 GitHub Release要不要我把 release notes 也草拟一份?Day 10(新机器)
User:  hermes setup ...(从你的 dotfiles 同步过来 ~/.hermes/{memories,skills,SOUL.md})
User:  把现在这台机器的环境也记一下
Hermes: 好的,已经记入:Ubuntu 22.04, Docker installed, Project myapp at ~/code/myapp, uses pnpm

7.9 本章小结

  • Hermes 用 MEMORY.md + USER.md 做长期记忆,冻结快照 + § 分隔 + 字符上限 让其稳定可控;
  • Skills System 把"经验"沉淀成可复用、可分享、可被 Agent 自创的小程序,遵循 agentskills.io 标准;
  • Progressive Disclosure 让 100+ 技能也不会爆 prompt;
  • Session Search(FTS5)把所有历史会话变可检索的知识库;
  • Curator 主动整理与提炼,Honcho 提供更高阶的辩证用户建模;
  • 这一切共同构成 Hermes 与众不同的 闭环学习能力

下一章我们打通 Hermes 与外部工具世界的协议层:MCP 与 Context Files。

http://www.jsqmd.com/news/753707/

相关文章:

  • 从‘米市交易’到‘数字资产’:K线图300年演变史,以及它在加密货币交易中的实战应用避坑指南
  • Android Studio 新建项目就报错?别慌,手把手教你搞定 Gradle 8.0.0 的 JDK 版本冲突
  • MoS路由器设计:多操作系统协同提升网络性能
  • Redis限流踩坑记:我的incr+expire组合拳为何打出了永不过期的Key?
  • 2026长沙卫生间免砸砖防水、外墙、地下室、楼顶渗漏+彩钢瓦、阳光房隔热 本地专业防水公司TOP5权威推荐(2026年5月本地最新深度调研) - 企业资讯
  • 告别死记硬背!用‘场景+功能’思维图解SAP FICO核心事务代码(附记忆技巧)
  • 嵌入式C++安全编码Checklist(仅限认证工程师发放):含137条可自动化校验规则、SonarQube插件配置包及TÜV认证报告引用模板
  • Rightmove 房源自动化爬取与飞书多维表格同步系统 — 完整技术方案
  • Conda安装环境总报错?可能是你的environment.yml没写对(避坑指南)
  • 2025届毕业生推荐的五大AI辅助论文网站实测分析
  • MAE框架:多智能体协同进化提升大语言模型性能
  • 第十章:定时任务与自动化(Cron)
  • 为什么92%的.NET开发者在.NET 9中AI功能踩坑?——6个被文档刻意忽略的关键配置陷阱(含VS2022 v17.11兼容性避雷清单)
  • gRPC 与 Protobuf 实战指南
  • 构建个人音频库:跨平台下载工具的技术实现与实践指南
  • 2026天津卫生间免砸砖防水、外墙、地下室、楼顶渗漏+彩钢瓦、阳光房隔热 本地专业防水公司TOP5权威推荐(2026年5月本地最新深度调研) - 企业资讯
  • Node.js 回调地狱导致 Event Loop blocked 警告如何定位和优化
  • 2026年RFID资产盘点系统横评:功能、服务谁更强?
  • SkillLite 原生系统级沙箱功能代码导览
  • 别再只重启服务了!解决Jetson Nano上jtop失效的深层原因与预防指南
  • 2026最权威的十大AI辅助写作方案实际效果
  • 构建本地化个人知识搜索引擎:Memex的语义搜索与自托管实践
  • 告别枯燥代码!用Screen Painter像画图一样设计SAP界面(ABAP Dialog程序实战)
  • 第四章:CLI/TUI 与会话管理
  • 2026徐州卫生间免砸砖防水、外墙、地下室、楼顶渗漏+彩钢瓦、阳光房隔热 本地专业防水公司TOP5权威推荐(2026年5月本地最新深度调研) - 企业资讯
  • 告别手敲命令!个人开源 AI 运维神器 AITerm,用自然语言远程管理服务器
  • 解放游戏时间:MAA明日方舟助手如何让日常任务自动化成为现实
  • 2025届学术党必备的六大AI写作方案横评
  • 2026 环保设备工程厂家技术深度测评:从核心指标看行业优质供给 - 小艾信息发布
  • 招行:开始闯入“龙虾”圈,openclaw 应用正忙,《银行业务智能体构建:通用业务智能体OpenClaw+Skills+RAG+Agent构建案例实操》