blog.dopana

Back

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/tuicr
bash

Bắ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 stdout
bash

Trong 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 [], nhảy giữa các file bằng {}, 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 (v rồ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 refactored
text

Dá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ímHành động
j / kXuống / Lên
Ctrl-d / Ctrl-uNửa trang xuống / lên
g / GĐầu / Cuối
{ / }File trước / sau
[ / ]Hunk trước / sau
m / MComment tiếp / trước
c / CThêm comment dòng / file
v / VChế độ visual (comment phạm vi)
r / RChuyển file / hunk đã review
eMở file đang focus trong $EDITOR
ySao 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 = true
toml

Đ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:

So sánh với các công cụ khác#

Tính năngTUICRhunklumengh pr review
TUI diff viewer
Viết comment trong TUI
Phím tắt Vimmột phần
Đẩy inline review lên GitHubmột phần
Đẩy inline review lên GitLab
Xuất markdown cho agentqua 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.

Tài liệu tham khảo#