Hermes Agent 深度解析:自进化 AI Agent 的三层记忆架构与 Skills 闭环实战
2026 年 2 月,Nous Research 开源了 Hermes Agent。不到 6 周,GitHub Star 突破 4.7 万,最高单日新增 6400+ Star,多次登顶 GitHub Trending 总榜。它凭什么?
一、背景:为什么现有 Agent 框架不够用?
2025–2026 年,AI Agent 框架层出不穷。LangChain、AutoGen、CrewAI……它们有一个共同痛点:没有持久记忆,不会自我进化。
每次会话都是一张白纸。你昨天教过它的东西,今天重启就忘了。你让它学会了一个复杂任务的解决方法,下次遇到同类任务,它还是从零开始。
这不是"智能体",这是"有幻觉的脚本"。
Hermes Agent 的核心设计哲学就是解决这个问题:让 AI Agent 像人一样积累经验、记住过去、越用越聪明。
二、核心架构:三层记忆 + Skills 闭环
2.1 三层记忆架构
Hermes Agent 的记忆系统借鉴了 CPU 缓存的分层设计思想,将记忆分为三个层次:
L1:核心记忆(MEMORY.md)—— "热记忆"
- 容量:约 2200 字符(~800 tokens)
- 加载时机:每次会话启动时注入系统提示词
- 存储内容:环境事实、项目约定、重要经验教训
- 典型数据:
- "本项目使用 React 18 + TypeScript,测试框架是 Vitest"
- "用户反馈不喜欢大段文字,希望用列表呈现"
- "上次部署失败时,根源是 node_modules 缓存问题,需先
rm -rf node_modules && npm install"
关键设计:MEMORY.md 每次会话开始时被冻结为快照,注入 system prompt。这保证了核心上下文不丢失,同时避免了每次请求都携带全量历史造成的 token 浪费。
L2:用户画像(USER.md)—— "温记忆"
- 容量:约 1375 字符(~500 tokens)
- 存储内容:用户姓名、角色、技术栈偏好、沟通风格
- 典型数据:
- "张明,后端架构师,沟通风格偏向简洁,擅长 Go 语言"
- "喜欢代码示例优先于理论解释"
- "对性能优化话题特别感兴趣"
L3:会话记忆(SQLite + FTS5)—— "冷记忆"
- 存储方式:SQLite 数据库,FTS5 全文索引
- 容量:理论上无上限,受磁盘空间限制
- 检索方式:毫秒级 FTS5 全文搜索
- 存储内容:完整的历史会话记录、任务执行轨迹、技能文件
FTS5 全文索引的优势:
-- Hermes Agent 内部使用类似这样的 FTS5 查询
SELECT * FROM memory_fts
WHERE memory_fts MATCH 'React useEffect 清理函数'
ORDER BY rank
LIMIT 5;
相比直接把历史记录全部塞进 context window,这种分层设计节省了 80–90% 的 token 消耗。
2.2 Skills 闭环:从"执行"到"经验"到"技能"
这是 Hermes Agent 最具创新性的部分。完整流程如下:
任务执行
↓
工具调用轨迹记录(每完成 15 次工具调用或完成一个复杂任务)
↓
自动触发自评估(LLM 复盘执行过程)
↓
提取成功模式 → 生成 SKILL.md(Markdown 格式的可复用技能文件)
↓
写入 ~/.hermes/skills/ 目录
↓
下次遇到同类任务 → 自动检索并加载相关 Skill
↓
执行后继续评估 → 优化已有 Skill(合并、去重、更新)
Skill 文件示例
# Skill: Debug Node.js Memory Leak
## Trigger
User mentions: "memory leak", "out of memory", "heap growing", "RSS increasing"
## Steps
1. Run `node --inspect app.js` and open chrome://inspect
2. Take heap snapshot at startup (baseline)
3. Exercise the suspicious endpoint/function in a loop (100+ iterations)
4. Take second heap snapshot
4. Look for objects retaining size that shouldn't be there
5. Common culprits:
- Event listeners not removed (use once() instead of on())
- Closures capturing large objects
- Global variable accumulation
- setInterval not cleared
## Code
```javascript
// Force garbage collection (requires --expose-gc)
global.gc();
const usage = process.memoryUsage();
console.log(`Heap used: ${usage.heapUsed / 1024 / 1024} MB`);
Gotchas
- V8's GC is lazy; memory may not be freed immediately
- Use
--max-old-space-size=4096to raise the limit during debugging
#### 实际效果(来自社区测试数据)
> 连续运行 3 个月后,65% 的新任务可以直接调用已有 Skill,无需从零规划。
---
## 三、架构深探:一次请求的完整生命周期
### 3.1 Agent Loop 伪代码
```python
async def agent_loop(user_message: str, session_id: str):
# 1. 加载记忆
memory = load_memory_md() # L1: MEMORY.md (~800 tokens)
user_profile = load_user_md() # L2: USER.md (~500 tokens)
relevant_history = fts5_search(user_message) # L3: SQLite FTS5
# 2. 检索相关 Skills
relevant_skills = skill_indexer.search(user_message)
# 3. 组装系统提示词(动态组装,不是静态文件)
system_prompt = build_system_prompt(
memory, user_profile, relevant_history, relevant_skills
)
# 4. 进入 ReAct 循环
messages = [{"role": "user", "content": user_message}]
tool_call_count = 0
while not done:
response = llm_call(system_prompt, messages)
if has_tool_calls(response):
tool_results = execute_tools(response.tool_calls)
messages.append(response)
messages.append(tool_results)
tool_call_count += len(response.tool_calls)
else:
final_answer = response.content
done = True
# 5. 触发自评估(每 15 次工具调用)
if tool_call_count >= 15 and tool_call_count % 15 == 0:
trigger_background_review(session_id)
# 6. 任务完成后,触发 Skill 提炼
schedule_skill_extraction(session_id)
return final_answer
3.2 工具调用注册表模式
Hermes Agent 内置 40+ 种工具,采用注册表模式统一管理:
TOOL_REGISTRY = {
"bash": execute_shell_command,
"read_file": read_file_content,
"write_file": write_file_content,
"search_web": duckduckgo_search,
"read_url": web_fetch,
"list_files": glob_list,
"edit_file": file_edit_tool,
"run_python": execute_python_code,
# ... 40+ tools
}
每个工具都有:
- JSON Schema 定义的输入参数规范
- 超时控制(默认 120s,可配置)
- 沙箱隔离(可选 Docker/Daytona)
- 结果截断(防止超大输出撑爆 context)
四、代码实战:从零部署到编写第一个自定义 Skill
4.1 一键安装
# Linux / macOS / WSL2
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
# 安装完成后重新加载 shell
source ~/.bashrc # 或 ~/.zshrc
安装脚本会自动:
- 检测操作系统和架构
- 安装 Python 3.10+(如需要)
- 创建
~/.hermes/目录结构 - 安装 Hermes Agent 的 Python 依赖
- 配置 systemd / launchd 服务(可选)
4.2 配置大模型
# 交互式配置(推荐)
hermes configure
# 或手动设置环境变量
export ANTHROPIC_API_KEY="sk-ant-..."
export OPENAI_API_KEY="sk-..."
export KIMI_API_KEY="..."
# 选择默认模型
hermes model set anthropic/claude-sonnet-4
高级:一个 API Key 接入 600+ 模型
Hermes Agent 支持通过 openrouter 作为 provider,一个 API Key 接入 OpenRouter 平台上的 600+ 模型:
hermes provider add openrouter --api-key "sk-or-v1-..."
hermes model set openrouter/anthropic/claude-sonnet-4
hermes model set openrouter/google/gemini-2.5-pro
# 可以随时切换,无需重新配置 Key
4.3 编写第一个自定义 Skill
在 ~/.hermes/skills/ 下创建 my_skill.md:
# Skill: Optimize Docker Image Size
## Trigger
User mentions: "docker image too large", "reduce image size", "docker slim", "multi-stage build"
## Steps
1. Check current image size: `docker images | grep <image_name>`
2. Use multi-stage build:
- Stage 1 (build): full dependencies, build artifacts
- Stage 2 (runtime): only production dependencies, copy artifacts from Stage 1
3. Use distroless or alpine as base image
4. Combine RUN commands to reduce layers: `RUN apt-get update && apt-get install -y ... && rm -rf /var/lib/apt/lists/*`
5. Add `.dockerignore` to exclude node_modules, .git, etc.
## Code Example
```dockerfile
# Multi-stage build example
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --production
COPY . .
RUN npm run build
FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/package*.json ./
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
USER node
CMD ["node", "dist/index.js"]
Expected Result
- Image size reduction: typically 60–80%
- Security: fewer packages = smaller attack surface
Gotchas
- Don't use
COPY --from=builder /app/node_modules ./node_modulesif you have native dependencies built for a different architecture - Alpine uses musl libc; some native modules may need rebuild
保存后,Hermes Agent 会自动索引这个 Skill。下次你说"我的 Docker 镜像太大了,帮我优化",它会自动加载这个 Skill 并照此执行。
---
## 五、多平台网关:一个 Agent 管所有
Hermes Agent 的 **Gateway 架构** 允许同一个 Agent 实例同时接入多个消息平台:
┌─────────────────────────────────┐
│ Hermes Agent Gateway │
│ (ws://127.0.0.1:19000) │
└──────┬──────────────────────────┘
│
┌─────────────────┼─────────────────────────┐
│ │ │
Telegram Discord Slack
WhatsApp Signal Email
WeChat CLI (本地终端) Web UI
配置示例(`~/.hermes/config.yaml`):
```yaml
gateway:
host: 127.0.0.1
port: 19000
platforms:
telegram:
enabled: true
token: "123456:ABC-DEF..."
discord:
enabled: true
token: "your-discord-bot-token"
slack:
enabled: false
wechat:
enabled: false # 需要额外配置,见官方文档
关键优势:无论在哪个平台给 Agent 发消息,它都记得你——因为记忆是统一存储在本地 SQLite 里的,跟平台无关。
六、并行子智能体:Delegate Task 深度实战
Hermes Agent 支持通过 delegate_task 工具拉起子智能体处理专项任务:
# 主 Agent 收到任务:
# "分析我这个仓库的代码质量,检查安全漏洞,生成架构图"
# 主 Agent 规划后,并行拉起 3 个子 Agent:
subtasks = [
{"task": "分析代码质量,输出报告", "model": "claude-sonnet-4"},
{"task": "运行安全扫描(semgrep + npm audit),输出漏洞列表", "model": "gpt-4o"},
{"task": "分析目录结构,生成 Mermaid 架构图", "model": "gemini-2.5-pro"}
]
# 并行执行(真正的并行,不是串行等待)
results = parallel_execute(subtasks)
# 主 Agent 汇总三个子任务的结果,输出最终报告
子智能体的隔离性:
- 每个子 Agent 有独立的会话 context
- 可选的 Docker 沙箱隔离(防止恶意代码影响主系统)
- 子 Agent 完成后自动销毁,不污染主 Agent 的记忆
七、与 OpenClaw 的对比:两匹马的赛跑
| 维度 | Hermes Agent | OpenClaw |
|---|---|---|
| 记忆系统 | 三层(MEMORY.md + USER.md + SQLite/FTS5) | 主要依赖 MEMORY.md,跨会话记忆较弱 |
| 自进化 | 自动生成和优化 Skills | 支持 Skills 但需要手动配置 |
| 部署门槛 | 一行命令安装 | 需要 Node.js 环境,配置稍复杂 |
| 消息平台 | 12+ 平台(含微信) | 10+ 平台 |
| 沙箱后端 | 7 种(含 Modal/Daytona Serverless) | 主要依赖本地/SSH |
| Token 消耗 | 分层记忆节省 80–90% | 相对较多 |
| 社区增长 | 6 周 4.7 万 Star | 2 天 10 万 Star(更快) |
| 定位 | "越用越聪明的数字员工" | "私人 AI 助手,多渠道整合" |
结论:两者定位略有不同。OpenClaw 更强在"多渠道整合 + 快速部署",Hermes Agent 更强在"记忆持久化 + 自进化学习"。
八、生产级部署:Docker + systemd + Nginx 完整方案
8.1 Docker 部署(推荐生产环境)
# Dockerfile
FROM python:3.12-slim
RUN apt-get update && apt-get install -y \
git \
curl \
&& rm -rf /var/lib/apt/lists/*
RUN pip install --no-cache-dir hermes-agent
WORKDIR /root/.hermes
# 挂载持久化目录
VOLUME ["/root/.hermes"]
CMD ["hermes", "gateway", "start"]
# 构建并运行
docker build -t hermes-agent:latest .
docker run -d \
--name hermes-agent \
-v ~/.hermes:/root/.hermes \
-p 19000:19000 \
-e ANTHROPIC_API_KEY \
hermes-agent:latest
8.2 systemd 服务(服务器持久运行)
# /etc/systemd/system/hermes-agent.service
[Unit]
Description=Hermes Agent Gateway
After=network.target
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/.hermes
ExecStart=/usr/local/bin/hermes gateway start
Restart=always
RestartSec=10
Environment="ANTHROPIC_API_KEY=sk-ant-..."
Environment="LOG_LEVEL=info"
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable hermes-agent
sudo systemctl start hermes-agent
sudo systemctl status hermes-agent
8.3 Nginx 反向代理(暴露到公网)
# /etc/nginx/sites-available/hermes-agent
server {
listen 443 ssl;
server_name hermes-api.yourdomain.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
location / {
proxy_pass http://127.0.0.1:19000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
九、进阶:GEPA 进化引擎与 Skill 质量自我提升
Hermes Agent 内置了一个叫 GEPA(Guided Evolutionary Prompt Architecture) 的离线验证引擎,它的作用是:
- 收集历史任务执行数据
- 对每个 Skill 的效果进行量化评估(成功率、token 消耗、用户反馈)
- 自动生成优化版本的 Skill
- 通过 A/B 测试验证优化效果
- 用更优版本替换旧版 Skill
Skill v1.0 (人工编写)
↓
使用过程中收集执行数据
↓
GEPA 分析:哪些步骤经常失败?哪些可以简化?
↓
自动生成 Skill v1.1(优化版)
↓
A/B 测试:v1.0 vs v1.1
↓
v1.1 成功率更高 → 替换 v1.0
↓
循环继续...
这个机制使得 Hermes Agent 的 Skills 质量可以在无人干预的情况下持续提升。
十、总结与展望
Hermes Agent 的出现,标志着 AI Agent 从"工具"向"伙伴"的范式转变。
核心收获:
分层记忆架构是解决 Agent 持久化的正确方向——把热/温/冷记忆分开处理,在成本、效率、能力之间找到最佳平衡点。
Skills 闭环让 Agent 具备了"程序性记忆"——不仅会记住事实(知道什么),还会记住怎么做(怎么做),并能把经验传递给未来的自己。
GEPA 进化引擎打开了 Agent 自我改进的大门——未来可能出现完全由 AI 维护的 Skill 生态,人类只需要定义问题,不需要手写解决方案。
未来展望:
- Skill 市场:像 npm 但面向 AI Agent Skills 的生态系统
- 多 Agent 协同:Hermes Agent 之间可以互相分享 Skills
- 本地小模型 + 云端大模型混合架构:简单任务用本地 7B 模型(延迟低、零成本),复杂任务路由到 Claude/GPT(能力强)
参考资源
- GitHub: https://github.com/NousResearch/hermes-agent
- 官方文档: https://hermes-agent.readthedocs.io
- Skill 生态: https://agentskills.io(社区驱动的 Skill 分享平台)
- Discord 社区: https://discord.gg/nousresearch
本文基于 Hermes Agent v0.13.0(2026 年 5 月)撰写,代码示例仅供参考,生产环境请参考官方文档。