AI エージェント時代における変更の受け取り方:Hunk を活用した差分レビューの再構築
Algomatic のエンジニアが、AI エージェントによるコード変更を人間が適切にレビュー・受容するためのワークフローとツール「Hunk」の活用方法を論じている。
キーポイント
AI 時代におけるレビューの本質的変化
AI エージェントの登場により差分生成の速度と量が劇的に増加したが、最終的な責任は人間が「変更箇所」を読み、意図を理解する役割に留まるという前提を再確認している。
Hunk ツールの定義と役割
Hunk はエージェントによる変更セットを対象とした「レビューファーストなターミナル差分ビューア」として位置づけられ、チャット上の完了報告ではなく、具体的なコード差分の可視化を支援する。
人間と AI の役割分担
AI にコード記述を任せつつも、監督作業(事前制御・共同計画・観察・事後レビュー)は人間が担い、特に文脈依存のフィードバックや最終判断は人間の責任とする明確な分業モデルを提案している。
実用的な導入手順と限界
Claude Code や Copilot Agent などのツールで生成された差分を Hunk で確認する最小手順を示しつつ、ツールだけではカバーできない推論過程の監視や完全な信頼性の担保には限界があることを指摘している。
AI 生成後のレビュー負荷軽減
AI エージェントによる反復的な修正や複数ファイルにまたがる変更に対し、Hunk が差分の可視化と整理を行い、人間が確認する負担を減らす。
最小限の導入手順で即利用可能
npm や Homebrew で Hunk をインストールし、AI エージェントが変更を加えた後の working tree を `hunk diff` コマンドで見るだけで使い始められる。
AI 作業の可視化と人間による判断
Hunk はコード生成自体を行うのではなく、AI が書いた変更を人間が読める形に整理し、リスクのある箇所や整形差分を明確にして最終判断を支援する。
影響分析・編集コメントを表示
影響分析
この記事は、AI エージェントが実務で普及し始めた現在、コードレビューのプロセスが「差分の生成」から「差分の受容と検証」へとシフトしているという重要な転換点を捉えています。単なるツールの紹介に留まらず、人間の監督責任を再定義しつつ、具体的なツール(Hunk)を用いた実装アプローチを示すことで、開発現場における AI 活用リスクの低減と効率化への道筋を提供しています。
編集コメント
AI エージェントによるコード生成が一般化する中で、レビューの質を維持するための「人間の役割」を再定義した実践的な記事です。ツールの紹介だけでなく、開発プロセス全体のパラダイムシフトについて深く考察しており、エンジニアリングリーダーにとって示唆に富んでいます。

こんにちは。Algomatic でソフトウェアエンジニアをしている Go(@53able)です。
コードレビューは、昔から「完成したファイル」全体を読むのではなく、「変更された箇所」に注力する仕事でした。ローカル環境では git diff で差分を確認し、Pull Request 上では変更行に対してコメントを残す。開発者は、コードそのものよりも、そこに付加された変化を受け取ることに慣れてきました。
Rethinking Code Review in the Age of AI は、AI 時代のコードレビューを再考するためのビジョンやフレームワークを示す論文です。ここでは、レビューの場所が手元の確認から Pull Request 中心のワークフローへ移行し、AI コーディングアシスタントの利用によってレビュー対象の量が膨れ上がっているという問題提起がなされています。変化しているのは、差分が生じる速度と量です。
AI エージェントに任せた変更であっても、最終的には人間が差分として読み解く必要があります。どのファイルが変わったのか。なぜその変更が行われたのか。危険な箇所はどこか。説明とコードは整合しているのか。
チャット上で「完了しました」と言われただけでは、まだ変更を受け取ったことにはなりません。変更箇所を直接確認し、意図を読み取り、責任を持って判断できる状態にして初めて、「受け取った」と言えるのです。
Hunk は、この「受け取り方」を整備するためのターミナル用差分ビューアです。README では Hunk を、エージェントが作成した変更セットを対象とした「レビューファーストのターミナル差分ビューア」と定義しています。この記事では、Claude Code や Codex、Copilot Agent などにコード変更を任せるようになった開発者向けに、Hunk を活用した差分の受け取り方を整理します。
本記事で扱うのは、以下の 3 つです。
- Hunk で AI エージェントの差分を確認する最小限の手順
- 人間とエージェントでレビューの役割を分ける方法
- Hunk だけでは確認できないこと
私のスタンスはシンプルです。AI エージェントを「コードを書く相手」としてだけ扱ってはいけません。
AI が速く書くほど、開発者は「どう受け取るか」を設計する必要があります。差分を読む場所、コメントを残す場所、最終判断を下す場所が曖昧なままだと、AI の高速化は逆にレビューの負担として跳ね返ってきます。
最近の研究も、この見方と近い位置にあります。Human oversight of agentic systems in practice では、開発者がエージェントを利用する際の監督作業を、「事前制御」「共同計画」「実行中の観察」「事後レビュー」の 4 つに分類しています。
Hunk が主眼を置くのは、変更後のレビューと、--watch やライブセッションを通じて変化する差分(diff)の追跡です。エージェントの行動ログや推論プロセスそのものを監視するツールではありません。
Human-AI Synergy in Agentic Code Review では、AI エージェントが欠陥スクリーニングの範囲を広げる一方で、人間は文脈に依存したフィードバック——理解やテスト、知識共有など——を担う役割が大きくなると報告されています。
ただし、AI の提案が人間の提案よりも採用率が低いというデータもあり、AI エージェントの提案を鵜呑みにするのは危険です。だからこそ、人間が判断しやすい単位に差分を戻す方が理にかなっています。
- AI が書いた差分で困ること
- まずはこの手順で試す
- Hunk が AI エージェントと相性がいい理由
- AI の作業は差分として残る
- 2. 人間とエージェントが同じ差分を見られる
- 3. 差分の構造だけを先に読める
- Hunk でコメントを差分の近くに置く
- 変更のやり直しを同じ画面で追う
- エージェント向けの使い方が用意されている
- 実務ではこう使う
- まず変更の広がりを見る
- 2. エージェントに見るべき hunk を絞らせる
- 3. コメントを読んだうえで人間が判断する
- 4. 修正後も同じ画面で確認する
- Hunk だけでは確認できないこと
- まとめ: Hunk は AI の変更を受け取る場所になる
- エンジニアを募集しています!
AI エージェントを使えば、個々の PR(プルリクエスト)が常に大きくなるわけではありません。それでも、生成と修正の反復が速まるほど、チーム全体で確認する差分の量やレビュー回数は増えやすくなります。小さな修正なら追えますが、複数ファイルにまたがる変更や再編集が続く場面では、レビュー側の負担はすぐに膨らみます。
具体的には、以下のような課題が発生します。
- 変更ファイルが多く、どこから手をつけるべきか分からない
- エージェントの説明と差分(diff)を行き来する必要がある
- リスクのある hunk と整形された差分が混在している
- レビューコメントがチャット側に残り、コードから離れてしまう
- エージェントが再編集するたびに、レビュー対象を最初から追わなければならない
README では、マルチファイルのレビューストリーム、インライン AI/エージェント注釈、分割・スタック・自動レイアウト機能、ウォッチモード、キーボードやマウス、ページャー、Git difftool への対応などを主要機能として挙げています。これらの機能はすべて、AI が生成した後の確認作業を想定して設計されています。
Hunk の役割は、AI にコードを書かせることではありません。あくまで AI が生成した変更を、人間が読みやすい形に整えるためのツールです。
まずはこの手順で試す
使い方はシンプルです。
- Hunk をインストールする。
npm i -g hunkdiff
Homebrew を利用している場合はこちらです。
brew install hunk
- 別のターミナルやエディタ上で、Claude Code、Codex、Copilot Agent などにコードの変更を行わせます。
- 変更された作業用ブランチ(working tree)を Hunk で確認します。
hunk diff
スクリーンショットを見れば、Hunk の役割がより明確になります。画像を見る前に、まず何に注目すべきかを整理しておきましょう。
作業中の変更を確認する。 hunk diff コマンドは、まだコミットされていない作業用ブランチの変更を開きます。追加された行と削除された行を、hunk(変更のまとまり)単位で確認できます。
imageHunk で作業用ブランチの差分を開いた例
コミット済みの変更を確認する。 hunk show HEAD コマンドを使えば、最新コミットの内容を同じ UI で開けます。作業中の差分だけでなく、コミット後の確認にも活用できます。
imageHunk で最新コミットを開いた例
ここまでは、ローカルリポジトリにある変更を確認する例でした。もう一つ便利な使い方が、「変更内容だけを受け取って確認する」方法です。
例えばコードレビューの依頼で「この変更を見てください」と、.patch や .diff ファイルだけが送られてくることがあります。パッチファイルとは、Git で生成した差分ファイルを保存したものです。中身は「この行を削除し、この行を追加する」という変更内容そのものであり、対象ファイルや周辺コンテキストが合っていれば、別の環境でも同じ変更を再現できます。
Hunk では、このパッチファイルも通常の差分画面として開くことができます。
hunk patch change.patch
git diff の出力など、ファイルに保存せずにパイプで渡す場合のみ、標準入力(stdin)を使用します。
git diff --no-color | hunk patch -
パッチを Hunk で見る。 画面上部の before.js → after.js は、「どのファイルからどのファイルへの変更か」を示しています。緑色の行が追加された内容です。保存済みのパッチはファイル名で指定し、パイプラインの場合は標準入力から読み込みます。どちらも通常の差分表示と同じ見た目なので、すぐに確認できます。
image標準入力からパッチを読み込んで Hunk で開いた例
次の2枚の画像は、AI エージェントに Hunk を操作させる際の画面です。人間が確認する通常の diff 画面とは別に、エージェントは「hunk session」と「skill」を活用して Hunk セッションを読み解きます。
エージェントがセッション構造を読み取る。
通常は --repo . を指定することで、現在のリポジトリに紐づくセッションを簡単に選べます。ただし、同じリポジトリ内に複数の Hunk セッションが開かれている場合は、hunk session list で session id を確認した上で、hunk session review <session-id> --json のように ID を明示して指定する必要があります。
imagehunk session review session-id --json の例
エージェントに Hunk の扱い方を指示する。
hunk skill path で表示される SKILL.md ファイルのパスをエージェントに読ませることで、Hunk セッションの見方やコメントの書き方といったルールを伝えることができます。
imagehunk skill path の例
- エージェントが変更を継続中なら、自動更新モードで確認する。
hunk diff --watchこの段階における Hunk は、見やすい diff ビューワーとして機能します。サイドバーから複数ファイルの変更を追跡し、hunk ごとに内容を読み込みながら、AI が修正した範囲を確実に確認できます。
AI エージェントにも Hunk セッションを扱わせる場合は、以下のように指示を出してください。
Load the Hunk skill and use it for this review.
Run `hunk skill path` to get the skill path.人間は Hunk の TUI(ターミナルユーザーインターフェース)画面を確認します。一方、エージェントは hunk session list で対象のセッションを見つけ出し、hunk session review <session-id> --json を実行して差分構造を読み取ります。必要に応じて、hunk session navigate --repo . --file src/App.tsx --hunk 2 のように該当する hunk に移動したり、hunk session comment add --repo . --file README.md --new-line 103 --summary "Tighten this wording" のようにライブコメントを残したりします。
エージェントがコメントを残す。
hunk session comment add コマンドを使用すると、hunk の近くにライブなインラインレビューノートが表示されます。これにより、説明と差分を同じ画面で同時に確認することが可能です。
imageHunk セッションに live inline review note を追加した例
役割を明確に分けることで、運用がスムーズになります。
必ず JSON 形式で返してください。translation フィールドのみを含め、他のフィールドは一切追加しないこと。余計なフィールドを追加しようとして本文がトークン上限で打ち切られる事故を防ぐためです:
{"translation": "リライト全文"}リライト全文
- 必要に応じて、
hunk session navigate --repo . --file src/App.tsx --hunk 2のようにコマンドを実行し、画面を該当する hunk に移動させます。 hunk session comment add --repo . --README.md --new-line 103 --summary "Tighten this wording"でライブコメントを残せます。複数のコメントをまとめて JSON 形式で標準入力から渡す場合は、hunk session comment apply --repo . --stdinを利用します。
チャットベースのレビューでは、エージェントは「src/App.tsx のこのあたりが問題です」と説明するにとどまります。読者はその説明を手掛かりに該当箇所を探す必要があります。しかし Hunk を使えば、エージェント自身が該当 hunk に移動し、直接コメントを残すことができます。これにより、説明とレビュー対象の距離を縮められます。
imageHunk ライブセッションのワークフロー図解
3. 差分の構造だけを先に読める
AI エージェントに巨大な diff を丸ごと読ませると、コンテキスト容量をすぐに使い果たしてしまいます。リスクの低い変更も混在するため、本当に見るべき場所がぼやけてしまうのです。
Hunk のワークフローでは、まず構造だけを読み込ませます。
hunk session review コマンドに --repo . --json または <session-id> を指定して実行すると、読み込まれたファイルと hunk の構造情報が JSON 形式で返されます。ただし、デフォルトでは生の unified diff は含まれません。必要な箇所だけを絞り込んでパッチを確認したい場合は、--include-patch オプションを付与してください。
この順序は LLM にとっても扱いやすい設計です。まず全文を読む前に構造を把握し、どのファイルにいくつの hunk が存在するかを確認してから、必要な場所だけを読み込むことができます。これは人間のレビュープロセスにも、エージェントのコンテキスト管理にも適した運用設計と言えます。
必ず JSON 形式で返してください。出力には translation フィールドのみを含め、他のフィールドは一切追加しないでください。余計なフィールドを記述しようとして本文がトークン上限に達し、出力が途中で打ち切られる事故を防ぐためです。
今回の調査では、この効果を直接測定したベンチマークは見つかりませんでした。ただし、bundled の hunk-review skill には、「まずファイルや hunk の構造を確認し、生(raw)の diff は必要な場合のみ参照する」という方針が明記されています。
image巨大な diff を扱う際、全文を眺める前に構造から把握する重要性を示す図解
Hunk ではコメントを差分の近くに配置する
AI エージェントの提案は、チャット画面に表示されるため、実際のコードから離れてしまうことがあります。
必ず JSON 形式で返してください。出力するのは translation フィールドのみです。他のフィールドは一切追加しないでください。余計な情報を付け加えようとして本文がトークン上限に達し、途中で切れる事故を防ぐためです。
「この変更は、入力データの正規化を目的としたものです」
AI エージェントによるコード変更をどう受け取るか。Hunk を活用して差分レビューを整える(続き 6/10) (retry d1 3/3)
そう書かれていても、どの行に該当するのか、あるいはどの hunk にリスクがあるのかを特定する必要があります。説明と diff の距離が離れれば離れるほど、レビュー作業は面倒になります。
Hunk は、インライン AI やエージェント注釈を主要機能として掲げています。これにより、説明やレビューコメントを、該当するコード差分のすぐ近くに配置することが可能になります。
同梱された hunk-review skill も、コメントの対象を「意図(intent)」「構造(structure)」「リスク(risks)」「フォローアップ(follow-ups)」に絞るよう案内しています。エージェントがすべての hunk にコメントする必要はありません。人間が見落としやすい判断材料を差分の横に置くだけで十分です。
操作画面では、ライブなインラインレビューノートが対象となる hunk の直上に表示されます。チャット内に説明を置くのではなく、確認する行の近くに判断材料を配置する形です。
エージェントにはレビュー補助を任せ、最終的な判断は人間が行います。
image説明をチャットから対象 hunk の近くへ移す図解
変更のやり直しを同じ画面で追う
AI エージェントとの開発では、一発で完了することは少ないものです。
生成して確認し、テストして修正する。そして再度確認する。
hunk diff --watch は、作業ツリーの変更を追跡するウォッチモードとして、レビュー画面を開く際に使用します。すでに開いているライブセッションをエージェント側から更新する場合は、hunk session reload --repo . -- diff のようにリロードを行います。
レビュー画面を開いたまま、エージェントによる編集を追跡できます。エージェントも必要に応じてセッションをリロードし、次に見るべき hunk へ案内することができます。
AI が裏で編集を行い、人間が横で監督する。この形こそが Hunk に合っています。
image変更のやり直しを同じ画面で追う図解
エージェント向けの使い方が用意されている
Hunk は CLI だけでなく、エージェントが読み込むための同梱されたレビュースキルも提供しています。README では、hunk skill path が返すスキルファイルをエージェントに読ませる流れを案内しています。
このスキルは、エージェントの操作を具体化します。
- エージェントがインタラクティブな
hunk diffやhunk showを直接起動することはありません - ユーザーが Hunk TUI を起動します
- エージェントは
hunk session * commandsを使って、ライブセッションの検査・ナビゲーション・リロード・コメント付けを行います - raw patch は必要な時だけ読みます
- すべての hunk にコメントするのではなく、人間が見落としがちな点に絞り込みます
AI エージェントには優れた道具があっても、正しく使えるとは限りません。TUI を起動して詰まったり、diff の全文を読み込んでコンテキストを無駄に使ったり、重要でない箇所にコメントを量産したりするからです。Hunk は「skill」によってエージェントの振る舞いをレビュー用途に最適化します。
imageHunk の review skill がエージェントの振る舞いをレビュー用途に絞る図解
実務ではこう使う
AI エージェントによる変更を受け取る際は、以下の手順で確認を進めると、観点が揃いやすくなります。
1. まず変更の広がりを見る
最初から細部を読み込むのではなく、hunk diff で変更されたファイルの一覧を確認します。
注目すべきは次の 3 点です。
- 変更ファイル数が想定より多くないか
- 触ってほしくない領域に変更が入っていないか
- 新規ファイルや削除ファイルが混ざっていないか
違和感があれば、細部を見る前にエージェントへ戻ります。
2. エージェントに見るべき hunk を絞らせる
次に、エージェントに Hunk skill を読ませ、ライブセッションをレビューさせます。指示は「全体の説明」よりも、「見てほしい観点」に寄せるようにします。
この Hunk セッションを見て、レビュー優先度が高い hunk を 3 つ選んでください。
理由は security(セキュリティ)/ data loss(データ損失)/ behavior change(挙動変化)/ maintainability(保守性)の観点で短くコメントしてください。
この指示なら、エージェントはすべての hunk に薄いコメントを付けるのではなく、人間が確認すべき箇所を絞り込みやすくなります。
3. コメントを読んだうえで人間が判断する
エージェントのコメントは便利ですが、それ自体が判断ではありません。コメントが付いた hunk では、次を確認します。
- エージェントの説明と diff が一致しているか
- 変更前の挙動を壊していないか
- 例外処理、境界値、権限、永続化への影響がないか
- テストで確認できる変更か
Hunk は確認場所を見つけるための道具です。承認の根拠は、コード、テスト、仕様、実行結果に置きます。
4. 修正後も同じ画面で確認する
エージェントに修正させた後、人間が開いている画面が hunk diff --watch の場合は watch モードで追跡できます。すでに開いているライブセッションを明示的に更新したい場合は、次のようにリロードします。
hunk session reload --repo . -- diffレビューの文脈は捨てないでください。前の指摘が直ったか、別の hunk に副作用が出ていないかをチェックします。同じ画面で追うと、チャットログだけで追うよりも確認の流れを保ちやすくなります。
Hunk だけでは確認できないこと
注意
Hunk はレビュー面を整えるための道具です。判断責任は人間側に残ります。
Hunk 単体では、以下の点を保証するものではありません。
- 変更が仕様を満たしていること
- テストが十分であること
- 実行時の挙動が正しいこと
- 設計として長期的に妥当であること
- CI やポリシー適用を通過すること
- セマンティックな正しさが検証済みであること
また、Hunk のライブセッションワークフローは、手元で開いている Hunk と AI エージェントが同じ PC 内で通信できることを前提としています。そのため、エージェントがクラウド上で動作している場合や Docker コンテナ内、あるいはローカル通信が制限されたサンドボックス環境にある場合は、hunk session list を実行しても開いている Hunk セッションが見つからないことがあります。この点は、Hunk のエージェントワークフロードキュメントでもトラブルシューティングとして説明されています。
README の機能比較 は参考にはなりますが、独立したベンチマーク結果ではありません。レビュー時間の短縮や欠陥削減についても、今回の調査では公開された定量データを確認していません。
ここで明確にしておきたいのは、Hunk が支える範囲です。Hunk はレビュー画面を整備しますが、変更そのものの正しさを保証するものではありません。
この記事で研究を参照しているのも、Hunk の効果を証明するためではありません。むしろ、Hunk への過度な期待を戒めるためです。Hunk が解決するのは「AI が正しいコードを書いたか」ではなく、「AI が出した変更を人間が確認できる形に戻せるか」という点にあります。
この切り分けは、最近のコードレビュー研究とも合致します。Rethinking Code Review in the Age of AI では、AI によるコード生成が高速化するほどレビュー側が詰まりやすくなるという課題を論じ、専門エージェントを活用しつつ人間が品質ゲートを担う流れを提案しています。
ここでは実証結果そのものよりも、AI 時代のレビュー設計を考えるための視点として参照しています。
さらに、How AI Coding Agents Modify Code では、AI コーディングエージェントによる PR と人間の PR を比較すると、コミット数や変更対象ファイル数などに違いがあることが報告されています。
少なくとも、この論文で分析されたオープンソースプロジェクトの統合プルリクエスト(PR)データを見ると、AI による変更を「いつもの人間の PR」と同じ感覚で眺めれば十分だとは限りません。だからこそ、複数ファイルにわたる差分を一覧表示し、hunk 単位で確認でき、必要な箇所にコメントを残せる機能が大きな強みとなります。
まとめ:Hunk は AI の変更を受け取る場所になる
Hunk と AI エージェントの相性が良い理由は、AI が生成したコードを人間が検査する点にあります。
この記事で押さえておきたいポイントは以下の通りです。
- AI エージェントの成果物は差分(diff)として現れる
- 人間の確認作業は hunk 単位で行われやすい
- Hunk はその差分をレビューファーストな UI に落とし込み、
hunk diffやhunk diff --watchコマンドで人間が追跡可能にする - インライン注釈(annotation)により、説明がコードから離れない
- hunk セッション機能により、エージェントが人間が見ているレビュー画面を操作できる
review --jsonにより、エージェントは構造化されたデータから段階的に内容を把握できるwatchやreload機能により、反復的な編集にも追従可能- bundled skill により、エージェントの操作プロトコルまで明文化されている
Hunk は、AI エージェントが作成した変更を人間が確認するための作業環境を整えるツールです。
AI コーディングにおいて難しいのは、コードを書かせることよりも、信頼できる形で受け取ることです。
私は、AI エージェントを導入するなら、生成速度よりも先に「受け取りの作法」を整えるべきだと考えます。速く書ける環境であればあるほど、差分を読む場所、指摘を残す場所、そして最終判断を下す人を明確に決めておく必要があります。
Hunk は、その受け取り方を「diff」「hunk」「comment」「session」という単位に分解して整理します。AI に任せる範囲を広げるほど、人間が引き受ける確認の形も事前に決めておくべきです。そのための小さな足場として、Hunk はまさに最適な位置にあります。
エンジニアを募集しています!
ここまでお読みいただきありがとうございました!
Algomatic では、「AI 革命で人々を幸せにする」をミッションに、変化の激しい領域でも学びや試行錯誤を続けられるエンジニアを募集しています。
もし少しでもご興味をお持ちいただけましたら、カジュアル面談にご参加いただければ幸いです!
原文を表示

こんにちは。AlgomaticでソフトウェアエンジニアをしているGo(@53able)です。
コードレビューは、昔から「完成したファイル」ではなく「変更された箇所」を読む仕事でした。ローカルでは git diff で差分を確認し、Pull Request 上では変更行にコメントする。開発者は、コードそのものよりも、コードに加わった変化を受け取ってきました。
Rethinking Code Review in the Age of AI は、AI 時代のコードレビューを考える vision / framework paper として、レビューが手元での確認から Pull Request 中心のワークフローへ移り、AI coding assistant によってレビュー対象の量が増えているという問題設定を論じています。変わったのは、差分が生まれる速さと量です。
AIエージェントに任せた変更も、最後は人間が差分として読みます。どのファイルが変わったのか。なぜその変更を入れたのか。危ない変更はどこか。説明とコードは合っているか。
チャット上の「できました」だけでは、まだ変更を受け取ったことになりません。変更箇所を見て、意図を読み、責任を持てる状態にして、はじめて受け取ったと言えます。
Hunk は、この受け取り方を整えるための terminal diff viewer です。README は、Hunk を “review-first terminal diff viewer for agent-authored changesets” と定義しています。この記事では、Claude Code、Codex、Copilot Agent などにコード変更を任せ始めた開発者に向けて、Hunk を使った差分の受け取り方を整理します。
この記事で扱うのは次の3つです。
- Hunk で AI エージェントの差分を見る最小手順
- 人間とエージェントでレビューの役割を分ける方法
- Hunk だけでは確認できないこと
私のスタンスはシンプルです。AI エージェントを「コードを書く相手」としてだけ扱わない。
AI が速く書くほど、開発者は「どう受け取るか」を設計する必要があります。差分を読む場所、コメントを残す場所、最終判断をする場所が曖昧なままだと、AI の速さはレビューの負担として返ってきます。
最近の研究も、この見方と近い位置にあります。Human oversight of agentic systems in practice は、開発者がエージェントを使うときの監督作業を、事前制御、共同計画、実行中の観察、事後レビューに分けています。
Hunk が主に支えるのは、変更後のレビューと、--watch や live session を通じて変わっていく diff を観察する作業です。エージェントの行動ログや推論過程そのものを監視する道具ではありません。
Human-AI Synergy in Agentic Code Review は、AI エージェントが defect screening を広げる一方で、人間は理解、テスト、知識共有のような文脈依存のフィードバックを多く担うと報告しています。
ただし、AI の提案は人間の提案より採用率が低いとも報告されており、AIエージェントの提案をそのまま信頼できるわけではありません。だからこそ、人間が判断しやすい単位へ差分を戻す方が筋が通ります。
- AIが書いた差分で困ること
- まずはこの手順で試す
- HunkがAIエージェントと相性がいい理由
- AIの作業はdiffとして残る
- 2. 人間とエージェントが同じ差分を見られる
- 3. 差分の構造だけを先に読める
- Hunkでコメントを差分の近くに置く
- 変更のやり直しを同じ画面で追う
- エージェント向けの使い方が用意されている
- 実務ではこう使う
- まず変更の広がりを見る
- 2. エージェントに見るべきhunkを絞らせる
- 3. コメントを読んだうえで人間が判断する
- 4. 修正後も同じ画面で確認する
- Hunkだけでは確認できないこと
- まとめ: HunkはAIの変更を受け取る場所になる
- エンジニアを募集しています!
AI エージェントを使うと、個々の PR が常に大きくなるとは限りません。それでも、生成と修正の反復が速くなるほど、チーム全体で確認する差分の量やレビュー回数は増えやすくなります。小さな修正なら追えます。複数ファイルにまたがる変更や再編集が続く場面では、レビューする側の負担がすぐ増えます。
たとえば、次のような場面です。
- 変更ファイルが多く、どこから見るべきか分からない
- エージェントの説明と diff を行き来する
- リスクのある hunk と整形差分が混ざる
- レビューコメントがチャット側に残り、コードから離れる
- エージェントが再編集するたびに、レビュー対象を追い直す
README は、multi-file review stream、inline AI/agent annotations、split / stack / auto layout、watch mode、keyboard / mouse / pager / Git difftool support を主要機能として挙げています。どの機能も、AI が書いた後の確認に向いています。
Hunk が担うのは、AI にコードを書かせる部分ではありません。AI が書いた後、変更を人間が読める形に戻す部分です。
まずはこの手順で試す
最小の使い方はこれです。
- Hunk を入れる。
npm i -g hunkdiffHomebrew を使うならこちらです。
brew install hunk- 別ターミナルやエディタ上で、Claude Code / Codex / Copilot Agent などにコードを変更させる。
- 変更された working tree を Hunk で見る。
hunk diffスクリーンショットで見ると、Hunk の役割は分かりやすくなります。画像の前に、何を見ればよいかを整理します。
作業中の変更を見る。 hunk diff は、まだ commit していない working tree の変更を開きます。追加行と削除行を、hunk 単位で確認できます。

コミット済みの変更を見る。 hunk show HEAD は、最新コミットの変更を同じ UI で開きます。作業中の差分だけでなく、commit 後の確認にも使えます。

ここまでは、手元のリポジトリにある変更を見る例です。もうひとつ便利なのが、変更内容だけを受け取って確認する使い方です。
たとえばレビュー依頼で「この変更を見てください」と .patch や .diff ファイルだけが送られてくることがあります。パッチファイルとは、Git で生成した差分ファイルを保存したものです。中身は「この行を消して、この行を足す」という変更内容のテキストで、対象ファイルや周辺コンテキストが合っていれば、別の環境でも同じ変更を再現できます。
Hunk では、この patch ファイルも通常の差分画面として開けます。
hunk patch change.patchgit diff の出力など、ファイルに保存せずパイプで渡す場合だけ、標準入力の形を使います。
git diff --no-color | hunk patch -patch を Hunk で見る。 画面上部の before.js → after.js が「どのファイルからどのファイルへの変更か」を示します。緑の行が追加された内容です。保存済みの patch はファイル名で渡し、パイプラインでは標準入力から渡せます。どちらも通常の diff と同じ見た目で確認できます。

次の2枚は、エージェントに Hunk を操作させるときの画面です。人間が見る diff 画面とは別に、エージェントは hunk session と skill を使って Hunk セッションを読みます。
エージェントがセッション構造を読む。 通常は --repo . で現在のリポジトリに紐づくセッションを指定できます。同じリポジトリの Hunk セッションが複数開いている場合は、hunk session list で session id を確認し、hunk session review <session-id> --json のように id で指定します。

エージェントに Hunk の扱い方を渡す。 hunk skill path で表示された SKILL.md のパスをエージェントに読ませると、Hunk セッションの見方やコメントの残し方を指示できます。

- エージェントが変更を続けるなら、自動更新で見る。
hunk diff --watchこの段階の Hunk は、見やすい diff viewer です。複数ファイルの変更をサイドバーで追い、hunk ごとに読み、AI が触った範囲を確認します。
AI エージェントにも Hunk セッションを扱わせるなら、次のように頼みます。
Load the Hunk skill and use it for this review.
Run `hunk skill path` to get the skill path.人間は Hunk TUI を見ます。エージェントは hunk session list で対象セッションを見つけ、hunk session review <session-id> --json で差分構造を読みます。必要なら hunk session navigate --repo . --file src/App.tsx --hunk 2 のように該当 hunk へ移動し、hunk session comment add --repo . --file README.md --new-line 103 --summary "Tighten this wording" のように live comment を残します。
エージェントがコメントを残す。 hunk session comment add を使うと、live inline review note が hunk の近くに表示されます。説明と差分を同じ画面で確認できます。

役割を分けると、扱いやすくなります。
目的
人間がすること
エージェントに任せること
変更全体を把握する
hunk diff を開いてファイル一覧を見る
review --json で変更構造を要約させる
危険な箇所を探す
認証、削除、例外処理、DB変更を見る
リスクがありそうな hunk にコメントさせる
説明とコードを照合する
コメント横の diff を読む
「この hunk の意図」を inline comment に残させる
再修正を追う
--watch または reload で差分を更新する
修正後に再度 review させる
最終判断をする
テスト、仕様、設計への影響を確認する
見落とし候補を列挙させる
エージェントにレビューを完了させる必要はありません。人間が見るべき hunk を絞らせます。
HunkがAIエージェントと相性がいい理由
Hunk と AI エージェントの相性は、主に3つあります。
1. AIの作業はdiffとして残る
AI エージェントの返答はチャット上の文章に見えます。開発作業として見ると、成果物はリポジトリ上の変更です。
確認するべき対象は、エージェントの「できました」ではありません。実際に変わったコードです。
Hunk は hunk diff で working tree の変更を読み、hunk show で commit を読み、hunk patch change.patch で保存済み patch を読み、2ファイル比較もできます。Git の working tree、commit、patch、file diff という入口を、レビュー用 UI に載せます。
hunk は、変更を局所的に見るためのまとまりです。AI が変えた場所、人間が確認したい場所、コメントを付けたい場所が、hunk 単位でそろいます。

2. 人間とエージェントが同じ差分を見られる
Hunk の agent workflow では、人間が Hunk TUI を開き、エージェントが hunk session ... コマンドで live session を操作します。
docs/agent-workflows.md は、推奨ワークフローとして次の形を示しています。
流れを図にすると、人間・Hunk・エージェントの役割分担が見えやすくなります。
- 人間が別ターミナルで hunk diff または hunk show を開く
- Hunk TUI が local loopback daemon に session を登録する
- エージェントが hunk session list で対象を確認し、hunk session review <session-id> --json で状態を見る
- 必要なら hunk session navigate --repo . --file src/App.tsx --hunk 2 のように画面を該当 hunk へ移動する
- hunk session comment add --repo . --file README.md --new-line 103 --summary "Tighten this wording" で live comment を残す。複数コメントを JSON として標準入力からまとめて渡す場合は hunk session comment apply --repo . --stdin を使う
チャットだけのレビューでは、エージェントは「src/App.tsx のこのあたりが問題です」と説明します。読む側はそれを見て、該当箇所を探します。Hunk を使うと、エージェントが該当 hunk に移動し、そこにコメントを残せます。説明がレビュー対象から離れません。

3. 差分の構造だけを先に読める
AI エージェントに巨大な diff を丸ごと読ませると、コンテキストを使い切ります。リスクの低い変更も混ざり、見るべき場所がぼやけます。
Hunk の workflow は、先に構造を読ませます。
hunk session review --repo . --json または hunk session review <session-id> --json は、読み込まれた file / hunk structure を返します。raw unified diff はデフォルトでは含まれません。必要箇所を絞ってから patch を読むときに --include-patch を付けます。
LLM にとっても、この順序は扱いやすい可能性があります。全文を読む前に構造を見る。どのファイルに何個の hunk があるかを把握し、必要な場所だけ読む。人間のレビューにも、エージェントのコンテキスト管理にも合う運用設計です。
今回の調査では、この効果を測ったベンチマークを確認していません。ただ、bundled hunk-review skill も「file/hunk structure を先に見て、raw diff は必要なときだけ使う」と明示しています。

Hunkでコメントを差分の近くに置く
AI エージェントの説明は、チャットに置くとコードから離れます。
「この変更は入力正規化のためです」
そう書かれていても、どの行の話なのか、どの hunk にリスクがあるのかを探す必要があります。説明と diff の距離が遠いほど、レビューは面倒になります。
Hunk は inline AI / agent annotations を主要機能として掲げています。説明やレビューコメントを、該当するコード差分の近くに置けます。
bundled hunk-review skill も、コメントの対象を intent、structure、risks、follow-ups に絞るよう案内しています。エージェントは全 hunk にコメントする必要はありません。人間が見落としやすい判断材料を差分の横に置けば十分です。
操作画面では、live inline review note が対象 hunk のすぐ上に表示されます。チャットに説明を置くのではなく、確認する行の近くに判断材料を置く形です。
エージェントにはレビュー補助を任せます。最終判断は人間が引き受けます。

変更のやり直しを同じ画面で追う
AI エージェントとの開発は、一発で終わることの方が少ないです。
生成する。見る。テストする。直す。もう一度見る。
hunk diff --watch は、working tree の変更を追う watch mode としてレビュー画面を開くときに使います。すでに開いている live session をエージェント側から更新する場合は、hunk session reload --repo . -- diff のように reload します。
レビュー画面を開いたまま、エージェントの編集を追えます。エージェントも、必要に応じて session を reload し、次に見るべき hunk へ案内できます。
AI が裏で編集し、人間が横で監督する。この形に Hunk は合います。

エージェント向けの使い方が用意されている
Hunk は CLI だけでなく、エージェントに読ませるための bundled review skill も提供しています。README は、hunk skill path が返す skill file をエージェントに読ませる流れを案内しています。
この skill は、エージェントの操作を具体化します。
- エージェントは interactive な hunk diff や hunk show を直接起動しない
- ユーザーが Hunk TUI を起動する
- エージェントは hunk session * commands で live session を inspect / navigate / reload / comment する
- raw patch は必要なときだけ読む
- 全 hunk にコメントせず、人間が見落としやすい点に絞る
AI エージェントは、道具があれば正しく使えるわけではありません。TUI を起動して詰まる。diff 全文を読んでコンテキストを使い切る。重要でない箇所にコメントを量産する。Hunk は skill によって、エージェントの振る舞いをレビュー用途に寄せます。

実務ではこう使う
AI エージェントの変更を受け取るときは、次の順番にすると確認の観点をそろえやすくなります。
1. まず変更の広がりを見る
最初から細部を読まず、hunk diff で変更ファイルの一覧を見ます。
見るのは次の3つです。
- 変更ファイル数が想定より多くないか
- 触ってほしくない領域に変更が入っていないか
- 新規ファイルや削除ファイルが混ざっていないか
違和感があれば、細部を見る前にエージェントへ戻します。
2. エージェントに見るべきhunkを絞らせる
次に、エージェントへ Hunk skill を読ませ、live session を review させます。頼む内容は「全体の説明」より、見てほしい観点に寄せます。
このHunkセッションを見て、レビュー優先度が高いhunkを3つ選んでください。
理由は security / data loss / behavior change / maintainability の観点で短くコメントしてください。この指示なら、エージェントは全 hunk に薄いコメントを付けず、人間が見るべき箇所を絞らせやすくなります。
3. コメントを読んだうえで人間が判断する
エージェントのコメントは便利ですが、判断そのものではありません。コメントが付いた hunk では、次を確認します。
- エージェントの説明と diff が一致しているか
- 変更前の挙動を壊していないか
- 例外処理、境界値、権限、永続化への影響がないか
- テストで確認できる変更か
Hunk は確認場所を見つける道具です。承認の根拠は、コード、テスト、仕様、実行結果に置きます。
4. 修正後も同じ画面で確認する
エージェントに修正させたら、人間が開いている画面が hunk diff --watch なら watch mode で追えます。すでに開いている live session を明示的に更新するなら、次のように reload します。
hunk session reload --repo . -- diffレビューの文脈を捨てないでください。前の指摘が直ったか。別の hunk に副作用が出ていないか。同じ画面で追うと、チャットログだけで追うより確認の流れを保ちやすくなります。
Hunkだけでは確認できないこと
注意
Hunk はレビュー面を整える道具です。判断責任は人間側に残ります。
Hunk 単体では、次のことは保証しません。
- 変更が仕様を満たしていること
- テストが十分であること
- 実行時挙動が正しいこと
- 設計として長期的に妥当であること
- CI や policy enforcement を通過すること
- semantic correctness が検証済みであること
また、Hunk の live session workflow は、手元で開いている Hunk と AI エージェントが同じPC内で通信できることを前提にしています。
そのため、たとえばエージェントがクラウド上で動いている場合や、Docker コンテナ内で動いている場合、あるいはローカル通信が制限された sandbox 内で動いている場合は、hunk session list を実行しても、開いている Hunk セッションが見つからないことがあります。これは Hunk の agent workflow docs でも troubleshootingとして説明されています。
README の feature comparison は、参考にはなりますが、独立ベンチマークではありません。レビュー時間短縮や defect reduction についても、今回の調査では公開された定量データを確認していません。
ここで切り分けておきたいのは、Hunk が支える範囲です。Hunk はレビュー画面を整えますが、変更の正しさまでは保証しません。
この記事で研究を参照しているのも、Hunk の効果を証明するためではありません。むしろ、Hunk に期待しすぎないためです。Hunk が解くのは「AI が正しいコードを書いたか」ではなく、「AI が出した変更を、人間が確認できる形に戻せるか」です。
この切り分けは、最近のコードレビュー研究とも合います。Rethinking Code Review in the Age of AI は、AI でコード生成が速くなるほど、レビュー側が詰まりやすくなるという問題設定を論じ、専門エージェントを使いつつ人間が品質ゲートを持つ流れを提案しています。
ここでは実証結果というより、AI 時代のレビュー設計を考えるための視点として参照しています。
更に、How AI Coding Agents Modify Code では、AI coding agent の PR と人間の PR では、コミット数や触るファイル数などに違いがあると報告しています。
少なくとも同論文の merged OSS PR データでは、AI の変更は「いつもの人間の PR」と同じ感覚で眺めれば十分、とは限りません。だからこそ、複数ファイルの差分を一覧し、hunk 単位で確認し、必要な場所にコメントを残せる面が効いてきます。
まとめ: HunkはAIの変更を受け取る場所になる
Hunk と AI エージェントの相性は、AI が書いたコードを人間が検査する面にあります。
この記事で押さえておきたい点は、次のとおりです。
- AI エージェントの成果物は diff になる
- 人間の確認は hunk 単位になりやすい
- Hunk はその差分を review-first UI に載せ、hunk diff / hunk diff --watch で人間が追える形にする
- inline annotation により、説明がコードから離れない
- hunk session により、エージェントが人間の見ているレビュー画面を操作できる
- review --json により、エージェントは構造から段階的に読める
- watch / reload により、反復的な編集に追従できる
- bundled skill により、エージェントの操作プロトコルまで明文化されている
Hunk は、AI エージェントが作った変更を人間が確認するための作業面を整える道具です。
AI コーディングで難しいのは、書かせることより、信頼できる形で受け取ることです。
私は、AI エージェントを導入するなら、生成速度より先に「受け取りの作法」を整えたい。速く書ける環境ほど、差分を読む場所、指摘を残す場所、最終判断をする人を決めておく必要があります。
Hunk は、その受け取り方を diff / hunk / comment / session という単位に分けます。AI に任せる範囲を広げるほど、人間が引き受ける確認の形も決めておく。そのための小さな足場として、Hunk はちょうどいい位置にあります。
エンジニアを募集しています!
ここまで読んでいただきありがとうございました!
Algomatic では、「AI革命で人々を幸せにする」をミッションに、変化の速い領域でも 学びや試行錯誤を続けられる エンジニアを募集しています。
もし少しでもご興味をお持ちいただけましたら、カジュアル面談に足を運んでいただけるとうれしいです!
関連記事
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み