Hermes Agent 自进化架构深度解析(一):从“静态工具“到“自治系统“>
本文是 Hermes Agent 自进化设计哲学系列的第一篇。我们将从一个核心问题出发为什么大多数 AI 助手无法自我进化而 Hermes 能做到答案不在 AI 模型本身——在于它设计了一套由五个模块组成的自治架构。一、什么是自进化当我们说一个 AI 助手自进化时不是在说模型的权重在自动更新。我们说的是它能自动判断什么该记住——不需要用户说记住这个它能自动修复自己的知识——发现技能过时了立刻更新它能自动清理冗余——后台审查合并重复归档过时内容它能检索历史经验——下次遇到相似问题自动回溯之前的处理方式它在做这一切时不会失控——每层自进化机制上方都有一层硬性约束大多数 AI 助手——包括 Claude Code——停留在被动配置阶段。你有 CLAUDE.md你可以往里写指令AI 会读取。但你得自己写、自己维护、自己清理。AI 不会主动做任何事。Hermes 选择了另一条路。二、五模块架构Hermes 的自进化由五个模块协同完成。它们不是孤立的——通过一套共同的信号系统provenance、lifecycle state、ContextVar互相感知、互相触发。┌─────────────────────────────────────────────────┐ │ Hermes Agent │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │ │ │ Memory │ │ Skills │ │ Session │ │ │ │ System │ │ System │ │ Search │ │ │ │ │ │ │ │ │ │ │ │ 自动判断 │ │ Provenance│ │ FTS5 双索引 │ │ │ │ 冻结快照 │ │ 生命周期 │ │ cron 降权 │ │ │ │ 漂移检测 │ │ Auto-Patch│ │ 经验回溯 │ │ │ └────┬─────┘ └────┬─────┘ └──────┬───────┘ │ │ │ │ │ │ │ └─────────────┼───────────────┘ │ │ │ │ │ ┌──────┴──────┐ │ │ │ Curator │ │ │ │ │ │ │ │ 定期审查 │ │ │ │ 合并重复 │ │ │ │ 归档陈旧 │ │ │ └──────┬──────┘ │ │ │ │ │ ┌──────┴──────┐ │ │ │Background │ │ │ │Review Fork │ │ │ │ │ │ │ │独立 Agent │ │ │ │ContextVar │ │ │ │权限隔离 │ │ │ └─────────────┘ │ │ │ │ ┌──────────────────────────────────────────┐ │ │ │ Safety Layer (全模块) │ │ │ │ 注入扫描 │ 漂移检测 │ 文件锁 │ 防死循环 │ │ │ └──────────────────────────────────────────┘ │ └─────────────────────────────────────────────────┘每个模块在后续文章中会详细展开。这里先给出一个整体对比能力HermesClaude Code持久记忆MEMORY.md USER.md§分隔纯文本 双态模型CLAUDE.mdMarkdown 格式记忆自动判断容量上限触发整理、三次失败自我降级无——用户手动管理技能创建Agent 自动建议 provenance 标记来源用户手动编写技能自动修复使用时发现过时 → 立刻 auto-patch用户手动修改技能生命周期active → stale → archived pinned存在 / 不存在后台审查Curator 独立进程定期运行无审查执行Background Review Fork 独立 ContextVar无会话检索SQLite FTS5 双索引支持全文搜索无持久索引安全防护注入扫描 漂移检测 文件锁 三层防死循环无系统级安全机制三、Claude Code 缺了什么Claude Code 是一个优秀的代码助手。它的 CLAUDE.md 机制让用户可以定义项目级偏好和自定义指令。但它的设计哲学是被动响应——所有行为都是对用户指令的回应。它缺少的不是能力——是机制1. Provenance来源追溯Claude Code 没有这个配置是谁写的的概念。它分不清哪些是你手动写的、哪些是它生成的。所以它不敢自动修改任何东西。Hermes 用created_by字段 ContextVar 运行时判断解决了这个问题。用户在对话中让 Agent 创建的技能 →created_by null→ curator 永不触碰。Background Review fork 自动创建的技能 →created_by agent→ curator 可以管理。2. Curator后台审查者Claude Code 按需启动执行完退出。没有后台进程没有定期审查。Hermes 的 curator 是一个独立进程——有自己的状态文件.curator_state、调度周期、操作权限。它在用户不看的时候运行扫描 agent-created 的技能合并重复归档陈旧。3. Lifecycle生命周期管理Claude Code 的技能只有两个状态你用或者你删。Hermes 的技能有完整的状态机active → stale → archived加上正交的pinned锁定标志。curator 按时间阈值自动过渡状态。4. Background Review Fork独立执行环境Claude Code 没有独立的 fork 来执行 curator 的决策。所有操作都在前台对话上下文中。Hermes 的_spawn_background_review()创建独立的 Agent 实例——有自己的 ContextVar、自己的工具调用上下文。这个 fork 的每一步操作都有运行时权限检查。四、安全不是功能是地基一个自治系统天然比被动系统更危险——因为它会在你不看的时候自己做决定。所以 Hermes 的安全机制不是可选的配置项——它们是硬编码在读写路径上的。注入扫描写入时和加载时双层检测。即使磁盘文件被供应链攻击污染恶意内容也进不了系统提示词。外部漂移检测如果其他进程直接修改了记忆文件下一次replace/remove操作会检测到 round-trip 不匹配 → 拒绝写入 创建.bak备份。文件锁操作系统级排他锁防止并发写入竞态。防死循环记忆整理失败 3 次 → 停止重试。Agent 最多 90 轮工具调用 → 强制停止。内置关键技能如plan被硬编码保护 → curator 任何路径都无法触及。这些安全机制默认开启不可关闭。Hermes 的设计哲学是安全不应该是用户的责任。五、本系列文章结构篇目主题核心源码第二篇记忆系统容量上限如何触发自我整理memory_tool.py第三篇技能系统Provenance 追溯与生命周期管理skill_usage.py、skill_manager_tool.py第四篇Curator 与 Background Review后台自治的核心skill_provenance.py、.curator_state第五篇安全架构注入扫描、漂移检测与防死循环memory_tool.py、threat_patterns.py第六篇Session Search经验检索与 FTS5 双索引session_search_tool.py、hermes_state.py第七篇开放透明设计从配置到 API 请求的全链路config.yaml、transports/、plugins/下一篇我们从记忆系统开始——看一个 2200 字符的上限如何成为自我整理的引擎。Hermes Agent 由 Nous Research 开发。本文基于 Hermes v0.18.0 源码分析。