Hermes智能体内核

📅 2026/7/8 12:29:12 👁️ 阅读次数 📝 编程学习
Hermes智能体内核

Hermes智能体

hermes五层架构

Hermes智能体采用五层架构设计,基于Harness Engineering方法论构建运行时内核,包含指令层、约束层、反馈层、记忆层和编排层。其特色功能包括:三层记忆架构(工作记忆/长期文件记忆/会话历史记忆)、工具编排系统、执行控制机制(预算管理和中断处理)以及错误恢复能力。系统通过Markdown文件和SQLite数据库实现轻量级记忆存储,支持权限管理与安全控制,并具备经验沉淀机制,可将稳定流程转化为可复用技能。整体设计注重将平台差异与核心功能隔离,实现AI代理的高效运行与持续优化。

运行时内核

内核框架设计遵循Harness Engineering方法论,框架包括指令层、约束层、反馈层、记忆层和编排层共计5个组件,

Harness五组件手动实现方式Hermes内建系统
指令层手写CLAUDE.md / AGENTS.mdSkill系统(markdown skill文件,自动创建+自改进)
约束层配置hooks / linter / CITool 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

具体如下:

  1. 两层记忆存储
    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看得懂、接得住、用得稳