hunk(modem-dev/hunk) は、AIエージェントが書いた差分をターミナルでレビューするための「レビューファースト」なdiffビューアだ。Claude CodeやCodexが数十ファイルの変更を一気に生成し、人間はgit diffの長い出力とにらめっこして承認を判断する。従来の差分ツールは「色を付けて読みやすくする」で止まり、AIの意図や人間の指摘はチャット欄に散らばっていく。hunkはここを作り直し、公開から約5ヶ月でGitHubスターは7,948に達した(2026年7月30日時点)。

Claude Code全体の使い方は Claude Code|2026年版・インストールからCLAUDE.md・Hooks・本番運用までの実装手引き をご覧ください。本記事は「エージェントが書いた差分をどうレビューするか」に絞る。

hunkの実演動画。エージェントとコードレビューを往復する様子がわかる(出典: YouTube "Hunk changed the way I write and review code with my agent")

REVIEW FIRST表示からレビューへ

差分を色付けして流すのではなく、レビューする画面として開く

git diff / delta

読みやすく表示するページャ

  • 長い出力を上からスクロール
  • AIの意図はチャット欄に散らばる
  • 指摘は頭の中かチャットに残る

hunk

レビューファーストのTUI

  • サイドバーで全ファイルを一望split / stack / auto の3レイアウト
  • AIのコメントが差分行の横にhunk session comment add
  • 人の c メモをAIが回収comment list --type user
出典: modem-dev/hunk README(2026-07-30時点)

30秒でわかるhunk

  • ・AIが書いた差分をレビューするためのTUI。MIT、npm hunkdiff、⭐7,948・最新 v0.17.7(2026-07-30時点)
  • ・サイドバーで全ファイルを一望し、split / stack / auto で表示。Git・Jujutsu・Saplingを自動検出
  • ・エージェントが差分の横にコメントを注入し、人が c で残したメモを回収する双方向レビュー
  • ・delta・difftasticは「表示」、hunkは「レビューとAIとの往復」まで担う

hunk とは何か——「レビューファースト」という発想の diff ビューア

公式の説明は「エージェントが書いたchangesetのための、レビューファーストなターミナルdiffビューア」。「表示」ではなく「レビュー」を第一に置いているのが要点だ。変更セット全体をサイドバー付きのUIで開き、ファイル間をジャンプしながら上から下まで通してレビューする。AIの推論コメントは別タブではなく差分の横に並ぶ。

技術的には、ターミナルUIフレームワーク OpenTUI と差分レンダラ Pierre diffs の上に作られたTypeScript製のツールで、開発元はModem社、公式サイトは hunk.dev。Ghostty・Vagrantの作者Mitchell Hashimotoはローカルの他のdiffビューアを完全に置き換えたと評価し、DHHも “Love hunk.” と反応した。日本ではHono作者の和田裕介(@yusukebe)が取り上げて認知が広がった。

レビュー専用のdiffツールが要るようになったのは、AIエージェントで「書く」と「レビューする」のコストの釣り合いが崩れたからだ。人が一行ずつ書いていた頃は、書く過程がレビューを兼ねていた。エージェントは数分で数十ファイル・数百行を出すので、人は他人(AI)の差分を初見で大量に捌くことになる。しかもエージェントの多くはCLIで動くため、レビューのためだけにブラウザへ切り替えるのは負担が大きい。hunkはターミナルの中で完結するレビューUIを選んだ。

そもそも「hunk」とは——git用語としての意味と、ツール名としての意味

「hunk」で検索すると、2つのものが混ざって出てくる。

  意味 出てくる場所
git用語の hunk 差分の中で連続して変更された1つのかたまり。@@ -12,7 +12,9 @@ のようなヘッダで区切られる単位 git diff の出力、git add -p の対話、GitHubのレビュー画面
ツールの hunk 本記事が扱う TUI diff ビューア(modem-dev/hunk、npmでは hunkdiff) ターミナル。hunk コマンドで起動

git用語のhunkは「行」より大きく「ファイル」より小さい単位で、git add -p で「これをステージするか?」と1つずつ聞かれるあの単位だ。前後3行の文脈を付けて切り出すのが既定で、近接した変更は1つにまとまる。@@ -12,7 +12,9 @@ は「変更前は12行目から7行分、変更後は12行目から9行分」を意味する。

git add -p        # hunk単位でステージするかを対話的に選ぶ
git diff -U10     # 前後の文脈行数を変えてhunkの粒度を調整する(既定は3行)

ツール名はこの用語から採られ、行ではなく変更のまとまり単位でレビューする思想を表している。以降、単に「hunk」と書くときはツールを指す。

hunk のインストールと基本操作——split・stack・Git/Jujutsu/Sapling

npmかHomebrewで1コマンド、Node.js 18以上で動く。コマンドはGitのdiff系を踏襲し、hunk diffがgit diffに、hunk showがgit showに対応する。違いは、開くのがプレーンテキストではなくレビューUIであることだ。

npm i -g hunkdiff          # もしくは brew install hunk
hunk --version

hunk diff                  # 作業ツリーの変更をレビュー(未追跡ファイルも含む)
hunk diff --watch          # 作業ツリーが変わるたび自動リロード
hunk show HEAD~1           # 1つ前のコミットをレビュー
hunk diff before.ts after.ts          # 2ファイルを直接比較
git diff --no-color | hunk patch -     # stdinのパッチをレビュー

--watch で開きっぱなしにしておけば、エージェントが別のペインで編集するたびに差分がライブで更新される。後述の双方向レビューの土台だ。

hunkのsplit(左右分割)ビュー。サイドバーで全ファイルを一望し、差分の横にAIのインラインコメントが並ぶ
splitビュー。サイドバーで変更ファイルと追加/削除の行数を一望し、差分の横にAIのインラインコメントが並ぶ(出典: modem-dev/hunk README)

レイアウトは左右に並べる split、上下に積む stack、端末幅から選ぶ auto の3つで、実行中に切り替えられる。折り返しや行番号もトグルでき、キーボードとマウスの両方で操作する。テーマはtキーかメニューのView -> Themes…で選び、設定はファイルに残せる。

# ~/.config/hunk/config.toml  もしくは  .hunk/config.toml
theme = "github-dark-default" # 組み込みテーマID / auto / custom
mode = "auto"                 # auto / split / stack
vcs = "git"                   # git / jj / sl
line_numbers = true

theme = "auto" にすると端末の背景色を問い合わせて明暗のテーマを選び、応答がなければ暗テーマに落ちる。

Jujutsu(jj) と Sapling(sl) のチェックアウトは自動検出され、それぞれのrevset記法でhunk diff [revset]が使える。Gitのページャにするなら次の1行で、git diffやgit showがhunkで開く。既定のページャを残したいなら、git hdiff・git hshowのようなオプトインのエイリアスも用意されている。

git config --global core.pager "hunk pager"

AIエージェントとの双方向レビュー——hunk の本命機能

hunkはエージェントと人が同じライブセッションを往復してレビューする前提で作られている。仕組みは「スキルファイルをエージェントに読ませる」だけだ。別のターミナルでhunk diffかhunk showを開き、hunk skill pathが返す skills/hunk-review/SKILL.md を読ませて「このスキルでレビューして」と頼む。

# エージェントへの汎用プロンプト(README掲載)
Load the Hunk skill and use it for this review.
Run `hunk skill path` to get the skill path.

TWO-WAY REVIEW双方向レビュー

人とエージェントが、同じライブな画面を往復する

同じ画面

ライブ

  1. 差分を開く
  2. スキルを読ませる
  3. AIがコメント注入
  4. 画面を誘導
  5. 人がcでメモ
  6. AIが回収し実装
出典: hunk docs/agent-workflows.md と skills/hunk-review/SKILL.md

AI → 人間:コメントを注入し、画面を誘導する

エージェントはhunk session系のサブコマンドで、人がいま見ている画面に働きかける。

hunk session review --repo . --json    # 変更ファイルとhunk構造をJSONで取得

hunk session comment add --repo . --file README.md --new-line 103 \
  --summary "Tighten this wording"     # 差分の横にコメントを追加

hunk session navigate --repo . --file src/App.tsx --hunk 2   # 人の画面をそのhunkへ
hunk session navigate --repo . --next-comment

複数のコメントはcomment apply --stdinにJSONで一括投入できる。AIの推論が差分の中に残るので、チャット履歴を遡らなくてよい。

人間 → AI:c キーのメモをエージェントが回収する

人は画面上でcキーを押し、「この関数は分割して」のようなメモをその場で差分に貼る。エージェントは hunk session comment list --type user で人のメモだけを列挙し、指摘を実装に反映して、必要ならメモを片付ける。ただし人間名義のメモを新規作成・編集することはできない。人の指摘は人のもの、という分担が保たれている。

差分が変わったら hunk session reload --repo . -- diff で中身を差し替えて次へ進む。comment clear(一括)や comment rm <id>(個別)もある。アクティブなウィンドウは hunk session list、操作対象は hunk session get --repo . で確かめる。複数リポジトリで開いていると別のセッションを触りかねないので、--repo は必ず付けたい。

作り込むなら --agent-context でエージェントに渡す文脈をファイルで管理する方法や、公式のdocs/agent-workflows.mdがある。hunkdiff/opentui として HunkDiffView などの部品も公開されており、同じレンダラを自作のOpenTUIアプリに組み込める。Claude Codeでは、スキルを読ませる手順がClaude Skills(スキル)機能の完全解説の使い方そのものになる。

delta・difftastic・difit との比較——hunk の立ち位置

delta・difftasticは「読みやすく表示するページャ」、hunkは「レビューするためのUI」、difitは「ブラウザで開くレビューツール」という住み分けになる。

観点 hunk difit delta difftastic
種別 ターミナルTUI ローカルWebサーバ+ブラウザ ページャ(表示) 構造的diff(表示)
レビュー専用UI ✅ サイドバー+split/stack ✅ GitHub風UI ❌ ❌
インラインAIコメント ✅ 差分の横に注入 ✅ コメントをプリロード ❌ ❌
人間の指摘をAIへ渡す ✅ cメモをAIが回収 ✅ Copy Promptで渡す ❌ ❌
双方向(AIが画面を操作) ✅ navigate/reloadで誘導 ❌ ❌ ❌
構文ハイライト ✅ ✅ ✅ ✅
構造的(構文木)diff ❌ ❌ ❌ ✅
VCS対応 Git/jj/sl 自動検出 Git(PR/コミット比較) Git Git
動作環境 ターミナル完結 ブラウザで表示 ターミナル完結 ターミナル完結

delta(dandavison氏)は構文ハイライトと行内diff、difftastic(Wilfred氏)は構文木の比較でフォーマットだけの変更を無視できるのが強みで、どちらもレビュー行為やAI連携は守備範囲外だ。difit(yoshiko-pg氏)は思想が最も近く、「difit-review」スキルで指摘をプリロードし、「Copy Prompt」で人のコメントをAI向けに渡せる。違いは、hunkがターミナルで完結し、AIがnavigateで人の視点を誘導できる点にある。

WHEN NOT HUNK選ばない場面

当てはまるなら、hunk以外のほうが噛み合う

  1. 1.差分をきれいに読めれば十分

    AI連携が要らないなら delta のままでよい

  2. 2.フォーマットだけの変更を無視したい

    構文木で比べる difftastic が向く

  3. 3.チームで非同期に回し、履歴を残したい

    GitHub / GitLab の PR レビューか、ブラウザUIの difit

hunk はライブセッション前提で、記録の永続化や複数人の並行レビューは主戦場ではない

hunkが最も向くのは、1人の開発者がエージェントとターミナルの中でリアルタイムに差分をやり取りする局面だ。AIコーディングでレビューが追いつかない構造的な理由はハーネスエンジニアリング入門でも触れており、hunkやdifitはエージェントの出力を人が捌くためのハーネスの一部と位置づけられる。

導入時の注意点と Claude Code 連携の運用例

v0.17.0時点で気をつけたい制限

  • ・コメントは1行またはhunk単位が基本で、複数行にまたがるコメントは想定外
  • ・エージェントは人のメモを読む・消すはできるが、人間名義のメモを新規作成・編集はできない
  • ・hunk pager経由でgit diffを開くと、未追跡ファイルはGitの挙動に従い表示されない(hunk diffなら含まれる)
  • ・端末の絵文字幅やNerd Fontの扱いは環境に依存し得る

開発は活発で(2026年3月公開、更新時点の最新は v0.17.7・2026-07-29リリース)、v0.17.1〜v0.17.7 では日本語表示まわりに手が入った。

・CJK・絵文字を含む差分の描画を高速化(端末セル幅の測定を最適化)
・エージェントのメモで日本語が不正な位置で折り返される問題を修正
・全角文字・絵文字でマウス選択とコピー内容がずれる問題を修正
・macOSでのスレッド描画の復旧、Windowsで差分末尾スクロール時のクラッシュ防止
・大きなレビューで行レイアウトを遅延生成し、メモリ使用量を削減

日本語のコメントやコミットメッセージを扱うなら、npm install -g hunkdiff@latest で最新版へ上げる価値がある。

Claude Codeと組むなら、エージェントに書かせながら人がhunkでライブレビューする分業が現実的だ。

# ペイン1:作業ツリーの変更をライブでレビュー
hunk diff --watch

# ペイン2:Claude Code に「hunk skill path のスキルを読んで、この変更をレビューして」と依頼

--watchで開きっぱなしにして編集を追い、気になった箇所はcで差分に紐付けて残し、エージェントにcomment list --type userで回収させる。この往復をリズムにすると、レビューが読むだけの作業から対話に変わる。Claude CodeやCodexの大きめの差分を毎日ターミナルで捌いている人、Jujutsu・Saplingも使う人には、npm i -g hunkdiffとhunk diffから試す価値がある。

参照ソース

・modem-dev/hunk — GitHub リポジトリ(README・機能比較表・設定)
・hunk — Agent workflows ドキュメント(session/comment/navigate コマンド)
・hunk — hunk-review SKILL.md(エージェント用スキル定義)
・hunk 公式サイト(hunk.dev)
・hunk v0.17.0 リリース(GitHub Releases)
・yoshiko-pg/difit — 比較対象のローカルレビューツール
・YouTube — “Hunk changed the way I write and review code with my agent”(実演動画)