hunk
AI时代代码审查神器:终端TUI界面,实时查看AI生成的代码变更
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
AI时代代码审查神器:终端TUI界面,实时查看AI生成的代码变更
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这样的场景:凌晨两点,你的 AI 编程助手刚刚完成了一个复杂模块的重构,生成了 47 个文件的变更。传统方式下,你需要逐一翻阅 git diff 输出——那些红绿交错的单色文本、行号错位的上下文、无法直观理解代码结构的展示方式——这对于人类开发者来说还算友好,但当代码量达到一定规模时,审查变成了一场耐力考验。
Hunk 正是为解决这个痛点而生的:它是全球首个专为「AI 生成代码变更」设计的终端 Diff 审查工具,让开发者用键盘和鼠标在终端里就能高效完成代码审查,界面体验直逼桌面级应用。
Hunk 由独立开发者 modem(社区常称 @modem-dev)创建和维护。modem 同时也是 Claude Code 的重度用户,在长期使用 AI 编程工具的过程中,他敏锐地察觉到了一个被忽视的需求:当前市面上的 diff 工具几乎都是为「人类开发者的小规模变更」设计的,界面信息密度低,缺少对 AI 生成代码特有模式的支持。
Claude Code、Cursor 等 AI 编程工具的输出规模远超普通 PR——可能一次性产生数百个文件的修改。这种量级的变更用传统 diff 工具查看,体验几乎等同于受罪。modem 决定自己动手,开发了 Hunk。
项目于 2024 年底开源,迅速获得了 AI 开发者社区的广泛关注。当前仓库已积累超过 4500 颗星(且在持续增长中),在 GitHub Trending 上多次上榜。
如果说传统 diff 工具是医生用的普通听诊器,那 Hunk 就像是医院里那台能看穿血管的高分辨率超声仪。它不是简单地显示「哪里变了」,而是把变更放到更大的上下文里,让审查者能够站在更高的维度理解 AI 的意图。
打个更接地气的比方:传统 diff 像是用卷尺量身高——告诉你数字;Hunk 则像是拍一张全身照——让你一眼看清整体比例和协调性。
Hunk 支持在同一个界面里流式浏览多文件变更,右侧侧边栏实时显示文件列表和当前位置。开发者无需记住自己看到第几个文件,导航一目了然。这在处理 AI 生成的大型变更集时尤其有用——可能涉及数十个文件,逐一手动跳转是不可接受的。
这是 Hunk 最具差异化的功能。当 Claude Code 等 AI 工具生成代码时,Hunk 可以在代码行旁边直接渲染 AI 的推理过程和决策理由(通过 agent rationale sidecar JSON)。这相当于为每一处变更附加了「AI 的思考过程」,让人类审查者不仅能看到改了什么,还能理解为什么这样改。
Hunk 支持三种核心布局:
hunk diff --watch 命令可以监控 Git 工作目录或原始文件的变更,变更发生后自动刷新审查视图。这对于监控 AI 编程工具的实时输出尤为实用——让 AI 边写,你边审。
Hunk 支持通过 hunk skill path 输出技能文件路径,让 AI Agent 将 Hunk 作为外部工具调用,实现「Agent 自主审查→人类确认」的闭环。具体流程为:在一个终端启动 Hunk 审查会话,在另一个终端告诉 Agent「加载 Hunk 技能并用它审查变更」,Agent 即可通过 socket 与 Hunk 会话通信。
除了标准 Git 工作流,Hunk 还支持 Jujutsu(一种新兴的分布式版本控制系统,简称 jj),并能自动检测当前仓库类型。
src/
core/ # 核心业务逻辑:Git/Jujutsu 操作、Diff 解析、配置管理
ui/ # React 组件:App、主题、响应式布局
opentui/ # OpenTUI 特定组件:HunkDiffView、HunkFileNav
session/ # 会话管理
lib/ # 共享工具库
bin/
hunk.cjs # 入口脚本(CommonJS 格式,兼容 npm 全局安装)
packages/
session-broker-* # 跨进程 Agent 命令转发服务
整体采用输入归一化 + 分层渲染的设计:
diff、show、patch、pager 等命令)Session Broker 是另一个值得关注的模块:hunk daemon serve 启动一个本地回环守护进程,AI Agent 可以通过它向任意活跃的 Hunk 会话发送指令,实现远程操控审查流程。
# npm 全局安装(最简单)
npm i -g hunkdiff
# 或 Homebrew(macOS/Linux)
brew install modem-dev/tap/hunk
# Nix 用户
nix develop
hunk diff # 审查当前工作区变更
hunk diff --watch # 自动刷新审查
hunk show # 审查最新一次提交
hunk show HEAD~3 # 审查倒数第3次提交
hunk diff before.ts after.ts # 直接对比两个文件
Hunk 对终端环境有较好兼容性,支持键盘导航、鼠标操作、分页器模式(用于 git difftool 集成)和传统 pager 输出降级。
Hunk 的 GitHub 集成(如上传截图到 release 说明)依赖 GitHub CLI 认证。此外,GitHub 用户上传的附件图片在未登录状态下无法直接引用到外部文档中,这给社区传播带来一定障碍。
项目文档强调推荐使用 Bun,但同时也支持 Node.js 18+。然而在实际测试中发现,Node.js 环境下部分依赖解析行为与 Bun 有差异。对于追求最佳体验的用户,还是需要安装 Bun。
Hunk 是纯终端工具,没有 Web 界面。对于习惯在浏览器中协作审查的团队(如 GitHub PR 界面),Hunk 更多是一种本地增强工具,而非替代方案。
虽然 Hunk 提供了 Agent 技能文件和工作流文档,但实际配置与 AI 工具(如 Claude Code、Cursor)的深度集成需要一定的调试过程,对新手不够友好。
随着 Claude Code、Cursor、Copilot Workspace 等 AI 编程工具的普及,「AI 生成代码的审查」正在成为一个独立的工程问题。Hunk 是这个细分领域最成熟的解决方案,其设计思路(输入归一化、内联 AI 标注、Session Broker)为后续工具树立了标杆。
从 Stars 增长曲线看,Hunk 自发布以来保持了稳定的上升趋势,多次进入 GitHub Trending。考虑到 AI 编程工具的用户基数在持续扩大,Hunk 的目标用户群只会越来越大。
Hunk 已发布 npm 包并建立了 Homebrew Tap,还有 Nix flake 支持,生态覆盖了主流包管理方式。作者维护活跃,Changelog 更新频繁,说明项目处于活跃迭代期。
Hunk 是 AI 编程时代诞生的第一批基础设施级工具之一,它精准地解决了「如何高效审查 AI 生成的代码变更」这个实际问题。界面设计精良、功能覆盖完整(Bun + Git + Jujutsu + Agent 集成)、代码质量高(TypeScript + 完整测试套件),是一款值得 AI 开发者认真关注和日常使用的工具。
如果说传统 diff 工具是给人类开发者用的,那么 Hunk 就是给 AI 时代开发者用的下一代审查工具。