agavra/tuicr
摘要
tuicr 是一款基于终端的代码审查工具,支持 Vim 快捷键,可将审查结果导出至 GitHub、GitLab 或剪贴板,并兼容 git、jj 和 mercurial。
一款具有 Vim 快捷键的代码审查终端界面
查看缓存全文
缓存时间: 2026/07/30 15:57
agavra/tuicr 源代码:https://github.com/agavra/tuicr # tuicr 一个支持 vim 键位绑定的代码审查 TUI。可导出至 GitHub、GitLab 或剪贴板。 Crates.io (https://crates.io/crates/tuicr) 许可证 网站 (https://tuicr.dev) 演示 > [!TIP] > 发音为“tweaker“。 ## 功能 - 终端中 GitHub 风格连续差异对比。在一个流中滚动浏览所有修改过的文件。 - PR 风格的行级、范围级、文件级和审查级评论。 - 文件或 hunk 粒度的审查追踪,跨会话持久化。 - 三种导出目标:将真实审查推送到 GitHub 或 GitLab,将结构化 markdown 复制到剪贴板,或输出到 stdout。 - 支持 git、jj 和 mercurial。可审查未提交更改、提交范围或任意 GitHub PR 和 GitLab MR。 ## 安装 bash curl -fsSL tuicr.dev/install.sh | sh # 或 brew install agavra/tap/tuicr 其他安装方式(cargo、mise、nix、二进制包、源码) bash # Cargo cargo install tuicr # Mise mise use github:agavra/tuicr # Nix nix run github:agavra/tuicr 预构建二进制文件:GitHub Releases (https://github.com/agavra/tuicr/releases) 从源码编译: bash git clone https://github.com/agavra/tuicr.git cd tuicr cargo install --path . 一键更新现有安装: bash tuicr update tuicr update 0.18.0 # 安装指定版本 tuicr update 会根据管理器所属的可执行文件使用 Homebrew、Cargo、Mise 或 Nix profile。安装脚本和手动下载的二进制文件会在 SHA-256 校验后从匹配的 GitHub release 资产原地更新。指定版本安装支持 Cargo 和直接二进制文件;对于 Homebrew、Mise 或 Nix,请使用包管理器的锁定版本工作流。nix run 调用是临时的,不会安装;重新运行它使用当前 flake,或使用 nix profile install github:agavra/tuicr 进行安装,之后 tuicr update 可升级。 ## 快速开始 bash tuicr # 从提交选择器中选择 tuicr tui # 相同 TUI,显式子命令 tuicr -w # 未提交更改(跳过选择器) tuicr -r main..HEAD # 提交范围 tuicr pr 125 # GitHub PR tuicr mr 125 # GitLab MR tuicr tui pr 125 # 通过显式 TUI 子命令打开 GitHub PR tuicr tui mr 125 # 通过显式 TUI 子命令打开 GitLab MR tuicr --stdout # 将审查输出到 stdout tuicr review list # 列出保存的本地审查会话 tuicr update # 更新当前安装 tuicr update 0.18.0 # 安装指定版本 在 tuicr 中,使用 j/k 导航,按 c 添加评论,然后按 y 复制审查内容或输入 :submit 推送到 GitHub 或 GitLab。当打开之前审查过的 GitHub PR 或 GitLab MR 时,如果元数据可用,tuicr 会预选比上次提交的审查更新的提交;该审查已覆盖的提交会在内联选择器中标记为 ✓。自动检测 git、jj 或 mercurial。 ## 对比 | | tuicr | hunk (https://github.com/modem-dev/hunk) | lumen (https://github.com/jnsahaj/lumen) | gh pr review | git diff | |—|:—:|:—:|:—:|:—:|:—:| | TUI 差异查看器 | ✅ | ✅ | ✅ | ❌ | ❌ | | 在 TUI 中编写评论 | ✅ | ✅ | ✅ | ❌ | ❌ | | Vim 键位绑定 | ✅ | ❌ | 部分1 | ❌ | ❌ | | 将内联审查推送到 GitHub | ✅ | ❌ | ❌ | 部分2 | ❌ | | 将内联审查推送到 GitLab | ✅ | ❌ | ❌ | ❌ | ❌ | | 面向 Agent 的 Markdown 导出 | ✅ | 通过 CLI 技能 | ❌ | ❌ | ❌ | | git | ✅ | ✅ | ✅ | ❌ | ✅ | | jj | ✅ | ✅ | ✅ | ❌ | ❌ | | Mercurial (hg) | ✅ | ❌ | ❌ | ❌ | ❌ | | 单一静态二进制文件 | ✅ | (需要 Node) | ✅ | ✅ | ✅ | 1 Lumen 支持 j/k 导航,但没有更完整的 vim 模型(可视模式、{N}G、Ctrl-d/Ctrl-u 等)。 2 gh pr review 仅支持在审查级别发布 approve/comment/request-changes。不支持内联行评论。 ## 导出你的审查 审查完成后,将评论发送到工作继续的地方。 ### 推送到 GitHub :submit 会打开一个选择器,可选 Comment、Approve、Request changes 或 Draft。内联评论会作为真正的 PR 审查落在正确的行上。审查级别的评论会成为审查摘要。需要 gh 已认证该仓库。 ### 推送到 GitLab :submit 在 GitLab MR 上提供 Comment、Approve 或 Request changes。内联评论会作为讨论注释发布。审查级别的评论成为摘要。需要 glab 已认证该主机。Request changes 需要你的账户是被指定的审查者。只有 Draft 是 GitHub 独有的。详情见 docs/GITLAB.md 中的设置、自托管实例和故障排除。 ### 导出到编程助手 y 或 :clip 将结构化 markdown 块复制到剪贴板。每条评论都有一个编号和文件/行锚点: markdown 我审查了你的代码,有以下评论。请处理它们。 1. `src/auth.rs` - 考虑添加单元测试 2. `src/auth.rs:42` - 魔数应改为命名常量 3. `src/auth.rs:50-55` - 此代码块可以重构 粘贴给任何编程助手(Claude、Codex、Cursor 等)。若需以助手驱动的工作流,让助手在 tmux、Zellij 或 Herdr 分屏中打开 tuicr,请参阅 skills/tuicr/SKILL.md。 ### 输出到 stdout 使用 --stdout 将 markdown 管道到另一个进程: bash tuicr --stdout > review.md tuicr --stdout | pbcopy ## 审查会话 CLI tuicr review 无需打开 TUI 即可查看已保存的会话。它可以列出会话、添加评论、打印存储的评论,用于助手和脚本集成。详情见 docs/REVIEW_CLI.md。当审查目标激活时,TUI 会创建一个持久的会话文件,因此协作工具可以立即添加评论。TUI 退出时会移除自动创建的空会话文件。tuicr review list 会将当前打开的 TUI 会话标记为 "active": true。 ## 库 API tuicr 还暴露了一个 Rust 库 API,供希望在其持久化审查会话之上构建的工具使用。ReviewStore 可以列出检出的会话、加载会话、并使用与 TUI 相同的插入原语添加审查、文件、行或范围评论。 rust 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: "在这里处理空情况。".into(), comment_type: CommentType::from_id("issue"), }, )?; ## 配置 路径:Linux/macOS 下 ~/.config/tuicr/config.toml,Windows 下 %APPDATA%\tuicr\config.toml。 toml theme = "catppuccin-mocha" diff_view = "side-by-side" # 或 "unified" ignore_whitespace = false # 忽略本地 VCS 差异中的所有空白 appearance = "system" # 或 "dark" / "light" mouse = true leader = ";" # 可配置的前缀,用于 leader 快捷键 comment_vim = false # 审查评论框中使用 vim 模态编辑 review_watch_interval_ms = 1000 # 设置为 0 禁用持久化审查轮询 [[comment_types]] id = "issue" color = "red" definition = "合并前必须修复" 内置主题:dark、light、ayu-light、ayu-mirage、onedark、github-light、github-dark、catppuccin-latte、catppuccin-frappe、catppuccin-macchiato、catppuccin-mocha、everforest-dark、everforest-light、gruvbox-dark、gruvbox-light、nord-dark、nord-light、nord-dark-high-contrast、nord-light-high-contrast、solarized-light、solarized-dark、tokyo-night-storm、tokyo-night-day。 本地主题:设置 theme = "my-theme" 或运行 tuicr --theme my-theme,然后在 Linux/macOS 下创建 ~/.config/tuicr/themes/my-theme.toml,Windows 下创建 %APPDATA%\tuicr\themes\my-theme.toml。本地主题可以引用本地的 syntax_theme = "my-syntax.tmTheme" 文件用于语法高亮。一个可直接复制的示例位于 examples/tuicr-teal.toml,并附有匹配的 examples/tuicr-teal-syntax.tmTheme 语法主题。 完整选项、主题解析优先级、comment_types 语义和 .tuicrignore 规则见 docs/CONFIG.md。 ## 键位绑定 供首次会话使用的速查表。在 tuicr 中按 ? 查看完整参考。 | 按键 | 操作 | |—|—| | j / k | 向下 / 向上 | | Ctrl-d / Ctrl-u | 半页向下 / 向上 | | g / G | 顶部 / 底部 | | { / } | 上一个 / 下一个文件 | | [ / ] | 上一个 / 下一个 hunk | | m / M | 下一个 / 上一个评论 | | / | 搜索差异,或在帮助打开时搜索帮助(不区分大小写) | | c / C | 添加行 / 文件评论 | | v / V | 可视模式(范围评论) | | r | 切换文件已审查状态 | | R | 切换 hunk 已审查状态 | | e | 在 $EDITOR 中打开当前文件 | | y | 将审查复制到剪贴板 | | :edit | 在 $EDITOR 中打开当前文件 | | :submit | 将审查推送到 GitHub 或 GitLab | | Tab 在 : 提示符中 | 自动补全或循环命令 | | ? | 切换完整帮助 | 完整参考见 docs/KEYBINDINGS.md。 ## 赞助人 感谢以下人士对 tuicr 开发的支持,你们对我所做工作的认可意义重大! ## 许可证 MIT 许可。贡献说明见 CONTRIBUTING.md。
相似文章
jj_tui:专注于速度和清晰度的jujutsu终端用户界面
jj_tui 是为 Jujutsu 版本控制系统设计的快速直观的终端用户界面,专注于性能以及实时图形预览等交互功能。
tirth8205/code-review-graph
code-review-graph是一个Python工具,使用Tree-sitter构建代码的结构化地图,追踪增量变更,并通过MCP为AI编码助手提供精确上下文,从而在代码审查任务中显著减少令牌使用量。
Croft - TUI VSCode 克隆
Croft 是一个 VS Code 风格的三窗格工作区,完全在终端中运行,使用 Rust 构建,具备 tree-sitter 语法高亮、图像/PDF/电子表格的内联预览以及嵌入式 shell。
Show HN: Codiff,本地差异审查工具
Codiff 是一款轻量级本地 diff 查看器,用于审查 Git 暂存和未暂存的更改,支持基于 LLM 的逐步讲解和内联审查评论。
@github: 别再频繁切换标签页了 审查智能体(agent)生成的代码通常意味着不断在标签页之间切换。GitHub Copilot 应用将 diff、终端和浏览……
GitHub 官方博客为初学者介绍了 GitHub Copilot 应用内置的 diff、终端和浏览器面板,展示开发者如何在同一处审查、运行和预览智能体生成的代码,无需频繁切换标签页。