tuicr

agavra/tuicr 访问 GitHub ↗
🔤 Rust ★ 2492 ⑂ 0 weekly #9 (+741) 抓取 2026-08-07

一句话简介

一个基于 Rust 开发的 Git 交互式提交工具,支持在命令行中高效管理和编辑提交记录。

标签

  • Rust
  • Git
  • 命令行工具
  • 版本控制
  • 开发工具

适用应用场景

  • 交互式修改 Git 提交信息
  • 清理和重写本地提交历史
  • 代码审查后批量修正提交
  • 辅助团队规范化提交规范

README 中文摘要

tuicr:面向终端的代码审查工具

tuicr 是一款终端代码审查 TUI,提供 Vim 风格按键绑定,并支持将审查结果导出至 GitHub、GitLab、Bitbucket 或剪贴板,兼容 git、jj 与 Mercurial 仓库。

核心功能

  • 连续 diff 浏览:类 GitHub 风格的统一流式 diff,可滚动查看所有改动文件
  • 多粒度注释:支持行级、范围、文件级、审查整体四种注释
  • 审查状态持久化:按文件或 hunk 粒度记录审查进度,跨会话保留
  • 三种导出目标:推送真实 review 至 GitHub/GitLab/Bitbucket;复制结构化 Markdown 到剪贴板;或输出至 stdout
  • 多 VCS 兼容:支持 git、jj、Mercurial,可审查未提交变更、commit 区间或任意远程 PR/MR

安装与更新

推荐使用一键脚本或 Homebrew:

curl -fsSL tuicr.dev/install.sh | sh
# 或
brew install tuicr

其他安装方式包括 cargo install tuicrmise use github:agavra/tuicrnix run github:agavra/tuicr,也可从 GitHub Releases 下载预编译二进制或源码编译。更新命令 tuicr update 会根据当前可执行文件的来源(Homebrew/Cargo/Mise/Nix 或安装脚本/二进制)自动选择升级方式,并执行 SHA-256 校验。

快速上手

tuicr                       # 从 commit 选择器开始
tuicr -w                    # 审查未提交变更
tuicr -r main..HEAD         # 审查 commit 区间
tuicr pr 125                # 审查 GitHub PR
tuicr mr 125                # 审查 GitLab MR
tuicr --stdout              # 将 review 输出至 stdout

进入 TUI 后使用 j/k 导航,按 c 添加注释,y 复制或 :submit 推送至远端。再次打开已审查的 PR 时,会预选上次提交之后的新 commit,已覆盖的 commit 会以 标记。

审查导出

  • GitHub:submit 选择 Comment/Approve/Request changes/Draft,行内注释落至对应行;需要 gh 已认证
  • GitLab:submit 支持 Comment/Approve/Request changes(需被指派为 reviewer),需要 glab 已认证
  • Bitbucket Cloud:submit 支持 Comment/Approve,行内注释支持多行范围;需要 bkt 认证至 bitbucket.org,暂不支持 Request changes 与 Data Center
  • 复制至剪贴板y:clip 复制带编号与文件/行锚点的结构化 Markdown,便于粘贴给 Claude、Codex、Cursor 等编码代理
  • 输出至 stdouttuicr --stdout > review.md

会话管理与库 API

tuicr review 子命令可在不打开 TUI 的情况下列出已保存的会话、添加注释、输出结构化内容,便于脚本与代理集成。Rust 库 API 通过 ReviewStore 暴露会话列表、加载与统一注释插入接口:

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"),
    },
)?;

配置

配置文件位于 ~/.config/tuicr/config.toml(Windows 为 %APPDATA%\tuicr\config.toml)。可配置主题、diff 视图、忽略空白、外观、鼠标、leader 键、注释编辑器 Vim 模式、相对行号、审查轮询间隔等;自定义评论类型可通过 [[comment_types]] 声明。

内置主题包括 darklightayu-lightayu-mirroraonedarkgithub-light/darkcatppuccin-*everforest-*gruvbox-*nord-*solarized-*tokyo-night-*。本地主题可放置于 themes/ 目录下,并支持引用本地 .tmTheme 语法高亮文件。

关键按键

按键 动作
j / k 下/上移动
Ctrl-d / Ctrl-u 半页下/上
g / G 跳至顶部/底部
{ / } 上/下一个文件
[ / ] 上/下一个 hunk
m / M 下/上一个注释
/ 在 diff、文件树或帮助中搜索
c / C 添加行/文件注释
v / V Visual 模式(范围注释)
r / R 切换文件/hunk 已审查
e $EDITOR 打开当前文件
y 复制 review 至剪贴板
:submit 推送至远端平台

完整按键说明见 docs/KEYBINDINGS.md。项目以 MIT 协议开源。

摘要更新于 2026-08-07 00:33:54 · 原文 10867 字符 · md5 781dd1345fa6…