hermes agent v0.15通过sqlite+fts5实现秒级历史对话检索,废除llm语义搜索,需确认state.db启用fts5、配置search模块开启、执行rebuild索引,并支持自然语言与结构化关键词搜索。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要在Hermes Agent v0.15中实现历史对话秒级检索,而不是等90秒让LLM慢慢“回想”——新版已彻底废除旧式语义搜索路径,全部转向本地数据库直查。
核心原理:从LLM驱动到SQLite+FTS5零成本检索
旧版v0.14及之前版本的session_search依赖调用大模型对全部历史做语义重写再匹配,单次搜索平均耗时90秒、消耗约0.3美元Token、且结果常带幻觉。v0.15直接移除该链路,改用内置SQLite数据库的FTS5全文搜索引擎,所有对话文本入库时即完成分词索引,查询不经过任何LLM。
这一步是根本性切换,【必须确认state.db已启用FTS5扩展,否则搜索将退化为全表扫描,速度不升反降】。默认安装包已预编译启用,但若手动编译或使用精简版,需验证:sqlite3 ~/.hermes/state.db "PRAGMA compile_options;" | grep -q "ENABLE_FTS5"。
操作路径:启用并验证新搜索机制
第一步:确认session_search功能开关已打开
检查~/.hermes/config.yaml中search模块是否启用:
search:
enabled: true
backend: sqlite_fts5
第二步:触发索引重建(仅首次升级或数据迁移后需要)
执行hermes search rebuild --force,该命令会遍历state.db中所有dialogue记录,提取content字段并注入FTS5虚拟表。耗时取决于历史总量,10万条对话约需8–12秒。
第三步:测试响应时间
运行hermes search "调试Python正则表达式",观察输出顶部显示的elapsed_ms值——正常应稳定在18–22ms区间。若超过50ms,说明FTS5未生效或磁盘I/O受限。
两种高效检索方式
方法一:自然语言关键词搜索
直接输入口语化查询,如“上个月帮我重写README的那次”,引擎自动提取“README”“重写”“上个月”作为FTS5关键词组合,无需记忆命令格式。这一步操作起来很简单,直接把句子敲进去回车就行。
方法二:结构化限定搜索
支持time:、tool:、tag:等前缀过滤,例如:time:last7d tool:shell tag:debug。注意【tag必须是对话中显式打标过的,非自动添加】,否则该条件无效。此模式适合精准定位,避免噪声干扰。
排查慢搜的三个关键点
检查~/.hermes/state.db文件大小是否异常偏小(小于5MB),表明历史未成功写入数据库,需回溯agent日志确认write_to_db是否报错;
查看~/.hermes/logs/search.log中是否有“fts5 matchinfo failed”类错误,代表索引损坏,执行hermes search rebuild --repair即可修复;
确认查询字符串未含全角符号或控制字符,FTS5对Unicode处理严格,中文顿号、破折号、emoji均会导致匹配失败,建议先用英文空格分隔关键词再试。











