コンテンツにスキップ

レビューとプランモード

変更を 1 つの diff として確認し、手を入れたいハンクにコメントを付け、すべてのコメントを 1 つのプロンプトとして送信できます。同じバッファで、セッションによる変更内容、変更された作業ツリー、適用前の個別提案のいずれもレビューできます。

セッション全体の変更をレビューする

Section titled “セッション全体の変更をレビューする”

Transient メニューで D を押すか、C-c c D を入力するか、M-x ecc-review を実行します。プレフィクス引数(C-u D)で対象ファイルを指定できます。

セッション全体の変更を1つの diff として表示: ハンクにコメントを付け、送信前にプロンプト形式で確認している様子

Git 管理下のファイルは git diff で差分を取得します(未コミットのローカル変更も含まれます)。未追跡ファイルやリポジトリ外のファイルは、セッションで最初の変更が加えられる前の状態と比較されます。

キー 動作
c ポイント位置のハンクにコメント(再度押すと編集)
l コメントを付けた箇所へジャンプ
d このハンクのコメントを削除
e 提案内容を編集(単一提案のレビュー時)
C-c C-c コメントをプロンプトとして送信
C-c C-k レビューとコメントを破棄
g diff を読み直す
q バッファを隠す

バッファは読み取り専用の diff-mode で開くため、npRET でハンク間の移動やソースへのジャンプが可能です。コメントを付けたハンクはヘッダーが太字になり、その下にコメントが、ヘッダーラインに件数が表示されます。

C-c C-c を押すと、コメントが 1 つのプロンプトにまとまり、送信前に確認できます:

## hello.py L1-L6
```diff
def greet(name):
"""Say hi."""
- return "hi " + name
+ return "hello " + name
```
Comment: the docstring still says hi

必要に応じて編集し、C-c C-c で送信します。C-c C-k で diff に戻ります。

ecc-review の対象はセッションが編集・作成したファイルのみです。自身で行った変更をレビューするには、メニューで G を押すか、C-c c G を入力するか、M-x ecc-review-worktree を実行します。

プロジェクトのリポジトリ全体を HEAD と比較し、ステージの有無にかかわらず未コミットの変更がすべて表示され、未追跡ファイルも含まれます(.gitignore の除外対象を除く。バイナリファイルや ecc-review-untracked-max-bytes を超えるファイルは、内容ではなくファイル名のみ表示)。C-u G で比較対象(リビジョン、main...HEAD などの範囲、または未ステージの変更のみとする空入力)を指定できます。

対象のプロジェクトはカレントバッファに基づいて判定され、コメントはそのプロジェクトのセッションに送られます。セッションが存在しない場合は起動を促されます(通常はこれが起動の起点になります)。コメントの付け方や送信手順は上記と同様で、2 つのレビューには別々のバッファが使われます。

コメントには注釈対象のハンク全体が含まれるため、ハンクは変更箇所のみの最小限のサイズになります。前後の行数を広げたい場合は (setq ecc-review-context-lines 3) を設定してください。この値は ecc が実行する git コマンドに -U 引数として渡されるため、git config の読み書きは行われません。なお、提案のレビューは設定にかかわらず前後 3 行のコンテキストが保持され、ecc-review-proposal-context-lines で調整します。

提案されたファイル変更内容を専用バッファで直接修正し、修正後の内容で許可する様子

トランスクリプト上でリクエストが承認待ちのとき、リクエストノードで c を押すとその変更をレビューでき、e を押すと提案された内容が開きます(詳細は プロンプトとトランスクリプト を参照)。

ここでのコメントは 拒否の理由 として送信され、ファイル書き込み後に修正させるのではなく、事前に Claude へ再提案を促せます。

e を押すと対象ファイルのメジャーモードで提案が開きます。C-c C-c は Claude の提案の代わりに編集後のテキストで変更を許可し、変更箇所の diff を添えて送信します。C-c C-k はリクエストを保留のままにします。

プランモードを抜けると計画がリクエストとして送信され、ecc はそれをセッションの横の編集可能なバッファで開きます。

プランが専用バッファで開き、権限モードを選択して計画を承認する様子

フィードバックの方法は 3 通りあります。行コメント(C-c C-a、削除は C-c C-r)、行内の @claude: … マーカー、計画自体の編集(C-c C-d で差分を表示)です。

フィードバックがある場合、C-c C-c はそれを添えて計画を差し戻し、再提案を求めます。フィードバックがなければ承認し、権限モードの選択を求めます。C-c C-p で選択できるほか、指定しない場合は ecc-plan-default-mode(既定値: "acceptEdits")が使用されます。

キー 動作
C-c C-c 承認、フィードバックがあればそれを送信
C-c C-k 理由を添えて却下(フィードバックも含める)
C-c C-a / C-c C-r 現在行にコメントを追加 / 削除
C-c C-d 提案された計画に対する編集差分を表示
C-c C-p 承認後の権限モードを選択
C-c C-n 前回の計画から変更された次の行へ

再提案されたプランでは、変更された行がマージンにマークされ、ヘッダーラインに +N −N が表示されます。

変更ファイル一覧 (Files セクション)

Section titled “変更ファイル一覧 (Files セクション)”

トランスクリプト末尾の変更ファイル一覧: ファイルを展開して差分を確認し、単体レビューへ進む様子

トランスクリプトの末尾には、セッション中に操作されたファイルが一覧表示されます(ファイルパス、R×n 読み込み/E×n 編集/W×n 書き込みの各操作、+n −n の変更行数)。TAB でそのファイルの累積 diff を展開し、RET でファイルを開き、d で単体レビューを行えます。

トランスクリプトで f(メニューでは F)を押すとこのセクションへジャンプします。ecc-render-summary-position'top に設定すると、末尾ではなく先頭に配置されます。

トランスクリプトで T を押すと、各ターンがプロンプト一覧で表示され、選んだターンへジャンプします。C-c C-nC-c C-p でターンを前後に移動できます。

タイムライン: 各ターンのプロンプト一覧から目的のやりとりにジャンプする様子

レビュー表示時のウィンドウ配置

Section titled “レビュー表示時のウィンドウ配置”

レビューには画面スペースが必要です。次の 2 つの変数でウィンドウの表示やフォーカスを制御できます:

変数 説明
ecc-window-hide-on-review 'project でこのプロジェクトのセッションを非表示、'all で全セッションを非表示、nil でそのまま維持
ecc-window-review-focus 'review でレビューバッファにフォーカス、'session でトランスクリプトにポイントを維持、nil で元のフォーカスのまま

ecc-toggle はカレントプロジェクトのセッションウィンドウを、ecc-toggle-all は全プロジェクトのセッションウィンドウを再表示します。その他の設定は 設定リファレンス をご覧ください。