🤖HermesBlog
Hermes 官方教程 · 第8篇2026/8/9· Easy Understand Hermes Agent

会话管理——和 AI 的每次对话都有记录

Hermes Agent 官方教程第八篇:会话。多平台同步、跨设备接续。

会话管理:AI 的记忆库

会话管理——和 AI 的每次对话都有记录

你有没有过这种经历:跟 AI 聊到一半,不小心关掉了终端,或者切到了别的窗口,回来发现啥都没了?别慌,Hermes Agent 早就帮你把每一句话都记在小本本上了。

所有对话,自动存档

不管你是用命令行、Telegram、Discord、Slack,还是微信、钉钉、飞书……只要是跟 Hermes 说过的话,都会自动保存成一个会话(Session)。这些记录存在本地的 SQLite 数据库里(~/.hermes/state.db),里面不光有完整的聊天记录,还有:

  • 会话标题(方便你认出来这是哪次对话)
  • 用的什么模型、什么配置
  • 系统提示词的快照
  • 输入输出了多少 token
  • 开始和结束的时间

简单说,每次对话的来龙去脉,Hermes 都记得清清楚楚

不是所有东西都往上下文里塞

你可能会担心:那是不是每次对话都要把之前所有内容重新发给模型?不是的。Hermes 很聪明,它只把当前需要的部分发给模型。

比如你发了一张图片让 AI 做表情包,Hermes 会先看一眼图片、跑个脚本处理一下,但不会把原始图片反复塞进后续的对话。真正让上下文膨胀的,往往是那些大段粘贴的日志、超长的工具输出、反复贴的代码 diff。所以,能用摘要、文件路径、局部摘录解决的,就别整段往聊天里甩。

命令行里怎么恢复会话?

这是最常用的功能,记住这几个命令就够了:

# 继续最近一次 CLI 会话
hermes --continue
hermes -c

# 按名字恢复(比如你给会话起过标题)
hermes -c "我的项目"

# 按 ID 恢复指定会话
hermes --resume 20250305_091523_a1b2c3d4

# 恢复最近一次会话
hermes --resume latest

有个贴心小细节:hermes -c感知终端的。你在两个终端窗口里各开一个会话,在哪个窗口执行 -c,就恢复哪个窗口自己的对话,互不干扰。这功能靠的是每个终端留下的“面包屑”文件,如果超过 30 天没用,就会自动回退到“恢复最近会话”的逻辑。

恢复会话时,Hermes 还会在输入框上方显示一个对话回顾面板,把之前的用户消息和 AI 回复简要列出来(长消息会截断、工具调用会折叠成数量),让你快速找回上下文。想关掉它,可以在 ~/.hermes/config.yaml 里设置 display.resume_display: minimal

给会话起个名字

想让会话更好找?用 /new 开新会话的时候,直接带上名字:

/new payments-refactor

这样以后就能用 hermes -c "payments-refactor" 秒速找回。如果同名会话有好几个(比如 my projectmy project #2),Hermes 会自动恢复最新的那个

会话太长怎么办?

聊得太多,上下文塞满了?用 /compress 压缩一下,把长会话精简成摘要。想彻底开新话题,就用 /new。要是想清理旧会话,hermes sessions prune 可以删掉已结束的会话。

如果只是数据库文件变大了,先试试无损优化

hermes sessions optimize

这个命令会合并索引、压缩数据库文件,但不会动任何会话数据。记住:压缩是减少上下文,不是删除隐私记录。

会话不会自己过期,但该开新会话时还是要开

网关(gateway)里的会话不会因为闲置或到了某个时间点就自动重置——想开新对话,得自己用 /new/reset。上下文压缩仍然是自动的。

不过,正因为会话不会自己结束,很容易一个会话用上好几周。这样虽然能跑,但会悄悄拖累“自我学习”的效果、还会推高成本:

  • 记忆只在会话边界才发挥作用。 MEMORY.md / USER.md 是在会话开始时注入的,session_search 也是用来找回已经掉出上下文的内容。在一个永不结束的会话里,所有东西都还在上下文里,Agent 就没理由去查记忆——那套“自我学习”机制基本跑不起来。记忆蒸馏(重置前的保存)也只有在会话真正结束时才会发生。
  • 成本随历史增长。 压缩能让长会话继续可用,但每一轮仍然要带上一个很大的(压缩过的)前缀。一个带蒸馏记忆的新会话,几乎总比一个月前的老会话更便宜。

实用建议:完成一个任务或话题,就结束这个会话。在自然的停顿点运行 /new(可以带名字,比如 /new payments-refactor)——每天一次或每个项目一次都行。重置前,如果这次工作产生了值得保留的偏好或流程,可以主动让 Agent “把值得记的都记下来”;它会自动从即将过期的会话里保存记忆和技能,但明确提醒一下效果更好。重启机器或网关不算边界——同一个会话会继续。

会话来源一览

Hermes 支持超多平台,每个会话都会标记来源:

来源 说明
cli 命令行交互
oneshot 一次性的非交互运行(hermes chat --oneshot -q-Qhermes -z 等)。它不会出现在 TUI、桌面端和面板的会话选择器里,但算作 CLI 历史,hermes -c / --resume latest 能接着它继续,hermes sessions list 也看得到
telegram Telegram
discord Discord
slack Slack
whatsapp WhatsApp
weixin 个人微信
wecom 企业微信
dingtalk 钉钉
feishu 飞书
email 邮件
cron 定时任务
api-server API 请求
kanban 看板调度任务(只在看板上出现,会话选择器里隐藏)
tool 第三方集成(--source tool),会话选择器里隐藏

总共二十多种,基本覆盖了你能想到的所有入口。顺带一提,会话中途被压缩后,来源标签会保持不变——比如 tooloneshot 会话压缩出来的子会话,还是同样的来源、同样的可见性。

把 CLI 会话交接给聊天平台

在 CLI 会话里用 /handoff <platform>,可以把当前对话直接转到某个聊天平台的 home 频道,Agent 会从 CLI 停下的地方接着聊——同一个会话 ID、完整的对话记录、工具调用全都在。

# 在 CLI 会话里
/handoff telegram

前提是目标平台已启用、并且设置过 home 频道(在目标聊天里跑一次 /sethome)。交接完成后,CLI 会提示你用 /resume <标题> 随时把会话拉回桌面端继续。

不同平台落地的方式略有不同:Telegram 会开一个新的论坛话题,Discord 建一个自动归档的线程,Slack 发一条种子消息当线程锚点,Matrix 用事件 ID 作为线程根;而 WhatsApp、Signal、SMS 没有原生线程,就直接落在 home 频道里。另外提醒一句:对于不支持线程、又是多人共享群组 home 频道的平台,交接后的会话会按私聊方式处理——自聊 home 频道(最常见的情况)没问题,但真正共享的群聊就不太理想了。

小结

会话管理就是 Hermes 的“记忆系统”——自动存档、按名恢复、跨平台同步。下次再也不用担心聊到一半丢了上下文,hermes -c 一下,接着聊!

官方界面截图

官方会话回顾图

📖 官方文档

本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › user-guide/sessions