TypeScript Codebase RAG

March 9, 2025 · View on GitHub

TypeScriptコードベース用のRAG(Retrieval-Augmented Generation)システム。コードベースを解析してベクトルデータベースを構築し、自然言語の質問に対して関連するコードを参照しながら回答を生成します。

特徴

  • コードチャンキング: TypeScriptファイルを意味のある単位(クラス、関数、メソッドなど)で分割
  • エンベディング生成: OpenRouter APIを使用してコードの意味を表すベクトルを生成
  • ベクトルデータベース: 高速な類似検索のためのインデックスを構築
  • 質問応答: 自然言語の質問に対して関連コードを参照した回答を生成
  • MCPサーバー: Clineから直接利用可能なインターフェース

インストール

パッケージマネージャーからのインストール(将来的に公開予定)

# グローバルインストール
npm install -g codebase-rag-typescript

# ローカルインストール
npm install codebase-rag-typescript

リポジトリからのクローン

# リポジトリのクローン
git clone https://github.com/username/codebase-rag-typescript.git
cd codebase-rag-typescript

# 依存関係のインストール
npm install

# ビルド
npm run build

環境設定

APIキーは以下の方法で指定できます:

  1. コマンドラインオプション: --api-key または -k
  2. 環境変数: OPENROUTER_API_KEY
  3. .envファイル: プロジェクトのルートに.envファイルを作成

.envファイルの例:

# OpenRouter API Key
OPENROUTER_API_KEY=your_api_key_here

# OpenRouter API設定(オプション)
# OPENROUTER_BASE_URL=https://openrouter.ai/api/v1
# OPENROUTER_SITE_URL=https://example.com
# OPENROUTER_SITE_NAME=RAG Generator

使用方法

コマンドラインツールとして使用

グローバルインストールした場合:

# RAGシステムの構築
ts-rag build --src ./src --output ./rag-data

# 質問
ts-rag query "このプロジェクトのルーティングはどのように実装されていますか?" --data ./rag-data

# MCPサーバーの起動
ts-rag mcp-server --data ./rag-data

ローカルインストールした場合:

# package.jsonにスクリプトを追加
{
  "scripts": {
    "rag:build": "ts-rag build --src ./src --output ./rag-data",
    "rag:query": "ts-rag query --data ./rag-data",
    "rag:mcp-server": "ts-rag mcp-server --data ./rag-data"
  }
}

# スクリプトの実行
npm run rag:build
npm run rag:query -- "このプロジェクトのルーティングはどのように実装されていますか?"
npm run rag:mcp-server

Clineからの利用(MCPサーバー)

  1. MCPサーバーを起動:
ts-rag mcp-server --data ./rag-data
  1. Clineの設定ファイルに以下を追加:
{
  "mcpServers": {
    "codebase-rag": {
      "command": "ts-rag",
      "args": ["mcp-server", "--data", "./rag-data"],
      "cwd": "/path/to/your/project",
      "env": {
        "OPENROUTER_API_KEY": "your-api-key"
      }
    }
  }
}
  1. Clineから以下のように利用:
use_mcp_tool
server_name: codebase-rag
tool_name: query_codebase
arguments: {
  "question": "このプロジェクトのルーティングはどのように実装されていますか?"
}

オプション

buildコマンド

  • --src, -s: ソースコードのルートディレクトリ(必須)
  • --output, -o: RAGデータの出力先(デフォルト: ./rag-data
  • --api-key, -k: OpenRouter API Key(環境変数 OPENROUTER_API_KEY でも設定可能)
  • --site-url: サイトURL(OpenRouter用)
  • --site-name: サイト名(OpenRouter用)

queryコマンド

  • <question>: 質問文(必須)
  • --data, -d: RAGデータのディレクトリ(デフォルト: ./rag-data
  • --api-key, -k: OpenRouter API Key(環境変数 OPENROUTER_API_KEY でも設定可能)
  • --site-url: サイトURL(OpenRouter用)
  • --site-name: サイト名(OpenRouter用)

mcp-serverコマンド

  • --data, -d: RAGデータのディレクトリ(デフォルト: ./rag-data
  • --api-key, -k: OpenRouter API Key(環境変数 OPENROUTER_API_KEY でも設定可能)
  • --site-url: サイトURL(OpenRouter用)
  • --site-name: サイト名(OpenRouter用)

ライセンス

MIT