コンテンツにスキップ

レビューの中の Claude

Emacs の MCP サーバーを有効にすると(ecc-mcp-enabled)、レビューは双方向になります。Claude がレビューを開き、行にコメントを付け、話している箇所までスクロールできます。「レビューでこの変更を順に説明して」「diff をレビューしてコメントを残して」のように、普通の言葉で頼みます。1 つの変更をこの流れで読む例はエージェントとレビューするにあります。

Claude のコメントは ▎ #4 Claude: text と、ecc-review-agent-comment-face で表示されます。Claude のコメントだけがある行で c を押すと返信になり、返信はその下に字下げして表示されます。a で Claude のコメントを隠したり表示したりします。C-c C-c で送るのは自分のコメントだけです。送信してもレビューは開いたままなので、Claude はレビューの中で各コメントに返信できます。

Claude はユーザーのコメントを書いたり変えたりできませんが、削除はできます。各セッションが扱うのは自分のレビューだけです。

ツール Claude がすること
review_open セッションの変更、範囲、ステージ済みの変更を開く(一部のファイルだけでもよい)。またはレビューを読み直す
review_hunks ファイルと番号付きのハンクを一覧する(中身も付けられる)
review_comment 行、ハンク、ほかのコメントの下にコメントを付ける
review_comment_apply 複数のコメントをまとめて付ける。誤りのあるものは理由を返し、残りは付ける
review_navigate 行、ハンク、コメントまでレビューをスクロールする
review_list_comments コメントを読む
review_remove_comment コメントを 1 つ削除する。対応を終えたユーザーのコメントも消せる
review_clear_comments Claude のコメントを削除する。ユーザーのコメントは頼まれたときだけ

review_open はレビューのメニューと同じ比較を開けます。「ステージ済みの変更」「このブランチ全体」「このコミットだけ」のように頼みます。Claude が開いたレビューはセッションの横に表示され、キーボードや今いるウィンドウを奪いません。レビューのバッファについて display-buffer-alist に自分のルールがあれば、今のウィンドウとタブを変えない限りそれに従います。空いたウィンドウがなければ、レビューはバッファの中で待ちます。

これらのツールはファイルを書かないので、確認なしで許可され、トランスクリプトには auto-allowed と記録されます。ほかのツールと同じく確認を求めるには、ecc-review-agent-auto-allow を nil にします。

ツールは、開いている ediff のレビューにも使えます。そこではハンクは ediff の 1 つの差分です。Claude が自分で ediff を始めることはありません。ediff のレビューが開いていなければ、review_open は diff バッファを開きます。

次のキーは diff バッファでも ediff のレビューでも使え、送り先は常にレビューのセッションです。

キー 動作
T 変更の案内を Claude に頼む。重要なものから順に、Claude が各箇所を表示して説明し、注意の要る行にコメントを付けて、次を待つ
t 案内の次の箇所を頼む
M ミニバッファでメッセージを入力し、プロンプトとして送る。リージョンがアクティブなら、選んだ行についてのメッセージになる

T はレビューのハンクをパッチと一緒に送るので、Claude はすべての箇所を一度に計画できます。ecc-review-talk-patch-limit(20000 文字)を超えるときは一覧だけを送ります。t と M は、いまいる場所を Claude に伝えます。ファイル、ポイントのある行とその側、ハンクです。

リージョンがアクティブなとき、M はいまいる場所の代わりに選んだ行を送ります。ファイルとハンクごとに、各側の行番号と、+ や - の付いた行そのものです。ediff では左右どちらかのウィンドウで行を選ぶと、どちらの側の行かも Claude に伝わります。ecc-review-talk-region-limit(10000 文字)を超えるときは行番号だけを送ります。送信するとリージョンは解除されます。

セッションが動いている間、プロンプトはキューで待ちます。T と t には MCP サーバーが必要です。ediff では Claude の返答が返答の欄に届きます。diff バッファでは横にセッションがあるので、欄はありません。