Hunk는 OpenTUI와 Pierre diff를 기반으로 구축된, 에이전트가 작성한 변경 사항(changesets)을 위한 리뷰 우선형 터미널 diff 뷰어입니다.
- 사이드바 탐색을 포함한 다중 파일 리뷰 스트림 (multi-file review stream)
- 코드 옆에 표시되는 인라인 AI 및 에이전트 주석 (inline AI and agent annotations)
- 분할(split), 스택(stack) 및 반응형 자동 레이아웃 (responsive auto layouts)
- 파일 자동 재로드 및 Git 기반 리뷰를 위한 워치 모드 (watch mode)
- 키보드, 마우스, 페이저(pager) 및 Git difftool 지원
사이드바와 인라인 AI 노트가 포함된 분할 뷰 (Split view with sidebar and inline AI notes)
|
스택 뷰와 마우스 선택 가능 메뉴 (Stacked view and mouse-selectable menus)
|
npm i -g hunkdiff
또는 Homebrew를 사용하여:
brew install modem-dev/tap/hunk
요구 사항:
- Node.js 18 이상
- macOS, Linux 또는 Windows
- 대부분의 워크플로우에는 Git 권장
Nix 사용자는 대신 flake.nix에 내보내진 default 패키지를 사용할 수 있습니다. 자세한 내용은 nix/README.md를 참조하세요.
hunk # 도움말 표시
hunk --version # 설치된 버전 출력
Hunk는 Git의 diff 스타일 명령어를 미러링하지만, 변경 사항을 일반 텍스트 대신 리뷰 UI로 엽니다.
hunk diff # 추적되지 않은 파일을 포함하여 현재 저장소의 변경 사항 리뷰
hunk diff --watch # 작업 트리(working tree)가 변경될 때 자동 재로드
hunk show # 최신 커밋 리뷰
...
Hunk는 Jujutsu 체크아웃을 자동으로 감지하므로, jj 워크스페이스 내에서 hunk diff [revset] 및 hunk show [revset]를 사용할 때 jj revset을 사용합니다. VCS 감지를 재정의하려면 설정에서 vcs = "git" 또는 vcs = "jj"로 설정하세요.
hunk diff before.ts after.ts # 두 파일을 직접 비교
hunk diff before.ts after.ts --watch # 파일 중 하나가 변경될 때 자동 재로드
git diff --no-color | hunk patch - # stdin으로부터 패치 리뷰
hunk diff 또는 hunk show를 사용하여 다른 터미널에서 Hunk를 엽니다.
- 에이전트에게
hunk skill path가 반환하는 스킬 파일을 추가하도록 지시합니다.
- 에이전트에게 라이브 Hunk 세션에 대해 해당 스킬을 사용하도록 요청합니다.
좋은 범용 프롬프트는 다음과 같습니다:
Load the Hunk skill and use it for this review.
전체 라이브 세션 및 --agent-context 워크플로우 가이드는 docs/agent-workflows.md를 참조하세요.
| 기능 | hunk | lumen | difftastic | delta | diff-so-fancy | diff |
|---|
| 리뷰 우선 대화형 UI (Review-first interactive UI) | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| ... | | | | | | |
Hunk는 전체 변경 사항(changeset)을 대화형으로 검토하는 데 최적화되어 있습니다.
설정 파일에 선호 사항을 저장할 수 있습니다:
~/.config/hunk/config.toml
.hunk/config.toml
예시:
theme = "graphite" # graphite, midnight, paper, ember
mode = "auto" # auto, split, stack
vcs = "git" # git, jj
...
exclude_untracked
Git 작업 트리(working-tree)의 hunk diff 세션에만 영향을 미칩니다.
Hunk를 Git 페이저(pager)로 설정하여 git diff와 git show가 자동으로 Hunk에서 열리도록 설정하세요:
참고
추적되지 않은 파일(Untracked files)은 Hunk 자체의 hunk diff 작업 트리 로더(working-tree loader)에서만 자동으로 포함됩니다. 만약 hunk pager를 통해 git diff를 연다면, 패치 내용(patch contents)은 여전히 Git이 결정하므로 추적되지 않은 파일은 거기에 나타나지 않습니다.
git config --global core.pager "hunk pager"
또는 Git 설정에서:
[core]
pager = hunk pager
Git의 기본 페이저를 유지하면서 대신 선택적 별칭(opt-in aliases)을 추가하고 싶다면:
git config --global alias.hdiff "-c core.pager=\"hunk pager\" diff"
git config --global alias.hshow "-c core.pager=\"hunk pager\" show"
jj의 페이저로 Hunk를 사용하려면, jj config edit --user를 실행하고 다음을 업데이트하세요:
[ui]
pager = ["hunk", "pager"]
diff-formatter = ":git"
Hunk는 또한 사용자의 OpenTUI 앱에 동일한 diff 렌더러를 임베딩(embedding)할 수 있도록 hunkdiff/opentui에서 제공하는 HunkDiffView 및 하위 수준의 프리미티브(primitives)를 공개합니다.
설치, API 및 실행 가능한 예제는 docs/opentui-component.md를 참조하세요.
즉시 실행 가능한 데모 diff는 examples/에 있습니다.
각 예제에는 저장소 루트(repository root)에서 실행할 수 있는 정확한 명령어가 포함되어 있습니다.
💬 Modem Discord 서버에서 사용자/기여자들과 대화하세요
소스 설정, 테스트, 패키징 확인 및 저장소 아키텍처에 대해서는 CONTRIBUTING.md를 참조하세요.