Update avaliable. Click RELOAD to update.
📱 安装应用到主屏幕,获得更好体验
目录

Hermes Agent 内部拆解:自我进化的 AI 是如何工作的

1. 学习循环

大多数 Agent 能记住发生了什么。Hermes 更进一步:它提取出什么方法有效,写成可复用的技能,下次遇到类似问题时直接加载。

这个学习循环是架构的核心,包含四个环节,每个在循环的不同点触发。

Agent 策展式记忆(Periodic Nudges)

在会话的固定间隔,Agent 收到一个系统级提示,要求它回顾刚发生的事情,评估是否有值得持久化到记忆的内容。这个机制不是一次性扫描,而是渐进式的:Agent 只对高价值信息做写入操作,避免记忆变成所有交互的垃圾堆。结果:记忆始终保持策展状态。

自主技能创建

当 Agent 完成一个任务时,它检查是否值得记录执行路径。触发条件:

符合条件则在 ~/.hermes/skills/ 下创建技能文件——不是日志条目,而是可复用的指令集,包含名称、简短描述、步骤说明、工具调用和文件引用。遵循 agentskills.io 开放标准格式,技能在兼容 Agent 之间可移植,无需转换步骤。

会话搜索

每个会话写入 SQLite 归档,通过 FTS5 全文搜索索引。Agent 按需检索过去上下文,不把整个旧会话加载到窗口里。检索结果经过 LLM 摘要后才注入。

外部记忆(Honcho)

可选的第四层,使用 dialectic modeling 方法,跨 12 个身份维度建模你和 Agent 的关系。对于大多数任务型或自动化设置,前三层就足够了。

2. 技能创建的六种操作

通过 skill_manage 工具有六个动作:

操作用途
create创建新技能
patch局部更新(默认首选)
edit全量重写
delete删除技能
write_file写入辅助文件
remove_file删除辅助文件

Agent 默认使用 patch 做大多数更新——只传入旧字符串和替换内容,不重写整个文件。这是一个正确性和效率的双重决策:全量重写可能破坏已经正常工作的部分,patch 只改该改的地方,而且更省 token。

3. 四层记忆系统

把一切混入同一个记忆存储是大多数 Agent 记忆系统随时间变得不可靠的原因。Hermes 把它们分离成四个不同的层,每层有特定的工作和存储位置。

Layer 1:Prompt Memory(始终加载)

MEMORY.md + USER.md 在 ~/.hermes/memories/,每次会话启动时直接注入系统提示。总字符上限 3,575——特意设定得紧凑,强制策展而非堆积。

MEMORY.md 存储环境事实、项目约定、操作经验。USER.md 维护 Agent 对你的认知——技术水平、时区、沟通风格。

Agent 通过 memory 工具管理它们,三个操作:add、replace、remove。一个重要细节:修改仅在下次会话生效,不在对话中途改变 Agent 行为。

Layer 2:Session Search(按需检索)

SQLite FTS5 全文搜索。处理情节记忆(发生了什么、什么时候)。与技能层(程序性记忆——怎么做事情)刻意分离。

区分 Prompt Memory 和 Session Search 的边界: 如果某个信息足够重要,应该在每个未来对话中都存在,它属于 MEMORY.md 或 USER.md。如果只在特定话题出现时才需要,它属于 Session Search。

Layer 3:Skills(程序性记忆)

所有技能在 ~/.hermes/skills/ 作为独立 Markdown 文件。技能加载使用渐进式披露:只有名称和摘要默认加载到索引,完整指令只在 Agent 决定使用该技能时才读取。

这意味着 200 个技能和 40 个技能的上下文成本几乎一样。新安装时,仓库中的捆绑技能被复制到这个目录,Agent 创建的技能也在同一个位置。

Layer 4:Honcho(外部记忆)

可选的 dialectic modeling,12 个身份维度。不是等待显式写入,而是被动地构建你的画像。当把 Hermes 当作日常个人助理、需要跨会话的个性化响应时,这个额外开销是值得的。对于大多数任务型或自动化设置,其他三层已经足够。

4. 网关

学习循环和记忆系统只在 Agent 在你需要时能够被触达时才有用。网关是一个持久后台服务,让 Hermes 保持运行,连接到:

CLI、Telegram、Discord、Slack、WhatsApp、Signal、Email

每个平台有自己的适配器,但都流入共享的会话路由层。一个在 Telegram 上开始的对话可以在 Discord 上继续,上下文不丢失。

Telegram 更进一步支持 Project Conversations,同一个聊天内可以运行隔离的工作流,每个话题携带自己的技能绑定和会话上下文。

网关处理五件事:消息收发、会话路由、投递、配对、定时任务(Cron ticking)。以系统服务运行,hermes gateway 启动后即使关闭终端也在后台持续运行。

5. Agent 循环内部

每条消息经过相同的同步编排引擎(run_agent.py):

  1. Agent 生成任务 ID
  2. 加载缓存的系统提示或从记忆层构建新的
  3. 加载技能索引和上下文文件
  4. 调用 LLM
  5. 如果返回工具调用,执行工具、追加结果、循环回去
  6. 返回最终文本后,持久化到 SQLite
  7. 结果通过网关投递

系统提示优化

系统提示由稳定来源构建,前缀跨回合保持一致,多数 API 提供商会缓存它——降低后续回合的延迟和成本。三个东西进入提示前缀:Agent 的个人笔记、用户档案、技能索引。它们在会话中稳定,不会逐轮改变。

上下文压缩

当预检(pre-flight check)标记对话过长时,一个 sentinel 在达到硬限制之前触发。辅助模型扫描完整对话,提取值得保留的内容,写入新的简要记录。Lineage(引用链连接摘要回合回到原始对话)保存在 SQLite 中,即使经过压缩事件,Agent 仍然可以追溯到早期上下文。

多提供商故障切换

如果当前提供商宕机,Agent 不会卡住。在 config.yaml 中配置有序的推理提供商列表,Hermes 自动 fallthrough 到下一个。

6. 六个终端后端

后端适用场景
Local个人使用,隔离不是问题
Docker希望 Agent 与宿主机隔离
SSHAgent 跑在远程机器上
Kubernetes需要扩展和编排
ECS(AWS)已有 AWS 基础设施的团队
Nomad(HashiCorp)多数据中心部署

Docker 模式默认应用:只读根文件系统、丢弃 Linux 能力(capabilities)、命名空间隔离——这是架构性默认设置,不是可选项。零遥测同样是架构性设计:按设计数据不离开你的机器,不是隐私开关。

7. 40+ 内置工具和技能

工具分五大类:

模型端通过 Nous Portal 单端点连接 400+ 模型,Hugging Face 是一级提供商(完整 HF Inference API 集成)。支持 MCP 和四个插件钩子:pre_llm_callpost_llm_callon_session_starton_session_end

定时任务

Hermes 把定时任务作为一等 Agent 任务处理,不是 shell 脚本或调用 AI 的 cron 作业。当调度时间到达时,Agent 循环以完整的记忆和技能访问权限运行任务,然后通过网关将输出路由到指定位置。

8. Nebius 集成

Hermes-4–405B(128K 上下文窗口)可以通过 Nebius Token Factory 作为托管端点使用,无需管理 GPU 配置、负载均衡或冷启动。内置可观测性:监控请求量、延迟、跨会话的 token 用量。

配置简单:

export NEBIUS_API_KEY="your-key"
hermes model
# 选择 custom OpenAI-compatible endpoint
# 设置 base URL 和 model ID

9. 全局总结

这不是一个轻量级的即用即弃设置。它是你运行和维护的基础设施。但如果每天都在用、跨平台、处理重复且演进的任务——值得。

相关资源:

版权所有,本作品采用知识共享署名-非商业性使用 3.0 未本地化版本许可协议进行许可。转载请注明出处:https://www.wangjun.dev//2026/05/inside-hermes-agent-self-improving-architecture/