90%的人不知道:Hermes每个对话都悄悄保存,5个隐藏功能让你效率翻倍
HermesAgent的会话系统自动保存每次对话为独立会话,支持持久化存储、跨会话恢复、全文搜索和后台并行任务,通过SQLite与日志文件双重备份,并提供命名、管理、压缩等操作,提升开发效率。
打开终端,关闭终端,辛辛苦苦调试半天的对话记录就这么消失了?再或者,面对堆积如山的聊天历史,想找回上周讨论的那个API设计方案,翻来翻去翻到眼花?这种痛,做过开发的基本都懂。Hermes Agent 的会话系统,说白了就是来治这个“健忘症”的。每次对话都会被自动保存成独立的会话,支持持久化存储、跨会话恢复、全文搜索,甚至还能后台并行跑任务。下面这套东西,从原理到实操,一次讲清楚。
一、会话核心原理
什么是会话?
简单来说,会话就是 Hermes 对一次完整交互的封装。你问的问题、调用的工具、得到的回复、时间戳、模型配置……所有数据都打包在一起。不管是命令行(CLI)、飞书、钉钉,还是后台任务,每一次交互都被标记为一个独立的会话。一旦生成,永不丢失,随时可以捡回来继续聊。
数据是怎么存的?
所有会话数据统一安家在 `~/.hermes/` 目录,走的是“SQLite数据库 + 日志文件”双保险模式:
- `state.db`:核心数据库,存的是会话的元数据(ID、标题、模型、时间)、消息历史。里面还内置了一个FTS5全文检索引擎,搜东西基本上是毫秒级响应。
- `sessions/` 目录:里面是JSONL格式的日志文件,存的是原始对话记录,主要用来备份和迁移。

每个会话都带有一个唯一ID,格式像 `20250820_1430_abc123` 这样,同时你也可以给它取个自定义标题,方便一眼认出这是哪个项目。
二、基础操作:会话恢复与命名
恢复历史会话
这个操作是用的最多的。Hermes 给了三种恢复方式,不用从头再来:
- 恢复最近一次会话:直接用 `hermes -c`(或者完整的 `hermes --continue`),一秒接上。
- 按标题恢复:比如 `hermes -c "产品需求讨论"`,它自动匹配标题最新的那个同名会话,还支持模糊匹配。
- 按ID恢复:`hermes --resume 20250820_1430_abc123`,精确打击。
恢复后,终端会自动显示会话摘要,把你最近10轮的对话先拉出来预览一下,帮你快速找回上下文。
给会话起个名
聊完第一次对话,Hermes 会用一个轻量模型自动帮你生成一个3到7个字的标题,比如“代码审查”或“数据报表生成”。如果它起的名字不合你心意,也可以手动改:在会话内敲 `/title 2025年8月产品需求评审`,或者直接在命令行里用 `hermes sessions rename 20250820_1430_abc123 "产品需求评审"`。标题最长100个字符,中英文、表情符号都支持,还会自动去重。
三、会话管理:常用命令大全
会话多了以后,光靠手动翻是不现实的。`hermes sessions` 这条命令系列,能把对话历史管得服服帖帖。
列出会话
`hermes sessions list` 默认列出最近20个。可以加 `--limit 50` 显示更多,或者加 `--source feishu` 只看飞书来源的会话。
导出会话
备份或迁移用 `hermes sessions export all-sessions.jsonl` 导出所有会话。单个会话导出加个ID:`hermes sessions export 20250820_1430_abc123 --output 需求会话.jsonl`。如果想转乘人类易读的格式,加个 `--format md`,直接导出Markdown。
删除会话
`hermes sessions delete 20250820_1430_abc123` 会先让你确认一下,加 `--yes` 就跳过确认直接删。
批量清理
默认情况下,`hermes sessions prune` 会干掉90天前已经结束的会话。如果想更激进一点,可以改成 `hermes sessions prune --older-than 30`,30天前的统统清理。同样可以用 `--yes` 跳过确认。
全文检索
基于FTS5引擎,搜东西非常快。比如 `hermes sessions browse --search "Python 爬虫"`,或者用布尔逻辑搜索 `hermes sessions browse --search "需求文档 OR 评审"`。毫秒级的响应,不用等。
查看统计
`hermes sessions stats` 会输出一个类似这样的面板:总会话、总消息数、不同平台的会话分布、数据库占用的存储空间,一目了然。
掌握了这些日常管理操作,接下来是真正能拉开效率差距的高级玩法——后台并行会话。
四、高级功能:后台会话
后台会话是个好东西。它允许你在主会话不被打断的情况下,并行执行多个耗时任务,比如数据处理、代码生成、网页爬取,任务完成后还能自动通知你。
如何启动一个后台会话?
基础用法是在命令行或消息平台上敲 `/background 分析 ~/data 目录下Excel文件,生成月度销售报表`。可以自定义名称方便追踪:`/background --name "月度报表" 分析 ~/data 目录下Excel文件,生成月度销售报表`。还能指定工具集,比如只用文件工具和终端工具:`/background --toolsets "file,terminal" 批量重命名图片文件`。
管理后台任务
- 用 `/background list` 列出所有正在跑的后台任务。
- 用 `/background status bg-a7f3c2d1` 查看具体某个任务的进度和日志。
- 用 `/background cancel bg-a7f3c2d1` 取消任务。
后台会话的几个特性
- 完全隔离:每个后台任务都有自己的对话历史、执行环境和ID,彼此不干扰。
- 并行执行:最多支持5个任务同时跑,效率直接翻倍。
- 自动通知:任务完成或失败时,主会话会自动收到一个结果面板推送。
- 持久化:就算重启了 Hermes,未完成的后台任务也能恢复继续跑。
典型场景
- 长时间的数据清洗和分析,丢到后台去,主会话继续正常聊天。
- 批量生成测试用例,不阻塞手头的其他操作。
- 定时监控接口状态,出问题自动告警。
- 多任务并行:爬虫、文档生成、数据可视化,三个同时开干,一次性搞定。
五、会话压缩与搜索
会话压缩
对话一长,模型上下文可能就会超限。Hermes 支持手动或自动压缩——保留关键摘要,精简掉那些无关紧要的历史消息。手动压缩在会话内敲 `/compress` 就行。自动压缩需要在配置里开启,默认是上下文超过50%时触发:
compression:
enabled: true
threshold: 0.5
跨会话搜索
对话过程中,如果突然想翻找以前聊过的内容,不需要退出去查。直接用自然语言调用 `session_search` 工具,比如:“搜索我们之前讨论的用户登录模块设计”。它会在所有历史会话里自动检索,支持关键词、短语和布尔逻辑,非常方便。
六、最佳实践与注意事项
几点实践建议
- 规范命名:用“日期 + 主题”的格式(比如“20250820 - 产品需求”),检索时效率最高。
- 定期备份:每周至少导出一次会话,防患于未然。
- 及时清理:定期干掉30天前的无效会话,能省下不少磁盘空间。
- 合理利用后台:凡是预计耗时超过5分钟的任务,优先丢给后台会话去跑。
- 压缩长对话:对话超过50轮时,建议手动压缩一次,模型上下文压力会小很多。
需要注意的点
- 会话隔离:后台会话和主会话、以及不同的后台会话之间,数据是彻底隔离的,不互通。
- 存储安全:会话数据默认存在本地,如果涉及敏感内容,建议定期手动删除。
- 恢复限制:只有已经保存的会话才能恢复。那些没有手动保存的临时对话,丢了就丢了,没法找回。
- 模型差异:不同模型的上下文长度不一样,压缩阈值需要根据模型灵活适配。
七、总结
会话是 Hermes Agent 最核心的数据载体。从最基础的恢复和命名,到高级的后台并行执行和全文搜索,它把整个对话生命周期都管了起来。把会话这套机制用好,不仅能高效追溯历史交互,还能并行处理多任务,算是把 Hermes 的自进化能力真正释放出来了。后续结合技能沉淀和MCP集成,会话的价值还能再上一个台阶。
