第 6 讲:记忆与技能系统——双态记忆、MemoryProvider ABC、Skills 渐进式披露与 Slash Command 路由

Hermes Agent 源码解析 · 第 6 讲

Hermes Agent 源码解析 第 6 讲:记忆与技能系统——双态记忆、MemoryProvider ABC、Skills 渐进式披露与 Slash Command 路由 基于 Hermes Agent v0.16.0 源码 · 2026-06-19 一、记忆与技能:Agent 的"大脑皮层" 前五讲我们建立了全局架构地图、深入了对话循环、解析了工具系统的三层架构、拆解了插件系统、研究了 Provider 抽象层。这一讲聚焦 Hermes 最贴近"智能"的两个子系统—— 记忆系统 (Memory)与 技能系统 (Skills)。 记忆让 Agent 跨会话"记住"东西:环境配置、项目约定、用户偏好。技能让 Agent 获得领域专长:代码审查、测试驱动开发、论文检索、图像生成……两者共同构成 Agent 的"长期记忆 + 程序性知识"。 📦 源码仓库 https://github.com/NousResearch/hermes-agent 本地源码: ~/.hermes/hermes-agent/ 本讲核心文件: tools/memory_tool.py (811 行)— 内置记忆存储 agent/memory_manager.py (917 行)— 记忆管理器 agent/memory_provider.py (296 行)— MemoryProvider ABC tools/skills_tool.py (1612 行)— 技能工具 agent/skill_utils.py (666 行)— 技能元数据处理 agent/skill_commands.py (527 行)— Slash Command 路由 agent/skill_bundles.py (410 行)— 技能组合 agent/skill_preprocessing.py (140 行)— 技能预处理 plugins/memory/ (8+ 外部记忆后端) 二、记忆系统:双态存储与 Frozen Snapshot 模式 记忆系统的设计有一个核心矛盾: 记忆要持久化(跨会话保留),但系统提示词要冻结(保 prefix cache) 。Hermes 的解决方案是 双态存储 (Dual-State Storage)—— MemoryStore 同时维护两套状态: MemoryStore 双态模型: +---------------------+ +--------------------------+ | _system_prompt_ | | memory_entries / | | snapshot | | user_entries (live) | +---------------------+ +--------------------------+ | 冻结态 (Frozen) | | 活跃态 (Live) | +---------------------+ +--------------------------+ | • 加载时一次性捕获 | | • 工具调用实时更新 | | • 整个会话期间不变 | | • 立即持久化到磁盘 | | • 注入系统提示词 | | • 工具响应反映最新状态 | | • 保 prefix cache | | • 用户可 inspect + remove | +---------------------+ +--------------------------+ 文件: tools/memory_tool.py:113-122 两个文件: ~/.hermes/memories/MEMORY.md — Agent 的个人笔记 (2200 字符) ~/.hermes/memories/USER.md — 用户画像 (1375 字符) 条目分隔符: § (section sign) 字符限制 (非 token): 模型无关的硬约束 1. 加载时双态分离 load_from_disk() 是双态模型的起点。它从磁盘读取条目,然后 分叉 为两条路径: 📄 tools/memory_tool.py (第 132-170 行) def load_from_disk(self): """Load entries, capture system pr…

阅读全文:Hermes Agent 源码解析 第 6 讲