hunk
무엇인가
hunk는 에이전트가 만든 변경 집합을 사람이 검토하는 장면을 전제로 한 터미널 diff 뷰어다. `git diff` 출력을 페이저로 넘겨 읽는 자리와 편집기 내장 diff 패널 사이에 놓이며, 여러 파일을 하나의 리뷰 흐름으로 이어 본다는 점이 다르다.
어떻게 동작하나
렌더링은 OpenTUI, diff 계산은 Pierre diffs가 맡는다. 화면은 사이드바와 다중 파일 리뷰 스트림으로 나뉘고 split·unified·auto 레이아웃을 터미널 폭에 맞춰 전환한다. 코드 옆에는 AI·에이전트 주석이 인라인으로 붙는다. watch 모드에서 직접 파일 리뷰와 Git 기반 리뷰는 파일시스템 관찰로 갱신하고, 이벤트를 놓치거나 watcher를 쓸 수 없으면 주기 폴링으로 대체한다. Jujutsu·Sapling 리뷰는 폴링만 쓴다. VCS 어댑터가 이력 순회·필터·ref 해석을 담당하며 Git과 Jujutsu 어댑터가 함께 배포된다.
무엇과 다른가
`hunk log`는 저장소 관리자가 아니라 읽기 전용 이력 화면이다. 터미널에서는 데스크톱 이력 브라우저가 열리고, 파이프·리다이렉트로는 셸용 정적 레코드가 나가며 `--static`으로 강제할 수 있다. 정적 출력은 커밋·작성자·날짜·메시지·브랜치/북마크·리모트·태그를 유지하고 `--oneline`은 압축 레코드를 낸다. 대화형 이력은 커밋을 로컬 달력 날짜로 묶고 작성자 핸들과 상대 시간을 표시하며, View 메뉴의 Graph view를 켜면 날짜 그룹 대신 커밋 토폴로지 레인이 그려진다.
어떻게 쓰나
설치 스크립트는 macOS·Linux에서 독립 실행 바이너리를 `~/.hunk`에 넣고, `SHA256SUMS`와 체크섬 도구가 있으면 검증하고 없으면 경고한다. 릴리스 탐색은 Hunk의 익명 집계 엔드포인트를 쓰고 실패하면 GitHub로 넘어간다. Windows는 npm 또는 mise 2026.8.6 이상, Nix는 `flake.nix`의 `default` 패키지, Omarchy는 mise를 통해 기본 도구로 설치된다. 0.20부터 npm·Homebrew·기본 설치 스크립트는 `hunk update`로 갱신한다. 설정은 `~/.config/hunk/config.toml`과 `.hunk/config.toml`에 두고 theme, tab_width, file_gap, hunk_gap, wheel_scroll_lines, animations, exclude_untracked를 지정한다. 에이전트 연동은 다른 터미널에서 `hunk diff`나 `hunk show`를 띄운 뒤 `hunk skill path`가 돌려주는 스킬 파일을 에이전트에 추가하는 방식이다.
전제와 한계
실행 대상은 macOS·Linux·Windows다. x86-64는 SSE4.2가 필요하고 arm64에는 CPU 기능 하한이 없다. Node.js 22 이상은 npm 설치에만 필요하며 설치 스크립트·Homebrew·mise·Nix가 배포하는 독립 바이너리는 Node 없이 동작한다. `--all`이나 작성자·메시지·날짜·경로 필터를 쓰면 순회가 뒤섞이거나 커밋이 가려질 수 있어 범위 선택이 비활성화된다. 리치 STML 주석 본문은 `--experimental`로 리뷰를 시작해야 하고 기본은 일반 텍스트 주석이다. `HUNK_INSTALL_DIR`을 직접 지정한 설치는 같은 디렉터리로 설치 스크립트를 다시 실행해야 하며, mise·Nix·소스 설치는 각 도구로 갱신한다. 이전에 `modem-dev/tap`으로 설치했다면 `brew uninstall modem-dev/tap/hunk`로 먼저 제거한다.
유사 도구
- kodus-aiLLM 제공자를 직접 골라 PR 코드 리뷰를 돌리는 TypeScript 모노레포다. GitHub·GitLab·Bitbucket·Azure Repos에 붙고 CLI와 CI/CD에서도 실행된다.
- orca여러 코딩 에이전트를 각자의 git worktree에서 병렬로 실행하고 한 화면에서 추적·비교·병합하는 데스크톱·모바일 ADE다.
- maka모든 모델 메시지·도구 호출·권한 결정을 append-only RuntimeEvent 로그로 남기는 에이전트 워크스페이스다. 데스크톱·TUI·CLI가 하나의 런타임을 공유한다.
- Codewhale터미널에서 프로젝트를 읽고 파일을 고치고 명령을 실행하는 Rust 기반 코딩 에이전트다. 호스티드·로컬 모델을 골라 붙인다.
- Fuxi터미널에서 코드를 읽고 고치고 명령을 실행하는 AI 코딩 에이전트다. 단일 정적 바이너리로 배포되고 LLM 제공자를 가리지 않는다.
- oh-my-pi터미널에서 도는 코딩 에이전트로, LSP와 DAP를 에이전트 루프에 직접 연결해 이름 변경과 디버깅까지 IDE 수준으로 처리한다. Rust 코어 단일 바이너리다.