session-indexer icon

session-indexer

session-indexer 是一款命令行工具,可在单个项目中搜索 Claude Code 会话历史。它将 JSONL 转录存入每项目 SQLite 数据库,并使用 Ollama 向量嵌入,在向量搜索不可用时提供 FTS5/BM25 回退。

session-indexer

概述

session-indexer 是一款命令行工具,用于对 Claude Code 会话历史进行按项目的语义搜索。它将 JSONL 转录转换为基于 SQLite 的存储,使开发者能够按含义而不是按精确关键词搜索更早的会话。

该项目面向一位开发者和一台机器使用,并将每个项目隔离在各自的 .claude/sessions.db 文件中。README 说明它可以自动挖掘已完成的会话,在新会话开始时检索相关的历史上下文,并在通过 Ollama 的向量嵌入不可用时回退到 FTS5。

功能

每项目 SQLite 会话存储

将 Claude Code 的 JSONL 会话转录索引到项目 .claude/ 目录下的每项目 SQLite 数据库中。README 将这一过程描述为仅追加且幂等,因此重复执行挖掘可以从可用转录中恢复项目数据库。

基于嵌入的语义检索

通过 Ollama 使用 bge-m3 嵌入,按语义相似度搜索过往会话。这适用于回答“之前工作里做了什么决定”之类的问题,而不必依赖精确关键词匹配。

关键词回退搜索

当向量嵌入不可用时,回退到 SQLite FTS5/BM25。README 说明在两种检索模式中更高分都更好;嵌入模式使用余弦相似度,回退搜索则使用取负后的 BM25 排名。

会话开始时自动补充上下文

在新会话开始时自动注入相关的历史上下文。该项目将此描述为与当前 Git 分支和最近提交绑定的基于 hook 的工作流。

事实提炼与接替

包含独立的事实层,用于从挖掘出的片段中提炼持久的主谓宾事实。事实由手动创建,而不是由 Stop hook 创建,README 还描述了被接替时的保护措施和置信度门控。

命令行工作流

提供多个 CLI 命令,用于挖掘、搜索、列出、展示和检查会话与事实。README 中的示例包括 search、embed、stats、distill、facts search 和 facts supersede。

使用场景

  • 回顾更早的决策

    在返回一个活跃的代码库并需要记起早期 Claude Code 会话中做过哪些决定时使用它。该工具适用于跨多个会话的问题,例如设计选择、调试步骤或实现方向。

  • 带着上下文开启新会话

    在继续某个分支的工作之前,使用会话开始 hook 拉取相关的历史上下文。当项目历史较长,而下一次会话应以当前最重要内容的摘要开始时,这很有用。

  • 按需搜索历史

    当你想直接从终端或在 Claude Code 内部使用 /recall 查看历史时,运行手动搜索命令。这提供了一种无需逐个浏览转录即可查找特定讨论的方式。

  • 提炼持久的项目事实

    当原始转录内容过于嘈杂,而你需要可在之后查询的持久化陈述时,使用事实层。README 将其定位为一个独立的、手动触发的步骤,用于从已挖掘的片段中提取稳定事实。

  • 保持项目记忆隔离

    当你希望一个项目的记忆与另一个项目完全隔离时,使用每项目数据库。README 强调每个项目都有自己的本地存储,因此一个项目的会话历史不会影响另一个项目。

Pros and Cons

Pros

  • 将每个项目的历史分别存储在本地 SQLite 数据库中。
  • 支持对过往 Claude Code 会话进行语义搜索,比精确匹配查找更灵活。
  • 在新会话开始时可以自动提供相关的历史上下文。
  • 除了原始转录搜索之外,还包含用于持久笔记的手动事实层。
  • 提供用于挖掘、搜索、列出和检查会话历史的 CLI 命令。

Cons

  • 该工具有意限定为单个开发者和单台机器使用,因此它不是共享的团队记忆系统。
  • 如果你想使用主要检索模式,向量搜索依赖 Ollama 和 bge-m3 模型;如果没有这些,项目则使用 FTS5/BM25 回退。

FAQ

这是为个人使用还是团队范围的记忆系统设计的?

它专为单个开发者在单台机器上使用而设计。README 明确说明,它会在项目中索引一个人的 Claude Code 会话,而不是共享的团队历史或多用户存储。

它在 Claude Code 项目中如何设置?

核心流程是构建并安装二进制文件,可选地拉取 Ollama 嵌入模型,添加项目 hooks,然后让 Stop hook 将已完成的会话挖掘到项目的 .claude/sessions.db 文件中。

我可以手动搜索会话历史吗?

可以。README 展示了一个手动搜索命令,还提到了可在 Claude Code 内部查询的 /recall 技能。

如果嵌入不可用会怎样?

README 将通过 Ollama 使用 bge-m3 嵌入描述为主要检索模式;当嵌入不可用时,则使用 FTS5 BM25 回退。

这个工具可以处理哪些类型的输出?

仓库包含架构文档和 use-cases 文档,而该工具可以挖掘会话、搜索历史、提炼事实、列出会话并检查已存储的片段。

Quick Facts

类别
开发者工具
产品类型
命令行会话索引器
主要用途
搜索 Claude Code 会话历史
存储
每项目 SQLite 数据库
检索模式
Ollama 嵌入 + FTS5 回退
来源域名
github.com