
Claude Code Review hoạt động thế nào: Diff, Hook, và những gì Agent phát hiện
Chạy cùng quy trình review agentic mà kỹ sư senior của bạn sẽ làm — trực tiếp từ diff, không cần tốn công suy nghĩ.
Claude Code Review: Hướng Dẫn Thực Tế Về Xét Duyệt PR Bằng Agent
Claude Code có thể xét duyệt một pull request hoặc diff cục bộ theo cách mà một kỹ sư senior tận tâm sẽ làm — đọc các file đã thay đổi, truy theo các call site, kiểm tra test, và trả về các phát hiện được xếp hạng theo mức độ nghiêm trọng kèm gợi ý khắc phục. Hướng dẫn này nói cụ thể về việc sử dụng Claude Code (công cụ CLI dựa trên agent của Anthropic) để xét duyệt code: cách kích hoạt nó, cách prompt hiệu quả, cách tự động hóa nó trên mỗi commit hoặc PR, và cách tích hợp nó vào pipeline của nhóm.
"Claude Code Review" Thực Sự Có Nghĩa Là Gì
Có hai điều rất khác nhau mà mọi người gọi là "Claude code review." Điều thứ nhất là hỏi Claude trong giao diện chat để xem một đoạn code bạn dán vào. Điều thứ hai — và là chủ đề của hướng dẫn này — là chạy Claude Code, CLI dựa trên agent của Anthropic, trên một diff hoặc pull request thực sự bên trong repository thực của bạn.
Sự khác biệt này quan trọng vô cùng. Khi Claude Code xét duyệt một diff, nó không suy luận một cách cô lập về một đoạn trích được dán vào. Đó là một agent tự chủ có thể mở file, theo dõi các import, đọc file hướng dẫn dự án CLAUDE.md của bạn, kiểm tra các test liên quan, và hiểu toàn bộ ngữ cảnh của một thay đổi trước khi đưa ra bất kỳ phát hiện nào. Nhận thức đa file đó là điều làm cho đầu ra thực sự có giá trị chứ không chung chung.
Claude Code có sẵn dưới dạng CLI mà bạn cài đặt cục bộ (npm install -g @anthropic-ai/claude-code), hoặc dưới dạng agent chạy trong một sandbox trên cloud — sẽ nói thêm về cả hai cách tiếp cận này sau. Tài liệu chính thức của Anthropic bao gồm hướng dẫn cài đặt và thiết lập ban đầu.
Quy Trình /review Từng Bước
Claude Code đi kèm với lệnh slash /review được thiết kế đặc biệt cho công việc này. Đây là toàn bộ quy trình từ diff đến đầu ra có thể hành động.
Bước 1 — Chỉ Cho Claude Code Diff Cần Xét Duyệt
Bạn có một số cách để cung cấp cho nó những thay đổi cần xét duyệt.
Các thay đổi đã staged (lệnh /review):
/reviewTrong phiên làm việc của Claude Code, lệnh slash /review sẽ khởi động việc xét duyệt các thay đổi của bạn. Đây là quy trình cục bộ phổ biến nhất: stage công việc của bạn, chạy /review, và xem các phát hiện trước khi commit. (Hành vi chính xác của lệnh có thể thay đổi theo thời gian — kiểm tra tài liệu Claude Code của Anthropic để biết cú pháp hiện tại.)
Một dải git cụ thể:
Bạn cũng có thể chỉ cần hỏi agent bằng ngôn ngữ tự nhiên — ví dụ, "Xét duyệt diff giữa main và nhánh này và đánh dấu bất kỳ lỗi hoặc regression nào." Vì Claude Code có thể tự chạy các lệnh git, nó sẽ tạo ra diff cho dải mà bạn chỉ định và xét duyệt nó. Điều này rất hữu ích khi xét duyệt một feature branch trước khi mở PR, và nó tránh việc phải phụ thuộc vào bất kỳ cú pháp cờ (flag) chính xác nào.
URL của một pull request trên GitHub:
Nếu dự án của bạn đã cấu hình GitHub CLI, Claude Code có thể lấy trực tiếp diff của PR. Bạn cung cấp URL hoặc số của PR trong prompt của mình, và agent sử dụng gh để lấy diff cùng với mô tả PR, điều này cung cấp cho nó ngữ cảnh về mục đích bên cạnh code.
Bước 2 — Nạp Ngữ Cảnh
Trước khi đưa ra các phát hiện, Claude Code đọc ngữ cảnh cần thiết để đánh giá diff một cách chính xác:
CLAUDE.md— file hướng dẫn của dự án bạn, có thể định nghĩa các khu vực cần tập trung xét duyệt, các pattern bị cấm, quy tắc kiến trúc, hoặc quy ước của nhóm. Đây là công cụ chính của bạn để tùy chỉnh những gì agent chú ý đến.- Các module được import và các bên gọi (caller) — nếu một hàm bị thay đổi được gọi từ mười nơi khác, agent sẽ đọc các call site đó để kiểm tra xem thay đổi có tương thích ngược không.
- Các test đã có — nó đọc các file test để hiểu hợp đồng (contract) dự kiến của code đã thay đổi, và để nhận ra khi logic mới thiếu độ phủ (coverage).
- Các file cấu hình —
eslint,tsconfig,pyproject.tomlvà các file tương tự giúp agent hiểu những quy tắc linting nào đã được thực thi tại CI, để nó không lặp lại những phát hiện mà công cụ (tooling) của bạn đã bắt được.
Bước 3 — Phân Tích
Các bước phân tích của Claude Code bao trùm nhiều khía cạnh cùng lúc:
- Tính đúng đắn (Correctness) — lỗi logic, off-by-one, null dereference, giả định sai về thuật toán
- An ninh (Security) — rủi ro injection, credential bị lộ, deserialization không an toàn, thiếu kiểm tra phân quyền
- Độ tin cậy (Reliability) — thiếu xử lý lỗi, promise rejection không được xử lý, các trường hợp biên chưa được bắt
- Khả năng duy trì (Maintainability) — logic trùng lặp, tên gọi không rõ ràng, thiếu tài liệu cho hành vi không hiển nhiên
- Độ phủ test (Test coverage) — các code path được thêm vào mà không có test tương ứng
Agent không chỉ đánh dấu một dòng; nó giải thích tại sao phát hiện đó quan trọng và tác động sẽ như thế nào nếu nó được deploy.
Bước 4 — Các Phát Hiện Có Cấu Trúc
Đầu ra là một danh sách các phát hiện, mỗi phát hiện có:
- Một nhãn mức độ nghiêm trọng (thường là: critical / warning / suggestion)
- Tham chiếu file và dòng
- Giải thích bằng ngôn ngữ đơn giản về vấn đề
- Một gợi ý khắc phục — thường là một đoạn code có thể áp dụng ngay
Theo mặc định, các phát hiện được xuất ra terminal. Đối với sử dụng theo nhóm, bạn có thể chuyển hướng chúng: pipe vào một file, đăng chúng thành comment PR qua gh pr comment, hoặc sử dụng một hook để ghi chúng vào một log xét duyệt chung.
Xét duyệt Claude Code tuân theo một pipeline có cấu trúc — từ đầu vào diff qua việc nạp ngữ cảnh và phân tích đến các phát hiện được xếp hạng và gợi ý khắc phục, với các hook cho phép tự động hóa hoàn toàn.
Một Ví Dụ Thực Tế: Diff Thật, Xét Duyệt Thật
Để cụ thể hóa điều này, đây là một diff Python tối giản và những gì một lượt xét duyệt Claude Code phát hiện ra.
Diff:
# Before
def get_user(user_id):
result = db.query(f"SELECT * FROM users WHERE id = {user_id}")
return result[0]
# After (in PR)
def get_user(user_id):
result = db.query(f"SELECT * FROM users WHERE id = {user_id}")
if result:
return result[0]
return NoneĐiều tác giả PR nghĩ rằng mình đã sửa: một lỗi KeyError khi không tìm thấy user.
Điều Claude Code phát hiện trong lượt xét duyệt:
-
Critical — SQL Injection (dòng 2): F-string nội suy
user_idtrực tiếp vào câu query. Một giá trị như1; DROP TABLE users;--sẽ được thực thi. Khắc phục: sử dụng parameterized query —db.query("SELECT * FROM users WHERE id = ?", (user_id,)). -
Warning — Lan truyền giá trị trả về
Nonengầm định: Các bên gọiget_usermà không kiểm traNonesẽ giờ đây gặp lỗi từ xa. Xét duyệt ba call site (được liệt kê theo file) giả định rằng luôn có một user object được trả về. -
Suggestion — Thiếu chú thích kiểu (typing annotation): Kiểu trả về nên là
Optional[User]để IDE và các type checker có thể tự động phát hiện trường hợpNonetại các call site. -
Suggestion — Test được thêm nhưng chưa đầy đủ: Test mới
test_get_user_not_foundchỉ kiểm tra rằngNoneđược trả về; nó không kiểm tra hành vi khiuser_idlà0hoặc không phải số nguyên.
Tác giả gốc đã vá lỗi KeyError nhưng lại vô tình đưa vào rủi ro lan truyền None một cách âm thầm, và không nhận ra lỗi SQL injection đã có từ trước. Claude Code phát hiện được cả hai — và tìm ra chúng vì nó đọc các call site, không chỉ đọc diff.
Prompt Claude Code Để Có Những Lượt Xét Duyệt Tốt Hơn
Chất lượng của một lượt xét duyệt tỷ lệ trực tiếp với chất lượng ngữ cảnh mà bạn cung cấp cho agent. Những prompt và kỹ thuật này tạo ra đầu ra tốt hơn một cách nhất quán.
Sử Dụng CLAUDE.md Để Đặt Chỉ Dẫn Cố Định
Đòn bẩy lớn nhất nằm ở file CLAUDE.md của dự án bạn. Thêm một phần ## Review Guidelines:
## Review Guidelines
- We use parameterized queries everywhere. Flag any string interpolation in SQL.
- All public functions must have return-type annotations (Python) or JSDoc (JS).
- Security findings should always be severity: critical, not warning.
- We prefer explicit error returns over exceptions in the data layer.
- Do not flag import ordering — Black handles that automatically.Điều này chỉ dẫn agent một lần, và mọi lượt xét duyệt trong dự án sẽ kế thừa các quy tắc này mà không yêu cầu bạn phải prompt lại.
Cung Cấp Mục Đích Trong Prompt
Khi kích hoạt một lượt xét duyệt tương tác, hãy nói cho agent biết PR này đang cố gắng đạt được điều gì:
/review This PR migrates our auth flow from JWT to session cookies. Focus on
session fixation, secure cookie attributes, and any places we might be leaking
the old JWT validation logic.Ngữ cảnh về mục đích cho phép Claude Code ưu tiên các phát hiện liên quan thay vì tạo ra một checklist đồng nhất trên mọi khía cạnh.
Yêu Cầu Một Lượt Chỉ Về Mức Độ Nghiêm Trọng Trước
Đối với các diff lớn, một cách tiếp cận hai lượt sẽ hiệu quả hơn:
/review Pass 1: list only critical and warning severity findings with file+line.
No suggestions yet.Sau đó, khi bạn đã có danh sách các mục critical, hãy yêu cầu chi tiết khắc phục cho các phát hiện cụ thể. Điều này tránh vấn đề khi kết quả xét duyệt dài 200 dòng có lỗi critical bị chôn giữa những gợi ý về style.
Yêu Cầu Xác Nhận Sự Hiểu Đúng
Đối với các thay đổi phức tạp:
Before reviewing, summarize what this diff is trying to do in two sentences,
then proceed with the review.Nếu bản tóm tắt bị sai, bạn biết rằng agent đã hiểu sai diff và bạn có thể sửa trước khi lãng phí thời gian vào những phát hiện sai hướng.
Tự Động Hóa Xét Duyệt Với Hooks
Chạy /review thủ công rất hữu ích, nhưng lợi ích năng suất thực sự là làm cho việc xét duyệt trở nên tự động — để mỗi commit hoặc mỗi PR mở ra sẽ kích hoạt nó mà không cần con người phải nhớ để làm điều đó. Hệ thống hooks của Claude Code làm cho điều này khả thi. (Hệ thống hooks được đề cập chi tiết trong hướng dẫn về hooks của Claude Code — phần này tập trung cụ thể vào trường hợp sử dụng xét duyệt.)
Tự Động Xét Duyệt Trên Mỗi Commit
Trong file .claude/settings.json của dự án bạn, thêm một hook Stop:
{
"hooks": {
"Stop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "claude -p 'Review the diff from the last commit (git diff HEAD~1 HEAD) and list any bugs, security issues, or regressions.'"
}
]
}
]
}
}Với điều này được thiết lập, mỗi khi Claude Code hoàn thành một tác vụ (bao gồm các tác vụ coding kết thúc bằng một commit), hook sẽ kích hoạt và xét duyệt diff kết quả. Các phát hiện xuất hiện trong terminal của bạn ngay sau khi commit hoàn tất.
Tự Động Xét Duyệt Khi PR Mở
Đối với tích hợp CI, chạy Claude Code ở chế độ headless (claude -p "<prompt>") trong một job GitHub Actions và đăng kết quả thành comment PR. Mẫu dưới đây chỉ mang tính minh họa — Anthropic cũng phát hành một GitHub Action chính thức cho Claude Code, vì vậy hãy kiểm tra tài liệu Claude Code để biết cách thiết lập CI hiện tại, được khuyến nghị, thay vì sao chép các cờ (flag) một cách máy móc:
name: Claude Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Claude Code
run: npm install -g @anthropic-ai/claude-code
- name: Run review
run: |
claude -p "Review the diff between origin/${{ github.base_ref }} and HEAD. \
List bugs, security issues, and regressions, ranked by severity." > review.md
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
- name: Post review as PR comment
run: gh pr comment ${{ github.event.number }} --body-file review.md
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}Điều này tự động đăng các phát hiện của Claude Code thành comment PR trên mỗi lần push. Những người xét duyệt là con người của bạn sau đó tập trung sự chú ý vào các phát hiện mà agent đã phát hiện ra, thay vì dành thời gian xét duyệt cho những mục Claude Code có thể bắt được một cách đáng tin cậy.
Những Gì Claude Code Review Bắt Được — Và Những Gì Nó Bỏ Lỡ
Điều quan trọng là phải nhìn nhận rõ ràng về giới hạn khả năng. Xét duyệt bằng AI thực sự mạnh mẽ đối với một loại phát hiện cụ thể, và không đủ tin cậy đối với những loại khác.
Claude Code xuất sắc ở tính đúng đắn máy móc, các pattern an ninh, và tính nhất quán — trong khi đánh giá về sản phẩm, các mối đe dọa mới, và việc ký duyệt tuân thủ vẫn là trách nhiệm của con người.
Claude Code bắt được một cách đáng tin cậy:
- Lỗi off-by-one, null/undefined dereference, và sự không khớp kiểu có thể nhìn thấy trong diff và ngữ cảnh trực tiếp của nó
- Các pattern an ninh đã biết: SQL injection, XSS, lỗ hổng CSRF, tham chiếu đối tượng trực tiếp không an toàn, thiếu kiểm tra đầu vào, secret trong code
- Vi phạm style và quy ước so với các quy tắc được định nghĩa trong
CLAUDE.mdvà các file cấu hình của bạn - Logic trùng lặp — nhận thức đa file của agent nghĩa là nó nhận ra khi một hàm bạn vừa thêm vào đã tồn tại trong một module utility ở hai thư mục xa
- Thiếu xử lý lỗi — promise rejection không được xử lý, mệnh đề
excepttrần, các hàm có thể trả vềNonehoặcundefinedmà bên gọi không mong đợi - Lỗ hổng độ phủ test cho các code path cụ thể được thêm vào trong diff
Claude Code không thay thế đánh giá của con người trong:
- Các quyết định về sản phẩm và yêu cầu. Liệu tính năng này nên tồn tại hay không, liệu UX có hợp lý hay không, liệu hợp đồng API có phải là abstraction đúng đắn hay không — những điều này cần ngữ cảnh kinh doanh mà không agent nào có.
- Các mối đe dọa an ninh mới. Agent biết về các loại lỗ hổng đã biết; nó không tự phát minh ra các mô hình đe dọa đặc thù cho môi trường triển khai hoặc logic kinh doanh của ứng dụng bạn.
- Hiệu suất ở quy mô lớn. Phân tích tĩnh không thể thay thế cho kết quả profiler, kết quả load test, hoặc sự hiểu biết về các mẫu traffic thực tế.
- Tuân thủ quy định. GDPR, HIPAA, PCI-DSS, và các quy định tương tự cần sự ký duyệt của con người và thường cần xét duyệt pháp lý. Xét duyệt bằng AI không thể thay thế điều đó.
- Động lực nhóm và quản trị kiến trúc. "Điều này có thuộc về module này không?" hoặc "Chúng ta có nên chấp nhận dependency này không?" cần ngữ cảnh tổ chức.
Cách nhìn nhận hợp lý: xét duyệt Claude Code loại bỏ phần nhàm chán của việc xét duyệt code — bắt các lỗi máy móc, thực thi các quy ước, đánh dấu các pattern đã biết là xấu — để những người xét duyệt là con người của bạn có thể dành sự chú ý hạn chế của mình cho các quyết định đánh giá thực sự cần đến sự đánh giá của con người.
Tích Hợp Claude Code Review Vào Pipeline Của Nhóm
Để một nhóm thực sự sử dụng xét duyệt bằng agent một cách nhất quán yêu cầu coi nó là một phần cốt lõi của workflow, không phải một thứ tùy chọn thêm vào.
Mô Hình Ba Lớp
Một pipeline nhóm hoạt động tốt có ba lớp:
- Pre-commit cục bộ — Developer chạy
/reviewtrước khi push. Việc thiết lập hook đã mô tả trên tự động hóa điều này. Các phát hiện ở lớp này là rẻ nhất để sửa. - Cổng CI (CI gate) — Workflow GitHub Actions đăng các phát hiện của Claude Code thành comment PR trước khi bất kỳ người xét duyệt nào được chỉ định. Người xét duyệt chỉ được chỉ định sau khi lượt xét duyệt CI thông qua (không có phát hiện critical).
- Trọng tâm xét duyệt của con người — Người xét duyệt sử dụng comment của Claude Code như một hướng dẫn phân loại (triage). Công việc của họ là đánh giá các mục cần sự đánh giá — sự phù hợp về kiến trúc, tính đúng đắn của sản phẩm, đánh đổi hiệu suất — không phải đọc lại từng dòng để tìm lỗi chính tả.
Chia Sẻ Quy Ước CLAUDE.md
CLAUDE.md của bạn là lớp cấu hình cho hành vi xét duyệt của agent. Đối xử với nó như code: commit nó, quản lý phiên bản của nó, xét duyệt các thay đổi đối với nó trong PR. Khi nhóm đồng ý rằng Claude Code nên dừng đánh dấu một pattern cụ thể (vì bạn đã có linter cho nó), hãy cập nhật CLAUDE.md và thay đổi đó sẽ áp dụng cho mọi lượt xét duyệt trong tương lai.
Điều Chỉnh Ngưỡng Mức Độ Nghiêm Trọng
Các nhóm thường thấy việc điều chỉnh mức độ nghiêm trọng mặc định quá ồn ào ban đầu. Thêm các chỉ dẫn rõ ràng vào CLAUDE.md để kiểm soát điều đó:
## Review Severity Rules
- Only flag console.log as a warning if it is in a non-test, non-debug file.
- Import ordering is never a finding; Prettier handles it.
- Treat any hardcoded credential as critical regardless of context.
- Performance suggestions are informational only unless they affect O(n²) loops.Sau vài tuần sử dụng, hầu hết các nhóm thấy mức độ ồn giảm đáng kể khi sự chú ý của agent được điều chỉnh vào các pattern thực sự quan trọng trong codebase của họ.
Xử Lý False Positive
Claude Code sẽ đôi khi đánh dấu sai điều gì đó. Phản ứng đúng đắn không phải là loại bỏ toàn bộ lượt xét duyệt — mà là thêm một chỉ dẫn đặc thù cho dự án vào CLAUDE.md để xử lý pattern đó. Theo thời gian, điều này tạo ra một cấu hình xét duyệt ngày càng chính xác, đặc thù cho dự án, phản ánh các tiêu chuẩn thực tế của nhóm bạn.
Chạy Claude Code Review Mà Không Cần Cài Đặt Cục Bộ
Mọi thứ được mô tả cho đến giờ đều giả định rằng bạn đã cài đặt và chạy Claude Code trong terminal của mình. Đối với nhiều nhóm — đặc biệt là những nhóm dùng máy tính công ty bị khóa, môi trường Windows không có WSL, hoặc các developer muốn xét duyệt từ một tab trình duyệt — việc cài đặt cục bộ là một điểm gây trở ngại.
Happycapy chạy Claude Code trong một sandbox an toàn trên cloud trực tiếp trong trình duyệt của bạn. Bạn có được toàn bộ khả năng xét duyệt bằng agent — bao gồm việc nạp ngữ cảnh đa file, hỗ trợ CLAUDE.md, và lệnh /review — mà không cần cài đặt bất cứ thứ gì. Điều này đặc biệt hữu ích cho:
- Xét duyệt code trên các pull request từ trình duyệt mà không cần pull nhánh về cục bộ
- Các nhóm đang làm quen với xét duyệt Claude Code muốn một môi trường chung, nhất quán trước khi triển khai cài đặt cục bộ
- Các máy bị khóa nơi việc cài đặt các package npm toàn cục cần sự phê duyệt của IT
- Xét duyệt các repository không quen thuộc nơi bạn muốn khả năng nạp ngữ cảnh của agent mà không cần clone toàn bộ repo
Nếu bạn muốn biết Claude Code so sánh như thế nào với các lựa chọn khác về khả năng agent, xem Claude Code vs. GitHub Copilot và Claude Code vs. Cursor. Và nếu bạn muốn hiểu cách Happycapy chạy Claude Code trong ngữ cảnh trình duyệt, Claude Code trên web sẽ trình bày về kiến trúc.
Bắt đầu miễn phí tại happycapy.ai
Câu Hỏi Thường Gặp
H: Claude Code review có hoạt động trên mọi ngôn ngữ không?
Có. Claude Code không đặc thù cho một ngôn ngữ nào — nó đọc bất kỳ diff dạng văn bản nào và áp dụng lý luận về code chứa trong đó. Nó có xu hướng chính xác nhất trên Python, TypeScript, JavaScript, Go, và Rust (các ngôn ngữ có đại diện lớn trong dữ liệu training), nhưng nó cũng tạo ra các phát hiện hữu ích trên Ruby, Java, C#, và hầu hết các ngôn ngữ phổ biến khác. Đối với các ngôn ngữ đặc thù theo lĩnh vực hoặc các framework khác thường, việc thêm ngữ cảnh vào CLAUDE.md sẽ cải thiện đáng kể đầu ra.
H: /review khác gì với việc chỉ hỏi Claude trong chat để xem diff của tôi?
Sự khác biệt chính là việc sử dụng công cụ dựa trên agent (agentic tool use) và ngữ cảnh repository. Trong chat, Claude chỉ nhìn thấy những gì bạn dán vào. Lệnh /review của Claude Code cho phép agent mở file, theo dõi import, kiểm tra test, và đọc các quy ước dự án của bạn — tạo ra các phát hiện dựa trên codebase thực tế thay vì chỉ đoạn trích. Đối với các thay đổi lớn hoặc liên kết chặt chẽ, sự khác biệt này là đáng kể.
H: Claude Code review có bắt được các lỗ hổng an ninh không?
Nó bắt được một cách đáng tin cậy các loại lỗ hổng đã được biết đến rộng rãi: SQL injection, XSS, lỗ hổng CSRF, tham chiếu đối tượng trực tiếp không an toàn, secret được hardcode, thiếu làm sạch đầu vào (input sanitization). Nó ít đáng tin cậy hơn đối với các vector tấn công mới, đặc thù cho ứng dụng, hoặc các lỗ hổng cần hiểu về môi trường triển khai của bạn. Hãy coi nó như một lượt quét an ninh sơ bộ kỹ lưỡng, không phải một bài kiểm tra thâm nhập (penetration test).
H: Làm sao để dừng việc xét duyệt đánh dấu những thứ linter của tôi đã xử lý rồi?
Thêm các loại trừ rõ ràng vào CLAUDE.md của bạn: "Do not flag import ordering — isort handles this." hoặc "Do not flag trailing whitespace — Prettier enforces it." Hầu hết các nhóm xây dựng danh sách này sau hai đến ba tuần sử dụng và thấy tỷ lệ tín hiệu trên nhiễu (signal-to-noise ratio) cải thiện đáng kể.
H: Tôi có thể sử dụng Claude Code review trong một monorepo với nhiều ngôn ngữ không?
Có. Bạn có thể giới hạn phạm vi xét duyệt bằng một tham số path hoặc một dải git diff chỉ bao gồm subdirectory bạn đã thay đổi. Bạn cũng có thể duy trì các phần xét duyệt đặc thù theo ngôn ngữ trong CLAUDE.md mà agent đọc như một phần của việc nạp ngữ cảnh.
H: Điều gì xảy ra nếu diff rất lớn — chẳng hạn, một PR 3.000 dòng?
Đối với các diff rất lớn, hãy xem xét cách tiếp cận hai lượt: đầu tiên yêu cầu chỉ các phát hiện critical và warning (không có suggestion), phân loại chúng, sau đó yêu cầu phân tích đầy đủ trên các file hoặc subsystem cụ thể. Đối với các refactor cực lớn, chia nhỏ PR là cách khắc phục tốt hơn — cả cho khả năng xét duyệt bởi con người và AI.
H: Đầu ra xét duyệt có tất định (deterministic) không? Tôi sẽ nhận được cùng các phát hiện hai lần chứ?
Không — giống như mọi đầu ra của mô hình ngôn ngữ lớn, có sự biến đổi giữa các lần chạy. Đối với các lượt xét duyệt quan trọng, chạy lệnh hai lần và so sánh các phát hiện là một thực hành hợp lý. Hầu hết các phát hiện critical xuất hiện một cách nhất quán; các gợi ý nhỏ biến đổi nhiều hơn. Sử dụng temperature thấp hơn (nếu có thể cấu hình cho workflow của bạn) hoặc các prompt cụ thể hơn sẽ giảm sự biến đổi.
H: Claude Code review tương tác như thế nào với các linter và công cụ phân tích tĩnh hiện có?
Nó bổ sung cho chúng, không thay thế chúng. Linter của bạn bắt các quy tắc style được thực thi một cách máy móc và nhanh; Claude Code thêm sự hiểu biết ngữ nghĩa — nó có thể đánh giá liệu một hàm làm đúng việc hay không, điều mà không linter nào có thể làm được. Pipeline lý tưởng chạy cả hai: linter trong pre-commit hook (nhanh, tất định), Claude Code review trong CI (chậm hơn, ngữ nghĩa). Lệnh /review biết về cấu hình linter của bạn và tránh trùng lặp các phát hiện mà công cụ của bạn đã tạo ra.
H: Tôi có thể tùy chỉnh format của đầu ra xét duyệt để đăng lên Slack hoặc một ticket không?
Có. Bạn có thể prompt agent để xuất các phát hiện theo một format cụ thể — JSON, markdown, hoặc một template khớp với style comment PR của nhóm bạn. Kết hợp điều này với hệ thống hook và một shell script nhỏ, và bạn có một pipeline xét duyệt hoàn toàn tự động đăng các phát hiện có cấu trúc vào bất cứ đâu nhóm bạn theo dõi.
Liên quan: Tìm hiểu sâu về Claude Code hooks — tự động hóa kiểm tra pre-commit, linting, và các workflow tùy chỉnh khác ngoài xét duyệt.

