blog.dopana

Back

代码审查是质量产生的地方——但大多数人都在浏览器里审查代码:滚动 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/tuicr
bash

快速开始#

tuicr # 从提交选择器中选择
tuicr -w # 未提交的更改(跳过选择器)
tuicr -r main..HEAD # 提交范围
tuicr pr 125 # GitHub PR
tuicr mr 125 # GitLab MR
tuicr --stdout # 将审查通过管道输出到 stdout
bash

在 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 refactored
text

粘贴到 Claude、Codex、Cursor 或任何编码代理中。

到 stdout: tuicr --stdout > review.mdtuicr --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 = true
toml

附带 22 个内置主题(catppuccin、onedark、gruvbox、nord、solarized、tokyo-night、github、everforest 等),并支持自定义本地主题。

库 API#

除了 TUI,TUICR 还公开了 Rust 库 API,用于在持久化的审查会话之上构建工具:

与其他工具的比较#

功能TUICRhunklumengh pr review
TUI diff 查看器
在 TUI 中写评论
Vim 快捷键部分
推送行内审查到 GitHub部分
推送行内审查到 GitLab
面向代理的 Markdown 导出通过技能
git
jj
Mercurial (hg)
单一静态二进制需要 Node

为什么 TUICR 很重要#

代码审查不应该强迫你离开终端。TUICR 将完整的审查工作流——阅读 diff、留下评论、提交审查——带入你日常使用的工具,使用你已经熟悉的快捷键。

它的代理友好 Markdown 导出是一个特别有远见的功能:将结构化审查粘贴到 Claude Code 或 Cursor 中,代理会处理每条评论,每条都编号并锚定到特定的文件和行。

对于生活在终端中的开发者来说,TUICR 是你一直等待的代码审查工具。

参考资料#