
你有没有过这种感觉:装某个开源软件纯粹是因为“大伙都说好”,至于它引擎盖下面到底怎么跑的,你一头雾水?当初我刚上手开源 AI Agent(智能体)时,心里也直打鼓。
这些框架的复杂程度绝对不是闹着玩的,哪怕是资深老兵也得掉层皮。为了让 Agent 既能像老司机一样自主运转,又不至于把用户体验搞砸,它们的仓库架构设计得极其精妙。
最核心的一点是:Agent 的记忆并不是一个随着时间无脑增长的“流水账”。 相反,它是一套依赖交互逻辑和硬核架构支撑的聪明系统。
Hermes Agent 有个招牌功能——“持久化记忆”。很多人一听这词,立马提鞋就从 OpenClaw 阵营投奔到了 Hermes。但这玩意儿到底在说啥?它凭啥比 OpenClaw 强?它还有进步空间吗?
Hermes 试图通过五层过滤机制来模拟人类的记忆行为:
这是最轻量的一层,由 Agent 文件夹里的两个小文件组成:
MEMORY.md:关于环境事实、工具癖好和经验教训的笔记。USER.md:Agent 对你的了解(人设档案)。
这些文件非常精简,总共也就 3500 字符左右。因为它们在每次对话开始时,都会被注入到系统提示词(System Prompt)中。
配置示例 (~/.hermes/config.yaml):
memory:
memory_enabled: true
user_profile_enabled: true
memory_char_limit: 2200 # 约 800 tokens
user_char_limit: 1375 # 约 500 tokens
MEMORY.md 内容示例:
切换至 Qwen-Max 进行 Newsletter 生成。
§ 格式偏好:遵循 'writer' 技能流(禁用破折号/分号,加粗公司名)。
§ 严禁使用“本周/最近”等时间词汇。§ 严禁署名(如 Marco 等)。
§ 来源格式严格执行:Sources: + 标题超链接。
这种“冻结快照模式”确保了 Agent 在当前会话中逻辑的一致性,同时保护了你的钱包。
不管你是在 Telegram 还是终端聊天,每条消息都会存入 SQLite 数据库 (state.db)。
数据库架构:
~/.hermes/state.db (SQLite, WAL mode)
├── sessions — 会话元数据(Token 计数、开销等)
├── messages — 完整的消息历史(包含思考过程)
├── messages_fts — FTS5 虚拟表,支持毫秒级全文本搜索
└── schema_version — 版本控制
当你问“上周咱们聊啥了?”,Agent 会调用 session_search 工具,在数据库里翻旧账。它不会把所有原文丢回去,而是提取相关片段,让小模型给你做个总结。

当对话太长(达到模型上下文 50% 时),ContextCompressor 就会强行介入,防止模型由于“脑载荷”过重而变傻。
核心逻辑四步走:

配置示例:
compression:
enabled:true
threshold:0.85 # 达到 85% 触发
target_ratio:0.2 # 压缩目标比例
protect_last_n:20 # 保留最近 20 条消息
summary_model:qwen-max
这代表 Agent “会做什么”。MEMORY.md 存事实,而技能文件 (Skills) 存操作流程。这些技能存储在 ~/.hermes/skills/ 下的 Markdown 文件中。
这种设计让 Agent 像个“专业工匠”:它平时不需要记住所有细节,只有在用到某个特定技能(比如写代码或查 Wiki)时,才会翻开对应的“操作手册”。
如果内置记忆还不够打,你可以通过外挂升级:
集成指令:
hermes memory setup # 挑选并配置第三方供应商
hermes memory status # 查看当前哪个“外挂脑”在线
Hermes Agent 的记忆系统在召回率、效率和自主性之间找到了完美的平衡。它不像某些笨拙的 AI 试图记住一切,它更像人:
这套系统让 Agent 既能陪你长聊,又不会让你在看到月底账单时心惊胆战。
本文基于对 Hermes Agent 架构的深度调研。开源界是否有新对手能打破这种五层记忆范式?咱们拭目以待。