Recall — Claude Codeの会話再開スキル
概要
このリポジトリ「recall」は、AnthropicのClaude Code環境で過去の会話セッションを検索して再開できるスキルです。ローカルに残る ~/.claude/projects/ 下のJSONL形式会話ログを読み取り、SQLiteのFTS5(全文検索)インデックスを構築します。BM25ランキングとPorterステミングを用いることで関連性の高いセッションを素早く見つけられ、インクリメンタル更新で新しい会話の追加にも対応します。インストールは npx skills add arjunkmrm/recall で、インストール後は /recall コマンドや自然言語で「〜について話した過去のセッションを探して」といった呼びかけで利用できます。(約300字)
リポジトリの統計情報
- スター数: 9
- フォーク数: 0
- ウォッチャー数: 9
- コミット数: 7
- ファイル数: 3
- メインの言語: Python
主な特徴
- ローカルの Claude Code 会話ログ(JSONL)を対象に全文検索インデックスを構築
- SQLite FTS5 を使用し、BM25ランキングと Porter ステミングで関連度の高い結果を返す
- インクリメンタル更新で新規会話を継続的にインデックス化
- npx コマンドで簡単インストール、/recall から直接検索可能
技術的なポイント
recall のコアはシンプルで実用的な全文検索パイプラインです。入力ソースは ~/.claude/projects/ 配下にあるJSONLファイル群で、それぞれの行が会話エントリを表します。これらを読み取り、SQLiteのFTS5仮想テーブルに格納して全文検索インデックスを作成します。FTS5は高速なトークン検索を提供し、BM25スコアによるランキングを組み合わせることで「どのセッションが最も関連するか」を定量的に示せます。さらにPorterステミングを導入して語形変化(例:run/running)を正規化し、検索のヒット率を高めています。
実装はPythonで書かれており、シンプルなスクリプト群でインデックス作成・更新・検索の流れを扱います。インクリメンタル更新は既に処理済みのファイルやIDを記録し、新しい会話行だけを追加することで再構築コストを抑えます。Claude Code側との統合は「スキル」として配布される形で、インストール後は /recall コマンドや自然言語プロンプト経由で検索要求を送れます。結果は会話の抜粋や参照先ファイルを返し、ユーザーはその文脈を元に会話を再開できます。
プライバシー面では全処理がローカルで完結する点が重要です。外部APIに会話ログを送らないため機密性を保てます。一方で、ローカルファイルパスやJSONLの形式依存があるため、Claudeのローカルストレージ構成が変わると調整が必要になります。パフォーマンス面ではSQLite+FTS5は中規模の会話コーパスに対して十分に高速ですが、極端に大きな履歴を扱う場合はインデックス最適化や分割戦略が考慮されます。(約700字)
プロジェクトの構成
主要なファイルとディレクトリ:
- README.md: file
- SKILL.md: file
- scripts: dir
まとめ
ローカルでClaudeの過去会話を効率よく検索・再開できる実用的なスキルです。(約50字)
リポジトリ情報:
- 名前: recall
- 説明: a skill for claude code to recall past conversations
- スター数: 9
- 言語: Python
- URL: https://github.com/arjunkmrm/recall
- オーナー: arjunkmrm
- アバター: https://avatars.githubusercontent.com/u/90433405?v=4
READMEの抜粋:
recall
Ever lost a conversation session with claude code and wish you could resume it? This skill lets claude search across all your past conversations with full-text search. Builds a SQLite FTS5 index over ~/.claude/projects/ JSONL files with BM25 ranking, Porter stemming, and incremental updates.
Install
npx skills add arjunkmrm/recall
Then use /recall in Claude Code or ask “find a past session where we talked about foo” (you might need to restart claude code).