Hermes智能体
hermes五层架构
Hermes智能体采用五层架构设计,基于Harness Engineering方法论构建运行时内核,包含指令层、约束层、反馈层、记忆层和编排层。其特色功能包括:三层记忆架构(工作记忆/长期文件记忆/会话历史记忆)、工具编排系统、执行控制机制(预算管理和中断处理)以及错误恢复能力。系统通过Markdown文件和SQLite数据库实现轻量级记忆存储,支持权限管理与安全控制,并具备经验沉淀机制,可将稳定流程转化为可复用技能。整体设计注重将平台差异与核心功能隔离,实现AI代理的高效运行与持续优化。
运行时内核
内核框架设计遵循Harness Engineering方法论,框架包括指令层、约束层、反馈层、记忆层和编排层共计5个组件,
| Harness五组件 | 手动实现方式 | Hermes内建系统 |
|---|---|---|
| 指令层 | 手写CLAUDE.md / AGENTS.md | Skill系统(markdown skill文件,自动创建+自改进) |
| 约束层 | 配置hooks / linter / CI | Tool permissions + sandbox + toolset按需启用 |
| 反馈层 | 人工审查 / 评估者Agent | 自改进学习循环(完成任务后自动复盘优化) |
| 记忆层 | 手动维护knowledge base | 三层记忆(会话/持久/Skill)+ Honcho用户建模 |
| 编排层 | 自己搭多Agent pipeline | 子Agent委派 + cron调度 |
在软件工程里,test harness是一个成熟概念:围绕被测代码搭的那层基础设施,负责提供输入、捕获输出、管理执行环境,让测试可重复、可自动化地跑。
相比harness,Hermes把平台差异挡在Agent核心之外。
AI Agent的主循环:它先决定要调用什么工具,系统去执行,然后把结果拿回来给它,它再根据结果判断下一步。就这样反复,直到给出最终回答,或者预算花光,又或者用户主动打断。
上下文管理
Hermes-Agent采用三层记忆架构:
- 工作记忆(上下文管理):工作记忆层对应智能体当前对话的上下文窗口,负责维持本轮交互的连贯性
- 长期文件记忆(MEM.md + USER.md):长期文件记忆层以轻量级Markdown文件为核心载体,存储在本地
~/.simulator/memories/目录下,包含两个文件:MEM.md + USER.md - 会话历史记忆(SQLite + FTS5):会话历史记忆层以 SQLite + WAL 模式数据库持久化存储所有历史交互,内置 FTS5 全文搜索引擎,提供轻量级跨会话检索能力,无需部署额外搜索引擎服务。
当前推理只保留必要上下文,完整历史进SQLite,稳定偏好和项目事实进入记忆,真正能复用的流程再沉成skill。
- 模型上下文适合放眼前要用的信息
- 数据库适合放完整记录
- 记忆适合放稳定偏好和项目事实
- 技能适合放可复用的方法和流程
如下图所示,Hermes 默认的记忆系统是两层记忆存储memory,md和user.md,第三层会话历史记忆需要通过provider额外配置。因此当 provider: ‘’(空值)时,Hermes 不使用第三层记忆 SQLite/外部数据库,而是直接读写 两个 Markdown 文件。
~/.hermes/memories/ ├── MEMORY.md(2,202bytes,98% 满)├── MEMORY.md.lock ├──USER.md(1,152bytes,45% 满)└──USER.md.lock具体如下:
两层记忆存储
Hermes 的记忆系统分为 两个独立存储区,在每一轮对话开始时注入到 system prompt 中:
1️⃣ memory — 我的个人笔记- 存储:环境事实、项目约定、工具 quirks、学到的经验
- 内容容量上限:2,200 字符(当前已用 2,163,占 98%)
- 我用来记:项目路径、OS 细节、工具失效时的 fallback 方案、路径编码问题等
- 不存:任务进度、session 状态、PR 编号、临时 TODO
2️⃣ user — 用户画像
- 存储:你是谁、你的偏好、沟通风格、重要个人信息
- 内容容量上限:1,375 字符(当前已用 629,占 45%)
- 记了:你使用中文、技术敏感、无线网络仿真研究者、Hermes 多 profile 看板工作流等
当前配置
从 config.yaml 拿到的实际配置:
memory:memory_enabled:true# 记忆系统开user_profile_enabled:true# 用户画像开memory_char_limit:2200# memory 容量上限user_char_limit:1375# user 容量上限provider:''# 空 = 使用内置存储(SQLite)nudge_interval:10# 每 10 轮提示我更新记忆flush_min_turns:6# 最少 6 轮才写入一次provider: ‘’ 表示使用内置 SQLite 后端(~/.hermes/state.db 里的 memory 表),不接 Honcho/Mem0 等外部记忆系统。
工具编排
工具集的作用就是给我(agent)的能力——可以调用的 API/函数。
每个工具集包含一组相关工具。例如 terminal 工具集包含 terminal()、process();file 包含 read_file、write_file、patch、search_files。
Hermes-Agent里那些工具注册、并行执行、路径检查,说到底就是为了让Agent能搞清楚自己到底能干什么、不能干什么。
执行控制:预算和中断
Agent跑起来以后,最怕两件事:一是无限循环烧token,二是用户按了Ctrl+C后台还在跑。
错误恢复
权限与安全
经验沉淀
是软件多了一层新的读者:以前主要写给人看,现在还要让Agent看得懂、接得住、用得稳