代码审查是质量产生的地方——但大多数人都在浏览器里审查代码:滚动 GitHub 的 PR 页面、点击查看 diff、寻找评论按钮。这很有效,但很慢,而且打断了你的工作流。
TUICR(读作 “tweaker”)是另一种方式:一款在终端中运行、带有 Vim 快捷键的代码审查 TUI。它用 Rust 构建,是一个单一的静态二进制文件,将 GitHub 风格的 diff 体验带入终端——并且无需打开浏览器就能将真正的审查推送回 GitHub 或 GitLab。
TUICR 是什么?#
TUICR 是一个用于代码审查的终端界面,提供:
- GitHub 风格连续 diff — 在一个流中滚动查看所有已更改的文件
- PR 风格评论 — 支持行级、范围级、文件级和审查级
- 审查跟踪 — 按文件或代码块粒度,跨会话持久化
- 三种导出目标 — 将真实审查推送到 GitHub 或 GitLab,复制结构化 Markdown 到剪贴板,或通过 stdout 管道输出
- 支持 git、jj 和 mercurial — 审查未提交的更改、提交范围,或任何 GitHub PR 或 GitLab MR
安装#
# 一行命令
curl -fsSL tuicr.dev/install.sh | sh
# Homebrew
brew install agavra/tap/tuicr
# Cargo
cargo install tuicr
# Nix
nix run github:agavra/tuicrbash快速开始#
tuicr # 从提交选择器中选择
tuicr -w # 未提交的更改(跳过选择器)
tuicr -r main..HEAD # 提交范围
tuicr pr 125 # GitHub PR
tuicr mr 125 # GitLab MR
tuicr --stdout # 将审查通过管道输出到 stdoutbash在 TUI 中:用 j/k 导航,按 c 评论,按 y 复制审查,或用 :submit 推送到 GitHub 或 GitLab。
主要功能#
终端中的 GitHub 风格 diff#
TUICR 以 GitHub 的方式渲染 diff——所有已更改文件的连续流。用 [ 和 ] 导航代码块,用 { 和 } 在文件间跳转,用 / 搜索 diff。
每个级别的评论#
- 行级评论(
c)— 对特定行发表评论 - 范围评论(
v然后评论)— 可视化模式选择范围 - 文件评论(
C)— 对整个文件发表评论 - 审查评论 — 对整个审查的总结性评论
跨会话审查跟踪#
TUICR 按文件或代码块粒度跟踪你已审查的文件和代码块,并在会话间持久化。当你重新打开之前审查过的 PR 时,它会自动选中比你最近提交的审查更新的提交。已覆盖的提交在选择器中标记为 ✓。
一键导出#
到 GitHub: :submit 打开 Comment、Approve、Request changes 或 Draft 选择器。行内评论作为真正的 PR 审查落在正确的行上。需要已认证的 gh。
到 GitLab: :submit 在 GitLab MR 上提供 Comment、Approve 或 Request changes。行内评论作为讨论笔记发布。需要已认证的 glab。
到你的编码代理: y 将结构化 Markdown 块复制到剪贴板:
I reviewed your code and have the following comments. Please address them.
1. `src/auth.rs` - Consider adding unit tests
2. `src/auth.rs:42` - Magic number should be a named constant
3. `src/auth.rs:50-55` - This block could be refactoredtext粘贴到 Claude、Codex、Cursor 或任何编码代理中。
到 stdout: tuicr --stdout > review.md 或 tuicr --stdout | pbcopy。
Vim 快捷键#
| 按键 | 操作 |
|---|---|
j / k | 下 / 上 |
Ctrl-d / Ctrl-u | 半页下 / 上 |
g / G | 顶部 / 底部 |
{ / } | 上一个 / 下一个文件 |
[ / ] | 上一个 / 下一个代码块 |
m / M | 下一个 / 上一个评论 |
c / C | 添加行 / 文件评论 |
v / V | 可视化模式(范围评论) |
r / R | 切换文件 / 代码块已审查 |
e | 在 $EDITOR 中打开当前文件 |
y | 复制审查到剪贴板 |
:submit | 推送审查到 GitHub 或 GitLab |
? | 切换完整帮助 |
VCS 支持#
TUICR 自动检测 git、jj 和 mercurial。它可以审查:
- 未提交的更改
- 提交范围
- GitHub PR
- GitLab MR
这很罕见——大多数审查工具都绑定在一个 VCS 或一个平台上。
配置#
配置位于 ~/.config/tuicr/config.toml:
theme = "catppuccin-mocha"
diff_view = "side-by-side" # 或 "unified"
appearance = "system" # 或 "dark" / "light"
mouse = truetoml附带 22 个内置主题(catppuccin、onedark、gruvbox、nord、solarized、tokyo-night、github、everforest 等),并支持自定义本地主题。
库 API#
除了 TUI,TUICR 还公开了 Rust 库 API,用于在持久化的审查会话之上构建工具:
use tuicr::{AddCommentRequest, CommentTarget, CommentType, LineSide, ReviewStore};
let store = ReviewStore::new();
let sessions = store.list_sessions_for_repo("/path/to/repo")?;
let session = &sessions[0].session_ref;
store.add_comment(
session,
AddCommentRequest {
target: CommentTarget::Line {
path: "src/main.rs".into(),
line: 42,
side: LineSide::New,
},
content: "Handle the empty case here.".into(),
comment_type: CommentType::from_id("issue"),
},
)?;rust与其他工具的比较#
| 功能 | TUICR | hunk | lumen | gh pr review |
|---|---|---|---|---|
| TUI diff 查看器 | ✅ | ✅ | ✅ | ❌ |
| 在 TUI 中写评论 | ✅ | ✅ | ✅ | ❌ |
| Vim 快捷键 | ✅ | ❌ | 部分 | ❌ |
| 推送行内审查到 GitHub | ✅ | ❌ | ❌ | 部分 |
| 推送行内审查到 GitLab | ✅ | ❌ | ❌ | ❌ |
| 面向代理的 Markdown 导出 | ✅ | 通过技能 | ❌ | ❌ |
| git | ✅ | ✅ | ✅ | ❌ |
| jj | ✅ | ✅ | ✅ | ❌ |
| Mercurial (hg) | ✅ | ❌ | ❌ | ❌ |
| 单一静态二进制 | ✅ | 需要 Node | ✅ | ✅ |
为什么 TUICR 很重要#
代码审查不应该强迫你离开终端。TUICR 将完整的审查工作流——阅读 diff、留下评论、提交审查——带入你日常使用的工具,使用你已经熟悉的快捷键。
它的代理友好 Markdown 导出是一个特别有远见的功能:将结构化审查粘贴到 Claude Code 或 Cursor 中,代理会处理每条评论,每条都编号并锚定到特定的文件和行。
对于生活在终端中的开发者来说,TUICR 是你一直等待的代码审查工具。