news 2026/10/15 13:54:31

Crit Diff审查深度实战:行内评论、范围选择与Split/Unified视图完整操作指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Crit Diff审查深度实战:行内评论、范围选择与Split/Unified视图完整操作指南

【免费下载链接】crit

Review AI coding agents' plans, diffs and running apps in the browser. Local-first, works with any agent.

项目地址:https://gitcode.com/gh_mirrors/crit/crit
点击查看免费下载

Crit 是一款本地优先(local-first)的浏览器审查工具,专门用来审查 AI coding agent 产出的计划、代码 Diff 和运行中的应用。它的核心体验是"点一行、留一条评论,agent 立刻收到"——你无需打开终端 diff,也无需在 GitHub PR 页面里逐字阅读,直接在浏览器里完成行内评论、范围选择和 Split/Unified 视图切换,即可把精准反馈交回给 agent。本文是一份面向新手的完整操作指南。

快速开始:3 种方式启动 Diff 审查

Crit 是单二进制程序,安装后直接可用:

brew install crit # macOS # 或 go install github.com/tomasz-tomczyk/crit/cmd/crit@latest

启动 Diff 审查有 3 种常用入口:

命令场景
crit自动检测当前 git 仓库的变更文件,渲染为带语法高亮的 diff
crit plan.md审查指定文件(支持多文件)
crit pr 42/crit mr 42直接审查 GitHub PR 或 GitLab MR

启动后浏览器会自动打开审查界面。若配合 Claude Code 等 agent 使用,执行/crit斜杠命令即可自动走完整审查闭环:agent 启动 Crit、等待你的评论、再根据反馈修改,直到你批准。

Split 视图 vs Unified 视图:一键切换 Diff 显示方式

在 git 模式下,审查界面顶部有Split / Unified切换按钮(配合 "Toggle Diff" 使用),可实时切换两种 diff 呈现方式,无需刷新页面。

Split 视图:左右对照,适合定位"改了什么"

Split 视图将旧内容和新内容并排展示,左侧红色标出被删除的行,右侧绿色标出新增的行。当 agent 大段改写一个函数或表格时,左右对照能让你瞬间看清"删掉了什么、换成了什么"。

注意截图中评论卡片标注的是Lines 61–62——这正是范围评论的体现(下文详述)。

Unified 视图:单列阅读,适合理解上下文

Unified 视图把删除行与新增行按顺序排在同一列里,更接近 GitHub PR 的默认样式。阅读连续上下文(比如改动的代码块前后的逻辑)时更省眼。

💡经验法则:大段改写看 Split,小修小补看 Unified。偏好可在设置面板中调整,相关渲染选项(行内高亮粒度、变更标记样式、未改动上下文折叠)定义在 web/crit-settings-panes.js,底层由内嵌的@pierre/diffs引擎渲染(架构说明见 docs/frontend-js.md)。

Round-to-round diff:只看 agent 这一轮改了什么

Crit 的 diff 是"轮次制"的:agent 根据你的评论修改文件后,下一轮界面会显示本轮相对上一轮的变化(界面右上角有Round #N标识),而不是每次都展示全量 diff。这让多轮迭代中的审查焦点始终收敛到最新变更上。

行内评论:点一行、拖一段、引用一段文字

这是 Crit 与终端 diff 最大的差异——评论可以直接锚定到具体行号,且渲染位置紧贴被引用的行,体验与 GitHub PR review 一致。

单行评论:点击行号

点击任意行号即可弹出评论框,评论会内联显示在该行之后。

范围评论:拖动选择多行

按住鼠标沿行号区间拖动即可选中一个行范围(例如 Lines 61–62),评论会覆盖整段改动。当你想指出"这一整段逻辑有问题"时,范围评论比逐行评论高效得多。

文字级评论:选中文字并引用

用鼠标选中的是一段代码里的部分文字时按c,评论会携带引用高亮,精确指向那句表述。

键盘快捷键:像 Vim 一样审查

Crit 内置完整的键盘流(web/crit-shortcuts.js),在界面按?可随时查看:

快捷键功能
j/k上一个 / 下一个代码块
Shift+V视觉选行模式(可继续扩展范围,再按c评论)
c对当前聚焦块(或已选文字,带引用)发表评论
e/d编辑 / 删除当前评论
]/[跳转下一 / 上一条评论
h切换隐藏已解决的评论
Shift+F完成审查(Finish Review)

程序化评论:crit comment

agent 或脚本也可以在不开浏览器的情况下添加行内评论:

crit comment src/auth.go:42 'Missing null check' # 单行 crit comment src/handler.go:15-28 'Error handling issue' # 行范围

评论统一保存在~/.crit/reviews/(不在你的仓库里),每个分支独立一份审查文件,切分支互不干扰;草稿自动保存,关浏览器重开也能续上。

范围选择:只看你想看的那部分变更

大仓库里"全部变更"往往是信息噪音。Crit 提供两个层次的范围控制。

工作树范围:all / branch / staged / unstaged

git 模式顶部有scope 切换条,一键切换当前审查基线:

范围快捷键含义
AllShift+1全部变更(含未跟踪文件)
BranchShift+2仅已提交的分支变更(默认推荐)
StagedShift+3仅暂存区变更
UnstagedShift+4仅未暂存变更

首次启动时 Crit 默认选中branch范围,刻意避开未跟踪文件对大仓库造成的刷屏。不可用的范围(例如没有暂存内容时)会被自动禁用置灰。

范围模式:--range 与 PR/MR 聚焦

审查 PR、MR 或任意提交区间时,可显式指定范围:

crit --range v1.2..HEAD # 任意 base..head 区间 crit pr 42 # GitHub PR 42 crit mr 42 # GitLab MR 42

进入范围模式后,界面会出现范围标识芯片,并提供"Compare against"选项:

  • This commit(layer):只看当前这一个 commit 的变更;
  • Full stack:从默认分支到当前 HEAD 的全部变更。

范围解析逻辑位于 internal/focus/focus.go,其中layer/full-stack两种 scope 的定义就在这个文件里。

评论如何回到 agent 手中

评论提交后,点击右上角Finish Review(或按Shift+F),Crit 会把所有未解决评论打包交给 agent。若配置了全局agent_cmd,你甚至可以在评论卡片上直接点 "Send now",agent 实时读评论、改代码、回帖,评论会升级为带 ⚡ live 徽章的活线程:

⚠️ 安全提示:agent_cmd只从全局~/.crit.config.json读取,项目级配置无法设置,防止恶意仓库劫持本地命令。

常用配置项速查

在~/.crit.config.json(全局)或.crit.config.json(项目级,覆盖全局)中,与 Diff 审查最相关的配置:

配置项默认值作用
base_branch自动检测指定 diff 对比的基线分支,如"main"
ignore_patterns[".crit/"]从文件列表中排除的文件模式,如*.lock
auto_viewed_patterns[]打开审查时自动折叠(标记已读)的模式
port0(随机)本地服务端口
cleanup_on_approvetrue批准后自动清理审查文件

常见问题

Q:切换 Split/Unified 后,已写的评论会丢失吗?不会。评论锚定在行号/行范围上,与视图模式无关,切换视图后原样保留。

Q:agent 改完代码后界面会刷新吗?会。Crit 内置文件监听(live file watching),源文件一变浏览器自动重载,评论会随代码行偏移自动重锚(re-anchor)。

Q:可以同时审查多个文件/多个计划吗?可以。每个 Crit 实例独立端口,天然支持并发审查;crit resume还能列出历史审查并从任意位置重新连接。

Q:审查数据存在哪里?~/.crit/reviews/,完全本地。默认只监听127.0.0.1,不采集任何遥测;只有你主动点 Share 才会生成可分享链接。

小结

Crit 把"审查 AI 产出"这件事拆成了三个可快速上手的操作:用行内评论精确指出问题(点行、拖范围、引文字),用范围选择屏蔽噪音(all/branch/staged/unstaged 加--range/PR 聚焦),用Split/Unified 视图切换最顺眼的阅读方式。配合键盘快捷键和 round-to-round 增量 diff,你不需要读懂 agent 的每一次全量输出,只需把注意力放在最新一轮的变化上——这就是本地优先的 AI 代码审查工作流。

【免费下载链接】crit

Review AI coding agents' plans, diffs and running apps in the browser. Local-first, works with any agent.

项目地址:https://gitcode.com/gh_mirrors/crit/crit
点击查看免费下载

相关推荐

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

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

随机化快排:分治、递归与随机主元的工程实践

1. 项目概述:为什么随机化快排不是“加个random”就完事了?快速排序(QuickSort)是算法课上绕不开的硬骨头,但很多人写完标准版本后,一遇到极端数据——比如已经排好序的数组、大量重复元素的数组&#xff0…

作者头像 李华
网站建设 2026/10/15 13:53:17

基于YALMIP和CPLEX的电动汽车充放电优化调度实践

1. 项目背景与问题定义电动汽车有序充放电调度是当前智能电网领域的热点研究方向。随着电动汽车保有量快速增长,无序充电行为可能导致配电网局部过载、电压跌落等问题。我们团队最近完成了一个基于YALMIP建模工具和CPLEX求解器的优化调度项目,核心目标是…

作者头像 李华
网站建设 2026/10/15 13:53:03

高校导师双选系统开发:Django+Vue智能匹配实践

1. 项目背景与核心需求研究生导师双选系统是高校教务管理中的重要环节,传统的人工匹配方式存在效率低下、信息不对称等问题。我在参与某高校信息化建设时,发现每年导师双选期间,教务老师需要处理数百份纸质申请表,匹配过程耗时且容…

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

Python列表与元组:特性对比与性能优化指南

1. 列表与元组基础概念解析在Python编程中,列表(list)和元组(tuple)是两种最常用的序列类型数据结构。它们都能存储多个元素,但在特性和使用场景上存在本质区别。让我们先从一个实际案例开始理解:假设我们正在开发一个学生成绩管理系统&#…

作者头像 李华
网站建设 2026/10/15 13:51:54

解决SPA与浏览器缓存冲突导致的JS失效问题

1. 问题现象与背景解析最近在开发一个电商后台管理系统时&#xff0c;遇到了一个诡异的问题&#xff1a;当用户点击导航栏的<a>标签跳转页面后&#xff0c;新页面的JavaScript交互功能全部失效。控制台没有任何报错&#xff0c;但点击事件、表单验证等JS功能完全不起作用…

作者头像 李华
网站建设 2026/10/15 13:51:32

随机森林原理与实战:从决策树到特征重要性及调参全攻略

做机器学习这些年&#xff0c;如果让我推荐一个“第一次接触就能出效果、出了问题又最容易排查”的算法&#xff0c;我会毫不犹豫地选随机森林。它不是精度最高的模型&#xff0c;也不是原理最简单的模型&#xff0c;但几乎所有表格型数据项目里&#xff0c;你都能用它先跑通一…

作者头像 李华