メインコンテンツへ移動
AIチュートリアル

継続的なAI支援コード品質評価にJev Reviewを使用する

Jev ReviewをローカルMCPサーバーとしてインストールし、対応するコーディングエージェントに接続して、対象を絞った変更を評価に提出し、反復ごとのスコアを比較しながら、Jev APIの使用時に機密性の高いリポジトリデータを保護する方法を学びます。

継続的なAI支援コード品質評価にJev Reviewを使用する

Jev Reviewとは?

Jev Reviewは、AIコーディングエージェントに作業中のソフトウェア品質シグナルを構造化して提供するローカルのModel Context Protocolサーバーです。Claude Code、Codex、Cursor、OpenCodeをサポートし、jev_reviewという1つの専用MCPツールを公開します。

このツールは、正確性、複雑性、可読性、モジュール性、テスト品質、信頼性、セキュリティ、保守性など、独立した複数の観点でコードを評価します。文章によるコードレビューではなく、数値スコア、信頼度、適用可能性の指標、定義済みの評価基準ヒントを返します。

Jevは品質シグナルを提供しますが、弱点の診断、コードの変更、結果の検証は、引き続き主たるコーディングエージェントが担当します。

Jev Reviewは、MCP stdio経由でローカルのNode.jsプロセスとして動作します。ホスト型バックエンド、データベース、テレメトリーサービス、作者が運営するプロキシはありません。明示的に提供されたレビューコンテキストを含むリクエストは、設定済みのJev APIへ直接送信されます。

主な機能

  • 継続的な評価: タスクの最後まで待つのではなく、まとまりのある実装単位ごとに変更をレビューできます。
  • 独立した品質指標: 適用可能な各指標に、1から10までのスコアと、0から1までの信頼度が個別に付与されます。
  • 反復結果の比較: 前回の評価を渡すことで、改善、悪化、未解決の弱点を特定できます。
  • 焦点を絞ったコンテキスト: タスク、差分、選択したファイル、リポジトリのコンテキスト、またはそれらの適切な組み合わせを送信できます。
  • ローカル実行: 対応するすべてのクライアントは、同じバンドル済みのdist/server.jsプロセスをstdio経由で起動します。
  • リポジトリへの自動アクセスなし: サーバーは、ツールに明示的に渡されたコンテキストのみを処理します。
  • 人工的な総合スコアなし: Jev Reviewは、誤解を招く可能性のあるパーセンテージに統合せず、指標ごとの結果を保持します。

前提条件

Jev Reviewをインストールする前に、次のものを用意してください。

  • Node.js 20以降。
  • TypeSafeコンソールで取得したJev APIキー。
  • Claude Code、Codex、Cursor、またはOpenCode。

クイックインストール

1. APIキーをエクスポートする

コーディングクライアントを起動する前に、環境変数へキーを設定します。

export JEV_API_KEY="your-key"

実際のキーをプロンプト、ソースファイル、差分、コミット済みの設定ファイルに記載しないでください。

2. GitHubからプラグインをインストールする

Jev Reviewはnpmパッケージとして公開されているのではなく、GitHubリポジトリから直接配布されています。

npx plugins add NiazMorshed2007/jev-review

プロンプトが表示されたら使用するコーディングクライアントを選択し、クライアントを再起動してMCPサーバーが接続されていることを確認します。

3. レビューを依頼する

重要な変更の実装とテストが完了したら、コーディングエージェントにJev Reviewの使用を依頼します。例えば、次のように入力します。

依頼された認証変更を実装し、関連するテストを実行してから、焦点を絞った差分に対してjev-reviewを使用してください。重要度の高い最弱の指標を確認し、根拠のある改善だけを行い、最終的な引き渡し前に再評価してください。

クライアント別の設定

Claude Code

Claude Codeのターゲットを明示的にインストールします。

npx plugins add NiazMorshed2007/jev-review --target claude-code

Claude Codeを再起動し、/mcpを実行してjev-reviewが接続されていることを確認します。

MCPのみを手動で設定する場合は、バンドル済みサーバーをClaude Codeに指定します。

claude mcp add --scope user jev-review -- node /absolute/path/to/jev-review/dist/server.js

ローカルクローンから開発する場合は、プラグインディレクトリを直接読み込めます。

claude --plugin-dir /absolute/path/to/jev-review

Codex

Codexのターゲットをインストールし、クライアントを再起動します。

npx plugins add NiazMorshed2007/jev-review --target codex

/mcpを実行して接続を確認します。手動で設定する場合は、次のサーバー定義を~/.codex/config.tomlに追加します。

[mcp_servers.jev-review]
command = "node"
args = ["/absolute/path/to/jev-review/dist/server.js"]
env_vars = ["JEV_API_KEY"]

Cursor

Cursorのターゲットをインストールします。

npx plugins add NiazMorshed2007/jev-review --target cursor

Cursorを再起動し、Settings → MCPを確認します。バンドル済みスキルの名前はjev-reviewです。/jev-reviewで呼び出すか、Agent Decidesのままにできます。

手動で設定する場合は、~/.cursor/mcp.jsonを作成または更新します。

{
  "mcpServers": {
    "jev-review": {
      "type": "stdio",
      "command": "node",
      "args": ["/absolute/path/to/jev-review/dist/server.js"],
      "env": {
        "JEV_API_KEY": "${env:JEV_API_KEY}"
      }
    }
  }
}

macOSでは、Dockから起動したCursorがシェルのプロファイルから変数を引き継がない場合があります。Cursorを起動する前に、エクスポートしたキーをGUIアプリケーションから利用できるようにします。

launchctl setenv JEV_API_KEY "$JEV_API_KEY"

値を表示せずに変数の存在を確認します。

test -n "$(launchctl getenv JEV_API_KEY)" && echo "JEV_API_KEY is configured"

OpenCode

OpenCodeは現在、ポータブルインストーラーのターゲットとして登録されていません。リポジトリをクローンし、バンドル済みサーバーを手動で登録します。

git clone https://github.com/NiazMorshed2007/jev-review.git
cd jev-review
opencode mcp add jev-review --global -- node "$PWD/dist/server.js"

スキルと MCP サーバーの両方について、~/.config/opencode/opencode.json に次のような設定を追加し、絶対パスを置き換えてください。

{
  "$schema": "https://opencode.ai/config.json",
  "skills": ["/absolute/path/to/jev-review/skills"],
  "mcp": {
    "servers": {
      "jev-review": {
        "type": "local",
        "command": ["node", "/absolute/path/to/jev-review/dist/server.js"],
        "environment": {
          "JEV_API_KEY": "{env:JEV_API_KEY}"
        }
      }
    }
  }
}

opencode mcp list を実行して接続を確認してください。OpenCode ではツールが jev-review_jev_review と表示される場合がありますが、基盤となる MCP 名は引き続き jev_review です。

ツール入力を理解する

jev_review ツールは次の構造を受け取ります。

{
  task?: string;
  diff?: string;
  files?: Array<{
    path: string;
    content: string;
  }>;
  repositoryContext?: string;
  previousEvaluation?: Evaluation;
}

現在のコンテキストを示すフィールドを少なくとも1つ指定する必要があります。ほとんどの場合は、タスクと焦点を絞った差分を送信します。変更を理解するために周辺の実装詳細が必要な場合にのみ、完全なファイルを追加してください。

概念的なリクエストには、次のような内容が含まれます。

{
  "task": "アカウント作成エンドポイントに入力検証を追加する",
  "diff": "<焦点を絞ったバージョン管理の差分>",
  "repositoryContext": "リポジトリ既存の検証規約を使用する Node.js サービス"
}

この例は入力の形式を示すものです。通常、コーディングクライアントが MCP ツールを代わりに呼び出します。

推奨される評価ワークフロー

  1. タスクを理解する。 リポジトリ、要件、規約、関連するテストを調査します。
  2. 一貫した範囲を実装する。 些細な編集をすべて確認するのではなく、変更の意味のある部分を完了させます。
  3. 関連するチェックを実行する。 スコアを使って次の作業を導く前に、動作を検証します。
  4. ベースラインを確立する。 タスクと焦点を絞った差分を指定して jev_review を呼び出します。
  5. 弱い指標を調査する。 コーディングエージェントに実装を調査させ、重要な弱点ごとに具体的な仮説を立てさせます。
  6. 根拠のある最小限の改善を行う。 推測に基づく書き換えや不要なアーキテクチャ変更は避けます。
  7. 再度検証する。 テスト、型チェック、リンター、その他プロジェクトに適したチェックを再実行します。
  8. 履歴付きで再評価する。 前回の結果を previousEvaluation として渡し、指標ごとの比較を取得します。
  9. 適切なタイミングで止める。 要件とチェックを満たし、これ以上スコアを追求しても実用的な価値がほとんどない時点で完了します。

たとえば、比較結果には、可読性が 6.3 → 8.1 に変化した一方で、セキュリティは 8.2 → 8.2 のままだったことが示される場合があります。これは、品質のどの側面が変化したのかを正確に示すため、単一の総合スコアよりも有益です。

品質の評価軸

中核となる評価軸

提供されたコンテキストが十分な場合、Jev Review は次を評価します。

  • 正確性と要件への適合度。
  • 認知的複雑性。
  • 可読性と意図の明確さ。
  • モジュール性と凝集度。
  • 結合度と依存関係の品質。
  • 変更容易性と変更の波及。
  • 抽象化と API 設計。
  • プロジェクトとファイルの構成。
  • 重複と再利用。
  • 保守性。
  • テスト容易性とテスト品質。
  • 信頼性とエラー処理。
  • セキュリティ。
  • 一貫性と規約。
  • ドキュメントと説明可能性。

コンテキスト依存の評価軸

次の評価軸は、関連する証拠が得られる場合にのみ評価されます。

  • パフォーマンスとリソース効率。
  • スケーラビリティと柔軟性。
  • 互換性と API の安定性。
  • 可観測性と運用性。

提供されたコンテキストではある評価軸を支えられない場合、結果には { "applicable": false } が使用されます。評価者は、関数が短いこと、ファイルが小さいこと、レイヤーを追加すること、コメントを増やすこと、重複がゼロであること、テストが多いことを自動的に優れているとはみなしません。

高度なヒント

レビューのコンテキストを絞る

実装を捉える最小限の一貫した差分とタスクを送信します。省略したコンテキストによって信頼できる評価が妨げられる場合にのみ、完全なファイルを含めてください。焦点を絞った送信により、コーディングエージェントはフィードバックを解釈しやすくなります。

Jev Review 自体は、文字数、トークン数、ファイル数の制限を追加しません。ただし、jev-latest API の実際の動作から、送信状態にはおよそ 32,768 トークンの上限があることがわかります。この制限は API ドキュメントに公開されておらず、変更される可能性があります。API が max_tokens_exceeded を返した場合は、無関係なコンテキストを削除するか、作業を一貫したレビュー単位に分割してください。

前回の評価を使って制御された反復を行う

再評価時には、完全な前回の結果を previousEvaluation に渡します。Jev Review はそれをローカルで比較し、指標ごとの差分、改善、後退、未解決の弱点を報告します。前回の評価は、Jev に送信される現在のコードコンテキストには含まれません。

編集前に診断する

低いスコアは根本原因の説明ではなく、兆候です。コーディングエージェントに実装を調査させ、弱点を示す証拠を特定し、最小限の修正を提案させてください。数値を動かすためだけにコードを書き換えてはいけません。

スコアより要件を優先する

正しい動作とユーザー要件は、常にスコアの向上より優先されます。高いスコアを理由に、動作を壊したり、範囲を広げたり、意味のないテストを追加したり、推測に基づく抽象化を導入したり、不要なレイヤーを作成したりしてはいけません。

専用のセキュリティツールも使用する

セキュリティは評価項目の一つですが、Jev Reviewは依存関係スキャナー、シークレット検出、静的解析、ペネトレーションテストなど、専用のセキュリティ対策を補完するものであり、それらに取って代わるものではありません。

セキュリティとプライバシー

ローカルのMCPプロセスはJEV_API_KEYを読み取り、https://api.typesafe.ai/v1/systemoneへ直接送信するTLS Authorizationヘッダーでのみ使用します。Jev Reviewがキーを保存したり、ログに記録したりすることはありません。

ツールに明示的に提供されたtask、diff、files、repositoryContextのみがJevに送信されます。サーバーがリポジトリのファイルを自動的に検出またはアップロードすることはありません。

レビューコンテキストはTypeSafeのJev APIに送信されます。シークレットや関係のない専有情報は送信しないでください。

送信したデータをリモートサービスがどのように取り扱うかについては、TypeSafeのプライバシーポリシーをご確認ください。

Jev Reviewをローカルで開発する

プロジェクト自体に取り組むには、リポジトリをクローンし、依存関係をインストールして、検証を実行します。

git clone https://github.com/NiazMorshed2007/jev-review.git
cd jev-review
npm install
npm run validate

開発に役立つコマンドは次のとおりです。

npm run check
npm test
npm run build
npx plugins discover .
claude plugin validate . --strict

npm run buildは、コミット対象のdist/server.jsバンドルを作成します。ユニットテストとMCPプロトコルテストはローカルのフェイクを使用するため、Jev APIのクォータを消費しません。Jevへの実際のリクエストにはJEV_API_KEYが必要です。

まとめ

Jev Reviewは、実装の主導権を奪うことなく、対応するAIコーディングクライアントに規律ある品質フィードバックループを追加します。ローカルMCPサーバーをインストールし、重要な変更後に焦点を絞ったコンテキストを送信し、項目別の結果を活用して慎重な改善を行い、反復ごとの評価を比較してください。スコアを目標ではなく根拠として扱い、要件、チェック、実際の品質上のニーズが満たされた時点で終了します。