ORANGE BOOK · HERMES AGENT

第五章 工具、技能与记忆系统


一、工具(Tools):Hermes 的"手脚"

任何 Agent 都需要工具——没有工具的 Agent,只能"想",不能"做"。Hermes 内置了 47 个工具,覆盖普通人能想到的绝大多数需求。

1.1 内置工具按类别一览

我们把这 47 个工具按用途分成 8 类:

类别 数量 代表工具
文件操作 9 file.read / file.write / file.move / file.search
Shell / 终端 5 shell.exec / shell.cd / shell.env
网络请求 4 http.get / http.post / http.download
浏览器自动化 6 browser.open / browser.click / browser.screenshot
代码执行 4 python.run / node.run / sql.query
子代理委派 3 subagent.spawn / subagent.parallel / subagent.collect
记忆 / 技能 6 memory.save / memory.search / skill.create / skill.run
系统能力 10 system.notify / system.clipboard / cron.schedule / voice.speak

每个工具都对应一个明确的"能力",Hermes 会根据你的请求自动调用合适的工具——你不需要记住任何工具名,但你需要知道它有这些工具,这样写提示词时才能下"够用"的指令。

1.2 怎么查看当前可用的工具

hermes tools

输出会按分类列出所有工具,每个工具有:

  • 名称
  • 一句话描述
  • 当前状态:✅ enabled / ❌ disabled / ⚠️ requires_confirmation
  • 调用次数(最近 7 天)

或者在交互模式:

> /tools

1.3 启用 / 禁用某个工具

不是所有工具都该常开。例如:

场景 建议禁用
你给小孩用 shell.execbrowser.*python.run
用于敏感数据 http.*(防止任何外发)
共享给同事用 file.delete、所有 subagent.*

启用 / 禁用的命令:

# 启用一个
hermes tools enable browser.click

# 禁用一个
hermes tools disable shell.exec

# 批量禁用某一类
hermes tools disable browser.*

# 设为"需确认"——每次调用前问你
hermes tools confirm shell.exec

或者直接编辑 ~/.hermes/config.yaml

tools:
  shell.exec:
    enabled: true
    require_confirmation: true     # 每次跑命令前问你
  file.delete:
    enabled: true
    require_confirmation: true     # 删文件前必须确认
  browser.click:
    enabled: false                  # 完全关闭

1.4 三级权限模型

Hermes 把每个工具分成三档:

级别 颜色 行为 例子
🟢 安全 绿 自动执行,不打扰你 file.readhttp.get 公开页面
🟡 需关注 显示一行"我准备做 XX",1 秒后自动执行 file.writehttp.post
🔴 高危 必须你输入 yes 才能继续 file.deleteshell.exec、转账类

你可以在 SOUL.md 里写:

所有"高危"操作必须先告诉我成本/风险,再问我。

Hermes 就会在执行红色操作前增加一段"风险评估 + 等你确认"。

二、MCP:把 Hermes 接到任何外部系统

47 个内置工具已经很多,但还不够覆盖所有场景。比如你想让 Hermes:

  • 直接管理 GitHub 上的 issue 和 PR
  • 直接查 Postgres 数据库
  • 直接发 Slack 消息到具体 channel
  • 直接搜 Brave Search 实时网页

这时候就轮到 MCP(Model Context Protocol) 上场了。

2.1 MCP 是什么

简单说:MCP 是一种"标准协议",让 AI Agent 能即插即用地接到外部服务。你只要装一个 MCP 服务器(其实就是一个小程序),Hermes 就自动多出几十个新能力。

可以理解为"App 之于 iPhone"——iPhone 没装 App 之前只能打电话发短信,装了 App 就能干一切。MCP 之于 Hermes 就是这种关系。

2.2 配置一个 MCP 服务器

打开 ~/.hermes/mcp.json(不存在就创建),按下面格式写:

{
  "servers": [
    {
      "name": "github",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your_token_here"
      }
    },
    {
      "name": "filesystem",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/cassius/projects"]
    },
    {
      "name": "postgres",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://user:pass@localhost:5432/mydb"]
    },
    {
      "name": "brave-search",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-brave-search"],
      "env": {
        "BRAVE_API_KEY": "你的-brave-api-key"
      }
    }
  ]
}

保存后重启 Hermes:

# 退出当前会话
> /exit

# 重启
hermes

再输入 /tools,你会看到多了几十个以 github.*filesystem.*postgres.*brave.* 开头的新工具。

2.3 实战:让 Hermes 帮你管理 GitHub

配好 GitHub MCP 后,你可以这样玩:

> 看一下我 NousResearch/hermes-agent 仓库今天有几个新 issue,每个用一句话总结。

[Hermes] 调用 github.list_issues...
[Hermes] 找到 7 个今天新增的 issue:

  #1247  [Bug] 在 macOS 14.5 上 hermes setup 卡住
  #1248  [Feature] 希望支持飞书 Gateway
  #1249  [Question] Skill 是否支持版本管理?
  ...

要我帮你回复哪几个?
> 把 #1247 这个 bug 复制一份到我的 fork 仓库,命名为 issue-tracking-1247

[Hermes] 调用 github.create_issue...
[Hermes] 已在 cassius/hermes-agent#42 创建。原 issue 已链接。

2.4 推荐 MCP 服务器列表

下面是 2026 年比较成熟、对普通人有用的 MCP 服务器:

MCP 服务器 用途 安装命令
server-github GitHub 仓库 / issue / PR 管理 npx @modelcontextprotocol/server-github
server-filesystem 沙箱化的文件访问 npx @modelcontextprotocol/server-filesystem
server-postgres / server-sqlite 数据库直接查询 npx @modelcontextprotocol/server-postgres
server-slack Slack 消息 / channel 管理 npx @modelcontextprotocol/server-slack
server-brave-search 实时网页搜索 npx @modelcontextprotocol/server-brave-search
server-google-drive Google Drive 文件管理 npx @modelcontextprotocol/server-gdrive
server-notion Notion 数据库 / 页面操作 npx @notionhq/notion-mcp-server
server-calendar Google Calendar / Apple Calendar 社区版

更多 MCP 服务器可以去 agentskills.io 浏览。截至本书写作,注册可用的 MCP 服务器已超过 800 个

三、Skill:Hermes 自己写的"经验文档"

这是 Hermes 最有特色的能力,没有之一。

3.1 Skill 是什么

每完成一件复杂任务(通常意味着调用了 5+ 次工具),Hermes 会自动判断:"这个流程值不值得记下来?"。如果值得,它会自动写一份 Markdown 文档,存到 ~/.hermes/skills/

下次遇到类似任务,Hermes 会先翻这份 Skill,按里面的步骤直接做,避免重复试错。

3.2 一份 Skill 的真实结构

打开 ~/.hermes/skills/organize-downloads-by-type.md

---
name: organize-downloads-by-type
created: 2026-04-19
last_used: 2026-04-19
use_count: 1
trigger_patterns:
  - "整理下载"
  - "整理 downloads"
  - "把下载夹分类"
estimated_tokens: 2400
---

# Skill: 按类型整理下载文件夹

## 适用场景
当用户希望按文件类型整理 ~/Downloads 或类似目录时使用。

## 输入参数
- `path`: 要整理的目录(默认 ~/Downloads)
- `dry_run`: 是否先预览(默认 true)
- `archive_after_days`: 多少天没访问的归档(默认 30)

## 操作流程

### 1. 扫描目录
```bash
ls -la {{path}}

2. 按类型统计(先告诉用户计划)

把文件按下面规则分类:

  • 图片:jpg/png/gif/webp/heic
  • 视频:mp4/mov/mkv
  • 文档:pdf/docx/xlsx/pptx/md/txt
  • 压缩包:zip/rar/7z/tar.gz
  • 安装包:dmg/pkg/exe/msi/deb
  • 其他:剩余

3. 等用户确认

输出:

找到 X 个文件,分布如下:[表格]
打算建 6 个子文件夹移动 X 个文件。
请回复 OK 我就执行。

4. 执行移动

mkdir -p {{path}}/{图片,视频,文档,压缩包,安装包,其他}
# 按规则 mv

5. 报告结果

输出实际移动数、跳过数、用时。

常见坑(自动学习累积)

  • macOS 上某些 .heic 文件会被识别为"其他",因为缺少扩展名 → 已修复
  • 已存在子文件夹(如 "图片")时不要新建,要合并 → 已加判断
  • 同名文件冲突时追加 (1)(2) 后缀,不覆盖 → 已加保护

验证方法

执行后运行 ls -la {{path}} 确认根目录只剩下 6 个新建的子文件夹和未分类的隐藏文件。


下次你说"整理一下下载夹",Hermes 会:

1. 在 `skills/` 里搜索 "整理下载";
2. 找到这份 Skill;
3. 按 Procedure 执行;
4. 如果遇到新的坑,把坑追加到 "常见坑" 那段,**Skill 自己更新自己**。

这就是"会成长"的内部机制。

### 3.3 Skill 管理命令

```bash
# 查看所有 Skill
hermes skill list

# 查看某个 Skill 的内容
hermes skill show organize-downloads-by-type

# 手动运行某个 Skill
hermes skill run organize-downloads-by-type --path ~/Downloads

# 编辑某个 Skill(你也可以手改)
hermes skill edit organize-downloads-by-type

# 删除某个错误的 Skill
hermes skill delete bad-skill-name

# 导出某个 Skill 分享给朋友
hermes skill export organize-downloads-by-type > my-skill.md

# 导入别人分享的 Skill
hermes skill import my-skill.md

# 从社区下载 Skill
hermes skill install agentskills/notion-weekly-digest

3.4 让 Hermes 自己写一个 Skill

你也可以手动让 Hermes 学一个 Skill,不用等它"自己悟":

> 我每周日晚上都会做一件事:把本周收到的所有 PDF(在 ~/Downloads 里)按文件名分类移到 ~/Documents/2026-04/。
> 请把这个流程总结成一个 Skill,命名为 weekly-pdf-archive。
> 下次我说"归档 PDF"或"归档本周文档"时自动调用。

Hermes 会创建 ~/.hermes/skills/weekly-pdf-archive.md,按你描述写好流程。

3.5 Skill 与提示词的区别

提示词 SOUL.md Skill
谁写 Hermes 自己(或你手动让它写)
频率 每次 一次 一次(持续自我更新)
作用范围 单次任务 所有对话 特定类型任务
好处 灵活 不用重复说自己 复杂任务一键复用

四、三层记忆系统

我们在第一章和第四章已经多次提到 Hermes 的"三层记忆",这一节把它说透。

4.1 第一层:会话记忆(Session Memory)

这是最短的一层——就是你当前这次对话的上下文。退出后会被压缩存档,但保留可搜索的索引。

存放位置:~/.hermes/sessions/<session-id>/

# 查看历史会话
hermes sessions list

# 接着上次会话继续
hermes --continue                   # 接最近一次
hermes --continue session-id-xxx    # 接指定的

# 搜索某个老话题在哪次会话里聊过
hermes sessions search "上海出差"

4.2 第二层:持久记忆(Persistent Memory)

跨会话的"事实档案",存放在 ~/.hermes/memories/

主要文件:

  • MEMORY.md —— 关于"环境、世界、项目"的事实
  • USER.md —— 关于"你"的事实
  • EVENTS.md —— 关于"事件、日程、约定"的事实

底层用 SQLite + FTS5 全文索引,所以即使有几万条记忆,搜索也是毫秒级的。

hermes memory list                    # 看全部
hermes memory search "包子"           # 搜关键词
hermes memory add "我最喜欢的咖啡是哥伦比亚水洗"
hermes memory delete <id>

4.3 第三层:技能记忆(Skills Memory)

也叫"程序性记忆"——存的不是"事实",而是"怎么做"。位置:~/.hermes/skills/

参照上一节的 Skill。

4.4 三层记忆对比

层级 类比 存储 持续时间 调用方式
会话记忆 你的"短期记忆" sessions/ 单次对话 自动
持久记忆 你的"长期记忆" memories/ + SQLite 永久 关键词触发
技能记忆 你的"肌肉记忆" skills/ 永久(自我更新) 模式匹配触发

4.5 备份与迁移

记忆是 Hermes 最有价值的"资产"——你和它相处的所有时间都浓缩在这些文件里。一定要备份

# 全量导出
hermes export --all ~/backup/hermes-$(date +%Y%m%d).tar.gz

# 只导出记忆和技能
hermes memory export ~/backup/memory.json
hermes skill export-all ~/backup/skills/

# 在新电脑上恢复
hermes import ~/backup/hermes-20260419.tar.gz
hermes doctor    # 验证

建议设个定时任务,每周日晚上自动备份一次:

hermes schedule "每周日晚上 23:00,把所有记忆和技能备份到 ~/Dropbox/hermes-backup/"

五、查看 Hermes "脑子"里到底有什么

终极命令:

hermes mind

这个命令会输出一份漂亮的 dashboard:

┌─── Hermes Mind Dashboard ─────────────────────────┐
│                                                   │
│  会话                                              │
│    总数: 142                                      │
│    本周新增: 8                                    │
│    最长会话: 4 小时 32 分钟                       │
│                                                   │
│  持久记忆                                          │
│    事实: 89 条                                    │
│    用户偏好: 23 条                                │
│    事件/日程: 17 条                               │
│                                                   │
│  技能(Skills)                                    │
│    总数: 23                                       │
│    本月使用 Top 3:                                │
│      1. weekly-report           18 次             │
│      2. organize-downloads      12 次             │
│      3. meeting-notes-from-audio 9 次            │
│                                                   │
│  工具调用                                          │
│    本周: 3,421 次                                 │
│    成功率: 98.7%                                  │
│                                                   │
│  存储                                              │
│    总占用: 142 MB                                 │
│    位置: ~/.hermes/                               │
│                                                   │
└───────────────────────────────────────────────────┘

定期看一眼,能让你对"Hermes 在你这里成长到什么程度"有一个直观感受。

六、一个真实成长案例

下面是一位用户用 Hermes 30 天后的真实数据(数据已做脱敏):

指标 第 1 天 第 30 天 增长
Skills 数量 0 19
持久记忆条数 0 67
平均完成"周报"耗时 4 分 12 秒 1 分 47 秒 -57%
平均完成"会议纪要"耗时 8 分 30 秒 3 分 05 秒 -64%
用户中断/纠错次数 平均 3.2/天 平均 0.6/天 -81%

这就是"会成长的伙伴"的具体含义。 它不是"模型变聪明了",是"它对你这个具体的人更熟了"。

本章一图回顾

┌──────────────── Hermes 内部世界 ────────────────┐
│                                                 │
│  47 内置工具  +  ∞ MCP 服务器  =  无限手脚       │
│       ↓                                         │
│  ┌─────────────────────────────────────────┐    │
│  │ 工具调用记录                             │    │
│  └─────────────────────────────────────────┘    │
│                                                 │
│  三层记忆                                        │
│  ┌────────────┐ ┌────────────┐ ┌──────────┐    │
│  │ 会话记忆   │ │ 持久记忆   │ │ 技能记忆 │    │
│  │(短期)    │ │(长期事实)│ │(怎么做)│    │
│  └────────────┘ └────────────┘ └──────────┘    │
│                                                 │
│  自学习循环                                      │
│  做完任务 → 自动写 Skill → 下次更快 → 记忆更新   │
│                                                 │
└─────────────────────────────────────────────────┘

下章预告

理论部分至此全部讲完。从下一章开始,我们进入 实战—— 第六章 生活场景实战 把前面学的所有东西串起来,用 7 个真实生活场景让你看见"AI 替我活着"是什么感觉。

每个场景都给你完整的提示词、Skill 配置、可复制脚本,跟着做就能立刻跑起来。