TUICR — Code Review Trong Terminal Với Phím Tắt Vim
TUICR (tweaker) là công cụ code review TUI bằng Rust với phím tắt Vim — diff kiểu GitHub, bình luận inline và xuất trực tiếp lên GitHub/GitLab.
Code review là nơi chất lượng được tạo ra — nhưng hầu hết chúng ta review code trong trình duyệt web: lướt qua trang PR của GitHub, bấm qua các diff, săn tìm nút comment. Nó hiệu quả, nhưng chậm và làm gián đoạn flow làm việc.
TUICR (phát âm “tweaker”) là một cách tiếp cận khác: một TUI code review chạy trong terminal với phím tắt vim. Được xây dựng bằng Rust dưới dạng một binary tĩnh duy nhất, nó mang trải nghiệm diff kiểu GitHub vào terminal của bạn — và cho phép đẩy review thực sự lên GitHub hoặc GitLab mà không cần mở trình duyệt.
TUICR là gì?#
TUICR là một giao diện terminal cho code review cung cấp:
- Diff liên tục kiểu GitHub — cuộn qua mọi file đã thay đổi trong một luồng duy nhất
- Bình luận kiểu PR ở cấp độ dòng, phạm vi, file và review
- Theo dõi review ở mức file hoặc hunk, lưu giữ qua các phiên
- Ba mục tiêu xuất — đẩy review thực sự lên GitHub hoặc GitLab, sao chép markdown có cấu trúc vào clipboard, hoặc pipe ra stdout
- Hoạt động với git, jj và mercurial — review thay đổi chưa commit, dải commit, hoặc bất kỳ GitHub PR hay GitLab MR nào
Cài đặt#
# Một dòng lệnh
curl -fsSL tuicr.dev/install.sh | sh
# Homebrew
brew install agavra/tap/tuicr
# Cargo
cargo install tuicr
# Nix
nix run github:agavra/tuicrbashBắt đầu nhanh#
tuicr # Chọn từ commit selector
tuicr -w # Thay đổi chưa commit (bỏ qua selector)
tuicr -r main..HEAD # Dải commit
tuicr pr 125 # GitHub PR
tuicr mr 125 # GitLab MR
tuicr --stdout # Pipe review ra stdoutbashTrong TUI: điều hướng bằng j/k, nhấn c để bình luận, y để sao chép review, hoặc :submit để đẩy lên GitHub hoặc GitLab.
Tính năng chính#
Diff Kiểu GitHub Trong Terminal#
TUICR render diff theo cách GitHub làm — một luồng liên tục của tất cả các file đã thay đổi. Điều hướng hunk bằng [ và ], nhảy giữa các file bằng { và }, và tìm kiếm diff bằng /.
Bình luận ở Mọi Cấp độ#
- Line comments (
c) — bình luận trên một dòng cụ thể - Range comments (
vrồi comment) — chế độ visual để chọn phạm vi - File comments (
C) — bình luận trên toàn bộ file - Review comments — bình luận tổng kết cho toàn bộ review
Theo dõi Review Qua Các Phiên#
TUICR theo dõi file và hunk nào bạn đã review — ở mức file hoặc hunk — và lưu giữ qua các phiên. Khi bạn mở lại một PR đã review trước đó, nó tự chọn các commit mới hơn review gần nhất của bạn. Các commit đã được xử lý được đánh dấu ✓ trong selector.
Xuất Chỉ Với Một Lệnh#
Lên GitHub: :submit mở picker cho Comment, Approve, Request changes hoặc Draft. Bình luận inline rơi đúng vào các dòng như một PR review thực sự. Yêu cầu gh đã xác thực.
Lên GitLab: :submit cung cấp Comment, Approve hoặc Request changes trên GitLab MR. Bình luận inline được đăng dưới dạng discussion notes. Yêu cầu glab đã xác thực.
Cho coding agent: y sao chép một khối markdown có cấu trúc vào clipboard:
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 refactoredtextDán vào Claude, Codex, Cursor hoặc bất kỳ coding agent nào.
Ra stdout: tuicr --stdout > review.md hoặc tuicr --stdout | pbcopy.
Phím Tắt Vim#
| Phím | Hành động |
|---|---|
j / k | Xuống / Lên |
Ctrl-d / Ctrl-u | Nửa trang xuống / lên |
g / G | Đầu / Cuối |
{ / } | File trước / sau |
[ / ] | Hunk trước / sau |
m / M | Comment tiếp / trước |
c / C | Thêm comment dòng / file |
v / V | Chế độ visual (comment phạm vi) |
r / R | Chuyển file / hunk đã review |
e | Mở file đang focus trong $EDITOR |
y | Sao chép review vào clipboard |
:submit | Đẩy review lên GitHub hoặc GitLab |
? | Bật/tắt trợ giúp đầy đủ |
Hỗ trợ VCS#
TUICR tự động phát hiện git, jj và mercurial. Nó có thể review:
- Thay đổi chưa commit
- Dải commit
- GitHub PR
- GitLab MR
Điều này hiếm có — hầu hết công cụ review bị ràng buộc vào một VCS hoặc một nền tảng.
Cấu hình#
Cấu hình nằm trong ~/.config/tuicr/config.toml:
theme = "catppuccin-mocha"
diff_view = "side-by-side" # hoặc "unified"
appearance = "system" # hoặc "dark" / "light"
mouse = truetomlĐi kèm 22 theme tích hợp sẵn (catppuccin, onedark, gruvbox, nord, solarized, tokyo-night, github, everforest…) cộng với hỗ trợ theme tùy chỉnh local.
Thư viện API#
Ngoài TUI, TUICR còn cung cấp Rust library API để xây dựng công cụ trên các phiên review đã lưu:
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"),
},
)?;rustSo sánh với các công cụ khác#
| Tính năng | TUICR | hunk | lumen | gh pr review |
|---|---|---|---|---|
| TUI diff viewer | ✅ | ✅ | ✅ | ❌ |
| Viết comment trong TUI | ✅ | ✅ | ✅ | ❌ |
| Phím tắt Vim | ✅ | ❌ | một phần | ❌ |
| Đẩy inline review lên GitHub | ✅ | ❌ | ❌ | một phần |
| Đẩy inline review lên GitLab | ✅ | ❌ | ❌ | ❌ |
| Xuất markdown cho agent | ✅ | qua skill | ❌ | ❌ |
| git | ✅ | ✅ | ✅ | ❌ |
| jj | ✅ | ✅ | ✅ | ❌ |
| Mercurial (hg) | ✅ | ❌ | ❌ | ❌ |
| Binary tĩnh đơn lẻ | ✅ | cần Node | ✅ | ✅ |
Tại sao TUICR quan trọng#
Code review không nên buộc bạn rời khỏi terminal. TUICR mang toàn bộ quy trình review — đọc diff, để lại bình luận, gửi review — vào công cụ bạn đã sống cùng, với phím tắt bạn đã biết.
Tính năng xuất markdown thân thiện với agent đặc biệt có tầm nhìn xa: dán một review có cấu trúc vào Claude Code hoặc Cursor và agent xử lý từng bình luận, được đánh số và neo vào từng file, từng dòng cụ thể.
Với những nhà phát triển sống trong terminal, TUICR là công cụ code review bạn đã chờ đợi.