CLIツール
vshulcz/deja-vu avatar
vshulcz/deja-vu

deja-vu:コーディングエージェントの過去のセッションをローカルで検索可能にする

エージェントはすでにこの問題を解決しています。 deja はそれを見つけて、コーディング エージェントがすでにディスクに書き込んだセッション、インストール前からの数か月分の履歴にインデックスを付け、セッション開始時に 17 件すべてのセッションを自動的に呼び出します。 LongMemEval-S で 84.9% hit@1、LLM なし、埋め込みなし。 1 つのゼロデプ バイナリ、完全にローカル。

スター 811フォーク 77GoMIT

ひと目でわかる

これは何?
単一のGoバイナリが、コーディングエージェントがディスクに書き込んだセッションログをインデックス化し、LLM呼び出しや埋め込みなしで数ヶ月の履歴をローカルで検索可能にします。
誰に向いている?
deja-vuは、ほとんどのエージェントユーザーが抱える問題に対する実用的な答えです。履歴はすでに存在するが、検索できないだけです。
商用利用できる?
できます。MIT は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 1 日前です。
何の言語で書かれている?
主に Go です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月14日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

deja-vuでコーディングエージェントは履歴をディスクに書き込む;deja-vuはそれを検索可能にする

Claude Code、Codex、opencode、aider、Gemini CLI、その他十数種類のエージェントが、すべての会話をローカルファイルに書き込みます。それらのファイルには、デバッグ済みの問題や設計上の決定がギガバイト単位で含まれていますが、実質的に検索不可能です。deja-vuは、それらのストアを読み取り、ローカルの転置インデックスを構築する単一のGoバイナリです。そのため、インストール前の数ヶ月の履歴が即座に検索可能になります。READMEには、deja-vuが理解する17のハーネスのセッションフォーマットがリストされており、Claude CodeのJSONLプロジェクトファイルからCursorのSQLiteベースの状態、aiderのチャット履歴markdownまで含まれます。

deja-vuでLLM呼び出しなしの遡及的メモリ

deja-vuは、埋め込みモデルやLLMなしで意図的に動作します。プロジェクトは、LongMemEval-Sセッション検索ベンチマークで84.9%のhit@1、LoCoMoで69.8%を報告し、LLM呼び出しゼロ、埋め込みゼロ、APIキーゼロです。検索は語彙的です:複数単語のクエリはANDマッチ、一般的なフィラー単語は無視され、部分文字列がマッチし、二重引用符のフレーズは連続テキストを要求します。時間はヒントでありフィルターではありません。5月に何が起こったかを尋ねると、その月のセッションがランキングの上位に押し上げられますが、他の部分は除外されません。実際にウィンドウが必要な場合は、`--since`フラグがあります。

deja-vuでインストールと最初のインデックス構築

deja-vuは、curlインストーラー、`go install`、`npx`、またはHomebrewでインストールできます。READMEには、Claude Codeプラグインマーケットプレイスインストールと、Codex、Cursor、Qwen、Copilot CLI、OpenClawのプラグインインストールも記載されています。インストール中、`deja install`はMCPサーバーの配線を書き込み、見つけた履歴からインデックスを構築するため、インストール後の最初のエージェントセッションは即座に行われ、ビルドのコストを支払う必要はありません。何もインデックスされていない状態で素の`deja`を実行すると、それもビルドします。インストールコマンドは配線した内容を記録し、後のバージョン変更はインストールしたターゲットのみを書き換え、何も再実行する必要はありません。

deja-vuでコマンドラインとその機能

中核コマンドは`deja <query>`で、ハーネス、日付、スニペットを含むマッチングセッションを返します。`deja ctx`は、プロンプトにパイプするための最良のマッチのコンパクトなmarkdownダイジェストを生成します。`deja blame <path>`は、ファイルについて議論したセッションをリストし、`deja restore <path>`はエージェントが置き換えたスパンを返すことができ、`deja files <topic>`は、トピックが触れたファイルを特異性でランク付けして表示します。`deja friction`は、3つ以上の異なるセッションで発生したエラーを表示し、`deja stats`はヘッドラインカウントと月次スパークラインを提供し、`deja doctor --json`は各チェックの明示的な状態を報告し、問題が見つかってもゼロで終了します。

deja-vuでMCPとセッション開始リコールによるエージェント統合

deja-vuは、`recall`ツール、markdownダイジェストを返す`recall_context`ツール、`blame`ツール、永続的なノートを保存するための`remember`ツールを持つMCPサーバーを公開します。`--auto`を使用すると、SessionStartフックが、リポジトリが触れているファイルによってランク付けされた関連メモリを、あなたが尋ねる前にコンテキストに注入します。上限は2KBで、読み取り専用です。Claude Codeには、コンパクションの前にトランスクリプトをインデックスにキャプチャするPreCompactフックもあります。READMEには、どのハーネスが自動リコール、再開、ハンドオフをサポートするかがリストされていますが、すべてがサポートするわけではなく、aiderのような一部はMCPクライアントを持たず、代わりにコンテキストファイルに依存しています。

deja-vuでプライバシー、リダクション、忘れること

インデックス作成と検索はローカルです。資格情報はインデックス作成時にリダクションされます:AWSキー、一般的な`api_key=`代入、Bearerトークン、JWT、PEM秘密鍵ブロック、プロバイダートークン、代入の右側の高エントロピー値は`[redacted:<kind>]`に置き換えられ、周囲のテキストは検索可能なままです。`deja forget`は、再構築されたインデックスからマッチするセッションを削除し、正確なセッショントゥームストーンを記録するため、後で`deja index`がソース履歴からそれらを復元できません。トゥームストーンは`~/.config/deja/tombstones`に保存され、インデックスの横にミラーリングされます。READMEは、`deja share`と`deja sync export`が出力時にリダクションを再適用することも文書化しています。

deja-vuで測定されたパフォーマンスと再現可能なベンチマーク

1,250以上のセッション、3つのハーネスにわたる約3.3GBの実際のコーパスでは、ウォーム検索は中央値約1.5ms、コールドインデックスは約10秒、インデックスサイズはコーパスの約2.3%です。インデックスは増分的であり、セッションファイルが成長すると、そのファイルのみが再読み取りされます。リポジトリには2つのベンチマークハーネスが含まれています:`deja bench recall`は、現在語彙検索で飽和している合成セットを実行し、回帰の下限として機能します。`deja bench context`は、30のシード付きマルチセッションタスクチェーンと5つのネガティブコントロールを構築します。コンテキスト実験では、deja-recallは、生ログのgrepと同じ事実カバレッジに到達し、トークン数は約200倍少なく、ネガティブコントロールチェーンには何も注入しません。

編集部の結論

deja-vuは、ほとんどのエージェントユーザーが抱える問題に対する実用的な答えです。履歴はすでに存在するが、検索できないだけです。READMEは、リポジトリ内のベンチマークと再現可能なコンテキスト実験を通じて、これらの主張を検証する明確な経路を示しています。

公式情報源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
コミュニティノート

コミュニティノート