news 2026/11/5 4:25:45

揭秘Hermes Agent的持久化记忆系统:让AI真正记住你的偏好与习惯

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
揭秘Hermes Agent的持久化记忆系统:让AI真正记住你的偏好与习惯

揭秘Hermes Agent的持久化记忆系统:让AI真正记住你的偏好与习惯

Hermes Agent是一款智能AI助手,其核心优势在于拥有强大的持久化记忆系统,能够跨会话记住用户的偏好与习惯。这个创新的记忆系统通过文件持久化技术,让AI不再是"健忘"的工具,而是能随着使用时间推移变得更加智能和个性化的助手。

Hermes Agent记忆系统的核心设计理念

Hermes Agent的记忆系统采用了双存储设计,将记忆分为两个独立的部分:

  • MEMORY.md:存储AI代理的个人笔记和观察结果,包括环境事实、项目约定、工具特性以及学习到的知识
  • USER.md:记录AI对用户的了解,包括偏好、沟通风格、期望和工作流习惯

这两个文件都存储在~/.hermes/memories目录下,采用文件持久化方式确保数据不会因会话结束而丢失。系统在会话开始时会将这些记忆作为快照注入到系统提示中,而会话中的更新会立即写入磁盘,但不会改变当前会话的系统提示,这种设计既保证了记忆的持久性,又维持了系统提示的稳定性。

记忆系统的工作原理与技术实现

Hermes Agent的记忆系统通过MemoryStore类实现核心功能,该类维护着两种并行状态:

  1. 系统提示快照:在会话开始时冻结,用于系统提示注入,整个会话期间保持不变,确保前缀缓存稳定
  2. 实时状态:通过工具调用进行修改,并即时持久化到磁盘,工具响应始终反映最新状态

记忆条目使用特殊的分隔符§(段落符号)进行分隔,支持多行条目。系统对记忆内容实施字符限制(而非 tokens),确保跨模型兼容性,其中MEMORY.md限制为2200字符,USER.md限制为1375字符。

# 记忆存储的初始化代码 class MemoryStore: def __init__(self, memory_char_limit: int = 2200, user_char_limit: int = 1375): self.memory_entries: List[str] = [] self.user_entries: List[str] = [] self.memory_char_limit = memory_char_limit self.user_char_limit = user_char_limit # 系统提示快照 - 在load_from_disk()时设置一次 self._system_prompt_snapshot: Dict[str, str] = {"memory": "", "user": ""}

记忆操作的原子性保证

为确保记忆数据的完整性,系统采用了原子写入技术:

@staticmethod def _write_file(path: Path, entries: List[str]): """使用原子临时文件+重命名写入条目到内存文件""" content = ENTRY_DELIMITER.join(entries) if entries else "" try: # 在同一目录下写入临时文件(保证同一文件系统上的原子重命名) fd, tmp_path = tempfile.mkstemp( dir=str(path.parent), suffix=".tmp", prefix=".mem_" ) try: with os.fdopen(fd, "w", encoding="utf-8") as f: f.write(content) f.flush() os.fsync(f.fileno()) os.replace(tmp_path, str(path)) # 在同一文件系统上是原子操作 except BaseException: # 任何失败时清理临时文件 try: os.unlink(tmp_path) except OSError: pass raise except (OSError, IOError) as e: raise RuntimeError(f"Failed to write memory file {path}: {e}")

这种方法避免了传统文件写入可能导致的部分写入或文件损坏问题,确保了记忆数据的可靠性。

安全防护:防止记忆注入攻击

记忆系统是AI的核心组成部分,安全至关重要。Hermes Agent实现了多层次防护机制:

  1. 内容扫描:检查记忆内容中是否包含提示注入、角色劫持、秘密窃取等威胁模式
  2. 不可见字符检测:识别并阻止包含零宽空格等不可见字符的内容,防止隐藏注入
  3. 操作限制:严格控制记忆的添加、修改和删除权限
def _scan_memory_content(content: str) -> Optional[str]: """扫描内存内容中的注入/窃取模式。如果被阻止,返回错误字符串。""" # 检查不可见unicode字符 for char in _INVISIBLE_CHARS: if char in content: return f"Blocked: content contains invisible unicode character U+{ord(char):04X} (possible injection)." # 检查威胁模式 for pattern, pid in _MEMORY_THREAT_PATTERNS: if re.search(pattern, content, re.IGNORECASE): return f"Blocked: content matches threat pattern '{pid}'. Memory entries are injected into the system prompt and must not contain injection or exfiltration payloads." return None

这些安全措施确保了记忆系统不被恶意利用,保护AI和用户的安全。

实用记忆管理功能

Hermes Agent提供了直观的记忆管理工具,通过简单的API即可完成记忆的增删改查:

  • 添加记忆:使用add动作添加新的记忆条目,系统会自动检查字符限制和重复内容
  • 替换记忆:使用replace动作更新现有条目,通过唯一子字符串匹配定位条目
  • 删除记忆:使用remove动作删除条目,同样通过子字符串匹配定位
def memory_tool( action: str, target: str = "memory", content: str = None, old_text: str = None, store: Optional[MemoryStore] = None, ) -> str: """记忆工具的单一入口点。调度到MemoryStore方法。返回JSON字符串结果。""" # 实现记忆操作的核心逻辑

系统还会自动计算记忆使用率,并在接近容量上限时提醒用户进行整理,保持记忆系统的高效运行。

记忆系统的最佳实践

要充分利用Hermes Agent的记忆系统,建议遵循以下最佳实践:

  1. 主动记忆重要信息:

    • 用户分享的偏好、习惯或个人细节(姓名、角色、时区、编码风格)
    • 环境相关信息(操作系统、已安装工具、项目结构)
    • 用户的纠正或明确要求记住的内容
    • 特定于用户设置的约定、API特性或工作流
  2. 合理分类记忆:

    • 将与用户相关的信息存入"user"目标
    • 将环境和学习到的知识存入"memory"目标
  3. 保持记忆精简:

    • 避免存储琐碎或明显的信息
    • 不存储容易重新发现的内容
    • 避免原始数据转储,提炼关键信息
  4. 定期整理记忆:

    • 当记忆使用率超过80%时,主动合并或精简条目
    • 及时删除过时或不再相关的信息

通过遵循这些实践,用户可以让Hermes Agent随着使用时间的推移变得越来越智能,真正成为理解用户需求的个性化助手。

总结:持久化记忆如何改变AI交互体验

Hermes Agent的持久化记忆系统通过创新的双存储设计、原子写入技术和安全防护机制,解决了传统AI助手"健忘"的痛点。这个系统不仅能记住用户的偏好和习惯,还能学习环境知识和工作流程,随着使用时间的积累,提供越来越个性化和高效的服务。

无论是个人用户还是开发团队,都能从这个持久化记忆系统中获益:个人用户获得更加贴心的智能助手,开发团队则能构建持续学习和适应的AI工作流。随着AI技术的不断发展,持久化记忆必将成为智能助手的核心竞争力之一。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/5 4:25:45

MoviePilot 部署教程:3 次关键设置,一次配好 NAS 媒体库自动整理

MoviePilot 部署教程:3 次关键设置,一次配好 NAS 媒体库自动整理 【免费下载链接】MoviePilot NAS媒体库自动化管理工具 项目地址: https://gitcode.com/gh_mirrors/mo/MoviePilot MoviePilot 是一款面向 NAS 的媒体库自动化管理工具:…

作者头像 李华
网站建设 2026/11/5 4:25:28

初阶数据结构【单链表及其接口的实现】

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/5 4:25:28

DSH Desktop 故障排查指南:4 步从窗口消失救回应用

DSH Desktop 故障排查指南:4 步从窗口消失救回应用 【免费下载链接】deepseek-harness-desktop 为 DeepSeek Harness (DSH) 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。 项目地址: https://gitcode.com/gh_mirrors/de…

作者头像 李华
网站建设 2026/11/5 4:25:28

Firefox 中手动安装猫抓 cat-catch,资源嗅探扩展装完即用

Firefox 中手动安装猫抓 cat-catch,资源嗅探扩展装完即用 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓(cat-catch&a…

作者头像 李华
网站建设 2026/11/5 4:25:44

Mineradio 完整升级指南:安全更新最新版并保护本地登录态

Mineradio 完整升级指南:安全更新最新版并保护本地登录态 【免费下载链接】Mineradio-paused 一款以电影镜头、粒子视觉和歌词舞台为核心的沉浸式音乐播放器。 项目地址: https://gitcode.com/gh_mirrors/mi/Mineradio-paused Mineradio 是一款以电影镜头、粒…

作者头像 李华