Skip to main content
Glama

InReview

InReview は、プルリクエストを開かずにローカルの Jujutsu (jj) の変更をレビューするための VS Code 拡張機能です。

jj の変更の連続した範囲を選択し、VS Code でそれらの結合差分または変更単位の差分を確認し、差分の新しい側にコメントを残せます。ネイティブなローカル MCP ブリッジにより、GitHub Copilot CLI がそれらのコメントを読み取り、返信し、コードを更新した後に解決できます。

InReview は実験的なローカルビルドです。VS Code Marketplace には公開されていません。

機能

  • 過去の連続した変更範囲、revset、または @ で終わる最新の X 件の変更をレビューします。

  • 1 つの結合スタック差分と変更単位の差分を切り替えられます。

  • VS Code のネイティブな差分エディター、シンタックスハイライト、テーマ、Comments API を使用します。

  • 追加された行、変更されていないコンテキスト行、ファイル全体にコメントを追加できます。

  • 追加、変更、削除、名前変更、コピー、バイナリ、シンボリックリンクのエントリをレビューします。

  • jj の書き換え後も正確なコメント履歴を保持したままレビューを更新できます。

  • 一致しないコメントは、元のスナップショットにリンクされた古いスレッドとして保持されます。

  • ローカルレビューをアーカイブおよび復元できます。

  • ネイティブなユーザー単位の MCP ブリッジを介して GitHub Copilot CLI を一度接続します。

Related MCP server: copilot-mcp-server

要件

  • VS Code 1.96 以降。

  • VS Code 拡張機能ホストが利用できる jj 0.44 以降。

  • 1 つの jj リポジトリを含む信頼されたファイルシステムワークスペース。

  • エージェントレビューサポートが必要な場合は GitHub Copilot CLI。

パッケージ化された拡張機能には、ネイティブブリッジの実行可能ファイルが含まれています。エンドユーザーは Node.js、Rust、その他のブリッジランタイムを必要としません。

対応するネイティブ VSIX がそこで実行できる場合、ローカルおよびリモートの拡張機能ホストがサポートされます。これには WSL、SSH、Dev Containers、VS Code Tunnels が含まれます。GitHub Copilot CLI は、InReview と同じ拡張機能ホスト環境で実行してください。ブリッジはホスト間で IPC を転送しません。

VS Code が jj を見つけられない場合は、PATH を変更した後にすべての VS Code ウィンドウを再起動するか、InReview: Jj Path に実行可能ファイルの絶対パスを設定してください。

ローカル VSIX のインストール

ビルドしてインストール:

npm ci
npm run package:vsix
code --install-extension .\inreview-<target>-0.0.1.vsix --force

VSIX のビルドには Rust 1.88 以降が必要です。<target> は現在のネイティブプラットフォームです。例: linux-x64、darwin-arm64、win32-x64。

main への各コミットは、Build VSIX packages GitHub Actions ワークフローを実行します。この実行では、Linux、macOS、Windows の x64 および arm64 バリアントごとに個別のアーティファクトがアップロードされます。

インストール後に VS Code をリロードしてください。

既知の問題: Node URL 非推奨警告

VS Code 1.135 は、ローカル VSIX のインストールに成功した後、url.parse() に関する Node の DEP0169 警告を出力することがあります。非推奨トレースは、VS Code の cliProcessMain.js 内のギャラリーメタデータ要求を指しています。同じトレースは、分離されたユーザーデータディレクトリと拡張機能ディレクトリ内の最小限の拡張機能でも発生します。テスト起動時にも、VS Code 組み込みの Agent Host が起動した直後に [AgentHost:stderr] として警告が報告されることがあります。InReview のソースとプロダクションバンドルは、非推奨 API を呼び出しません。上流の修正は Microsoft が担当しており、microsoft/vscode#301941 を参照してください。対応する VSIX レポート は重複としてクローズされました。

変更をレビューする

  1. VS Code で信頼された jj リポジトリを 1 つ開きます。

  2. InReview アクティビティバービューを開きます。

  3. InReview: Start Review を実行します。

  4. Choose Range、Current Stack (Last X)、または Advanced: Enter jj Revset を選択します。

  5. 範囲の場合、含める最新の変更を選択し、次に含める最古の変更を選択します。Load older changes を使用して履歴ウィンドウを拡張します。

  6. 順序付けされた選択プレビューを確認します。

  7. Active Review の下でファイルを選択して、そのネイティブ差分を開きます。

  8. 追加された行または変更されていない新しい側の行のコメントガターを使用するか、Add File Comment を使用します。

  9. 選択した変更が書き換えられた後、InReview: Refresh Review を実行します。

InReview は不変のスナップショットを保存します。スレッドがインラインに残るのは、その完全なターゲットとコンテキストが更新後の差分に正確かつ一意にマッピングされる場合のみです。それ以外の場合、スレッドは 古い になり、コメントビューから引き続き利用できます。

Last X は、@ と、その直接の祖先の最大 X - 1 件を意味します。選択範囲は、連続した単一親のスタックです。jj のルート変更の前で停止するため、リクエストに含まれる変更は X 件未満になることがあります。InReview は、選択したスタック内のマージ、分岐した変更、未解決の競合を拒否します。更新は、書き換え後の元の安定した変更 ID に従います。後で @ になる新しい子を追加することはありません。

Choose Range は、@ の最大 200 件の祖先を 50 件ずつページングして参照します。選択した最新と最古の変更の両方が含まれます。InReview は、マージをまたぐ範囲、分岐した変更または未解決の競合を含む範囲、または 1 つの連続した親チェーンを形成しない範囲を拒否します。

Advanced jj Revset は、1 つの連続した単一親チェーン内の 1〜200 件の変更に解決される任意の revset を受け入れます。InReview は解決された変更をプレビューし、その完全な安定した変更 ID を保存します。更新中に元の revset を保存したり再評価したりすることはありません。

行コメントは、新しい側の追加された行または変更されていない行でのみ利用できます。削除された行は表示されたままですが、コメントはできません。削除されたファイルにはファイルコメントを付けることができます。更新でスレッドが現在のまま維持されるのは、その完全なターゲットとコンテキストが正確に 1 つ一致する場合のみです。他のすべてのスレッドは 古い になり、不変の元のスナップショットにリンクされたままになります。ユーザーコメントは編集または削除できます。エージェントの返信は不変です。解決済みのスレッドは再度開くことができます。

GitHub Copilot CLI を接続する

拡張機能は、パッケージ化されたネイティブブリッジを安定した拡張機能ストレージにインストールします。同じ拡張機能ホスト環境内のすべての対象 InReview ウィンドウに対して、ユーザーごとに 1 つのブリッジデーモンがサービスを提供します。各信頼されたウィンドウは、ユーザー制限付きの Unix ドメインソケットまたは Windows 名前付きパイプを介して、その正規のワークスペースを登録します。InReview は TCP ポートを開きません。

ブリッジは、信頼されたウィンドウにサポートされている jj リポジトリが 1 つ含まれ、inreview.mcp.enabled がオンの場合に自動的に起動します。InReview ビューを開いたりコマンドを実行したりする必要はありません。

  1. InReview: Copy InReview MCP Setup を実行します。

  2. copilot mcp add コマンドまたは mcp-config.json フラグメントのいずれかを選択します。

  3. 結果を同じ拡張機能ホスト環境の GitHub Copilot CLI に一度貼り付けます。

  4. /mcp show を使用してサーバー接続を確認します。

コピーされたコマンドは次の形式です:

copilot mcp add --tools "list_workspaces,connect_workspace,read_review_metadata,read_comments,reply_comment,close_comments" inreview -- "<native-launcher>"

inreview エントリは、その環境に登録されているすべてのワークスペースを検出します。リポジトリごとに MCP エントリを 1 つ用意する必要はありません。エージェントに、開いているワークスペースの一覧表示、返された絶対ルートの 1 つへの接続、その開いているコメントのレビューを依頼してください。

MCP ツール

Tool

Purpose

list_workspaces

ブリッジに登録されている正規のルートとホストプラットフォームを一覧表示します。

connect_workspace

MCP セッションを正確なワークスペースルートとアクティブなレビューにバインドします。

read_review_metadata

選択した変更、スナップショット、ファイルメタデータ、コメント数を読み取ります。

read_comments

フィルタリングされた現在、古い、未解決、または解決済みのスレッドを読み取ります。

reply_comment

解決せずに 1 つの未解決スレッドに Agent として返信します。

close_comments

オプションの解決メモを付けて、1 つ以上の未解決スレッドを原子的に解決します。

ブリッジはベアラートークンを使用しません。ソケットまたは名前付きパイプを現在のユーザーに制限し、境界のあるメッセージを検証し、MCP セッションを分離し、上記の 6 つのツールのみを公開します。ブリッジは操作を登録済みの拡張機能プロセスにルーティングします。任意のファイルを読み取ったり、シェルコマンドを実行したり、jj を実行したりすることはできません。信頼されていない共有ユーザー環境では使用しないでください。

コマンド

コマンドパレット、または対応するビューとコメントアクションを使用します。

Command

Purpose

InReview: Start Review

範囲、revset、または最新の変更スタックを選択してキャプチャします。

InReview: Refresh Review

同じ安定した変更 ID の書き換えられたバージョンをキャプチャします。

InReview: Archive Review

アクティブなレビューを読み取り専用にして履歴に移動します。

InReview: Restore Archived Review

アーカイブされたレビューをアクティブなレビューとして復元します。

InReview: Rename Review

アクティブなレビューのタイトルを変更します。

InReview: Delete Archived Review

アーカイブされたレビューを 1 つ完全に削除します。

InReview: Show Combined Diff

最古の変更の親とスタックの先頭を比較します。

InReview: Show Per-Change Diffs

選択した各変更を直接の親と比較して表示します。

InReview: Add File Comment

ファイル全体に適用されるコメントを追加します。

InReview: Resolve Comment / Reopen Comment

スレッドの解決状態を変更します。

InReview: Submit/Edit/Save/Cancel/Delete Comment

VS Code の Comments UI を使用してユーザーコメントを管理します。

InReview: Copy InReview MCP Setup

一度だけ使用するネイティブ stdio コマンドまたは JSON MCP 構成をコピーします。

InReview: Show MCP Bridge Status

ネイティブブリッジのインストールとワークスペース登録状態を表示します。

ビュー

  • Active Review は、選択した変更、現在のスナップショット、表示モード、変更されたファイルを表示します。

  • Comments は、未解決の現在のスレッド、未解決の古いスレッド、解決済みのスレッドをグループ化します。

  • History は、最新の 20 件のアーカイブされたレビューを表示します。

レビューデータは、VS Code の拡張機能グローバルストレージに保存されます。これには、不変のファイルスナップショット、レビューメタデータ、コメントが含まれます。リポジトリに書き込まれることはありません。InReview は、圧縮されたコンテンツアドレス型ブロブを使用し、リポジトリごとに書き込みを直列化し、最新の 20 件のアーカイブされたレビューを保持し、参照されていないブロブをガベージコレクションします。テレメトリを送信せず、ネットワーク要求も行いません。MCP トラフィックは、ローカルのユーザー単位のソケットまたは名前付きパイプ上に留まります。

設定

Setting

Default

Description

inreview.jj.path

jj

jj 実行可能ファイルのコマンド名または絶対パス。

inreview.review.defaultChangeCount

1

Current Stack (Last X) プロンプトの初期値。

inreview.review.largeDiffWarningLines

10000

確認が必要な変更行数。

inreview.mcp.enabled

true

対象となる信頼されたワークスペースをネイティブ MCP ブリッジに登録します。

inreview.logging.level

info

出力チャンネルのログしきい値。

現在の制限事項

  • VS Code ウィンドウごとに 1 つの jj リポジトリ。

  • レビューには、連続した単一親の変更スタックが 1 つだけ含まれている必要があります。

  • マージ変更と未解決の競合は拒否されます。

  • 削除された行へのコメントはありません。

  • VS Code の提案中のマルチファイル diff API ではなく、ネイティブのファイル単位の diff を使用します。

  • ローカル拡張ホストとリモート拡張ホストの間のブリッジ転送はありません。

  • クラウド同期や共有レビューサーバーはありません。

  • ブリッジにはアプリケーショントークンがありません。そのローカル IPC エンドポイントは、現在のユーザーの オペレーティングシステムのアクセス制御に依存しています。

  • Linux、macOS、WSL、SSH、Dev Container、Tunnel 拡張ホストはサポート対象ですが、 0.0.1 リリースではすべてを手動でテストしたわけではありません。

開発

npm ci
npm run typecheck
npm run lint
npm run test:unit
npm run test:integration
npm run build:production
npm run validate:package
npm run package:vsix

npm run check は、型チェック、リンティング、ユニットテストと jj 統合テスト、本番バンドル、パッケージ検証を実行します。

この拡張機能は、安定した公開 VS Code API を使用しています。提案中の API は有効にしていません。 パッケージ検証では、正確な VSIX 許可リスト: マニフェスト、README、 changelog、本番バンドル、アイコンが適用されます。

主なソース領域は次のとおりです。

src/domain/   Persisted review and comment models
src/storage/  Atomic manifests, locks, and content-addressed blobs
src/jj/       Safe jj process adapter and snapshot capture
src/diff/     Git patch parsing and file classification
src/review/   Review lifecycle and comment services
src/vscode/   Views, native virtual diffs, and Comments API integration
src/mcp/      Streamable HTTP transport, tools, and Copilot setup

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers