vs-token-safer は何をしますか?
grepの代わりにclangd/Roslynインデックスを使用する、トークンセーフなC++/C#コード検索。ローカル専用、IDE不要。Claude Codeプラグイン + vts CLI。
概要
vs-token-saferは、Claude Codeエージェント(またはターミナルから直接)が、構文解析インデックス(C++はclangd、C#はRoslyn)に基づいてC++およびC#のシンボルを正確に検索できるようにするツールです。単純なテキスト一致(grep)ではなく、トークンレベルの認識を使用するため、エイリアスやコメントのノイズが減り、より正確な結果が得られます。
機能
- トークンセーフな検索: テキストの部分一致ではなく、正確なシンボル名を検索します。
- 言語対応: 現在はC++(clangd)とC#(Roslyn)に対応。
- ローカル専用: インデックスはプロジェクト内にローカルに保存され、外部サービスにデータを送信しません。
- IDE不要: コマンドラインで動作するため、CI/CDやエージェントフレンドリーです。
- Claude Code統合: Claude Code内で
vtsコマンドとして利用可能なプラグイン。
インストール
Claude Code(推奨)
Claude Code内でプラグインを有効にします:
claude code --plugin jsungmin/vs-token-safer
または、設定ファイルに追加します。
スタンドアロンCLI
リポジトリをクローンしてvts CLIをビルドします:
git clone https://github.com/JSungMin/vs-token-safer.git
cd vs-token-safer
# ビルド手順(プロジェクト固有)
cargo build --release # または dotnet build など
使用方法
インデックスの構築
C++またはC#プロジェクトのルートディレクトリで以下を実行します:
vts index
これにより、compilation_database.json(C++)または.csprojファイル(C#)に基づいてインデックスが作成されます。
シンボルの検索
インデックスが構築されたら、次のコマンドでシンボルを検索できます:
vts search "MyClass"
または、完全修飾名で検索:
vts search "Namespace.Class.Method"
Claude Code内での使用
Claude Codeでは、プラグインが自動的にvtsコマンドを認識します。例えば:
Claude、MyClass の定義を vts で検索して
出力例
[
{
"symbol": "MyClass",
"kind": "class",
"file": "src/example.cpp",
"line": 42,
"column": 7
}
]
設定
環境変数または設定ファイルで設定をカスタマイズできます:
| 変数 | 説明 | デフォルト |
|---|---|---|
VTS_PROJECT_ROOT | プロジェクトのルートディレクトリ | カレントディレクトリ |
VTS_INDEX_DIR | インデックスストレージディレクトリ | .vts/index |
VTS_LANGUAGE | 言語の明示的な設定(cpp または csharp) | 自動検出 |
開発状況
- 基本的なインデックス構築(C++)
- 基本的なシンボル検索(C++)
- Roslynインデックス(C#)のサポート
- 複数プロジェクトのインデックス
- あいまい検索オプション
アーキテクチャ
clangd / Roslyn
|
インデックスDB(SQLite)
|
vts CLI(Rust / C#)
|
Claude Code プラグイン
ライセンス
MITライセンス。詳細はLICENSEを参照してください。
貢献
プルリクエストと問題報告は歓迎します。大きな変更を加える前に、まずissueを開いて議論してください。