搜索系统
跨所有会话的全文搜索,支持角色过滤、工具过滤和片段高亮。
"搜索是发现的一半。" — 塞内加尔谚语
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 | 清除搜索 / 关闭面板 |