news 2026/10/15 18:48:47

herdr-gpui Review Changes 详解:逐行审查 AI Agent 的代码改动,像 PR 评论一样反馈

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
herdr-gpui Review Changes 详解:逐行审查 AI Agent 的代码改动,像 PR 评论一样反馈

【免费下载链接】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.

项目地址:https://gitcode.com/gh_mirrors/he/herdr-gpui
点击查看免费下载

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 步上手

  1. 在终端分组的…菜单中选择Review Changes(也可从标签条的+菜单打开)。
  2. 选择审查范围,两种模式会被记住:
    • Uncommitted:只看不提交的改动,等价于git diff HEAD;
    • Branch:看分支相对基底的全部改动(提交 + 未提交),也就是这个分支 PR 将包含的内容。基底优先取 GitHub 报告的 PR base,否则依次是origin/HEAD、main/master,全程不执行 fetch。
  3. 点击左侧文件列表或滚动 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):

  1. 开头声明改动所在的 checkout,并说明路径是相对路径、行号是工作树行号;
  2. 逐条列出批注:编号 +`path:line`+ 行类型(新增/删除/未变)+ 引用的代码行(最多 200 字符)+ 你的批注文字(最多 2000 字符);
  3. 结尾一句 "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.

项目地址:https://gitcode.com/gh_mirrors/he/herdr-gpui
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 18:46:57

点云论文全景整理:从分类、分割到检测与生成的任务脉络与复现指南

整理点云论文这件事,我断断续续干了有大半年。最后沉淀下来一个表格加一个笔记库,里面按任务分了十几个大类,收了将近四十篇有代表性的工作,从经典骨架到最新玩法都有。点云这个领域现在挺热闹,分类、分割、检测、配准…

作者头像 李华
网站建设 2026/10/15 18:46:43

LIN总线飞思卡尔代码:主从节点调度与调试实战

简介:压缩包内整合了LIN接收与LIN发送两大独立工程,适用于飞思卡尔(现NXP)S12X/HCS12系列微控制器,帮助开发者快速实现汽车电子系统中车窗、座椅调节等低速节点的LIN通信。共57个文件,以C源文件、头文件为主…

作者头像 李华