OpenTUI와 Pierre diff 기반의 에이전트 작성 변경 사항 검토용 터미널 diff 뷰어 Hunk
요약
Hunk는 OpenTUI와 Pierre diff를 기반으로 개발된, 에이전트가 생성한 변경 사항(changesets)을 검토하는 데 특화된 리뷰 우선형 터미널 diff 뷰어입니다. 이 도구는 다중 파일 스트림, 인라인 AI 주석, 반응형 레이아웃 등 다양한 기능을 제공하여 코드 리뷰 경험을 향상시킵니다. Hunk는 기존 Git의 `diff` 스타일 명령어를 미러링하면서도 일반 텍스트 대신 대화형 UI로 변경 사항을 열어주며, Jujutsu(jj)와 같은 여러 VCS를 지원합니다.
핵심 포인트
- OpenTUI와 Pierre diff 기반으로 구축된 리뷰 우선형 터미널 diff 뷰어입니다.
- 다중 파일 스트림, 인라인 AI/에이전트 주석, 반응형 자동 레이아웃 등 고급 기능을 제공합니다.
- 기존 `git diff` 명령어를 미러링하며, 일반 텍스트가 아닌 대화형 UI로 변경 사항을 검토할 수 있습니다.
- Git 외에도 Jujutsu(jj)와 같은 다양한 VCS를 감지하고 지원하여 유연성이 높습니다.
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를 참조하세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending TypeScript (weekly)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기