session-indexer icon

session-indexer

session-indexerは、Claude Codeのセッション履歴を単一プロジェクト内で検索できるコマンドラインツールです。JSONLトランスクリプトをプロジェクト別SQLite DBに保存し、Ollama埋め込みとFTS5/BM25フォールバックに対応します。

session-indexer

概要

session-indexerは、Claude Codeのセッション履歴に対してプロジェクト単位の意味検索を行うコマンドラインツールです。JSONLトランスクリプトをSQLiteベースのストアに変換し、開発者が過去のセッションを正確なキーワードではなく意味で検索できるようにします。

このプロジェクトは1人の開発者が1台のマシンで使うことを前提に設計されており、各プロジェクトをそれぞれ独立した .claude/sessions.db ファイルに保持します。READMEでは、完了したセッションを自動的に取り込み、新しいセッション開始時に関連する過去のコンテキストを取得し、Ollamaによるベクトル埋め込みが利用できない場合はFTS5にフォールバックできると説明しています。

機能

プロジェクト別SQLiteセッションストア

Claude CodeのJSONLセッショントランスクリプトを、プロジェクトの .claude/ ディレクトリ配下に保存されたプロジェクト別SQLiteデータベースへインデックス化します。READMEではこの処理を追記専用かつ冪等と説明しており、再実行することで利用可能なトランスクリプトからプロジェクトDBを復元できます。

埋め込みによるセマンティック検索

Ollama経由のbge-m3埋め込みを使って、意味的類似性に基づき過去のセッションを検索します。これは、正確なキーワード一致に頼らず、以前の作業で何が決まったかを把握するためのものです。

キーワードフォールバック検索

ベクトル埋め込みが利用できない場合は、SQLite FTS5/BM25にフォールバックします。READMEでは、どちらの取得モードでもスコアが高いほど良いこと、埋め込みではコサイン類似度を、フォールバック検索では符号反転したBM25ランクを使うことが説明されています。

セッション開始時の自動コンテキスト注入

新しいセッション開始時に、関連する過去のコンテキストを自動的に注入します。プロジェクトでは、現在のGitブランチと直近のコミットに結び付いたフックベースのワークフローとして説明されています。

事実抽出と上書き

取り込んだチャンクから、subject-predicate-object 形式の永続的な事実を抽出するための別レイヤーを備えています。事実は Stop フックではなく手動で作成され、READMEでは上書き防止と信頼度ゲーティングが説明されています。

コマンドラインワークフロー

取り込み、検索、一覧表示、表示、セッションと事実の検査のための複数のCLIコマンドを提供します。READMEの例には、search、embed、stats、distill、facts search、facts supersede が含まれます。

ユースケース

  • 以前の निर्णयを見直す

    アクティブなコードベースに戻ってきたときに、以前のClaude Codeセッションで何が決まったか思い出したい場合に使います。このツールは、設計上の選択、デバッグ手順、実装方針など、複数セッションにまたがる質問を想定しています。

  • コンテキスト付きで新しいセッションを開始する

    ブランチで作業を続ける前に、session-startフックを使って関連する過去のコンテキストを取り込みます。プロジェクトの履歴が長く、次のセッションを今もっとも重要な内容の要約から始めたい場合に便利です。

  • 必要に応じて履歴を検索する

    ターミナルから直接、またはClaude Code内の /recall から履歴を確認したいときに、手動の検索コマンドを実行します。トランスクリプトを1つずつ閲覧せずに、特定の議論を見つける方法を提供します。

  • 永続的なプロジェクト事実を抽出する

    生のトランスクリプトがノイズ過多で、後から問い合わせ可能な永続的な文を作りたいときに、事実レイヤーを使います。READMEでは、取り込んだチャンクから安定した事実を抽出するための、別の手動実行ステップとして位置付けられています。

  • プロジェクトの記憶を分離して保つ

    あるプロジェクトの記憶を別のプロジェクトから切り離しておきたい場合に、プロジェクト別データベースを使います。READMEでは、各プロジェクトが独自のローカルストアを持つため、あるプロジェクトのセッション履歴が別のプロジェクトに影響しないことが強調されています。

Pros and Cons

Pros

  • 各プロジェクトの履歴をローカルSQLiteデータベースに別々に保存します。
  • 過去のClaude Codeセッションに対してセマンティック検索をサポートし、完全一致検索より柔軟です。
  • 新しいセッション開始時に、関連する過去のコンテキストを自動的に表示できます。
  • 生のトランスクリプト検索だけでなく、永続的なメモ用の手動事実レイヤーを備えています。
  • セッション履歴の取り込み、検索、一覧表示、検査のためのCLIコマンドを提供します。

Cons

  • このツールは意図的に単一の開発者と単一のマシンに範囲を絞っているため、共有チームメモリシステムではありません。
  • 主な取得モードを使いたい場合、ベクトル検索はOllamaとbge-m3モデルに依存します。それがない場合は、代わりにFTS5/BM25フォールバックを使用します。

FAQ

これは個人利用向けですか、それともチーム全体のメモリ向けですか?

これは単一の開発者が単一のマシンで使うことを想定しています。READMEでは、共有チーム履歴や複数ユーザー向けのストアではなく、1人分のClaude Codeセッションをプロジェクト内でインデックス化すると明記しています。

Claude Codeプロジェクトではどのように設定しますか?

基本的な流れは、バイナリをビルドしてインストールし、必要に応じてOllamaの埋め込みモデルを取得し、プロジェクトのフックを追加してから、Stopフックにより完了したセッションをプロジェクトの .claude/sessions.db ファイルへ取り込むことです。

セッション履歴を手動で検索できますか?

はい。READMEには手動検索コマンドが示されており、Claude Code内から問い合わせるための /recall スキルについても触れられています。

埋め込みが利用できない場合はどうなりますか?

READMEでは、bge-m3埋め込みをOllama経由で使う方法が主な取得モードとして説明されており、埋め込みが利用できない場合はFTS5 BM25フォールバックに切り替わります。

このツールはどのような出力に対応していますか?

リポジトリにはアーキテクチャ文書とユースケース文書が含まれており、このツールはセッションの取り込み、履歴検索、事実の抽出、セッション一覧表示、保存済みチャンクの検査に対応します。

Quick Facts

カテゴリ
開発者向けツール
製品タイプ
コマンドライン・セッションインデクサー
主な用途
Claude Codeのセッション履歴を検索する
保存先
プロジェクト別SQLiteデータベース
取得モード
Ollama埋め込みとFTS5フォールバック
ソースドメイン
github.com