一、工具(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.exec、browser.*、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.read、http.get 公开页面 |
| 🟡 需关注 | 黄 | 显示一行"我准备做 XX",1 秒后自动执行 | file.write、http.post |
| 🔴 高危 | 红 | 必须你输入 yes 才能继续 | file.delete、shell.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 配置、可复制脚本,跟着做就能立刻跑起来。