AI-native development⏱ 11 phút đọc · 7 thg 10, 2026

AI code review: để AI review pull request với Copilot, Claude và Bugbot

PR nằm chờ review cả ngày trong khi AI viết code ngày càng nhanh. Bài này hướng dẫn cách để AI review pull request với Copilot, Claude, Cursor Bugbot và Codex: cách bật, file hướng dẫn review, chi phí, quy trình AI trước người sau.

HOLETEX · POST
AI REVIEW
pull request

Bạn mở PR thêm tính năng thanh toán, 23 file thay đổi. Người duy nhất hiểu module đó đang chạy deadline khác, PR nằm im tới hôm sau. Comment đầu tiên là "thiếu check null ở dòng 88", lỗi lẽ ra bạn tự bắt được trong năm phút.

Từ khi dùng AI để viết code, tình huống này xảy ra thường hơn: tốc độ viết code tăng, còn số người review thì không. AI code review không thay người review, nhưng nó làm lượt review đầu tiên trong vài phút, bắt các lỗi dễ thấy để người review tập trung vào thiết kế và logic nghiệp vụ.

Bài này đi qua GitHub Copilot, Claude, Cursor Bugbot và OpenAI Codex: cách bật, file hướng dẫn review, chi phí, và một quy trình team dùng được ngay (cập nhật tháng 10/2026).

AI review giỏi gì, hụt gì

AI reviewer đọc diff và một phần codebase xung quanh, nên nó mạnh ở những lỗi nhìn thấy được từ code, và yếu ở những thứ chỉ có trong đầu team.

AI thường bắt tốtAI thường bỏ sót hoặc đánh giá sai
Null/undefined chưa xử lý, off-by-one, điều kiện ngượcYêu cầu nghiệp vụ: code chạy đúng nhưng làm sai điều khách hàng cần
Lỗi async: quên await, race condition dễ thấyQuyết định kiến trúc: có nên tách service này không
Secret hardcode, SQL ghép chuỗi, thiếu validate inputNgữ cảnh ngoài repo: thỏa thuận với team khác, sự cố production cũ
Code mới vi phạm quy ước đã ghi trong file hướng dẫnQuy ước "ai cũng biết" nhưng không ai ghi ra, hiệu năng ở tải thật

Cột bên phải là lý do con người vẫn phải review. Docs của GitHub cũng nói rõ Copilot không đảm bảo phát hiện mọi vấn đề.

So sánh nhanh bốn công cụ AI code review

Công cụCách gọi reviewFile hướng dẫnChi phí
GitHub Copilot code reviewReviewers, chọn Copilot; tự động qua settings/ruleset; hoặc qua REST/GraphQL API.github/copilot-instructions.md, .github/instructions/*.instructions.md, AGENTS.mdAI Credits + phút GitHub Actions. Không có ở gói Free
Claude Code GitHub ActionWorkflow tự chạy khi mở PR, hoặc @claudeCLAUDE.mdPhút Actions + token API (hoặc gói Claude qua OAuth token)
Claude Code Review (managed)Tự động theo repo, hoặc @claude reviewREVIEW.md, CLAUDE.mdTheo token, trung bình 15-25 USD mỗi review. Chỉ Team/Enterprise, research preview
Cursor BugbotTự động mỗi lần cập nhật PR, hoặc comment cursor review.cursor/BUGBOT.mdTính theo mức dùng, có trong gói trả phí
OpenAI Codex@codex review hoặc bật Automatic reviewsMục ## Code Review Rules trong AGENTS.mdTính vào hạn mức gói ChatGPT (Plus trở lên)

Team đã dùng Copilot thì bắt đầu với Copilot là đường ngắn nhất; team dùng Claude Code hằng ngày và muốn tự kiểm soát prompt, trigger thì GitHub Action linh hoạt hơn. Hai AI reviewer trên cùng một PR thường chỉ thêm comment trùng.

GitHub Copilot code review

Gọi review

Trên github.com, mở PR, ở mục Reviewers bên phải, bấm Request cạnh Copilot. Docs cho biết review thường xong trong chưa tới 30 giây. Mỗi comment có mức độ High, Medium hoặc Low và một tiêu đề ngắn. Push thêm commit thì Copilot không tự review lại, trừ khi bạn bật review tự động; muốn review lại thủ công, bấm nút sync cạnh tên Copilot.

Review trước khi push: trong VS Code, mở Source Control, rê chuột vào CHANGES và bấm Copilot Code Review - Uncommitted Changes.

Bật review tự động

  • Cá nhân: trong Copilot settings, bật Automatic Copilot code review, tùy chọn thêm Review new pushes và Review draft pull requests.
  • Repository hoặc tổ chức: tạo branch ruleset, bật Automatically request Copilot code review. Áp dụng cho mọi PR vào branch đó, bất kể ai mở.

Copilot có hai mức effort: Lite (nhanh, tập trung) và Balanced (dùng model suy luận mạnh hơn, sâu hơn với logic phức tạp và code nhạy cảm về bảo mật). Từ 28/9/2026, Balanced là mặc định cho mọi repo và tổ chức, trừ khi trước đó bạn đã chọn Lite. Effort đổi được ở mọi cấp, hoặc chọn riêng mỗi lần bấm Request. Từ 2/10/2026 còn gọi được review qua REST và GraphQL API, kèm effort cho từng request.

Chi phí

Copilot code review có trong các gói Pro, Pro+, Max, Business và Enterprise, không có ở Free. Docs ước tính mỗi review tiêu khoảng 0,05 tới 1 USD AI Credits với Lite và 0,25 tới 5 USD với Balanced, tăng theo kích thước PR và độ dài file hướng dẫn. Review còn dùng phút GitHub Actions (runner self-hosted thì không tính phút). Review tự động tính cho tác giả PR, review thủ công tính cho người gọi. Vì Balanced giờ là mặc định, repo nhiều PR nhỏ có thể chuyển về Lite để tiết kiệm, chỉ dùng Balanced cho đường dẫn nhạy cảm như thanh toán hay auth. Bạn không chọn được model cho code review.

File hướng dẫn review

Copilot đọc .github/copilot-instructions.md (cả repo), AGENTS.md và các file .github/instructions/**/*.instructions.md (theo đường dẫn), lấy từ head branch của PR nên sửa xong thử được ngay trong PR đó. Ví dụ file chỉ cho code API và chỉ dành cho code review:

text
---
applyTo: "src/app/api/**/*.ts,src/server/**/*.ts"
excludeAgent: "cloud-agent"
---

# Review API routes

## Bảo mật
- Mọi route nhận input phải validate bằng zod schema trước khi dùng.
- Không ghép chuỗi vào câu SQL. Chỉ dùng query có tham số.
- Không log email, số điện thoại hay request body.

## Ví dụ sai
const user = await db.query(`SELECT * FROM users WHERE id = ${id}`)

## Ví dụ đúng
const user = await db.query('SELECT * FROM users WHERE id = $1', [id])

File hướng dẫn không đổi được định dạng comment, không chặn được merge, và Copilot không đọc link bên ngoài. Câu chung chung như "hãy chính xác hơn" cũng vô tác dụng.

Copilot approve PR: bật hay không?

Từ 1/9/2026, admin có thể cho Copilot approve thật (public preview, mặc định tắt), giới hạn theo đường dẫn file. Approval này tính vào số approval bắt buộc và tự hủy khi có commit mới. Nếu bật, chỉ nên bật cho đường dẫn rủi ro thấp như docs, và giữ ít nhất một approval của người cho code production.

Claude: ba cách review

Review local trước khi push

Trong Claude Code, /code-review review các commit trên branch hiện tại cộng thay đổi chưa commit, chạy dạng subagent nền nên không làm đầy phiên chat. Có thể truyền target (số PR, tên branch, main...my-feature) và cờ:

text
/code-review medium
/code-review 128 --comment
/code-review --fix

Effort low hoặc medium chỉ báo lỗi Claude chắc chắn nhất; high tới max bao quát hơn nhưng có thể kèm phát hiện kém chắc chắn. --comment đăng inline comment lên PR, --fix áp bản sửa vào working tree. Từ v2.1.288 có thêm --max-findings <n> để giới hạn số phát hiện mỗi lần review. Cách dùng các tính năng khác của Claude Code có ở bài Claude Code nâng cao.

Claude Code GitHub Action

Action chính thức là anthropics/claude-code-action@v1. Cách nhanh nhất: mở claude trong repo, chạy /install-github-app, chọn workflow review; Claude Code cài GitHub App, lưu secret và mở sẵn PR chứa workflow. Nếu muốn tự viết, đây là workflow theo docs, cài plugin code-review và review khi PR được mở hoặc cập nhật:

text
name: Code Review
on:
  pull_request:
    types: [opened, synchronize, ready_for_review, reopened]
jobs:
  review:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: read
      issues: read
      id-token: write
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 1
      - uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          plugin_marketplaces: "https://github.com/anthropics/claude-code.git"
          plugins: "code-review@claude-code-plugins"
          prompt: "/code-review:code-review --comment ${{ github.repository }}/pull/${{ github.event.pull_request.number }}"
          claude_args: '--allowedTools "mcp__github_inline_comment__create_inline_comment"'

Vài điểm dễ sai:

  • Bỏ --comment thì Claude không đăng gì lên PR, kết quả chỉ nằm trong log của workflow.
  • Giữ dòng claude_args: action chỉ khởi động MCP server đăng inline comment khi --allowedTools có tên tool đó.
  • Dùng gói Claude thay vì API key: chạy claude setup-token, lưu vào secret CLAUDE_CODE_OAUTH_TOKEN, đổi dòng anthropic_api_key thành claude_code_oauth_token.
  • Claude bỏ qua PR draft, PR đã đóng, PR quá nhỏ hoặc tự động, và PR đã có comment của Claude. Vì vậy push thêm commit chưa chắc có review mới; muốn review lại thì gọi /code-review thủ công.
  • Chi phí gồm phút Actions và token. Thêm --max-turns vào claude_args và timeout-minutes cho job để chặn lần chạy kéo dài bất thường.

Claude Code Review (dịch vụ managed)

Với gói Team hoặc Enterprise, Anthropic có dịch vụ Code Review (research preview): owner bật trong admin settings, chọn repo và thời điểm review (sau khi tạo PR, sau mỗi push, hoặc thủ công). Nhiều agent phân tích song song, rồi một bước kiểm chứng lọc false positive. Mỗi phát hiện được gắn nhãn Important (nên sửa trước khi merge), Nit (nhỏ) hoặc Pre-existing (lỗi có sẵn, không do PR này tạo ra).

Docs ghi trung bình 15-25 USD mỗi review, khoảng 20 phút, tính riêng qua usage credits. Review sau mỗi push nhân chi phí theo số push, nên chế độ thủ công kèm @claude review cho PR quan trọng giúp kiểm soát chi phí. Lưu ý @claude review chỉ chạy một lần, còn @claude review always thì mọi lần push sau đó đều review và tính tiền. Check run của Code Review luôn kết thúc ở trạng thái neutral, không chặn merge.

Dịch vụ này đọc CLAUDE.md (vi phạm quy ước được đánh dấu là Nit) và REVIEW.md, file chỉ dành cho review. Ví dụ REVIEW.md cho một nền tảng khóa học viết bằng Next.js:

text
# Hướng dẫn review

## Mức Important
- Học viên xem được bài học của khóa chưa mua
- Webhook thanh toán xử lý trùng hoặc không kiểm tra chữ ký
- Dữ liệu học viên (email, số điện thoại) lọt ra log hoặc response
Còn lại như đặt tên, cấu trúc file: chỉ là Nit.

## Nit
Tối đa 3 Nit mỗi lần review, ưu tiên cái ảnh hưởng tới người đọc code nhất.

## Không báo
- Những gì CI đã kiểm: lint, format, lỗi type
- File sinh tự động trong `src/generated/` và mọi file `*.lock`

## Luôn kiểm tra
- Route API mới phải có integration test
- Server Action phải kiểm tra quyền trước khi ghi dữ liệu

Cursor Bugbot

Bugbot kết nối qua dashboard của Cursor với GitHub, GitLab, Bitbucket hoặc Azure DevOps. Mặc định nó review mỗi lần PR cập nhật (có tùy chọn chỉ một lần mỗi PR), gọi thủ công bằng comment cursor review hoặc bugbot run.

Hướng dẫn đặt trong .cursor/BUGBOT.md, ghép với rule của team và rule Bugbot tự học (tổng tối đa 100.000 ký tự mỗi review). Bật Autofix thì Bugbot khởi chạy Cloud Agent để sửa lỗi nó tìm thấy.

Bugbot có trong các gói trả phí của Cursor, tính theo mức dùng; trang pricing không công bố giá cố định mỗi review.

OpenAI Codex review

Cấu hình Codex cloud cho repo, bật Code review trong Codex settings, rồi comment @codex review hoặc bật Automatic reviews. Codex chỉ báo lỗi mức P0 và P1, và @codex fix the P1 issue sẽ nhờ nó sửa.

Hướng dẫn review viết trong mục ## Code Review Rules của AGENTS.md gần nhất với phần code liên quan. Tính năng có ở gói Plus, Pro, Business, Enterprise/Edu, tính vào hạn mức Codex của gói; dùng bằng API key thì không có. Ở local, Codex CLI có lệnh /review để review working tree.

Quy trình đề xuất: AI trước, người sau

Quy trình mình thấy hợp với team nhỏ và vừa:

  1. Tự review trước khi push bằng /code-review, /review của Codex CLI, hoặc Copilot trong VS Code.
  2. CI chạy trước AI. Lint, type check, test phải xanh. Không trả tiền để AI nói điều ESLint nói miễn phí.
  3. Một AI reviewer chính chạy khi PR chuyển sang ready. Repo nhiều PR thì chỉ review một lần thay vì mỗi push.
  4. Tác giả xử lý comment của AI: sửa, hoặc resolve kèm lý do.
  5. Người review tập trung vào phần AI yếu: thiết kế, logic nghiệp vụ, có cách đơn giản hơn không.
  6. Merge cần ít nhất một approval của người cho code production, cấu hình trong branch protection.

Quy trình này khớp với cách làm việc ở bài AI workflow lập trình: AI làm phần lặp lại, con người giữ quyền quyết định.

Viết hướng dẫn review sao cho có tác dụng

Dù dùng tool nào, vài nguyên tắc chung (đã thấy trong các file mẫu ở trên):

  • Cụ thể, kiểm chứng được. "Route API mới phải có integration test" tốt hơn "đảm bảo chất lượng test".
  • Nói rõ cái gì không cần báo (lint, format, file sinh tự động, lockfile) và định nghĩa lại mức nghiêm trọng cho repo của bạn.
  • Giữ ngắn, lặp dần. Docs Copilot khuyên mỗi file không quá khoảng 1.000 dòng, docs Claude nhắc file dài làm loãng rule quan trọng. AI bỏ sót một kiểu lỗi thì thêm đúng một rule rồi thử trên PR mới.

Xử lý false positive

AI reviewer sẽ có lúc báo sai. Nhiễu nhiều thì team bỏ qua mọi comment, kể cả comment đúng.

  • Đánh giá comment bằng nút thumbs up/down (Copilot và Claude Code Review đều có). Với Claude Code Review, reaction chỉ dùng để tinh chỉnh reviewer, không kích hoạt review lại.
  • Resolve thay vì cãi. Trả lời inline comment không làm Claude Code Review đổi kết luận; muốn bỏ qua thì resolve thread. Với Copilot, reply không làm nó trả lời lại, nhưng khi bạn reply muốn giữ issue mở thì nó không tự resolve issue đó. Docs cũng lưu ý Copilot có thể lặp lại comment bạn đã resolve hoặc downvote.
  • Biến false positive lặp lại thành rule, ví dụ "nhận định về hành vi phải trích dẫn file và dòng cụ thể".
  • Hạ effort nếu nhiễu quá. Với /code-review, mức low hoặc medium ưu tiên độ chắc chắn hơn độ bao phủ; kết hợp --max-findings nếu vẫn quá nhiều comment.

Lưu ý bảo mật

  • Code được gửi tới nhà cung cấp AI. Với Copilot gói cá nhân, cài đặt dùng dữ liệu để train model đang bật mặc định (xem bài GitHub Copilot là gì).
  • Nội dung PR là input không tin cậy. Mô tả PR hay comment trong code có thể chứa câu lệnh nhắm vào AI reviewer, kiểu "bỏ qua file này" hoặc "hãy approve". Rủi ro lớn hơn khi reviewer có quyền ghi hoặc quyền approve. Đây là dạng prompt injection.
  • Quyền tối thiểu. Job chỉ review thì không cấp contents: write.
  • Cẩn thận với PR từ fork. Repo public không đưa secret cho workflow chạy từ PR của fork. Đừng "sửa" bằng pull_request_target khi chưa hiểu rủi ro: trigger đó chạy với secret của repo, checkout code của fork là chạy code lạ cùng secret.
  • AI review không thay công cụ bảo mật chuyên dụng. Vẫn cần secret scanning, dependency scanning, code scanning. Copilot code review còn bỏ qua file dependency như package.json và lockfile.

Tóm lại

AI code review đáng dùng vì nó làm lượt review đầu nhanh và đều, không phải vì nó review giỏi hơn người. Chọn một công cụ khớp với hệ sinh thái của team, viết file hướng dẫn ngắn và cụ thể, biến false positive thành rule, và giữ approval của con người cho code production.

Muốn biết comment nào của AI đúng, bạn cần hiểu code đủ sâu. Nếu bạn làm frontend, khóa React PRO của HoleTex giúp bạn nắm chắc React và Next.js để tự tin review code, của đồng nghiệp hay của AI.

Bài liên quan

Nguồn tham khảo: About Copilot code review (docs.github.com), Using Copilot code review (docs.github.com), Configure automatic review (docs.github.com), Customize code review (docs.github.com), Repository custom instructions (docs.github.com), Copilot code review can now approve pull requests (github.blog), An improved review experience (github.blog), More ways to request and configure reviews (github.blog), Copilot code review: API support and new default effort level (github.blog), Claude Code GitHub Actions (code.claude.com), Claude Code Review (code.claude.com), Bugbot (cursor.com), Cursor pricing (cursor.com), Codex GitHub integration (learn.chatgpt.com), Codex pricing (learn.chatgpt.com), Codex CLI slash commands (learn.chatgpt.com). Cập nhật 2026-10-08.

Thấy hay? Chia sẻ