Back

Git リポジトリを LLM 対応テキストに変換する:クイックガイド

Git リポジトリを LLM 対応テキストに変換する:クイックガイド

AI にコードベースのレビューを依頼したり、レガシーモジュールの説明を求めたり、リファクタリングの計画を手伝ってもらいたいとします。そこで ChatGPT や Claude を開くと、すぐに壁にぶつかります:実際にどうやってコードをそこに入れるのか?ファイルごとにコピー&ペーストするのは面倒です。zip ファイルをアップロードしてもあまり役に立たないことが多いです。GitHub の URL を指定しても、通常はチャットモデルに十分な有用なコンテキストを提供できません。

答えは、Git リポジトリを LLM 対応コードベースに変換することです — プロンプトにきちんと収まる、単一の構造化されたテキスト表現です。

重要なポイント

  • ほとんどのチャットインターフェースでは、LLM はリポジトリを直接検査できないため、コードベースは多くの場合、モデルのコンテキストウィンドウに収まる構造化されたフィルタリングされたテキストに変換されます。
  • Gitingest、Repomix、repo2txt などのツールは、ノイズを除外し、関連するソースファイルを単一の出力に連結することで、この変換を自動化します。
  • 積極的なフィルタリング — テスト、依存関係、ビルド成果物の削除 — により、トークン使用量を大幅に削減し、モデルの応答を鋭くすることができます。
  • コードを LLM に入力する前に、組み込みチェックまたは truffleHog のような専用ツールを使用して、必ずシークレットをスキャンしてください。

生のリポジトリが LLM 入力として機能しない理由

通常のチャットワークフローでは、LLM はファイルシステムを閲覧したり、リポジトリを直接検査したりしません。コンテキストウィンドウ内のテキストを読み取りますが、これには厳格なトークン制限があります。典型的な JavaScript プロジェクトには数百のファイルが含まれている可能性がありますが、そのほとんど — node_modules、ロックファイル、ビルド成果物、ソースマップ — はノイズです。それらすべてをモデルに入力すると、トークンを無駄にし、シグナルをぼやけさせ、多くの場合、制限を完全に超えてしまいます。

モデルが実際に必要とするのは選択的で構造化されたテキストです:関連するソースファイルが明確に整理され、コード全体について推論するのに十分なコンテキストを持っています。これがまさに Git リポジトリからプロンプトテキストへの変換が生成するものです。

Git リポジトリを LLM 用に変換するツール

このプロセスを自動化するツールがいくつかあります。以下は最も実用的なオプションです:

Gitingest は、最も速いゼロセットアップオプションです。任意の GitHub URL の hubingest に置き換えると、LLM 入力用にフィルタリングおよびフォーマットされたリポジトリの単一のテキストダイジェストが得られます。現在は、個人用アクセストークンを使用したプライベートリポジトリもサポートしています。

Repomix は、コードベースを Markdown、XML、JSON、またはプレーンテキストにパッケージ化する CLI ツールです。含めるファイルをきめ細かく制御でき、カスタム無視パターンをサポートし、出力が生成される前にハードコードされたシークレットにフラグを立てる組み込みのセキュリティチェックがあります。

repo2txt は完全にブラウザ内で実行されます。GitHub URL を貼り付け、必要なファイルを選択し、任意の LLM に貼り付ける準備ができたプレーンテキストファイルをダウンロードします。個人用アクセストークンを介してプライベートリポジトリをサポートしており、サイトによるとコードはブラウザ内で実行されます。

3 つすべてが同じコアパターンに従っています:リポジトリをクローンまたはフェッチし、無視ルールを使用してファイルをフィルタリングし、ファイルパスとコンテンツを単一の読みやすい出力に連結します。

AI モデル用の優れたリポジトリコンテキストとは

適切に準備された出力には通常、次のものが含まれます:

  • 全体的な構造を示すディレクトリツリー
  • 各ファイルのコンテンツの前のファイルパスヘッダー
  • ソースファイルのみ — バイナリ、生成されたコード、依存関係なし
================================================
FILE: src/components/Header.tsx
================================================
import React from 'react'
...

この形式は、モデルが個々のファイルを読む前に方向を定めるのに役立ち、応答の品質を有意に向上させます。

変換前の実用的な考慮事項

積極的にフィルタリングする。 React または Next.js プロジェクトの場合、おそらく src/package.json、および設定ファイル 1、2 個だけが必要です。テストファイルを除外するだけでも、トークン使用量を顕著に削減できます。

最初にシークレットをスキャンする。 LLM プロンプト用にコードベースを準備する前に — 特にサードパーティツールを使用する場合 — ソースファイルに API キー、トークン、または認証情報がないことを確認してください。Repomix はこれを自動的に行います。他のツールの場合は、まず git-secrets または truffleHog で簡単なスキャンを実行してください。

出力サイズをモデルのコンテキストウィンドウに合わせる。 最新のモデルは一般的に 100K〜200K+ トークン範囲のコンテキストウィンドウをサポートしており、一部のワークフローは、同じ大きなコードコンテキストを再利用する場合にプロンプトキャッシングからも恩恵を受けます。中規模のフロントエンドリポジトリは、フィルタリング後、通常は範囲内に十分収まります。

パッケージ化されたコンテキストの再利用

クリーンなテキストスナップショットを生成したら、保存してください。多くのチームは、スプリントごとに一度 LLM 対応コードベースをパッケージ化し、複数のプロンプト — コードレビュー、ドキュメントドラフト、オンボーディングの質問、アーキテクチャディスカッション — で再利用しています。これは実用的なコンテキストエンジニアリングワークフローの基盤であり、一部のセットアップでは、Model Context Protocol やツール駆動型リポジトリアクセスなどのパターンと重複するようになっています。

結論

完全なコードベースを LLM に取り込むために、精巧なツールやカスタムスクリプトは必要ありません。Gitingest、Repomix、repo2txt などのツールが重労働を処理します:ノイズをフィルタリングし、出力を構造化し、モデルのコンテキストウィンドウに収まる単一のテキストファイルを生成します。重要なのは、積極的にフィルタリングし、シークレットをスキャンし、使用しているモデルに出力サイズを合わせることです。これらのツールの 1 つを選択し、現在のプロジェクトで実行して、モデルが実際に全体像を把握したときに何ができるかを確認してください。

よくある質問

はい。Repomix はローカルで動作するため、可視性に関係なく、マシン上の任意のリポジトリを処理します。repo2txt は個人用アクセストークンを介してプライベート GitHub リポジトリをサポートしています。Gitingest も現在、個人用アクセストークンを使用したプライベートリポジトリをサポートしていますが、一部のチームは機密性の高いコードベースにはローカルファーストのツールを好む場合があります。

ほとんどの変換ツールは、生成された出力の合計サイズを報告します。英語のテキストとコードの場合、文字数を約 4 で割ることでトークン数を推定できます。最新のモデルは一般的に 100K〜200K+ トークン範囲のコンテキストウィンドウをサポートしています。出力が制限を超える場合は、テスト、設定、または関連性の低いモジュールを除外して、より積極的にフィルタリングしてください。

モデルとプロバイダーによります。クラウドホスト型 LLM に送信されたコードは、プロバイダーが明示的に別段の記載をしない限り、ログに記録されるか保持される可能性があります。変換前に必ずシークレットをスキャンし、プロバイダーのデータ保持ポリシーを確認してください。機密性の高いコードベースの場合は、代わりにローカルホスト型モデルの使用を検討してください。

適切な頻度は、スプリントごとに一度、または重要なマージ後です。スナップショットはコードの現在の状態を反映する必要があるため、モデルは関連性のある回答を提供できます。一部のチームは、CI パイプラインでこのステップを自動化し、各リリースまたは主要なブランチ更新とともに新しいテキスト出力を生成しています。

Understand every bug

Uncover frustrations, understand bugs and fix slowdowns like never before with OpenReplay — the open-source session replay tool for developers. Self-host it in minutes, and have complete control over your customer data. Check our GitHub repo and join the thousands of developers in our community.

OpenReplay