ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Hunk 0.22 版本全解:仓库历史化身为响应式审查工作区

Hunk 0.22 版本全解:仓库历史化身为响应式审查工作区 开发工具代码评审CLIAI 应用【免费下载链接】hunkReview-first terminal diff viewer for agentic coders项目地址https://gitcode.com/gh_mirrors/hu/hunk点击查看免费下载导读Hunk 0.22 是一次以“交互式仓库历史interactive history”为核心的里程碑式发布把hunk log从静态文本输出升级为可浏览、可筛选、可多选提交的终端浏览器同时为 diff 审查引入了持久化多行选择、键盘驱动的线程化评论与更丰富的扩展上下文。本文以官方 0.22 变更记录为主体结合仓库源码与配置文档完整梳理本次发布2026-09-08 至 2026-09-10共 3 个版本、81 项变更的功能细节、底层实现与可落地的配置方法。版本概览与升级路径本系列共发布 3 个版本0.22.0-beta.09 月 8 日、0.22.0-beta.19 月 9 日、0.22.09 月 10 日。beta.0确立了全部核心功能beta.1与0.22.0在此基础上补充了少量 minor 与 patch 修复。全新安装Hunk 的默认安装脚本会校验下载当发布校验和与本地工具可用时否则给出警告curl -fsSL https://hunk.dev/install.sh | sh从既有版本升级若你正使用 0.20 或更新版本且安装途径为默认安装脚本、npm 或 Homebrew可直接用官方规范升级命令hunk update更早的版本需先通过原始安装脚本或包管理器升级一次之后即可统一使用hunk update。mise、Nix、源码编译与自定义目录安装仍由各自的更新流程负责——这些方式不受hunk update管辖这是官方文档明确说明的适用前提。核心主题一交互式hunk log历史浏览器0.22 的最大亮点是把hunk log重塑为“自动响应的终端浏览器”在终端中打开时呈现 GitHub 风格的提交行右对齐提交链接与复制操作当 stdout 不是终端时管道、重定向则保留静态纯文本输出交互式 TUI 不再被强行拉起对应 packages/hunk/src/core/history/ 模块群与--static参数。浏览与选择交互逐行移动Up/Down或j/k移动焦点先按v进入可视选择再用相同按键扩展连续提交范围。直接扩展ShiftUp/ShiftDown或大写K/J直接扩展选择Escape收起选择。翻页与跳转PageUp/PageDown、b/f、ShiftSpace/Space整页翻动u/d或Ctrl-U/Ctrl-D半页移动g/G与Home/End跳转首尾。检索与动作/搜索、n/N切换匹配、t切换主题、r刷新、y复制焦点提交完整 id、Enter在 Hunk 审查中打开选中提交、q或Ctrl-C退出。鼠标支持Shift 点击行扩展选择终端转发修饰键时、点击提交 id 直接打开、点击相邻复制图标复制完整不可变 id、点击行选中、双击行打开。连续多提交选择0.22.0新增“可取消的连续多提交选择”在未过滤的历史中可用 Shift方向键、J/K 或 Shift 点击选中一段连续提交一次性打开包含全部所选提交的累积变更cumulative change进行审查。此功能有明确边界使用--all或作者、消息、日期、路径过滤时不可用因为这类遍历可能交错不相关的提交或隐藏中间提交——这是源码实现中 lanePlanner.ts 严格保证“子提交先于父提交、跨页边界的 child-before-parent 顺序”的原因对应 extension-architecture.md 中 VCS adapters 一节的说明。可选提交图视图与主题化重设计历史视图被重新设计为 GitHub 风格的天分组day groups、账号式作者句柄、相对时间戳并新增可选的提交图视图Graph view——以提交拓扑泳道替代默认时间线。图中使用Up/Down/j/k移动、v扩展选择、Escape收起。提交图背后的拓扑规划在 lanePlanner.ts 中实现planHistoryPage以“最新优先”顺序为每个提交分配泳道lane独立 tip如--all产生的多分支从左缘进入合并提交的父提交若已活跃于其他泳道则保留最左泳道并去重使拓扑状态始终受“活跃前沿”约束HistoryLaneCheckpoint见 types.ts将泳道快照序列化为 JSON供后续页面续算泳道因此分页加载时图的连线不会断裂。桌面菜单、主题选择器与合并父提交选择交互式历史浏览器还获得了 Hunk 的桌面菜单外观File、View、Navigate、Commit、Help 菜单F10打开、实时主题选择器t键与提供者所有的合并父提交选择Commit 菜单的 “Compare with first parent” 与 “Compare with parent…” 将选中提交与有序的提供者父提交比较且不移动历史选择位置。退出打开的提交审查后会返回保留的历史选择与视口。历史视图的专属命令表hunk.history.*命令使用与审查面相同的可配置按键解析器但保留历史特有的语义见 docs/keybindings.md 的完整命令表命令 id作用默认键hunk.history.openSelection打开选中提交enterhunk.history.copyRevision复制焦点提交 idyhunk.history.refresh刷新仓库历史rhunk.history.previousCommit上一条提交up,khunk.history.nextCommit下一条提交down,jhunk.history.startVisualSelection开始可视选择vhunk.history.clearSelection清除可视选择escapehunk.history.extendPrevious/extendNext向上/下扩展选择shiftup,K/shiftdown,Jhunk.history.pageUp/pageDown整页移动pageup,b,shiftspace/pagedown,space,fhunk.history.halfPageUp/halfPageDown半页移动u,ctrlu/d,ctrldhunk.history.jumpToFirst/jumpToLast跳转首尾home,g/end,Ghunk.history.search/nextMatch/previousMatch历史搜索//n/Nhunk.history.toggleGraph等开关切换图/Unicode/作者/日期/装饰(none)hunk.history.openFirstParent/openParent与父提交比较(none)在[keybindings]中绑定历史命令所有快捷键都是具名命令[keybindings]表将命令 id 映射到按键。历史命令与审查命令共用解析器因此配置方式一致用户配置示例完整语法见 docs/keybindings.md[keybindings] hunk.history.nextCommit ctrln # 历史使用自己的命令 id hunk.history.toggleGraph g # 给原本无键的命令绑定 hunk.review.nextNote n # 给原本无键的注释导航绑定 hunk.view.toggleMenuBar false # 彻底解绑注意规则用户绑定会替换默认值而非追加把某个默认键夺走后原命令保留其余键false或[]表示解绑两个条目占用同一按键即冲突文件中靠前者生效并上报[keybindings]只从用户配置读取仓库内的.hunk/config.toml无法改写你的按键。打开提交的审查信息面板从交互式hunk log打开提交后review-info 面板会以历史风格展示提交元数据GitHub 式天分组、作者句柄、相对时间戳并提供右对齐的可复制修订号短 id面板同样支持公开剪贴板与主题。直接对 Git、Jujutsu、Sapling 的 CLI 修订版本进行审查时也会在标题栏上方显示提交与比较信息含 7 字符短修订号见0.22.0patch完整 Git 提交 id 缩短为七字符以保证标题栏紧凑。核心主题二持久化 diff 选择与多行评论锚点鼠标与键盘双通道的持久选择0.22.0新增持久化的鼠标与键盘 diff 选择并配套显式的Comment、Copy、Clear动作支持多行评论锚点选择后可按y复制选中内容对应hunk.review.copySelection、按v开始可视行选择hunk.review.startVisualSelection、按Escape或hunk.review.clearSelection清除选择可直接转化为评论锚点c为当前行/选区添加审查评论hunk.review.startNote。Escape 的语义是“上下文式清除活动选择”在覆盖层与扩展模式让出所有权后无选择时 Escape 仍留给扩展命令使用因为 clear-selection 默认未绑定按键。可见的键盘注释选择评论notes现在有了可见的键盘选择逐行移动会在渲染顺序上停驻于每条评论与回复上保存或点击某条评论使其成为“活动注释”随后可用上一/下一条注释导航hunk.review.nextNote/previousNote在注释间移动活动注释上可持续使用编辑、回复、删除快捷键E编辑选中 hunk 内第一条可编辑用户注释R回复其第一条可见存储注释回复继承代码锚点、可无限嵌套产品层不设深度上限D删除活动注释仅限无回复的用户注释——父注释必须等回复移除后才能删除内联已保存注释同时暴露可点击的Edit、Reply、Delete动作。线程化回复卡片的右侧范围连接线不再重复绘制0.22.0patch并保留多行复制选择与注释范围引导线同时恢复了长包裹分屏行的快速首帧渲染。会话 CLI 回复既有注释0.22.0为会话 CLI 增加“回复既有内联审查注释”的能力回复会继承代码锚点——这意味着 Agent 驱动的审查会话可以针对既有注释直接追加回复而无需重新定位代码行。核心主题三扩展系统的新上下文与刷新能力委托补丁携带提供者中立元数据扩展 CLI 命令将补丁委托进 Hunk 时现在可以附加经过校验、提供者中立provider-neutral的审查元数据并暴露给扩展面板与实时会话快照在简洁的内置顶部面板中展示委托变更请求身份delegated change-request identity。从架构文档 extension-architecture.md 可知该描述符只随同一文件补丁身份的重载保留重载选择其他输入时即清除它属于注册元数据而非ReviewDocumentV1字段也不暗示任何提供者或远程重载能力。外部 Agent 改动文件后的合并审查重载扩展生命周期与自定义事件处理器现在可请求合并式coalesced主机审查重载——当外部 Agent 改动被审查文件后多个重载请求会被合并、与手动/watch/工作区/守护进程重载串行化避免风暴式重复刷新。扩展 API v23 与 v25兼容与新增0.22.0将单列 diff 布局更名为unified新增规范的 OpenTUI 与扩展 API v23 字段并保留废弃栈的兼容性——既有 CLI、配置、命令、OpenTUI 与扩展集成的行为不变。旧命令hunk.view.layoutStack仍作为hunk.view.layoutUnified的废弃别名hunk.view.toggleSidebar也仍是hunk.view.toggleFilesPane的兼容别名。扩展 API 生成版本 25 新增返回 Promise、可取消的watchSignature钩子。扩展面板的尺寸推导扩展面板现在能从当前审查事实推导首选尺寸未声明尺寸时使用主机默认值垂直放置左/右默认宽{preferred: 34, min: 22}水平放置上/下默认高{preferred: 8, min: 3}见 packages/hunk/src/extensions/panes.ts。多提交历史元数据也以紧凑响应行展示并带可复用的点击复制修订操作。性能、响应性与稳定性修复0.22 的 patch 更新中有大量“保持响应性/快速首帧/不崩溃”类修复可归为四个方向Watch 模式不再冻结审查Watch 模式检查 Git 变更时不再冻结审查界面0.22.0并新增 Promise 返回、可取消的watchSignature钩子。Linux 上删除并重建嵌套目录后自动刷新保持可用目录监视器以小批量注册保证大仓库首次交互依然响应0.22.0patch对应 packages/hunk/src/core/watch/ 模块群。动画上限与animations false面板开合的滑动动画被限制在30 FPS避免不必要的 CPU 占用同时新增animations false配置项以立即切换面板。该配置在 packages/hunk/src/core/run/config.ts 中解析默认值为true见 L1370并在 App.tsx 中通过bootstrap.input.options.animations ! false生效paneSlide.test.ts 明确测试了禁用动画时立即定版的行为。可写入用户配置animations false渲染与终端交互修复长包裹分屏行恢复快速首帧同时保留多行复制选择与注释范围引导线换行 diff 行共享一个悬停目标此前每行视觉行各建一个影响响应性保存注释后延迟的编辑器更新不再导致审查崩溃提交审查期间内嵌 VCS 命令运行时界面保持响应保留的历史与内嵌审查共享同一个正确归属的扩展生命周期alt/option键绑定同时兼容传统终端与 Kitty 键盘编码终端上报时保留独立的 Meta 绑定Kitty 事件可区分 Alt 与 Meta传统终端不可——altn与metan可能重叠被挂起的 Hunk 作业保持存活fg可恢复 TUI 及进行中的状态stdout 非终端时输出静态纯文本而非拉起交互 TUIhunk log与打开的提交审查共用同一终端渲染器返回时不会暴露旧终端输出。默认布局与安装校验布局默认值变更unified 布局默认键1split 布局默认键20.22.0与beta.1均有此改动。若你的配置显式绑定了其他键以你的配置为准。curl 安装校验优化默认走全局刷新元数据的缓存端点可选用、隐私保护、自动检查限流保留直接 GitHub 回退与分析退出选项会话守护进程端口不可验证时上报底层健康探测失败原因。其他值得注意的变更宽侧边栏树中的文件夹支持鼠标折叠/展开文件导航可揭示折叠文件夹内的目标在历史与提交审查之间切换时diff 视图偏好与主题变更保持生效主题化历史加载界面保持可见直到选中提交的审查准备好接管终端退出交互式hunk log时会提示保存主题变更与其他审查命令一致从仓库外启动的直接文件比较恢复自动与手动重载捆绑 Bun 运行时升级至 1.4.2降低内存占用并修复运行时问题审查以静态纯文本打印而非启动交互 TUI——当 stdout 不是终端时如管道这正是hunk log --static的行为基础。相关文档导航交互式历史与提交审查working-trees-and-commits 主题文档 所在的 docs 目录website/src/content/docs/docs/内含 configure/keybindings、extend/extension-api、extend/custom-sidebars 等配套章节按键与命令完整表docs/keybindings.md扩展系统架构纵深docs/extension-architecture.md、docs/extensions.md历史拓扑规划实现lanePlanner.ts、types.ts配置解析实现config.ts、commandInputs.ts面板尺寸与动画panes.ts、App.tsx、paneSlide.test.ts赞分享开发工具代码评审CLIAI 应用【免费下载链接】hunkReview-first terminal diff viewer for agentic coders项目地址https://gitcode.com/gh_mirrors/hu/hunk点击查看免费下载相关推荐Foundry Anvil 零区块费历史修复eth_feeHistory 空响应行为解析Foundry Anvil 零区块费历史修复eth_feeHistory 空响应行为解析 Anvil 的 eth_feeHistory RPC 在收到 blo区块链开发工具ROCm 版本发布历史全解析从 5.0.0 到 7.14.0 的版本演进与仓库发布工具链ROCm 版本发布历史全解析从 5.0.0 到 7.14.0 的版本演进与仓库发布工具链 本篇技术指南以 AMD ROCm 官方文档仓库中的 版本发布历史表开发工具高性能计算文档awesome-cheatsheets Org Mode速查表如何用Emacs打造个人知识管理体系完整教程awesome cheatsheets Org Mode速查表如何用Emacs打造个人知识管理体系完整教程 awesome cheatsheets 是一份文档上一篇5步实现老旧Mac现代化升级OpenCore Legacy Patcher完整指南下一篇Matterbridge插件管理器入门5分钟快速上手教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表