Vinv について
Vinv は、AI エージェント向けの検証レイヤーで、ランタイムのトレースを生成元のソースコードに結び付け、コーディングエージェントが実行結果に基づいて修正案を検討できるようにします。修正後はコードを再実行して結果を確認します。エディタ拡張、CLI、MCP サーバーとして提供され、現時点では Python のサービスと API が主な対象です。
主な機能
- 01ソース行に紐づくゼロ編集のランタイムトレース
- 02セマンティックなコード検索と永続的なコードグラフ
- 03実行結果に基づく障害箇所の特定とデッドコード検出
- 04エンドポイントの自動テストと回帰テストケースの保存
- 05自動巻き戻し付きの検証済み修正・最適化フロー
活用シーン
- 01コーディングエージェントに実行時の証拠を渡し、Python サービスのエラーを特定する
- 02一度も実行されていないコードを検出し、残すか削除するかを判断する
- 03パフォーマンス改善後も出力が変わっていないかを確認する
MCP 対応
本プロジェクトは 16 のツールを備えた MCP サーバーを提供し、セマンティック検索、デッドコード、障害箇所の特定、ランタイム値、検証・最適化ループを扱います。Claude Code、Codex、Gemini CLI などのクライアントにインストールできます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y vinv-mcpVINV_WORKSPACEOptional override for the repo/workspace Vinv analyzes. Normally unset — the server uses the folder your client exposes via MCP roots, falling back to the current working directory.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
16掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| query | string | はい | 自然言語の検索クエリ。 |
| top_k | number | いいえ | 結果数(デフォルトは 5)。 |
詳細
VinvAI
AI エージェントがコードベースをテスト、修正、最適化するためのツールです。
Vinvはランタイムトレースを、そのトレースを生成した正確なソースコードに結び付け、その証拠を普段お使いのコーディングエージェントに渡し、修正が実際に機能することを確かめるためにコードを再実行します。**新たなコーディングエージェントではなく、すでにお使いのエージェントを支える証拠レイヤーです。**エージェントが修正を提案し、Vinvが検証します。
|
エディター拡張機能 |
MCP サーバー |
ワークスペースコンテキストは一度構築すれば、すべてのエージェントが同じ .vinv/ ストアを読み取れます。
Vinv の理由
現在、開発者の84%がAIコーディングツールを利用している、または利用する予定です。しかし、その出力を信頼する人(33%)よりも、信頼していない人(46%)のほうが多く、信頼していない人の割合は1年でほぼ倍増しました(Stack Overflow 2025、49k人の開発者)。
原因はおなじみです。エージェントが間違ったハンドラーを編集し、戻り値の形式をでっち上げ、サーバーが起動すらしないのに自分で自分の宿題を採点します。またはループに陥ります。テストに失敗し、エージェントが同じ関数を編集し、またテストに失敗する。「確認させてください」にコンテキストウィンドウを浪費します。
どちらの失敗にも共通する根本原因があります。**エージェントは、コードが実行される様子を見たことがありません。**静的なテキストだけをもとに判断しています。
業界はコードの作成を自動化しましたが、コードの検証はすべて手作業のままです。Vinv は検証を自動化し、その後に問題の発見と修正を行います。
インストール
Vinv は、エディター拡張機能、CLI、またはあらゆるエージェント向けの MCP サーバーとして、3つの方法で利用できます。いずれも同じローカルエンジンを使用します。
エディター拡張機能
ワンクリックで、vinv.ai からインストールできます。エディター(VS Code、Cursor、Windsurf、VSCodium、Trae、Insiders)で拡張機能が直接開きます。掲載ページは Open VSXと VS Code Marketplaceにあります。
または、エディターの CLI からインストールします。
| エディター | コマンド |
|---|---|
| VS Code | code --install-extension VinvAI.VinvAI |
| Cursor | cursor --install-extension VinvAI.VinvAI |
| Windsurf | windsurf --install-extension VinvAI.VinvAI |
| VSCodium | codium --install-extension VinvAI.VinvAI |
| Trae | trae --install-extension VinvAI.VinvAI |
| VS Code Insiders | code-insiders --install-extension VinvAI.VinvAI |
初回実行時にエンジンをビルドします。Rust インデックスのコンパイルが中心で、約3分かかります。また、初回のみ約100 MBのローカル埋め込みモデルを取得します(uvとRustが必要です)。最初のトレースはその約1分後に取得でき、その後はすべて数秒で完了します。
CLI(Python エンジン)
pip install vinv # every engine as a console script
# or run one with zero install:
uvx --from vinv exerciser campaign <repo> --budget 20
MCP サーバー(あらゆるエージェント向け)
Claude Code、Cursor、または任意の MCP クライアントに Vinv のツールを追加できます。グローバル設定は1つだけで、MCP ルートを通じて開いているワークスペースを自動的に検出します。
Claude Code、Codex、Gemini CLI では、現在のフォルダーだけでなく、開くすべてのフォルダーに対して一度だけインストールします。
claude mcp add --scope user vinv -- npx -y vinv-mcp
codex mcp add vinv -- npx -y vinv-mcp
gemini mcp add --scope user vinv npx -- -y vinv-mcp
Claude Code は現在のディレクトリを、Gemini CLI は現在のプロジェクトをデフォルトとして使用するため、どちらも --scope user を指定します。Codex は常に ~/.codex/config.toml に書き込み、スコープフラグはありません。
その他のクライアント:mcpServers.vinv の下に { "command": "npx", "args": ["-y", "vinv-mcp"] } を追加します。詳細はvinv-mcpをご覧ください。16個のツールを利用できます。セマンティック検索、デッドコード、障害箇所の特定、ランタイム値/スライス/カバレッジ、検証/最適化ループが含まれます。
ソースからビルド — コントリビューター向け
git clone https://github.com/VinvAI/VinvAI ~/.vinv/engines && cd ~/.vinv/engines && ./install.sh
Windows(PowerShell):
git clone https://github.com/VinvAI/VinvAI $HOME\.vinv\engines; cd $HOME\.vinv\engines; .\install.ps1
実行 → テスト → 発見 → 証明。 Vinv に Python リポジトリを指定すれば、あとはすべて Vinv が行います。コードの変更も API キーも不要です。
flowchart LR
T[Trace] --> I[Index] --> S[Serve MCP] --> V[Verify] --> L[Learn] --> T
- 実行 — 編集なしでトレースを有効にしてすべてのサービスを起動し、実際の実行からタイミング、引数、戻り値、呼び出しツリーを記録します。
- テスト — すべてのエンドポイントに実際のリクエスト(有効値、境界値、負の値、認証済み)を送信し、各レスポンスを回帰テストケースとして保存します。
- 発見 — 実際に壊れた箇所や遅くなった箇所(サーバーエラー、クラッシュ、レイテンシのホットスポット、デッドコード)を明らかにし、それぞれを正確なソース行に結び付けます。
- 証明 — エビデンスをすでに使用しているエージェントに渡し、修正前に作成した、エージェントには見せない受け入れテストで修正を検証します。出力が少しでも変わる「高速化」変更は自動的に元に戻されます。
唯一の LLM はお使いのエージェントです。新たな費用も、モデル選択も、プロバイダーのキーも不要です。詳しい手順はvinv.ai/#under-the-hoodをご覧ください。
実際の動作を見る
ラボでのベンチマークではありません。実際のプロジェクト(scikit-learn、watermarks-remover、semantica、FastAPI、Typer、smolagents)で見つけた問題で、すべて元プロジェクトのスレッドを開いて確認できます。すべて Vinv をインストールした Cursor で Composer 2.5 を実行して得られたものであり、最先端モデルを使ったものではありません。成果を生み出したのはモデルではなく、エビデンスです。 スクリーンショット付きの全事例はvinv.ai/#catchesをご覧ください。
デッドコード — 実行されなかった事実で証明
静的解析ツールが証明できるのは、*"これを参照しているものはありません"ということだけです。Vinv は、"トレースで一度も実行されていない"*ことを証明し、トレースされなかった各コード領域を、今もそこを指している呼び出し元とともに示します。そして、統合、削除、維持のどれにするか、エージェントが判断できるようにします。
| 元プロジェクト | Vinv が発見したこと | 状況 |
|---|---|---|
| scikit-learn#34790 | リファクタリング後に取り残された、_ridge.py 内の未使用の _find_smallest_angle ヘルパー | ✅ マージ済み — 「クリーンアップに感謝します」 |
| semantica#1176 | 9 ファイルにわたる未参照シンボル 13 個(削除 289 件、追加 0 件) | ✅ マージ済み — レビューで 2 個が非推奨として復元 |
| fastapi/typer#1937 | ベンダーに含まれる Click 内の未使用の OptionHelpExtra TypedDict | ✅ メンテナーが確認 |
semantica#1176 は、この取り組みを一つのスレッドで示す事例です。メンテナーが下流からインポート可能なシンボルを 2 個指摘したため、Vinv は非推奨の警告を付けて復元し、同じメンテナーがマージしました。
最適化 — 効果の証明が必要な高速化
すべての呼び出しの時間を計測し、時間を消費したシンボルに計上します。候補となる修正が採用されるのは、対応のあるブートストラップ法による 95% 信頼区間が 0 を上回り、かつ動作テストスイートの再実行結果がバイト単位で完全に一致した場合に限られます。速くなっても挙動が変わる修正は自動的に元に戻されます。
| 元プロジェクト | Vinv が証明したこと | 状況 |
|---|---|---|
| watermarks-remover#261 | clean_image 内の不要な exiftool サブプロセスと重複する SynthID スコアリングを省略 — 出力は同一で、回帰テスト済み | ✅ マージ済み |
| smolagents#2572 | sanitize_for_rich の高速パス:36.27 KB → 0.00 KB/呼び出し(約 37,137 倍削減)。2,014 個の入力で回帰テスト済み | 🔵 オープン、レビュー中 |
| semantica#1178 | 組み込みアルゴリズムカタログを一度だけ構築し、コピーオンライトで共有 | 🔵 オープン、トリアージ済み |
バグレポート — 実行中にのみ発生するバグ
スキャナーはソースコードを読み、推測します。Vinvはサービスを実際に動かし、その応答を監視します。
- 実行 — 発見したすべてのエンドポイントに、誰も用意していない入力を使ってリクエストします。
- 判定 — 500が返っただけでは問題とは判断しません。オラクルが、本来返されるべきステータスを示します。
- 引き継ぎ — 再現用コマンド、呼び出し元のチェーン、実際の引数値を含む証拠パックとして出力します。
fastapi/full-stack-fastapi-template(約44k★)では、認証済みエンドポイントの一括検査によってディスカッション #2454が作成されました。本来は4xxを返すべき入力に対して500を返すエンドポイントが4つ見つかり、それぞれに再現手順が添えられていました。その後、別のコントリビューターがmasterに対して4件すべてを再現し、ファイル名と行番号を報告しました。「masterで確認しました。4件とも実際に発生します。」
Vinvがエージェントに提供するもの
修正したい内容ごとにまとめた、ひとつのループです。各機能から、サイト上の実際のウォークスルーにアクセスできます。
コードベースを理解する → vinv.ai/#what-it-does
- セマンティックコード検索 — 意味を指定して検索すると、ローカルモデルで埋め込み処理された
defの本体と行番号を含むシンボルが、関連度順に表示されます。 - コードグラフ — すべてのシンボルと呼び出しエッジを記録した永続的なマップです。保存時に差分更新され、ライブのランタイムオーバーレイも表示します。
- ランタイムトレース — コードを変更せずにトレースできます。呼び出しごとの時間、メモリ、引数、戻り値、エラーを取得し、ソースコードと結び付けます。
- Vinvに質問 — 実行中のシステムについて平易な英語で質問できます。回答では正確なトレース範囲とソースコードの行を引用し、証拠で裏付けられない主張をブロックする決定論的な批評機能も備えています。
実際に何が壊れたのかを見つける → vinv.ai/#catches
- 原因の候補を順位付け — 失敗が発生すると、実際の成功・失敗リクエストに対する障害箇所特定スコアでシンボルを順位付けし、実際のエラーメッセージを添えて表示します。
- 動作検査ツール — Vinvはトラフィックを待ちません。発見したすべてのエンドポイントを自ら実行し、トンプソンサンプリングのバンディットで戦略を選び、すべての応答を永続的な回帰テストケースとして蓄積します。
不要なコードを整理する → vinv.ai/#what-it-does
- デッドコードのセクション — トレースされていない領域を、「参照なし」と「ライブコードから到達可能だが実行されていない」に分類します。それぞれ、まだ参照しているライブな呼び出し元と、理由を添えた保持または削除の判定を表示します。
レイテンシを削減する → vinv.ai/#what-it-does
- 削減可能な時間 — 実際に取り戻せるミリ秒数でレイテンシのホットスポットを順位付けし、それぞれを推測ではなく、予測してから実証する最適化として実行します。
修正を信頼する → vinv.ai/#under-the-hood
- 検証済みの修正 — エージェントには見えない状態で、起動からライブポートまでを再現し、受け入れテストを実行します。ワンクリックですべてのエピソードによる変更を元に戻せます。
- ジャーニー — 検証内容をひとつのウォークスルーで確認できます。すべてのサービスに続いて、各エンドポイントの呼び出しツリー、レイテンシのフレームグラフ、正確な入力 → 出力を表示します。独自のテスト入力を追加するフォームもあり、エンジンがそれを継続的に再実行します。
- 自動操縦 — ワンクリックで、発見 → セットアップ → トレース → 検査 → 修正 → 検証を、成功するか予算に達するまで実行します。新たなトレースエラーが発生すると、グラフの赤いリングに気付く頃には修正エピソードがすでに実行に移されています。
- 検出結果 — 問題のクラスタ、ペアード・ブートストラップの信頼区間を含む最適化エピソード、種類別の回帰差分、エージェントが直接利用できる機械可読形式の
findings.jsonを提供します。
対象範囲について: まずはPython — サービスとAPIです。他の言語でもインデックス、グラフ、根拠に基づく質疑応答を利用できますが、ランタイムの証拠にはまだ対応していません。次はTypeScriptとGoです。
エージェント単体 vs エージェント + Vinv
| エージェント単体 | エージェント + Vinv | |
|---|---|---|
| コードの検索 | grep でファイルを探し、推測します | 意味に基づいて、行番号付きでシンボルをランク付けします |
| 「完了」 | 完了したと主張し、自分で自分の宿題を採点します | 起動を再現し、ポートをライブで確認し、未知の受け入れテストを実行します |
| メモリ | セッションごとにすべて忘れます | 永続的なインデックスとグラフがあり、保存時に更新されます |
| 実行時 | 確認できません | 呼び出しごとの実際のトレース、値、フレームグラフを確認できます |
| デバッグ | ソースを読み、推測します | 実際のエラーメッセージとともに、障害原因の候補をランク付けします |
| デッドコード | 使用中か未使用か判断できません | 実際に呼び出すコードと判定が付いた、未実行のコード領域を見つけます |
| 不適切な修正 | 差分を確認して祈るしかありません | エピソードで変更した内容をワンクリックですべて元に戻せます |
| API テスト | テストを書き、自分で採点します | すべてのエンドポイントをテストし、各レスポンスを未知の回帰テストケースとして保存します |
| パフォーマンスの主張 | 「これで速くなるはずです」 | ペア・ブートストラップの95%信頼区間がゼロを除外し、動作がバイト単位で同一でなければ、自動で元に戻します |
| コスト | 再調査のたびにトークンを消費します | エビデンスパックをローカルで一度だけ構成し、バンディットがどの構成が効果的かを学習します |
Vinv のもとでエージェントが報酬を不正に獲得できない理由
Vinv はすべての実行時トレースを、それを生成した正確なコードにひも付け、その結合から構築したコンテキストグラフをエージェントに渡します。これにより、エージェントは雰囲気ではなく証拠に基づいて主張できます。そして、エージェントが成功を主張しても、Vinv はそれを鵜呑みにしません。
- 受け入れテストは修正前に作成され、ワークスペースの外に不透明なトークンを使って保存されます。壊れたコードで決定論的に2回失敗しなければならず、修正前に通るテストは破棄されます。
- 観測可能な出力を少しでも変える「高速化」修正は自動的に取り消されます。動作スイートの再実行結果がバイト単位で完全に一致し、高速化の対応付きブートストラップ95%信頼区間がゼロを除外しなければなりません。
- 意図的な4xx拒否は修正すべき「エラー」ではありません。欠陥分類器は、サービスが正しく拒否している場合と、サービスが壊れている場合を見分けるため、エージェントに、攻略するしかない偽の目標が与えられることはありません。
- 2つの試行が進展しなくなった場合、ナッシュ交渉に基づく停滞判定器は、探索者の立場と監査者の立場の両方が、あなたに尋ねるより続行するほうを厳密に選好する場合に限り、続行します。
内部の仕組み:オラクル群、予算ディスパッチャー、サンドボックス
テスト段階は単一のテスターではなく、それぞれ異なる種類の欠陥を探すオラクル群で構成され、すべて同じ検出結果と修正ディスパッチ経路に書き込みます。
| オラクル | 検出する内容 | 検出結果の種類 |
|---|---|---|
| HTTP エクササイザー | スキーマに適合する値、境界値、負の値、実際のトレースから抽出した値、複数ステップの認証などを使って、すべてのエンドポイントを自ら実行します | server-error · crash · invariant-violation |
| 差分オラクル | ハンドラーや評価器を参照実装と比較します。パーサーの場合はCPython自体が参照実装となり、不一致がそのままバグ報告になります | differential-mismatch |
| フォールトインジェクション | 依存関係の境界における、敵対的でも合法な形状と、ストリームのチャンク分割位置すべてを検証します | fault-crash · fault-divergence |
| 並行性オラクル | 決定論的なインターリーブとタイムアウトの注入により、並列呼び出しで破損する共有状態や、デッドロックするロック順序を検出します | concurrency-divergence · concurrency-hang |
| 環境オラクル | 依存関係解決のマトリックスと、シグネチャが変更された上流シンボルを検出します | signature-drift |
| ゴールデンI/Oベースライン | フィールドをひそかに削除したり、ステータス区分を変更したりする「高速化」変更を検出します | baseline-degraded |
| デッドコード | 現在も参照している呼び出し元とともに、トレースされていない孤立部分を検出します | デッドセクション |
| ランタイム分析 | レイテンシのホットスポット、メモリリークの疑い(Theil–Sen)、キャッシュする価値のある重複再計算、スループットの上限(USL適合)を検出します | ホットスポット · リーク · キャッシュ候補 · throughput-ceiling |
ディスパッチャーはバンディットです。 exerciser campaign は、Thompsonサンプリングを使って (target × technique × oracle) の組み合わせを評価し、起動対象のすべてのオラクルに単一の予算を割り当てます。コストは実測されます(壁時計時間をプローブ相当数に正規化し、起動したサブプロセス分を加算)。クレジットは欠陥シグネチャごとに一度だけ付与されるため、決定論的なオラクルが同じバグについてクレジットを再獲得することはありません。事後分布は campaign.json に保存され、どの手法があなたのリポジトリで有効かを学習します。
未検証のコードは多層の封じ込め機構のもとで実行されます。ホストが対応している場合は、カーネルによって強制されるOSサンドボックス(sandbox-exec/bwrap/unshare)を使い、そうでない場合はプロセスシムを使います。いずれの場合も、使い捨てのリポジトリコピー、リダイレクトされた HOME/TMPDIR、ネットワークの遮断、サブプロセスの起動禁止が適用されます。階層は、ルート外への書き込みが実際に失敗することを検証するプローブによって決まり、バイナリが PATH にあるかどうかでは決まりません。Postgres、Redis、S3はジャイル内で置き換えられるため、これらを必要とするコードは接続に失敗せず実行されます。
Vinv のリリース判定を行うのは Vinv です。これらの数値は、このリポジトリでループを実行して得られたものです。
| 指標 | 結果 |
|---|---|
| インデックス | 4,036 個のシンボル |
| 検索 | ファイル hit@10 0.90 · シンボル MRR 0.51 · p50 81ms |
| クラッシュからの復旧 | インデクサー、エンベッダー、トレース対象サービスのすべてで、実行中の強制終了テストを実施 |
| 自ら検出した無駄 | 83% の重複計算を検出 → キャッシュするように修正済み |
| 検索精度の調整 | 800 件の記録済み判断に対するオフポリシー評価(ダブルロバスト、BCa ブートストラップ)により、top-k 10 を採用(+0.173、95% CI [+0.081, +0.317])し、他の候補を両方とも不採用 |
| テストスイート | 2,376 件のテスト — Python 1,575 件 · 拡張機能 801 件 |
報酬、傾向スコア、ゲーティングの計算を含む学習の全過程は、各主張に file:line を付けて docs/learning.md に記載されています。テストのオントロジーについては docs/testing-ontology.md をご覧ください。
お使いのエージェントで動作
1 つのコマンド(Register Vinv MCP in Agent Tools)で、検出されたすべてのエージェントにサーバーを登録します。
| エージェント | 修正の実行 | MCP ツール |
|---|---|---|
| Claude Code | ✅ | ✅ 自動 |
| Cursor(CLI + チャット) | ✅ | ✅ 自動 |
| Codex CLI | ✅ | ✅ 自動 |
| Gemini CLI | ✅ | ✅ 手動 |
| Copilot Chat(VS Code) | ✅ | ✅ 自動 |
| Windsurf Cascade | ✅ | ✅ 自動 |
クライアントごとの設定場所と確認方法
登録は冪等で、シークレットをコミットすることはありません。サーバー(vinv-index、vinv-runtime、vinv-exercise)はエディター独自のランタイムを介して stdio で起動します。
- Claude Code —
~/.claude.json、プロジェクトローカルのスコープです。確認方法:claude mcp list。 - Cursor —
<repo>/.cursor/mcp.json。確認方法:Settings → MCP で緑色に表示されます。 - Codex CLI —
~/.codex/config.tomlの[mcp_servers.vinv-index]/[mcp_servers.vinv-runtime]の下に設定されます。 - Copilot Chat — VS Code ネイティブの MCP プロバイダー(自動)、古いビルドでは
.vscode/mcp.json。 - Windsurf Cascade —
~/.codeium/windsurf/mcp_config.json。 - Gemini CLI — 修正の実行はそのまま動作します。MCP ツールを使うには、同じ stdio サーバーを
~/.gemini/settings.jsonに追加してください。
お使いのエージェントは、Vinv が利用する唯一の LLM でもあります。あらゆる分析ステップは、すでに利用料金を支払っているコーディングエージェントの CLI を通じて実行されます。
MCP ツールのリファレンス — ツール名を意図的に絞り、セッションツールで多重化しています
vinv-index — コードとセッション:
| ツール | 戻り値 |
|---|---|
vinv_query | パスと判断 ID を含む、順位付けされたシンボル — grep の前に使う、意味に基づくあらゆる検索 |
vinv_feedback | 結果に基づいて動作した後の確認応答 — 報酬 −1..1。検索を学習させます |
vinv_session | 1 つのツールに 10 個のアクション — 読み取り:trajectory · status · issues · hotspots · memory_trends · cache_candidates;操作:fix · run_sweep · set_goal · set_budget |
vinv-runtime — 取得した実行結果(読み取り専用、出所情報付き):
| ツール | 戻り値 |
|---|---|
rank_suspects | 成功/失敗リクエストに基づき、障害の可能性で順位付けされたシンボルと、紐付けられた実際のエラー |
values_of | 観測された引数/戻り値の型、null 率、範囲 |
slice | リクエストのルートから観測された呼び出し元の連鎖と、各フレームの値 |
coverage_of | 実行された処理、その回数、成功/エラー、実行時間 |
callers_of / blast_radius / why_did_this_run | 観測された呼び出し元 · 推移的な影響範囲 · エントリーポイントへのパス |
vinv-exercise — エージェントがサービスを実行して結果を返し、Vinv が返された内容を評価します。
pip install vinv を実行すると、すべてのエンジンがコンソールスクリプトとしてインストールされます。または、単体で使用することもできます。
| エンジン | コマンド | 機能 |
|---|---|---|
| exerciser | exerciser campaign <repo> --budget N | まずはこちらから。 カバレッジ誘導型の API 実行ツールとオラクル群です。永続的な回帰テストスイートを蓄積し、どの手法が効果を発揮したかを報告します。 |
| tracelens | tracelens run -- <cmd> | 編集不要のランタイムトレーサーです。処理時間、引数、戻り値、呼び出しツリーを記録します。 |
| index | index query <repo> · index deadcode <repo> | Rust によるセマンティックコードインデックスです。意味に基づく検索と、ソースコードのみを対象にしたデッドコードレポートを提供します。 |
| identification | identification consolidate <repo> | トレースとソースコードを対応付け、API サーフェスと呼び出しグラフのマップを作成します。 |
| bringup | bringup list/start <repo> | トレースを有効にしてサービスを起動します。 |
| handbook | handbook generate <repo> | エージェントが実行するコードベース探索タスクを生成します。プロンプトのみです。 |
| goal | goal create <context> | 作業コンテキストを、継続的に掲げる1つの目標に凝縮します。プロンプトのみです。 |
| embedder | vinv-embedder serve | ローカル埋め込みサイドカー(granite-embedding-small)です。クラウドキーは不要です。 |
| contracts | (ライブラリ) | lens_contracts — すべてのエンジンが読み書きする共通データ契約です。 |
exerciser CLI — 単体で実行できるオラクル群
| コマンド | 機能 |
|---|---|
exerciser campaign <repo> [--base-url URL] [--budget N] | まずはこちらから。 トンプソン抽出法により、有効化されているすべてのオラクルに1つの予算を割り当てます。 |
exerciser plan <repo> [--base-url URL] | エンドポイントごとの入力計画(スキーマ+観測済みの値+セマンティックレイヤー) |
exerciser run <repo> --base-url URL | 稼働中のトレース対象サービスに対して計画を実行します。カバレッジ誘導型です。 |
exerciser functions <repo> [--require-tier os-sandbox] | プロセス内でエントリーポイントとエクスポートされた関数を、隔離して実行します。 |
exerciser differential <repo> [--target M:f --reference cpython-exec] | 関数の結果を参照実装と比較します。 |
exerciser faults <repo> [--auto-target M:f] | 依存関係の境界で、合法ながら敵対的な形状を試します。 |
exerciser concurrency <repo> --target M:f | 決定的なスケジュールとタイムアウトの注入 |
exerciser environment <repo> | 依存関係解決マトリクスと上流のシグネチャ変更 |
exerciser containment | このホストが実際に提供できる隔離レベルとその理由 |
exerciser throughput-sweep <repo> --base-url URL | 並行性のスイープと USL フィッティング → throughput-ceiling の機会 |
exerciser regress <repo> --base-url URL | 蓄積された動作テストスイートを再生し、種類ごとに差分を報告します。 |
exerciser scorecard <repo> | サービスごとのスコアカード:カバレッジの変更前→変更後、不変条件、問題、レイテンシ |
apis.json を作成するには、事前に identification consolidate の実行が必要です。また、実際のカバレッジを得るには、tracelens でサービスを起動しておく必要があります。
自分の API キーが必要ですか?
いいえ。Vinv はすべてをローカルで実行します。セマンティックインデックスとコード埋め込みモデルは、プロバイダーのキーなしでお使いのマシン上で動作します。エージェントの CLI(Claude Code、Cursor、…)は、すでに設定済みの認証情報を使って、それぞれ独自に LLM と通信します。テレメトリやデータ収集はありますか?
テレメトリ、分析、使用状況の送信、クラッシュレポートは一切ありません。Vinv はリポジトリごとの状態を.vinv/ に、マシンごとの状態を ~/.vinv/ に保存します。トレース内の機密データはマスキングされ、外部に送信されることはありません。拡張機能自身が送信するリクエストは、アクティベーション時に notices.vinv.ai から静的ファイルを取得する GET リクエストの1 件だけです。これはリリースに問題がある場合にお知らせするためのものです。クエリ文字列や識別情報はなく、アップロードもありません。送信は最長でも 1 時間に 1 回です。vinv.notices.enabled で無効にできます。
Vinv はコードを変更しますか?
いいえ。Vinv はコードを一切編集しないトレーサーを使用し、SDK 統合、デコレーター、ソースの変更なしに、実行時に Python バックエンドを計測します。修正が機能したかどうかは、どのように判断しますか?
受け入れテストは修正前に作成し、ワークスペース外の不透明なトークンの下に保存します。テストは修正前のコードで決定論的に 2 回失敗する必要があり、修正前に合格するテストは破棄されます。その後、修正はこれらのテストに合格する必要があります。また、開始状態を再現でき、ポートが稼働し、ほかのすべての観測可能な動作がバイト単位で同一でなければなりません。差分に対する決定論的な不正防止監査により、テストの編集、例外の握りつぶし、シャドーモジュールを確実にブロックします。どの言語とエージェントに対応していますか?
トレース、オラクルの群、検証済みの修正といった実行時の証拠は、現時点ではサービスと APIを対象とする Python に対応しています。その他の技術スタックでは、セマンティックインデックス、コードグラフ、根拠に基づく Q&A を利用できます。次は TypeScript と Go に対応する予定です。エディター:VS Code、Cursor、Windsurf、VSCodium、Trae、VS Code Insiders。操作対象のエージェント:Claude Code、Cursor CLI、Codex CLI、Gemini CLI、Copilot Chat、Windsurf Cascade。本当に無料のオープンソースですか?
はい。Apache 2.0 でライセンスされており、すべてのエンジンはこのリポジトリのソースからビルドできます。プライバシー
- すべてのデータはお使いのマシン上に保存されます — リポジトリごとの状態は
.vinv/(自動的に gitignore に追加)、マシンごとの状態は~/.vinv/に保存されます。アカウントも API キーも不要で、テレメトリも一切ありません。 - 送信するリクエストは 1 件だけで、内容を確認できます:リリースの不具合やセキュリティに関する通知のみを目的として、アクティベーション時に
notices.vinv.aiから静的な JSON ファイルを取得する GET リクエストです。クエリ文字列や識別情報はなく、アップロードもありません。最長でも 12 時間に 1 回です。vinv.notices.enabledで無効にできます。 - ダウンロードするのは埋め込みモデル(Hugging Face、1 回のみ、約 100 MB)だけです。それ以外はすべてこのリポジトリからビルドします。
- トレースに保存するのは、生の値ではなく、サイズを制限した要約です。機密性の高いパラメーター名(
password、token、api_key、…)はマスキングされ、記録されることはありません。 - Vinv が通信する LLM は、お客様が設定したコーディングエージェントの CLI だけです。認証にはその CLI 独自の認証情報を使用します。
貢献とライセンス
CONTRIBUTING.mdをご覧ください。uv sync、index/でのcargo build、extension/でのnpm install && npm run checkを実行し、tests/e2e/planted_bug_golden/run.pyが成功する状態を保ってください。初めて取り組むのに適した課題にはラベルが付いています。参加することで、行動規範に同意したものとみなされます。脆弱性を報告するには、SECURITY.mdをご覧ください。Apache License 2.0 © 2026 VinvAI。
あなたのエージェントは完了したと言います。Vinvは、その証明を求めます。
Vinvがエージェントの見落としを発見した場合は、Open VSXでレビューを投稿し、このリポジトリに⭐を付けてください。
vinv.ai · 検出できること · Open VSX · LinkedIn · [email protected]
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。