从"第二天失忆"到"越用越聪明":Hermes Agent 如何用 Skills 闭环系统重新定义 AI Agent
如果你用过 Claude Code、Cursor 或 OpenClaw,一定经历过这个崩溃时刻:花半小时跟 AI 讲清楚项目规范,第二天它两眼一抹黑,什么都不记得了。Hermes Agent 想解决的就是这个问题——而且解决的方式,比你想象的聪明得多。
一、为什么所有 AI 助手都在"装失忆"
先说一个扎心的现实:当前主流的 AI 编程助手,几乎都是健忘症患者。
你关掉终端,它们就忘了你是谁;你换一次会话,它们就忘了你上次做到哪;你教了它三遍的编码规范,下次它依然我行我素。
这不是技术不够,而是架构设计上的原罪。
大多数 AI 助手的运行逻辑是:接收 Prompt → 推理 → 输出 → 结束。整个过程是无状态的,就像每次都从一个空白的大脑开始对话。它们当然可以有记忆文件(CLAUDE.md、.cursorrules 等),但这些文件是静态的——需要你手动维护,AI 不会主动更新它们。
这导致了一个悖论:理论上最了解你项目的人应该是你的 AI 助手,但实际上它是整个团队里最不了解你的那个。
1.1 现有的"曲线救国"方案
社区为了解决这个问题,搞出了各种 workaround:
| 方案 | 实现方式 | 致命缺陷 |
|---|---|---|
| CLAUDE.md | 手动写提示词文件 | 需要人维护,AI 不主动更新 |
| claude-mem | 外挂记忆压缩系统 | 与 Agent 割裂,需要额外安装 |
| OpenClaw 记忆系统 | 会话级持久化 | 闭源,迁移成本高 |
这些方案都有个共同问题:记忆是外部附加的,不是 Agent 原生能力。Agent 本身不知道自己有记忆这回事,一切靠人来管理。
1.2 Hermes Agent 的破局思路
Hermes Agent 的设计哲学完全不同。它的 README 第一句话就亮了:
"The only agent with a built-in learning loop"
(唯一一个内置学习闭环的 Agent)
这个内置学习闭环,才是 Hermes Agent 的灵魂。它要解决的不是"怎么存记忆",而是**"Agent 怎么自己学会变得更好"**——不需要人类保姆,AI 自己能从错误中提炼经验,把经验固化成可复用的技能,然后在下次遇到类似场景时自动调用。
这听起来像是科幻,但 Hermes Agent 用工程化的方式把它实现了。
二、核心架构:从"对话机器人"到"会成长的 Agent"
2.1 整体架构一览
Hermes Agent 不是框架,是一个完整的、可运行的、会自我成长的个人 Agent。它的架构可以分成四层:
┌─────────────────────────────────────────────┐
│ 应用层 (Application Layer) │
│ CLI / Telegram / Discord / Slack / QQ / Web │
├─────────────────────────────────────────────┤
│ 技能层 (Skills Layer) │
│ Agent 自动创建 · 自我改进 · 跨会话复用 │
├─────────────────────────────────────────────┤
│ 记忆层 (Memory Layer) │
│ WORKING · EPISODIC · SEMANTIC · PROCEDURAL │
├─────────────────────────────────────────────┤
│ 执行层 (Execution Layer) │
│ 本地 / Docker / SSH / Daytona / Modal / ... │
└─────────────────────────────────────────────┘
每一层都值得深挖,但我们重点讲两个最核心的创新:Skills 闭环系统和四层记忆架构。
2.2 Skills 闭环系统——Agent 怎么自己写代码
传统的 Agent 系统里,工具(Tools)是开发团队预定义的,用户不能动态添加。Hermes Agent 最大的创新在于:Agent 自己可以创建新的 Skill。
这个 Skill 不是配置文件,是一个完整的 Markdown 文件,包含:
- 描述(Description):这个 Skill 干什么用
- 触发条件(Triggers):什么场景下应该调用它
- 使用示例(Examples):怎么用
- 最佳实践(Best Practices):积累的工程经验
- 预期输出(Expected Output):如何验证结果
具体怎么生成? 看这个流程:
用户请求 → Agent 执行任务 → 任务成功/失败
↓
触发 Skill 生成评估
↓
如果 Agent 发现"这个操作以后还会用到"
↓
自动生成 Skill 文件(Markdown 格式)
↓
存入 ~/.hermes/skills/
↓
下次遇到类似场景 → 自动检索相关 Skill → 注入上下文 → 执行
一个实际的例子:假设你让 Agent 帮你审查一个 PR,它发现你团队有一条不成文的规矩——"所有对外 API 必须加 Retry 逻辑"。传统的 Agent 下次就忘了。但 Hermes Agent 会:
- 识别:从对话中识别出这是一条值得沉淀的工程规范
- 生成:自动写一个
api-review-checklist.mdSkill - 存储:持久化到
~/.hermes/skills/ - 复用:下次做 PR review 时自动加载这条规则
这不是简单的"保存对话记录",是从经验中提取可复用的工程知识。
2.3 代码:Skill 文件长什么样
# Skill: API Review Checklist for [Your Team]
## Description
Ensures all public API endpoints have proper retry logic,
logging, and error handling before merging.
## Triggers
- Keywords: `review`, `api`, `endpoint`, `pr`, `merge`
- File patterns: `**/api/**`, `**/routes/**`, `**/handlers/**`
## Examples
When reviewing a new API file:
1. Check for @retry decorator or manual retry logic
2. Verify structured logging (not print statements)
3. Ensure error responses follow team format
## Best Practices
- Retry: Use exponential backoff, max 3 attempts
- Logging: Use team logger, include request_id
- Errors: Always return structured JSON, never raw exceptions
## Expected Output
A markdown checklist with ✅/❌ for each item
这就是一个 Skill 的本质——AI 自己从经验中提炼出来的工程最佳实践文档。它比 CLAUDE.md 聪明的地方在于:不需要人写,AI 主动生成。
三、四层记忆架构——Agent 的"大脑皮层"
Hermes Agent 的记忆系统是它区别于所有竞品的核心技术壁垒。它模拟人类记忆的逻辑,设计了四层架构:
3.1 第一层:工作记忆(Working Memory)
这是最薄的一层,只在单次会话内有效。
类似于 CPU 的 L1 Cache,用来暂存当前任务的上下文——正在写的代码、正在处理的需求文档、当前对话的历史摘要。当会话结束,这层记忆就清空了。
实现方式:
# 伪代码示意
class WorkingMemory:
def __init__(self):
self.current_task = {} # 当前任务上下文
self.conversation_history = [] # 本会话对话记录
self.working_files = [] # 当前打开的文件列表
def update(self, event):
# 实时更新,容量很小(~4K tokens)
self.current_task = event
3.2 第二层:情景记忆(Episodic Memory)
这是 Hermes Agent 最核心的记忆层,对应人类大脑的海马体——负责"发生了什么"的记忆。
持久化存储所有历史交互数据:
- 对话记录(按项目/按时间组织)
- 任务执行历史(成功/失败/踩坑记录)
- 项目细节(项目结构、技术栈、部署方式)
- 开发者偏好(编码风格、习惯、禁忌)
存储结构:
~/.hermes/
├── memories/
│ ├── MEMORY.md # Agent 个人笔记 (~2200 chars)
│ ├── USER.md # 用户画像 (~1100 chars)
│ └── episodes/ # 历史交互记录(SQLite/FTS5)
└── skills/
└── *.md # 沉淀的技能
关键设计:故意对 MEMORY.md 设置了 ~2200 字符的软上限。这个上限逼迫 Agent 必须提炼精华,而不是无脑堆积上下文。这个设计哲学非常有意思——它模拟了人类记忆的"遗忘曲线",逼迫 AI 做信息取舍。
3.3 第三层:语义记忆(Semantic Memory)
这层存储的是通用知识,类似于人类的"常识库"。
- 编程语言的最佳实践(不限于当前项目)
- 开源项目的背景知识
- 工具链的使用经验
不是针对某个项目的经验,而是跨项目的通用知识积累。
3.4 第四层:程序记忆(Procedural Memory)
这层最特殊,存储的是Agent 的"肌肉记忆"——怎么完成某个任务的流程和步骤。
# 伪代码示意:程序记忆的工作方式
class ProceduralMemory:
def __init__(self):
self.skills = [] # 所有已沉淀的 Skill
def retrieve(self, context):
# 根据当前上下文检索相关 Skill
relevant_skills = vector_search(context, self.skills)
# 将 Skill 注入到 Agent 的系统提示中
return inject_into_context(relevant_skills)
当用户说"帮我 review 这个 PR",Agent 会自动:
- 从程序记忆中检索相关的
api-review-checklist.md - 从情景记忆中加载项目上下文(用的是什么框架、团队规范是什么)
- 从工作记忆中获取当前 PR 的具体内容
- 组合三层信息,生成精准的 review 意见
3.5 记忆检索:FTS5 全文搜索
这么多层记忆,怎么快速检索?Hermes Agent 使用 SQLite FTS5(全文搜索)作为记忆检索引擎。
-- 记忆检索示例
SELECT snippet(memory_fts, 0, '【', '】', '...', 32) as context
FROM memory_fts
WHERE memory_fts MATCH 'retry OR api OR error handling'
ORDER BY rank
LIMIT 5;
这把记忆检索变成了一个可量化的、可排序的操作。每次 Agent 决定"我需要想起什么"时,实际上是在做一次向量相似度搜索(或 FTS5 全文搜索)。
四、实战:5 分钟部署一个自我进化的个人 Agent
说了这么多架构,是时候动手了。以下是完整的部署流程。
4.1 环境要求
| 要求 | 最低 | 推荐 |
|---|---|---|
| Python | 3.9+ | 3.11+ |
| 系统 | Linux/macOS/Windows (WSL2) | macOS/Linux |
| 内存 | 4GB | 8GB+ |
| 磁盘 | 1GB | 2GB+ |
依赖:curl、git、bash(安装脚本会自动检测)。
4.2 一键安装(推荐新手)
# Linux / macOS / WSL2
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
安装脚本会自动完成:
- 检测系统环境,识别缺失依赖
- 使用
uv安装 Python 依赖(比 pip 快 10 倍) - 安装 Node.js(用于浏览器自动化、QQ/Telegram 桥接)
- 初始化配置文件
4.3 手动安装(进阶用户)
# 克隆仓库
git clone https://github.com/NousResearch/hermes-agent.git
cd hermes-agent
# 使用 uv 安装依赖
uv sync
# 复制配置文件
cp config.example.yaml config.yaml
# 编辑配置
vim config.yaml
4.4 配置 LLM 提供商
编辑 config.yaml:
llm:
provider: "openrouter" # 支持 openrouter / anthropic / openai / kimi / minimax
model: "anthropic/claude-3.5-sonnet" # 推荐用 Claude,效果最好
api_key: "${OPENROUTER_API_KEY}" # 从环境变量读取
memory:
backend: "sqlite" # sqlite / postgres
fts_enabled: true # 启用全文搜索
skills:
auto_create: true # 允许 Agent 自动创建 Skill
auto_improve: true # 允许 Agent 自动改进 Skill
storage_path: "~/.hermes/skills"
terminal:
backend: "local" # local / docker / ssh / daytona / modal
4.5 启动 Agent
# 交互式启动
hermes
# 或者指定配置文件
hermes --config ~/.hermes/prod.yaml
# 查看帮助
hermes --help
五、Skill 创作实战:从零构建一个"代码审查助手"
光说不练假把式,我们来实操一下怎么用 Hermes Agent 的 Skill 系统。
5.1 场景
你希望 Agent 每次帮你写代码时,自动检查:
- 是否有 SQL 注入风险
- 是否正确处理了边界条件
- 是否有单元测试覆盖
5.2 创建 Skill
# Skill: Python Code Quality Checklist
## Description
A comprehensive checklist for reviewing Python code before committing.
Catches common bugs, security issues, and ensures test coverage.
## Triggers
- Keywords: `review`, `check`, `quality`, `commit`, `submit`
- File patterns: `**/*.py`
## Examples
### Example 1: SQL Injection Check
```python
# ❌ BAD: String concatenation in SQL
cursor.execute(f"SELECT * FROM users WHERE id = {user_id}")
# ✅ GOOD: Parameterized query
cursor.execute("SELECT * FROM users WHERE id = ?", (user_id,))
Example 2: Boundary Condition
# ❌ BAD: No empty check
def find_user(users, name):
return [u for u in users if u.name == name][0]
# ✅ GOOD: Handle empty case
def find_user(users, name):
results = [u for u in users if u.name == name]
return results[0] if results else None
Best Practices
- Always use parameterized queries for database operations
- Validate input parameters at function entry points
- Prefer early returns to reduce nesting
- Each function should have a docstring
- Critical paths need unit tests
Test Coverage Rules
- New functions > 10 lines → require test
- Functions with edge cases → require test
- Public API methods → require test
### 5.3 手动触发 Skill
```bash
# 在 Hermes Agent CLI 中
/hermes add skill python-code-quality.md
# 或者让 Agent 自动识别
# 告诉 Agent:"以后每次我写完代码,帮我跑一下这个检查清单"
5.4 验证 Skill 是否生效
User: 帮我写一个用户登录的函数
Agent: [执行任务,生成了 login 函数]
[自动加载 python-code-quality checklist]
Agent: ✅ 参数验证已添加
✅ 密码使用 bcrypt 哈希存储
✅ 登录失败次数做了限制(防暴力破解)
✅ 敏感信息未记录到日志
❌ 缺少单元测试,是否需要我补上?
六、性能优化:让 Hermes Agent 跑得又快又省
6.1 部署方式对比
| 部署方式 | 成本 | 适用场景 | 冷启动 | 并发 |
|---|---|---|---|---|
| 本地运行 | 0(只需电费) | 日常开发 | 即开即用 | 1 |
| Docker | 低(VPS ~$5/mo) | 生产环境 | 30s | 1 |
| SSH 远程 | 中 | 已有 GPU 资源 | 取决于远程 | 1 |
| Daytona | 低 | 懒人部署 | 即开即用 | 1 |
| Modal | 按需付费 | 流量不规律 | 秒级 | 多 |
6.2 内存优化策略
Hermes Agent 的记忆系统会随时间增长,如果不加控制,会导致:
- 检索变慢(FTS 索引膨胀)
- 上下文过长(LLM 调用成本上升)
- 存储空间浪费
优化策略一:定期压缩
# 手动压缩记忆文件
hermes compress --level=aggressive
优化策略二:Skill 合并
相似的 Skill 可以合并,避免碎片化:
# 列出所有 Skill
hermes skills list
# 合并相似 Skill
hermes skills merge api-review-checklist-1.md api-review-checklist-2.md
优化策略三:记忆分级存储
冷数据(> 90 天)→ 归档到 SQLite,脱离上下文
温数据(7-90 天)→ 正常 FTS 索引
热数据(< 7 天)→ 优先检索,高权重
6.3 LLM 调用优化
Skill 检索后不是一股脑全塞进上下文。Hermes Agent 会智能裁剪:
# 伪代码:Skill 上下文注入策略
def inject_skills(agent_context, retrieved_skills, max_tokens=4096):
"""只注入最相关的部分,控制 token 消耗"""
sorted_skills = rank_by_relevance(retrieved_skills, agent_context)
injected = []
total_tokens = 0
for skill in sorted_skills:
skill_tokens = count_tokens(skill.content)
if total_tokens + skill_tokens <= max_tokens:
injected.append(skill)
total_tokens += skill_tokens
else:
# 超了就只注入摘要
injected.append(skill.summary)
return injected
七、与竞品正面PK:为什么 Hermes Agent 值得迁移
7.1 功能对比
| 能力 | Hermes Agent | Claude Code | OpenClaw | LangChain Agent |
|---|---|---|---|---|
| 持久记忆 | ✅ 原生内置 | ❌ 需外挂 | ✅ 闭源内置 | ❌ 无 |
| 自动创建 Skill | ✅ 独有 | ❌ | ❌ | ❌ |
| 多平台网关 | ✅ 7个 | ❌ | ✅ | ❌ |
| 自我进化 | ✅ | ❌ | ❌ | ❌ |
| 开源 | ✅ MIT | ❌ | ❌ | ✅ |
| 部署成本 | $0-5/mo | $20+/mo | 免费(闭源) | 取决于 infra |
| MCP 支持 | ✅ | ❌ | ✅ | ✅ |
7.2 迁移成本
从 OpenClaw 迁移到 Hermes Agent 几乎是零成本的:
# Hermes Agent 支持一键导入 OpenClaw 配置
hermes import --source=openclaw
# 这会导入:
# - 记忆文件(MEMORY.md、USER.md)
# - 技能配置
# - API Keys(加密存储)
7.3 我的判断
如果你符合以下任一条件,Hermes Agent 值得一试:
- ✅ 想用开源方案,不想被单一厂商绑定
- ✅ 需要一个可以跑在 $5 VPS 上的 24/7 个人 Agent
- ✅ 受够了每次新建会话都要从头解释项目背景
- ✅ 希望 AI 助手能"学会"你团队的工程规范
- ✅ 需要多平台接入(Telegram/Discord/QQ)
如果你只需要一个高质量的编程助手,Claude Code 依然是首选。但如果你想拥有一个会成长的、真正懂你的 AI 伙伴,Hermes Agent 是目前开源世界里最接近这个目标的选择。
八、总结:重新定义"AI 助手"的含义
Hermes Agent 给我最大的启发,不是某个具体的技术实现,而是一个设计理念的转变。
传统 AI 助手的范式是:工具。你用它,它干活,不用就关掉。它不记得任何事,也不需要记得。
Hermes Agent 的范式是:伙伴。你跟它协作,它从协作中学习,把学到的经验固化成技能,下次遇到类似问题时自动调用。随着时间推移,它越来越懂你的项目、你的风格、你的偏好。
这就是为什么 Hermes Agent 的 Slogan 是 "The agent that grows with you"。
不是"更强大的工具",而是"会跟你一起成长的伙伴"。
这个转变的意义,可能比任何单个技术特性都重要。它预示了一个方向:AI 不是被动的工具,而是主动的学习者。当我们习惯了有"记忆"和"学习能力"的 AI,再回头用那些每次都"失忆"的助手,那种落差感会越来越明显。
附录:资源链接
- GitHub: https://github.com/NousResearch/hermes-agent
- 官方文档: https://docs.hermesagent.ai
- Skills 生态(橙皮书): https://github.com/alchaincyf/hermes-agent-orange-book
- 安装脚本: https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh
本文首发于程序员茄子(chenxutan.com),作者保留所有权利。转载需注明出处。