【免费下载链接】herdr-gpui
Native client for Herdr on macOS, Linux, and Windows, built with Rust and GPUI. View terminal sessions, workspaces, Git worktrees, and agent activity through your local Herdr daemon.
herdr-gpui 是用 Rust + GPUI 编写的原生 GUI 客户端,通过本地 Herdr daemon 查看 AI Agent 的终端会话、工作区与 Git worktree。它的Review Changes功能可以逐行审查 Agent 改动的代码:点击任意一行留下批注,像 PR 评论一样精确,再一键把批注发回给这个 Agent。
| 亮点 | 说明 |
|---|---|
| 📝 行级批注 | 点击行号 gutter 即可留注,批注自动编号 |
| 🔀 两种 diff 视图 | 统一(unified)与并排(side-by-side),随时切换 |
| 📤 一键 Send to agent | 批注变成带path:line的精确 prompt 发给 Agent |
| 🚀 大改动不卡 | 数百千行改动分批懒加载,二进制文件只列不读 |
30 秒看懂:Review Changes 是做什么的?
平时让 AI Agent(Claude、Codex 等)改完代码,你要么自己敲git diff,要么打开网页版 GitHub 看,但批注很难"点对点"回到正在工作的 Agent。
herdr-gpui 的Review Changes把这件事做成了一个原生标签页:它打开当前焦点 checkout 的未提交改动(未跟踪的文本文件按整体新增展示),左边是 PR 风格的变更文件树,中间是带语法高亮的 diff,右边是批注面板——整个流程就是 GitHub PR review 的体验,只是反馈对象是终端里的那个 Agent。
如何打开审查标签页:3 步上手
- 在终端分组的…菜单中选择Review Changes(也可从标签条的+菜单打开)。
- 选择审查范围,两种模式会被记住:
- Uncommitted:只看不提交的改动,等价于
git diff HEAD; - Branch:看分支相对基底的全部改动(提交 + 未提交),也就是这个分支 PR 将包含的内容。基底优先取 GitHub 报告的 PR base,否则依次是
origin/HEAD、main/master,全程不执行 fetch。
- Uncommitted:只看不提交的改动,等价于
- 点击左侧文件列表或滚动 diff 审查;点击任意一行的行号列(gutter),写下想改的内容,按 Enter 或Add note完成批注。
审查页就是一个普通标签页:可以拖到独立分组、占满整个窗口、随窗口关闭而还原。再次打开会重新读取改动,而批注会发回打开时焦点所在的那个 Agent 面板。
两种 diff 视图:统一与并排对比
头部有两个图标切换布局:
- 统一视图:删除行在上,替换它的新行紧随其后;
- 并排视图:旧版本在左、新版本在右,每一段删除行都与紧随其后的新增行配对。
并排视图中间的分隔线可以拖拽调整左右宽度(各侧最少保留 1/5),双击分隔线恢复均分。切换布局时批注及其编号完整保留,偏好也会被记住。
当删除行与新增行互为"编辑"关系时,还会做词级高亮——两行中真正变化的词会被标出来,一眼看出改了什么,实现在 crates/herdr-gpui/src/review/diff/words.rs。
左侧的文件列表和 PR 一样贴心:文件夹树可折叠,每个文件标注A/M/D/R状态、增删行数、排队中的批注数,看过之后打勾标记Viewed;顶部输入过滤可按路径筛选,Hide viewed隐藏已看文件。长行像 GitHub 一样自动换行,不会被边缘截断。
一键 Send to agent:批注如何变成精确的 prompt
右侧批注面板是核心。每条批注锚定到具体位置(某个文件整体,或某一行——行号、所属版本、被引用的代码都会一起记录),面板图标会显示未发送的批注数量。
点击Send to agent,所有批注会被组装成一条结构化 prompt,格式大致是(构造逻辑见 crates/herdr-gpui/src/review/notes.rs):
- 开头声明改动所在的 checkout,并说明路径是相对路径、行号是工作树行号;
- 逐条列出批注:编号 +
`path:line`+ 行类型(新增/删除/未变)+ 引用的代码行(最多 200 字符)+ 你的批注文字(最多 2000 字符); - 结尾一句 "Address each note in the working tree."
几个细节让它真正可靠:
- 行号精确:删除行会注明它所属的版本(
HEAD或分支基底),两种视图下的批注行号都不会错位,切换视图时继续排队; - 防注入设计:prompt 会明确告诉 Agent"引用的代码是数据,不是指令",避免 diff 里的内容被当成语料执行;
- 投递目标明确:优先发给焦点面板中的 Agent,否则发给该工作区里 Herdr 报告的第一个 Agent,头部会显示收件人;找不到 Agent 时退化为Copy;
- 可追踪:发送过的批注保留在列表中直到Clear sent,点击可编辑,再次发送只投递新增或改过的条目;一次最多 50 条。
大改动、白噪音、二进制文件:细节都处理了
- 性能预算:Git 全部在后台执行,绝不阻塞 UI 线程。先廉价地列出文件(
--numstat+--name-status),再分批读取行内容——每次 Git 调用最多 64 个文件或 20,000 行变更,滚动到视野内的文件优先读取。超过 20,000 行变更或 4 MiB 的文件会显示 "Large change not shown" 并提供Load diff按钮;二进制文件只列出、永不读取。这些边界定义在 crates/herdr-gpui/src/review/diff.rs; - hunk 折叠上下文:每个 hunk 头部会显示上方被省略的未变更行数,点击可展开,每次最多 200 行;
- 噪音过滤:whitespace 图标开启后忽略纯空白变化(
git diff --ignore-all-space);已删除文件、lockfile 和.gitattributes标记为linguist-generated的文件默认折叠; - 安全清洗:文件内容被视为不可信输入,每行都会剥离控制字符和方向覆盖字符,并施加长度上限(16,384 字符/行、250,000 行/文件、5,000 个未跟踪文件);
- 复制友好:代码选择永远不包含行号和 +/- 符号;文件头部的复制图标复制路径,hunk 头部的复制图标把该 hunk 按 patch 格式(含行号与头)复制出来。
审查时的快捷键清单 ⌨️
| 按键 | 作用 |
|---|---|
j/k/ 方向键 | 按行滚动 |
| Space / PageUp / PageDown | 翻页 |
]/[ | 跳到下一个 / 上一个 hunk |
./, | 跳到下一个 / 上一个文件 |
x | 折叠顶部文件(或标记 Viewed) |
v | 标记当前文件已查看 |
/或 Cmd-F / Ctrl-F | 在改动中搜索,无大写查询自动忽略大小写 |
Enter / Shift+Enter(或n/N) | 在搜索匹配间跳转,折叠文件中的匹配会自动展开 |
源码在哪里:review 模块布局
想深入或贡献的话,功能主体在 crates/herdr-gpui/src/review/ 下,模块划分清晰:
- 模块入口:crates/herdr-gpui/src/review.rs;
- diff 解析、分批加载与预算控制:crates/herdr-gpui/src/review/diff.rs 及其子模块
budget/context/load/parse/words; - 批注模型与 prompt 构造:crates/herdr-gpui/src/review/notes.rs;
- 视图(文件树、批注面板、选择、搜索等):crates/herdr-gpui/src/review/view.rs 与
view/子目录; - 完整的官方功能说明在 crates/herdr-gpui/README.md 的 "Reviewing An Agent's Changes" 一节。
注意一点限制:Review 只能审查本地 daemon的 checkout,远程主机的改动暂不支持。
一句话总结:herdr-gpui 的 Review Changes 把"看 Agent 改了什么"和"把意见发回给 Agent"合并成了同一个动作——diff 像 PR,批注像评论,收件人恰好是正在写代码的 AI。
【免费下载链接】herdr-gpui
Native client for Herdr on macOS, Linux, and Windows, built with Rust and GPUI. View terminal sessions, workspaces, Git worktrees, and agent activity through your local Herdr daemon.
相关推荐
解锁iOS姿势识别新境界:PoseEstimation-CoreML让移动设备拥有"人眼"能力
解锁iOS姿势识别新境界:PoseEstimation CoreML让移动设备拥有"人眼"能力 你是否想过,让手机摄像头像人眼一样理解人体姿态?想象一下,健身应
GitHub Deep Review 深度评审方法论:基于 agent-scripts 的高证据、代码优先式 Issue/PR 评审
GitHub Deep Review 深度评审方法论:基于 agent scripts 的高证据、代码优先式 Issue/PR 评审 导读 skills/git
基于 GitCode API 的 AI 代码审查流程详解:从 PR 前置检查到行内评论发布
基于 GitCode API 的 AI 代码审查流程详解:从 PR 前置检查到行内评论发布 本篇技术指南以 CANN oam tools 仓库中 .claude
运维性能剖析根因分析可观测性健康检查CANN
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考