hunk 是什么?

Hunk 是面向代码审查的终端 diff 查看器。它把 Git、Jujutsu、Sapling、两个本地文件或 stdin patch 组织成可导航的多文件审查界面,并允许人和 coding agent 在具体文件、hunk 或行上留下评论。它是只读审查界面,不替代版本控制和合并流程。

⭐ 6,638 Stars 🍴 179 Forks TypeScript MIT 作者: modem-dev
来源:github.com/modem-dev/hunk;https://github.com/modem-dev/hunk/blob/main… 查看 GitHub 仓库 → 📘 使用教程 →

为什么值得关注

0.22 系列把 hunk log 扩展成可交互历史浏览器,加入多 commit 选择、线程回复、持久多行选择与扩展元数据;稳定版 v0.22.0 于 2026-09-10 发布。

来源:github.com/modem-dev/hunk/releases/tag/v0.22.0;https://hunk.dev/chang…

核心功能

多文件交互审查

在 split、unified 或自动布局中显示完整 changeset,侧栏跳转文件,支持键盘、鼠标、折行、主题和 watch reload。

来源:github.com/modem-dev/hunk/blob/main/README.md;https://hunk.dev/docs/
多种 VCS 与输入

可查看 Git/Jujutsu/Sapling working tree、commit 和历史,也能比较两个文件或读取 stdin patch;管道输出时退回静态文本。

来源:github.com/modem-dev/hunk/blob/main/README.md
本地 agent 审查会话

TUI 向 loopback session daemon 注册,hunk session CLI 用所有者私有的签名凭据读取审查结构、导航、reload 和添加 agent 评论。

来源:github.com/modem-dev/hunk/blob/main/docs/agent-workflows.md;https://g…
扩展与嵌入接口

TypeScript extensions 可加命令、主题、VCS backend、changeset 转换和 pane;OpenTUI 组件可嵌入其他终端应用。仓库级扩展首次使用要显式信任。

来源:github.com/modem-dev/hunk/blob/main/README.md;https://hunk.dev/docs/e…

技术架构

CLI 根据命令选择 Git、Jujutsu、Sapling、文件或 patch adapter,解析为统一 changeset,再由 OpenTUI/Pierre diff renderer 展示。live review 通过仅监听 loopback 的 session broker 暴露有限命令;caller、producer 与 daemon 使用 Ed25519 身份和带范围的 grant,Unix 运行时目录/凭据要求所有者私有权限。扩展运行在 Hunk 进程内,可改写 changeset 和添加命令,因此信任边界等同本地代码。

来源:github.com/modem-dev/hunk/blob/main/README.md;https://github.com/mode…

项目知识图谱

知识图谱:项目核心节点(中心)+ 核心功能(内环六边形)+ 关键技术依赖(外环 chip) macOS、Linux 或 Windows;x86-64 需要 SSE4.2macOS、Linux… npm 安装需要 Node.js 22+;standalone/Homebrew/mise/Nix 不需要 Node.jsnpm 安装需要 No… Git 为常用流程所需,Jujutsu 与 Sapling 由对应 adapter 调用Git 为常用流程… 多文件交互审查 多种 VCS 与输入 本地 agent 审查会话 扩展与嵌入接口 hunk 项目本体 核心功能 关键依赖

技术栈

语言TypeScript/Bun 应用,OpenTUI 终端渲染,VCS adapter 与本地 HTTP/WebSocket session broker框架OpenTUI、@pierre/diffs、Bun standalone binary、npm/Homebrew/mise/Nix 分发
macOS、Linux 或 Windows;x86-64 需要 SSE4.2npm 安装需要 Node.js 22+;standalone/Home…Git 为常用流程所需,Jujutsu 与 Sapling 由对应 ad…
本地 TUI 和 loopback daemon;curl 安装来源的更新查询默认经过 updates.hunk.dev,可用 HUNK_DISABLE_ANALYTICS=1 或 DO_NOT_TRACK=1 改为直接 GitHub;MIT 许可
来源:github.com/modem-dev/hunk/blob/main/README.md;https://github.com/mode…

快速上手

固定 v0.22.0。优先使用 Homebrew 或手动下载官方 release 并核对 SHA256SUMS;若审阅 install.sh 后再用它,设置 --no-modify-path 避免改 shell 配置,并用 DO_NOT_TRACK=1 绕过 first-party release endpoint。先在测试仓库运行 hunk diff,不改全局 Git pager;确认渲染和退出行为后再用 Git alias。要接 agent 时先运行 hunk session review --repo . --json,只在需要时加 --include-patch。
来源:github.com/modem-dev/hunk/releases/tag/v0.22.0;https://hunk.dev/docs/…

使用场景

适合在终端里逐文件审查较大的本地改动、commit 或 patch,让人和 agent 围绕同一份 diff 留下定位准确的评论。只需要彩色分页输出时 delta 更轻;需要 AST 级结构比较时 difftastic 更合适;真正的合并、提交和远程 PR 审批仍由 VCS/托管平台完成。

来源:github.com/modem-dev/hunk/blob/main/README.md

优势与局限

优势

  • 多文件侧栏、交互布局、history browser 与 watch mode 集中在同一终端界面
  • agent 评论可锚定具体文件/hunk/行,人可以在 TUI 中继续回复和清理
  • live session 使用 loopback、签名凭据和有限命令范围,源码中还校验 Unix 文件权限
  • 稳定版提供多平台二进制、npm/Homebrew/mise/Nix 路线并采用 MIT 许可

局限

  • Hunk 不做结构化 AST diff;代码移动或大规模重排可能仍需 difftastic 等工具辅助
  • live session 让 agent 可导航、reload 和添加/删除评论,启用前要明确允许的仓库和进程权限
  • 仓库级 TypeScript extensions 在进程内执行,只有在显式信任代码后才应加载
  • curl installer 只有在 SHA256SUMS 和本机校验工具同时可用时才强制校验,否则警告后继续
  • curl 安装与更新查询默认经过 Hunk 聚合 endpoint,发送来源和当前版本字段;可用环境变量关闭
  • 写入全局 core.pager 会影响所有 Git diff/show;先用 alias 试运行更容易回滚
  • README 有带 UTM 的 Modem 赞助链接,但核心功能无付费套餐、账户、积分或转售门槛;未达到严重商业漏斗条件
来源:github.com/modem-dev/hunk/blob/main/README.md;https://hunk.dev/docs/s…

最新版本

最新稳定版是 v0.22.0,官方 changelog 标注 2026-09-10。该版加入交互历史、多 commit 选择、线程评论回复、持久多行选择和扩展审查元数据;main 后续提交不等同于已发布功能。

来源:github.com/modem-dev/hunk/releases/tag/v0.22.0;https://hunk.dev/chang…

实测与证据

status: docs_and_source_checked_not_executed  |  checked_at: 2026-09-23  |  environment: 核对官方 README、v0.22.0 tag/changelog、安装文档、package、更新查询源码、session credential 源码、agent workflow 与 MIT 许可证;未安装 Hunk、运行 TUI、daemon、扩展或 VCS 命令。  |  limitations: 没有验证 release 资产 checksum、安装脚本、终端兼容、渲染正确性、VCS adapter、daemon 端口/认证、agent 评论、资源占用、Windows 或社区扩展。  |  observed_output: 官方 tags 与网站 release metadata 均把 v0.22.0 列为当前稳定版,release 日期为 2026-09-10。npm 安装要求 Node.js 22+;curl/Homebrew/mise/Nix 提供 standalone binary。first-party 更新 endpoint 可由 HUNK_DISABLE_ANALYTICS=1 或 DO_NOT_TRACK=1 绕过。

来源:github.com/modem-dev/hunk/releases/tag/v0.22.0;https://hunk.dev/chang…

同类项目对比

相比 delta,Hunk 提供多文件侧栏、交互式 history、鼠标操作和 agent 注释会话,更适合主动审查整个 changeset;delta 更接近高质量的 Git pager,配置成熟、启动路径简单,也不会引入本地评论 daemon。只想美化 git diff/show 时用 delta;需要在终端里逐文件走查并与 agent 共享定位时用 Hunk。

来源:github.com/modem-dev/hunk;https://github.com/dandavison/delta

总结评价

Hunk 可以保留,尤其适合 agent 参与的本地 changeset 审查。先固定 v0.22.0,在测试仓库直接运行,不立刻改全局 pager;需要隐私最小化时关闭聚合更新查询,需要 agent session 或扩展时再单独审阅权限。

来源:github.com/modem-dev/hunk/blob/main/README.md;https://hunk.dev/docs/s…

常见问题

Hunk 会把代码上传到云端吗?

核心 diff 和 live session 在本机运行。curl 安装来源的更新检查默认请求 updates.hunk.dev,只发送请求来源和当前版本字段;设置 HUNK_DISABLE_ANALYTICS=1 或 DO_NOT_TRACK=1 后改为直接查询 GitHub。

agent 能通过 Hunk 修改代码吗?

Hunk 的 session 命令主要读取审查结构、导航、reload 和管理评论;代码修改仍由 agent 的其他文件工具完成。reload 和评论会改变当前审查会话,所以仍应限定仓库和授权范围。

是否要立刻把 Hunk 设为全局 Git pager?

不建议第一步就全局修改。先直接运行 hunk diff,再用 Git alias 试验;确认管道、退出和终端恢复正常后,才考虑修改 core.pager。

Hunk 与 difftastic 的区别是什么?

Hunk 侧重多文件交互审查、历史浏览和评论;difftastic 用语法结构比较代码。大重排或结构变化可用 difftastic 辅助,完整 changeset 走查用 Hunk。

仓库里的 .hunk/extensions 可以直接加载吗?

不要盲目加载。TypeScript extension 在 Hunk 进程内执行,可添加命令和改写 changeset;只对已审阅并信任的仓库授权,临时禁用可使用 --no-extensions。

资料与核验范围
本文依据项目公开资料整理。版本、安装命令和功能边界可能随上游更新,请以所列来源和项目当前版本为准。 资料核对时间: 2026-09-23 13:55.

参考材料:README、GitHub API、依赖文件