一、会话管理:你的每一次对话都被记住

1. 什么是会话

你和 Hermes 的每一段对话都是一个「会话(Session)」,系统会自动保存和索引。你随时可以回去继续、搜索、或者删掉。

2. 基本操作命令

hermes sessions list                        # 列出近期会话
hermes sessions browse                      # 交互式选择会话
hermes --continue                           # 继续上次会话(简写 -c)
hermes --resume 20250225_143052_a1b2c3      # 按会话 ID 恢复
hermes -r "我的项目设置"                     # 按标题恢复
hermes sessions rename <id> "后端 API 开发"  # 重命名
hermes sessions delete <id>                 # 删除会话
hermes sessions prune --older-than 30       # 清理 30 天前的旧会话

3. 会话内的斜杠命令

命令

功能

/new

开新会话

/clear

清屏开新会话

/undo

撤销上一轮交互

/undo [N]

撤销最近 N 轮(v0.16+)

/title <name>

给会话命名

/history

查看对话历史

/compress

手动压缩上下文

/goal <text>

设置持续性目标,Agent 没完成会自动继续

/background <prompt>

后台跑任务

4. 会话存在哪?

Hermes 用 SQLite 数据库 ~/.hermes/state.db 保存所有会话,主要几张表:

  • sessions:会话元数据(ID、来源、标题等)

  • messages:完整消息历史

  • state_meta:键值元数据

  • FTS5 索引表:用于全文搜索

5. 上下文压缩(自动)

长对话占用 token 会越来越接近模型限制,Hermes 会自动压缩历史,保留关键信息。可以在 ~/.hermes/config.yaml 里调:

compression:
  enabled: true       # 开关
  threshold: 0.50     # 用到上下文窗口 50% 时触发压缩
  target_ratio: 0.20  # 保留预算
  protect_last_n: 20  # 最近 20 条不压缩

二、会话搜索 session_search:回忆历史

这是 v0.15 重点优化的功能:去掉了 LLM 依赖,速度提升 4500 倍,零费用。

解决的问题:你之前和 Hermes 聊过的内容,它会自动去历史会话里搜,而不是让你重复讲一遍。

Agent 内部通常这样调用:

# 先按关键词找到相关会话
session_search(query="Docker deployment", limit=3)
​
# 再围绕命中的位置前后翻看
session_search(session_id="...", around_message_id="msg_789", window=5)

支持的搜索语法(FTS5):

docker deployment        # 多关键词默认 AND
"exact phrase"           # 精确短语
docker OR kubernetes     # 布尔 OR
python NOT java          # 排除
deploy*                  # 前缀匹配

三、工具集(Toolsets):Agent 的手和脚

工具是 Hermes 调用外部能力的基本单元——搜网页、执行命令、读写文件、控制浏览器等。按功能分组为「工具集」,可以按需启用/禁用。

1. 管理工具集

hermes tools                # 交互式管理
hermes tools list           # 列出所有工具集
hermes tools enable <name>  # 启用
hermes tools disable <name> # 禁用

会话内用 /tools 查看,/verbose 控制工具执行显示的详细程度。

2. 工具分类一览

类别

工具举例

用途

Web

web_search、web_extract

搜索网页、提取内容

终端与文件

terminal、process、read_file、patch

执行命令、读写文件

浏览器

browser_navigate、browser_snapshot、computer_use

自动化操作浏览器

媒体

vision_analyze、image_generate、text_to_speech、video_analyze

多模态处理

编排

todo、delegate_task、clarify

任务规划、委托

记忆

memory、session_search

记忆、搜索历史

自动化

cronjob、send_message

定时任务、推送

3. 终端后端(Linux 重点)

终端工具支持多种后端,决定 Agent 的命令在哪里执行:

后端

说明

适用场景

local

本机直接执行(默认)

本地开发、可信任务

docker

隔离容器中执行

安全隔离

ssh

远程服务器执行

防止 Agent 改自己代码

singularity

HPC 容器

集群环境

modal / daytona

云端无服务器

弹性伸缩

切换后端:

hermes config set terminal.backend docker

如果要用 docker 后端,记得配置国内镜像并拉取合适的镜像:

# 拉取一个带 python + node 的镜像
docker pull nikolaik/python-nodejs:python3.11-nodejs20

需要 sudo 权限时,终端会提示输入密码,也可在 .env 里设 SUDO_PASSWORD。

4. 并行执行与智能审批

  • 并行:Agent 同一轮里发出的互不依赖的工具调用会自动并行执行(最多 8 个 worker),省时间

  • 智能审批:Hermes 会学习哪些命令安全,反复批准同类命令后逐渐减少提示

四、MCP 协议:接入外部工具服务器

MCP(Model Context Protocol)让你能把外部的工具服务器接入 Hermes,扩展它的能力。

1. 两种传输方式

模式

配置

说明

stdio

command + args

Hermes 本机启动 MCP server 进程通信

HTTP

url

连接一个已运行的远程 MCP server

2. 配置示例

编辑 ~/.hermes/config.yaml:

mcp_servers:
  # stdio 方式:本机文件系统
  project-fs:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/my-project"]
​
  # HTTP 方式:公司内部 API
  company_api:
    url: "https://mcp.internal.example.com/mcp"
    headers:
      Authorization: "Bearer ***"

常用配置项:command、args、env(stdio)、url、headers、auth: oauth(HTTP 的 OAuth)、enabled、timeout。

还可以用 tools.include / tools.exclude 控制注册哪些工具:

mcp_servers:
  github:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-github"]
    env:
      GITHUB_PERSONAL_ACCESS_TOKEN: "***"
    tools:
      include: [list_issues, create_issue, search_code]  # 白名单

3. 管理和重载

hermes mcp list                   # 列出已配置服务器
hermes mcp test project-fs        # 测试连接
hermes mcp configure project-fs   # 管理工具启用状态
hermes mcp remove project-fs      # 移除
hermes mcp catalog                # 浏览 Nous 精选 MCP 目录(v0.15+)

修改配置后在会话内 /reload-mcp 重载。

4. MCP Server Mode:反向暴露

Hermes 有个独特功能——把自己暴露给 MCP 兼容客户端(Claude Desktop、VS Code、Cursor)。在客户端的 mcpServers 配置里加:

{
  "mcpServers": {
    "hermes-agent": {
      "command": "hermes",
      "args": ["mcp", "serve"]
    }
  }
}

这样就能在 Claude Desktop 等工具里调用 Hermes 的能力。