【免费下载链接】crit
Review AI coding agents' plans, diffs and running apps in the browser. Local-first, works with any agent.
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 切换条,一键切换当前审查基线:
| 范围 | 快捷键 | 含义 |
|---|---|---|
| All | Shift+1 | 全部变更(含未跟踪文件) |
| Branch | Shift+2 | 仅已提交的分支变更(默认推荐) |
| Staged | Shift+3 | 仅暂存区变更 |
| Unstaged | Shift+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 | [] | 打开审查时自动折叠(标记已读)的模式 |
port | 0(随机) | 本地服务端口 |
cleanup_on_approve | true | 批准后自动清理审查文件 |
常见问题
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.
相关推荐
如何评审几十个AI代理的代码改动?Kanban的Diff审查与行内评论完整指南
如何评审几十个AI代理的代码改动?Kanban的Diff审查与行内评论完整指南 Kanban 是一个在本地运行的 Web 应用,专门用于并行运行多个 CLI A
cc-haha 桌面端 Workspace 使用指南:Diff 审查、行级评论与内置浏览器实战
cc haha 桌面端 Workspace 使用指南:Diff 审查、行级评论与内置浏览器实战 对话记录告诉你说 Claude 说了什么,而 Workspace
人工智能AI 应用桌面应用代码智能体MCP ClientsSlickGrid行选择模型:单选、多选与范围选择的完整实现
SlickGrid行选择模型:单选、多选与范围选择的完整实现 SlickGrid作为一款 闪电般快速的JavaScript网格组件 ,其强大的行选择模型功能让数
前端UI组件
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考