Hunk 是一款基于 OpenTUI 与 Pierre diffs 构建的终端优先代码变更审查工具,面向 AI 编程与自动化工作流,支持多文件审查流、侧边导航、AI/Agent 行内注释、分屏/统一视图与 watch 模式,并兼容 Git、jj、sapling 等多种版本控制。
适用人群:使用 AI Coding Agents(如 Claude Code、Aider、Cursor 等)并希望在终端进行高效 Code Review 的开发者;偏好 CLI/TUI 且重度使用 Git、Jujutsu(jj)、Sapling 的版本控制用户;维护多文件变更流、需要快速导航与脚本化审查流程的工程团队与开源维护者。
适用场景:AI 辅助开发后对 Agent 生成的多文件补丁进行人类把关与快速审查;在终端中进行 PR/MR 级别的代码评审与合并前检查;在支持 jj、Sapling 的仓库中进行跨 VCS 的统一 Diff 浏览与导航;需要 watch 模式实时刷新文件与 Git 变更的连续审查场景;希望通过键盘、鼠标、pager、Git difftool 等多种交互方式完成审查任务。
推荐理由:Hunk 将代码审查的重心带回终端,以流畅的 TUI 和强大的 AI/Agent 注释能力重塑 Diff 体验,兼顾 Git 与新一代 VCS,安装简单、上手快速,是提升人机协作审查效率的实用工具。
项目定位与背景
Hunk 由 modem-dev 组织开源,定位为 review-first 的终端 diff 查看器,面向正在崛起的 agentic coders 群体。随着 AI 编程助手与自动化代理越来越多地生成与修改代码,开发者的核心挑战不再是写代码本身,而是如何高效审查这些多文件、多变更的补丁。Hunk 将审查体验放在终端,兼顾键盘流与可视化布局,试图在 CLI 与 GUI 之间找到一种更贴合开发者工作流的平衡点。项目基于 OpenTUI 与 Pierre diffs,前者提供跨平台的终端渲染与交互基础,后者负责高性能差异计算与展示,二者合力支撑起一个现代化的 diff 审查工具。
核心功能与技术架构
Hunk 的核心能力包括多文件审查流与侧边栏导航,使得在大型 PR 或复杂工作区变更中快速定位文件成为可能。它支持分屏(split)、统一(unified)与自适应(responsive)自动布局,能够根据终端尺寸与用户偏好切换视图。inline AI 与 agent annotations 允许将 AI 生成的解释、风险点或建议以注释形式贴在代码旁,便于人类在审查代码逻辑的同时理解 AI 的思路。watch mode 可以自动重载文件与基于 Git 的审查内容,适合持续集成前的过程监控。交互层面,支持键盘、鼠标、pager 以及 Git difftool,满足不同用户的操作习惯。
架构方面,Hunk 在渲染层使用 OpenTUI,得以在终端中实现较丰富的 UI 组件与事件处理;差异计算由 Pierre diffs 提供,确保在大型 diff 场景下的性能与稳定性。安装方式多样:macOS 与 Linux 可以通过独立二进制脚本一键安装,Windows 用户可使用 npm 或 mise,此外也支持 Homebrew、mise 与 Nix。对于 npm 安装,要求 Node.js 22+;而独立二进制不需要 Node 依赖,降低了运行门槛。平台支持覆盖 macOS(arm64/x64)、Linux(arm64/x64,glibc)与 Windows(x64),并明确不发布 Windows arm64 与 musl 系 Linux(如 Alpine)的预编译二进制,以保证维护成本与兼容性之间的平衡。
创新点与亮点
Hunk 的创新在于将 AI/Agent 的审查能力原生融入终端 diff 体验。在 agentic coding 场景中,AI 通常会产出较长的补丁与跨文件改动,传统的 diff 工具更关注“发生了什么”,而 Hunk 强调“如何快速理解并作出决策”。侧边栏导航 + 多文件审查流降低了在复杂变更中上下文切换的成本;inline AI 注释将解释与代码并置,减少外部文档或聊天窗口的来回跳转;watch 模式让审查不再停滞,可以跟随工作区实时更新。
另一个亮点是对多种版本控制系统的友好支持。尽管 Git 仍是主流,但 jj(Jujutsu)与 Sapling 等新一代 VCS 在开发者社区中逐渐流行。Hunk 对这些 VCS 的适配意味着它不仅服务当下的 Git 生态,也愿意拥抱未来工作流,这在同类工具中并不多见。
此外,Hunk 在交互上兼顾键盘与鼠标,并支持 pager 与 Git difftool,使得它可以融入不同的使用习惯与自动化管道。对于希望将 diff 审查作为团队流程一部分的维护者而言,这种“可插拔”的交互能力尤为重要。
与同类项目对比
与 Git 自带的 git diff、gitk 或传统的 diff 工具相比,Hunk 提供更强的可视化与导航能力,以及 AI 注释的支持,更贴合复杂 PR 与 Agent 产出的审查需求。相较于 GUI 型的审查工具(如 GitHub Desktop、Sourcetree 等),Hunk 保留了终端的高效与可脚本化特性,同时在界面上做出现代化的增强。与 delta、difftastic 这类终端 diff 增强工具相比,Hunk 更强调审查流程与 Agent 协作,而不是单纯的语法高亮或差异渲染。另外,difftastic 专注于结构差异,delta 关注 Git 输出的美化,Hunk 则把重心放在“人在回路”的审查体验上。
值得注意的是,Hunk 不是 IDE 或 Web 审查平台的替代品,而是对终端工作流的补强。对于需要在 CI 前快速过滤变更、在本地进行多次小步审查的开发者,Hunk 的 keybind、pager、difftool 支持更易融入现有习惯。
上手指南或快速开始
在 macOS 与 Linux 上,最简单的安装方式是使用官方安装脚本:curl -fsSL https://hunk.dev/install.sh | sh,该方式会获取独立二进制,无需 Node.js。Windows 用户可以通过 npm 安装:npm i -g hunkdiff,需要 Node.js 22+;或通过 mise 管理。macOS/Linux 也可以使用 brew install hunk。Nix 用户可以参考仓库中的 flake.nix 导出的 default 包。安装完成后,可在仓库目录中启动 Hunk 进行 diff 审查,结合键盘导航与侧边栏快速浏览变更文件。若使用 jj 或 Sapling,Hunk 会适配其工作区与变更模型,提供一致的审查体验。对于习惯 Git difftool 的用户,Hunk 也支持作为外部 diff 工具被调用,从而无缝接入现有 Git 配置。
总结与展望
Hunk 以 review-first 的理念、终端优先的架构与 AI/Agent 原生注释能力,为开发者提供了一种更现代化、更贴合人机协作的 diff 审查方式。它兼顾性能与交互,支持 Git 与新一代 VCS,并提供多样的安装与使用路径。对于正在使用 AI 编程助手、维护大型 PR、或偏好终端工作流的开发者,Hunk 值得纳入工具链。未来,随着 AI 审查模型的迭代与更多 VCS 生态的发展,Hunk 有望在终端中承载更丰富的“人在回路”能力,成为 agentic coding 时代的核心审查工具之一。当然,它仍有改进空间,例如在 Windows ARM 与 musl 平台的预编译支持、更深度的 VCS 特性集成,以及与 CI/CD 管道的更紧密协作。总体而言,Hunk 明确了一个方向:在终端里,为代码审查重建上下文、降低噪音、提升决策效率。
项目信息
| 项目名称 | modem-dev/hunk |
| 编程语言 | TypeScript |
| Star 数 | 9728 |
| Fork 数 | 324 |
| 主题标签 | agents, cli, code-review, diff, git, jj, jujutsu, sapling, terminal, tui |