このプロジェクトについて

claude-code-rlmは、メインモデルがプロンプトを処理する前にコードベースの事前リサーチを行うClaude Code用のフックです。プライマリモデル(OpusまたはSonnet)が最初のツール呼び出しを方向付けに費やすのではなく、まず高速で安価なHaikuモデルを派遣してリポジトリを探索させ、その結果を注入されたコンテキストとしてメインモデルに渡します。 仕組み 1. Claude CodeがUserPromptSubmitフックを通じてrlm-hook.mjsを呼び出し、prompt、cwd、transcript_pathなどのフィールドを含むJSONを標準入力で渡します。 2. 些細な入力は即座にスキップされます:設定された最小長より短いプロンプト、単純なシェルコマンド(ls, pwd, cat, echo, git status, npm, yarn)、単語一つの肯定、/help, /clear, /compactなどのスラッシュコマンド、および入力の半分以上がコードブロックであるコード主体のペーストが対象です。 3. プロンプトと作業ディレクトリのSHA-256ハッシュが、デフォルトで1時間のTTLを持つファイルキャッシュと照合されます。 4. キャッシュミスが発生すると、設定されたHaikuモデルでClaude CLIが起動します。このモデルはRead、Glob、Grep、git Bashに制限され、設定可能な回数のツール呼び出し内でコードベースを探索するようシステムプロンプトで指示されます。 5. Haikuは調査結果を一時的なJSONファイルに書き込みます。フックはそれを意図、要約、関連ファイル、既存のパターン、最近の変更、推奨アプローチ、タスク、警告を含む構造化されたrlm_preresearchブロックにフォーマットし、標準出力にプリントします。これにより、Claude Codeがユーザープロンプトの前にそれを注入します。 6. タイムアウト、APIエラー、JSONパースエラーを含むあらゆる失敗時には出力なしで終了し、フックが会話をブロックしたり損なったりすることはありません。 モードと設定 すべて環境変数を通じて設定されます。エージェントモード(デフォルト)はツールベースの探索を有効にし、キャッシュミス時に約20秒かかるとされています。ファストモードはツール呼び出しなしで簡潔な分析を行い、約4秒で完了します。その他の設定には、モデル名、合計タイムアウト、キャッシュTTL、最小および最大入力長、最大ツールターン数、キャッシュおよびログパス、メトリクスファイルが含まれます。オプションのSDK-Directモードでは、サブプロセスではなくAPIキーを使用してAnthropic SDKを利用します。 READMEに記載されている追加機能には、設定可能なコサイン類似度しきい値に基づいて埋め込みを比較するオプションのセマンティックキャッシュ、同じ意図やファイルを再分析することを避けるために最近のRLMブロックを振り返るコンテキスト再利用、およびレイテンシ分布、キャッシュヒット率、モード別パフォーマンス、推定Haikuコストを表示するダッシュボード(ローカルポート9876で提供)付きのメトリクスJSONLログがあります。 報告されているレイテンシ数値:スキップ時は約27ms、キャッシュヒット時は約37ms、キャッシュミス時のエージェントモードは約20秒、ファストモードは約4秒です。 要件とインストール:Node.js 18以降およびPATHに含まれるClaude Code CLIが必要です。提供されているインストールスクリプトは、フックをClaudeフックディレクトリにコピーして実行可能にします。また、コマンドとタイムアウトを含むフックエントリをClaude Code設定ファイルに追加する必要があります。テストとベンチマークはnpmスクリプトを通じて実行され、統合テストには動作するclaudeバイナリが必要です。このプロジェクトはMITライセンスの下でリリースされています。