会话管理——和 AI 的每次对话都有记录
Hermes Agent 官方教程第八篇:会话。多平台同步、跨设备接续。
會話管理——和 AI 的每次對話都有紀錄
你有沒有遇過這種情況:跟 AI 聊到一半,不小心關掉了終端機,結果之前的對話全沒了?在 Hermes Agent 裡,這種事永遠不會發生——每一次對話都會被自動儲存為會話(Session),想什麼時候接著聊都行。
會話是怎麼存的?
Hermes 把所有平台的對話都存了下來,不管是 CLI、Telegram、Discord、Slack 還是 WhatsApp,統統記錄在案。這些資料放在一個 SQLite 資料庫裡(~/.hermes/state.db),裡面存了:
- 會話 ID、來源平台、使用者 ID
- 會話標題(唯一、可讀的名字)
- 模型名稱和設定
- 系統提示詞快照
- 完整訊息歷史(角色、內容、工具呼叫、工具結果)
- Token 計數、時間戳記、父會話 ID 等
不是所有東西都塞進上下文
這裡要澄清一個誤區:Hermes 雖然儲存了完整歷史,但不會每輪都把原始檔案位元組重新塞給模型。比如你發了一張圖片讓它做表情包,它可能用視覺能力看一次,之後對話裡只保留圖片描述或本機路徑,而不是反覆攜帶原始 JPEG。
真正讓上下文膨脹的往往是冗長的文字——貼上的聊天紀錄、完整日誌、超大的工具輸出、長 diff。所以盡量用摘要、檔案路徑、精準摘錄來代替大段複製貼上。
常用指令速覽
# 繼續最近的 CLI 會話
hermes --continue # 或 hermes -c
# 按名字恢復會話
hermes -c "我的專案"
# 按 ID 恢復指定會話
hermes --resume 20250305_091523_a1b2c3d4
# 恢復最新會話
hermes --resume latest
小技巧:hermes -c 是「認終端機」的——每個終端機視窗各自記住自己的會話,兩個終端機並排開互不干擾。想停用這個行為,在 config.yaml 裡設 session.terminal_continue: false。
給會話起個好名字
用 /new 會話名 開新會話時直接起名,比如 /new payments-refactor,之後用 /resume payments-refactor 就能找到它。會話列表用 /sessions 查看。
會話太長怎麼辦?
/compress:壓縮目前會話,減少上下文佔用/new:開個新執行緒hermes sessions prune:刪除已結束的舊會話(慎用,這是刪除操作)hermes sessions optimize:非破壞性最佳化,合併 FTS5 索引並 VACUUM 資料庫,不碰任何會話資料
記住:壓縮只是減少活躍上下文,不是隱私刪除。
支援哪些平台?
Hermes 的會話來源標籤覆蓋了幾乎所有管道:cli、telegram、discord、slack、whatsapp、signal、matrix、email、sms、dingtalk、feishu、wecom、weixin、qqbot、homeassistant、webhook、api-server 等等。不管從哪兒聊的,都有紀錄可查。
有了會話管理,和 AI 的每次對話都像有了「存檔點」,隨時讀檔繼續,再也不用擔心聊到一半丟失上下文了。
📖 官方文档
本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › user-guide/sessions