《把 Hermes Agent 养成你的专属帕鲁:从捕捉到满级实战指南》(二)
目录编辑1. 自我学习机制Hermes 是怎么长脑子的1.1 闭合学习回路执行 → 评估 → 提炼 → 进化1.2 Skill 系统经验的结构化沉淀Skill 的存储结构Skill 的自动创建Skill 的迭代更新1.3 记忆系统四层梯度架构第一层工作记忆Working Memory第二层历史记忆Episodic Memory第三层技能记忆Skill Memory第四层外部记忆提供者1.4 渐进式披露Skill 的按需加载机制1.5 异步复盘Background Review实现机制触发条件1.6 为什么这套机制有效1. 自我学习机制Hermes 是怎么长脑子的大多数 AI Agent 的痛点不是不会而是学了就忘。你教它一次工作流程下次重启会话一切归零。Hermes 的自我学习系统要解决的就是这个问题——让经验成为资产而不是消耗品。这套系统的核心代码分布在tools/skills_tool.py、agent/memory_manager.py、hermes_state.py和trajectory_compressor.py中。下面从机制到实现逐层拆解。1.1 闭合学习回路执行 → 评估 → 提炼 → 进化Hermes 的自我学习不是某个单一功能而是一个持续运转的闭环┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ 执行 │ → │ 评估 │ → │ 提炼 │ → │ 进化 │ │(Run Task)│ │(Review) │ │(Extract)│ │(Update) │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ ↑ │ └──────────────────────────────────────────┘执行Agent 接到任务调用工具链完成操作终端、文件、浏览器等。评估任务完成后系统回溯整个执行轨迹判断哪些步骤是有效的哪些路径走错了、后来被纠正了最终结果是否符合预期提炼如果轨迹有价值系统会将其抽象为一个Skill——不是原始的操作日志而是可复用的工作流模板。进化已有的 Skill 不会直接被覆盖。如果发现旧 Skill 有不准确的地方系统会生成增量补丁保留主干、修正细节。这个闭环的关键在于评估节点。很多 Agent 框架只做到了记录历史但没有判断价值。Hermes 在trajectory_compressor.py中实现了轨迹压缩和评估逻辑能够区分值得学习的经验和无意义的试错。1.2 Skill 系统经验的结构化沉淀Skill 是 Hermes 自我学习的载体。它不是一段聊天记录而是一个标准化的、可执行的流程定义。Skill 的存储结构Hermes 的 Skill 遵循agentskills.io标准格式以 Markdown 文件形式存储在skills/目录# skills/software-development/code-review/SKILL.md name: code-review description: 代码审查助手 trigger: 帮我 review 这段代码 tools: - terminal - file prompt: | 你是资深代码审查专家。请检查 1. 代码规范 2. 潜在 bug 3. 性能问题 4. 改进建议skills/目录下的内置技能覆盖了多个领域software-development/— 开发工作流TDD、调试、规划creative/— 创意工具devops/— 自动化部署research/— 研究辅助productivity/— 生产力工具Skill 的自动创建当一次任务的复杂度超过一定阈值比如工具调用超过 5 次系统会自动触发提炼流程轨迹收集hermes_state.py记录完整的会话历史包括工具调用序列和结果关键路径提取trajectory_compressor.py压缩轨迹保留决策点和有效路径模板生成将提取出的模式写入skills/目录形成新的 Skill 文件注册生效tools/skills_tool.py自动扫描skills/目录新 Skill 立即可用Skill 的迭代更新Skill 不是写死了就不能改的。随着使用积累系统会打补丁发现旧 Skill 某一步不适用于新场景生成增量修正版本管理所有 Skill 都是纯文本 Markdown天然支持 Git 版本控制渐进加载不会一次性把所有 Skill 塞进上下文后面会讲1.3 记忆系统四层梯度架构如果说 Skill 是学会了什么记忆就是记住了什么。Hermes 的记忆系统是有梯度的——不同频率、不同用途的信息放在不同的层级。代码层面这套系统由agent/memory_manager.py和hermes_state.py协同实现。第一层工作记忆Working Memory位置当前 LLM 上下文窗口内代码agent/prompt_builder.py中的上下文组装逻辑这是 Agent 正在处理的信息。用户当前的消息、最近的对话历史、正在执行的工具结果都直接放在这里。特点是高频访问、实时可见但容量受模型上下文限制。第二层历史记忆Episodic Memory位置SQLite FTS5hermes_state.py机制自动压缩 按需检索当对话变长工作记忆装不下时agent/context_compressor.py介入保留最近 N 轮完整对话默认保护 20 轮将早期对话压缩为结构化摘要摘要存入 SQLite启用 FTS5 全文检索当用户提到上周讨论过的方案时系统不是把整段历史塞回上下文而是通过 FTS5 全文检索定位相关会话用 LLM 做摘要精炼只把摘要注入当前上下文这样 Token 消耗大幅降低信息密度反而提高。第三层技能记忆Skill Memory位置skills/目录代码tools/skills_tool.py这是程序性记忆——记录的是怎么做而不是发生了什么。Skill 一旦被创建就会被纳入工具注册表tools/registry.py。下次遇到类似任务Agent 不会重新摸索而是直接调用对应的 Skill就像调用一个函数。第四层外部记忆提供者位置插件系统plugins/memory/扩展Honcho、Mem0 等第三方服务对于需要深度用户建模的场景长期追踪行为模式、偏好演化Hermes 提供了扩展接口。比如plugins/memory/hindsight/支持本地嵌入式的知识图谱记忆带实体解析和多策略检索。1.4 渐进式披露Skill 的按需加载机制Skill 越攒越多如果每次都全量加载上下文会爆炸。Hermes 的解法是渐进式披露默认加载Skill 摘要名称 触发条件 一句话描述 ↓ 匹配到相关场景 ↓ 按需加载完整 Skill 内容详细步骤、提示词、工具链代码层面tools/skills_tool.py在注册 Skill 时会维护两级索引元数据层所有 Skill 的摘要常驻上下文体积小内容层完整 Skill 定义仅在触发时注入这是一个很实用的工程细节。在生产环境里跑过 Agent 的人会懂上下文不是免费的每多一个字都在烧钱。渐进式披露让 Skill 数量可以持续增长而不受上下文窗口的限制。1.5 异步复盘Background Review自我学习有一个工程难题学习过程不能打断用户。如果 Agent 每次对话完都停下来反思总结几分钟体验会非常差。Hermes 的解决方案是Background Review——一个独立的异步进程。实现机制run_agent.py中的 Agent Loop 在处理完用户请求后会fork出一个后台进程主进程继续响应用户零延迟后台进程静默分析刚才的对话轨迹判断是否需要提炼新 Skill 或更新旧 Skill这个设计在代码层面体现为进程隔离后台复盘与主对话流完全解耦即使用户在复盘过程中发送了新消息也不会产生竞争条件。触发条件后台复盘不是每次对话都跑。触发条件包括工具调用次数达到一定阈值表明任务有一定复杂度对话中出现了新的成功路径与已有 Skill 不同的解决方式用户显式标记了某个会话为值得学习1.6 为什么这套机制有效对比大多数 Agent 框架的无状态设计Hermes 的自我学习解决了三个根本问题问题传统 AgentHermes 的解法学了就忘每次会话从零开始Skill 持久化 记忆分层存储一学定终身早期错误经验永远保留增量补丁更新持续迭代上下文爆炸历史全量加载渐进式披露 智能压缩这套系统的本质是把 Agent 从一个** Stateless Function**无状态函数变成了一个Stateful Agent有状态智能体。它不只是在响应你而是在与你共同积累知识资产。