Pi Session Manager

搜索系统

跨所有会话的全文搜索,支持角色过滤、工具过滤和片段高亮。

"搜索是发现的一半。" — 塞内加尔谚语

Pi Session Manager 提供强大的全文搜索功能,基于双引擎架构,可跨所有会话进行搜索。

搜索引擎

SQLite FTS5

主搜索引擎。所有会话内容被索引到 SQLite 数据库(~/.pi/agent/session-manager.db)中的 FTS5 虚拟表。提供:

  • 快速前缀和短语匹配
  • BM25 排序
  • 低内存占用

可通过配置文件中的 enable_fts5 设置开关 FTS5。

Tantivy

一个 Rust 原生的全文搜索库(类似 Lucene),作为辅助索引使用。Tantivy 提供:

  • 更精细的分词处理
  • 对复杂查询更好的相关性评分
  • 并发索引

两个引擎并行运行,结果合并返回。

过滤器

角色过滤

将结果限定到特定的消息角色:

角色说明
全部搜索所有消息
用户仅用户消息
助手仅 AI 回复
工具仅工具调用结果

工具过滤

按会话中使用的特定工具类型过滤:

  • bash — Shell 命令
  • read / edit / write — 文件操作
  • search — 代码搜索调用
  • 自定义工具名称

片段高亮

搜索结果会显示高亮片段,展示匹配文本的上下文。点击结果可直接跳转到会话查看器中对应的消息。

当匹配内容位于 toolResult 条目中时,查看器会自动解析到包含匹配工具调用的父级助手消息,然后滚动到正确位置。

插件系统

搜索系统采用插件架构,内置三个插件:

插件搜索范围
Session 插件会话名称和元数据
Message 插件消息内容(用户、助手、工具)
Project 插件项目目录和路径

插件注册在 src/plugins/ 中,可扩展以添加自定义搜索源。

命令面板

Cmd/Ctrl + K 打开命令面板——基于 cmdk 的界面,集搜索与快捷操作于一体:

  • 按名称或内容搜索会话
  • 切换视图(列表、项目、看板)
  • 打开设置
  • 切换终端
  • 导航到任意会话

快捷键

快捷键操作
Cmd/Ctrl + K打开命令面板
Cmd/Ctrl + F聚焦侧边栏搜索
Esc清除搜索 / 关闭面板

目录