Hermes 清理飞书会话操作指南

Hermes 清理飞书会话操作指南

适用对象:用 Hermes Agent(Nous Research)接入飞书后,想清除飞书平台的全部会话历史。

一、背景

Hermes 把所有会话都存在一个 SQLite 数据库里:

  • 数据库路径:~/.hermes/state.db(WAL 模式,旁边还有 state.db-walstate.db-shm 两个伴随文件)
  • sessions 表:会话元数据,每条会话用 source 字段标记来源平台(如 clitelegramdiscord、飞书等)
  • messages 表:每个会话的完整消息历史
  • messages_fts 等:FTS5 全文索引虚拟表,靠触发器自动跟随 messages 表变化,无需手动维护

所以「清除飞书所有会话」本质就是:删掉 source 为飞书的那批 session 及其 messages。

⚠️ 两个一定要先知道的限制:

  1. source 值要先确认 ,大概率是 feishu,也可能是 lark,删之前务必核对,别删错平台。
  2. CLI 的 prune 只会删「已结束」的会话,正在进行/未正常结束的会话它不动。要彻底清,要么先停 gateway 让会话结束,要么用 SQL 直接删。

另外注意:会话(session)≠ 记忆(memory) 。本指南只清对话历史,不影响 Hermes 沉淀在 ~/.hermes/memory/ 下的长期记忆(MEMORY.md / USER.md 等)。


二、操作前必做

1. 停掉 gateway

避免运行中改库产生锁冲突,也让在跑的飞书会话结束:

bash 复制代码
hermes gateway stop

2. 备份数据库(三个文件一起拷)

bash 复制代码
cp ~/.hermes/state.db      ~/.hermes/state.db.bak
cp ~/.hermes/state.db-wal  ~/.hermes/state.db-wal.bak 2>/dev/null
cp ~/.hermes/state.db-shm  ~/.hermes/state.db-shm.bak 2>/dev/null

也可以用 hermes backup --quick 做一次快照式备份。


三、第一步:确认飞书的 source 值

bash 复制代码
sqlite3 ~/.hermes/state.db "SELECT source, COUNT(*) FROM sessions GROUP BY source;"

看清楚飞书那行的 source 字段值和条数。下文命令里凡是出现 feishu 的地方,都替换成你实际看到的值。


四、第二步:选一种清理方式

方式 A:CLI 命令(推荐,最简单)

hermes sessions prune 支持按平台过滤。注意 --older-than 默认是 90 天,只删 90 天前的;要清全部 飞书会话(含今天的),必须设成 0

先不加 --yes,让它显示「将删除 N 条」再核对:

bash 复制代码
hermes sessions prune --source feishu --older-than 0

条数和 source 都确认无误后,正式执行:

bash 复制代码
hermes sessions prune --source feishu --older-than 0 --yes

prune 命令参数说明:

参数 含义
--source SOURCE 只清理该来源的会话
--older-than N 删除 N 天前的会话(默认 90;填 0 表示包含今天,即全部)
--yes / -y 跳过确认

局限:只能删「已结束」的会话。若有残留未结束会话,改用方式 B。

方式 B:直接 SQL(最彻底,能删未结束的会话)

注意删除顺序:先删 messages,再删 sessions(messages 引用 sessions)。FTS 索引会随 messages 删除自动清理,不用管。

bash 复制代码
sqlite3 ~/.hermes/state.db <<'SQL'
DELETE FROM messages WHERE session_id IN (SELECT id FROM sessions WHERE source='feishu');
DELETE FROM sessions WHERE source='feishu';
SQL

五、第三步:重启 gateway

bash 复制代码
hermes gateway start

六、完整流程速查(推荐路径)

bash 复制代码
# 0. 停网关 + 备份
hermes gateway stop
cp ~/.hermes/state.db ~/.hermes/state.db.bak

# 1. 确认飞书 source 值与条数
sqlite3 ~/.hermes/state.db "SELECT source, COUNT(*) FROM sessions GROUP BY source;"

# 2. 预览将删除多少条(先不加 --yes)
hermes sessions prune --source feishu --older-than 0

# 3. 条数无误后正式删除
hermes sessions prune --source feishu --older-than 0 --yes

# 4.(可选)若有未结束会话残留,用 SQL 彻底清
sqlite3 ~/.hermes/state.db <<'SQL'
DELETE FROM messages WHERE session_id IN (SELECT id FROM sessions WHERE source='feishu');
DELETE FROM sessions WHERE source='feishu';
SQL

# 5. 重启网关
hermes gateway start

七、附:其他相关命令

bash 复制代码
hermes sessions list             # 列出最近会话
hermes sessions browse           # 交互式选择器,可搜索、手动挑删
hermes sessions delete <id>      # 删单个会话
hermes sessions stats            # 会话存储统计
hermes dashboard                 # 网页版管理界面,可视化管理会话

特殊情况:如果飞书是这台机器上唯一 接入的平台、且想彻底重置,最省事的是直接删掉整个 state.db(连 -wal-shm),下次启动 Hermes 会自动重建空库。但这会清掉所有平台的会话,确认没有其他平台数据要保留时才这么做。

bash 复制代码
hermes gateway stop
rm ~/.hermes/state.db ~/.hermes/state.db-wal ~/.hermes/state.db-shm
hermes gateway start

八、误删恢复

如果删错了,用之前备份的文件还原即可:

bash 复制代码
hermes gateway stop
cp ~/.hermes/state.db.bak ~/.hermes/state.db
rm -f ~/.hermes/state.db-wal ~/.hermes/state.db-shm   # 清掉可能不一致的伴随文件
hermes gateway start
相关推荐
To_OC14 小时前
大模型蒸馏是啥?说白了就是大厨带徒弟的学问
人工智能·llm·agent
Fzuim15 小时前
当 AI 也成为提交者:ThinkFlow 的 Git 提交规范,是怎么定的
git·agent·thinkflow
JaydenAI16 小时前
[AG-UI详解-01]创建一个类似ChatGPT应用与Agent实时交互
ai·agent·ag-ui·maf
冬奇Lab17 小时前
每日一个开源项目(第164篇):毕昇(BISHENG)- 面向企业的开源 LLM DevOps 平台
人工智能·开源·agent
一叶龙洲17 小时前
wslg打开Ubuntu24.04默认打开图形界面
linux·服务器·数据库·ubuntu
字节跳动开源18 小时前
30 分钟搞定个人情报站:Viking AI 搜索让前沿资讯实时推到面前
数据挖掘·开源·agent
敖行客 Allthinker19 小时前
Parallels Ubuntu虚拟机项目如何让手机访问?完整解决方案
linux·运维·ubuntu
keyipatience20 小时前
线程栈与TLS和线程互斥
java·linux·服务器·开发语言·ubuntu
j7~20 小时前
【Linux】二十二.《Linux 信号机制完全指南:表示、捕捉与处理》
linux·信号处理·volatile·可入重函数·保存信号
早点睡觉14920 小时前
Agent 工程实习复盘 03|从 Pickle 到 PostgreSQL:LangGraph Checkpoint 迁移、内存治理与可回滚发布
agent