会话记忆未及时清理会导致hermes agent响应变慢、磁盘占用升高及state.db膨胀;可通过手动清空当前会话(/clear)、sqlite直接删除指定会话(delete+vacuum)或脚本批量清理过期会话三种方式解决。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您正在使用 Hermes Agent 并发现会话响应变慢、磁盘空间占用持续升高,或 state.db 文件体积异常膨胀,则很可能是会话记忆未及时清理所致。以下是多种可立即执行的清理方法:
一、手动清空当前会话历史(终端 CLI)
该方法仅清除当前终端会话中的对话上下文,不触碰 SQLite 数据库,适用于临时调试或开启新话题,操作轻量且即时生效。
1、在 Hermes Agent 终端界面中,输入斜杠命令 /clear 并回车。
2、终端屏幕将被完全清空,所有当前会话的 messages 表缓存条目被释放,但数据库中对应会话记录仍保留。
二、删除指定会话及其全部消息记录(SQLite 直接操作)
该方法通过直接操作底层 state.db 数据库,彻底移除某一会话的所有痕迹(包括元数据与消息正文),适用于已确认无用的旧会话,能真实释放磁盘空间。
1、停止 Hermes Agent 进程,确保 state.db 未被锁住(如正在运行,先执行 Ctrl+C 或 kill -TERM $(pgrep -f "run_agent.py"))。
2、进入 Hermes 配置目录:cd ~/.hermes。
3、启动 SQLite 命令行工具:sqlite3 state.db。
4、执行删除语句(替换 SESSION_ID 为实际会话 ID,可通过 SELECT id, created_at FROM sessions ORDER BY created_at DESC LIMIT 5; 查询):DELETE FROM messages WHERE session_id = 'SESSION_ID'; DELETE FROM sessions WHERE id = 'SESSION_ID';。
5、执行 VACUUM; 命令以回收磁盘空间并压缩数据库文件。
6、输入 .quit 退出 SQLite。
三、批量清理过期会话(基于时间阈值)
该方法利用 Hermes Agent 自带的 session_search 工具逻辑反向筛选,通过脚本批量删除超过指定天数的会话,适合定期维护,避免人工逐条确认。
1、创建清理脚本 ~/clean_old_sessions.py,内容为:
import sqlite3, time; conn = sqlite3.connect('~/.hermes/state.db'); c = conn.cursor(); cutoff = int(time.time()) - 86400 * 30; c.execute("DELETE FROM messages WHERE session_id IN (SELECT id FROM sessions WHERE created_at 。
2、赋予执行权限:chmod +x ~/clean_old_sessions.py。
3、运行脚本:python3 ~/clean_old_sessions.py。
四、禁用会话持久化并重置数据库
该方法完全关闭会话级记忆写入,适用于仅需短期交互、对历史检索无依赖的轻量场景,可从根本上阻止 future space growth。
1、编辑配置文件:vim ~/.hermes/config.yaml。
2、将 sessions_enabled: true 修改为 sessions_enabled: false。
3、保存后执行 hermes setup --force 重载配置。
4、手动备份并移除旧数据库:mv ~/.hermes/state.db ~/.hermes/state.db.bak。











