A.I — Artificial Intelligence & Future Cognition · Bài đọc

Đừng Tin Code AI Vừa Viết: Hãy Bắt Nó Tự Chứng Minh

Nguồn Markdown: 3.ai/done/6-ai-code-review.md ·Bản đọc tối giản ↗

AI vừa viết xong một feature.

Nó nói:

“Đã hoàn thành.”

Nhưng câu hỏi quan trọng hơn là:

“Dựa vào đâu để tin?”

AI sinh code
      ↓
AI tự nhận code đúng
      ✕
      ↓
Diff + test + CI + human judgment
      ↓
Quyết định merge có bằng chứng

AI review không sinh ra để thay con người. Nó sinh ra để bắt những lỗi routine sớm hơn, trước khi reviewer phải tiêu tốn thời gian vào chúng.

🚨 1. Comment không phải là bằng chứng

Một review chỉ có comment như “có thể tối ưu” hoặc “hãy thêm validation” mới chỉ là ý kiến.

Một vòng review có giá trị phải đi xa hơn:

Đọc diff
   ↓
Phát hiện rủi ro
   ↓
Đề xuất test mục tiêu
   ↓
Chạy test trong CI / PR
   ↓
Hiển thị pass / fail
   ↓
Human quyết định merge

Mục tiêu không phải tạo ra nhiều comment nhất.

Mục tiêu là biến nghi ngờ thành evidence có thể kiểm tra.

🔎 2. AI nên kiểm tra phần nào?

AI phù hợp với các việc có pattern và có thể kiểm chứng:

AI có thể làm tốt
├─ syntax và style bất thường
├─ lỗi logic hiển nhiên trong diff
├─ thiếu test cho nhánh mới
├─ rủi ro security phổ biến
├─ regression ở các edge case đã biết
└─ gợi ý test mục tiêu

Nhưng AI không tự quyết định được:

Human phải giữ
├─ business intent
├─ architecture
├─ trade-off hiệu năng / chi phí
├─ maintainability dài hạn
├─ tác động sản phẩm
└─ quyết định cuối cùng trước merge

Nguyên tắc ngắn gọn:

AI nói điều gì có thể sai. Human quyết định điều gì thật sự quan trọng.

🧪 3. Review phải gắn với test và CI

AI code review đặt ở một dashboard riêng sẽ dễ bị bỏ quên. Giá trị tăng lên khi nó nằm ngay trong nơi team làm việc:

IDE / Pull Request
          ↓
AI scan phần diff
          ↓
Tạo finding và test mục tiêu
          ↓
CI chạy test
          ↓
Kết quả trở thành evidence
          ↓
Human review architecture và business logic

Một review tối thiểu nên kiểm tra:

  • thay đổi có đúng acceptance criteria không;
  • có branch hoặc edge case nào chưa được test không;
  • payload, route hoặc API contract có bị đổi ngoài phạm vi không;
  • flow cũ dùng chung helper có bị ảnh hưởng không;
  • lint, unit test, flow test và build có pass không.

AI có thể giúp sinh test, nhưng test vẫn phải phản ánh behavior thật. Một test vô nghĩa chỉ làm CI xanh giả tạo.

⚠️ 4. Bốn cái bẫy trước khi merge

1. Silver bullet
   Tin AI tuyệt đối vì nó nói rất tự tin

2. Comment inflation
   Có quá nhiều comment nhưng không có test hoặc evidence

3. Coverage gap
   Review được style nhưng bỏ sót business logic và downstream impact

4. Manual only
   Chỉ review khi ai đó nhớ bấm chạy, nên nhiều thay đổi lọt qua

Cách phòng thủ:

AI xử lý routine
        +
CI tạo evidence
        +
Human giữ judgment
        ↓
Merge với confidence cao hơn

Confidence cao hơn không có nghĩa là rủi ro bằng không. Nó có nghĩa là team biết mình đã kiểm tra gì và còn mù ở đâu.

🎯 5. Tóm tắt bỏ túi (Take away)

Nếu bạn quên hết những gì vừa đọc, chỉ cần nhớ bảng này là đủ:

Điều cần nhớ Ý nghĩa
Comment chưa đủ Review tốt phải tạo ra test hoặc evidence kiểm chứng được
AI kiểm tra routine Human giữ architecture, business logic và trade-off
Review phải ở trong flow Gắn vào IDE, PR và CI để không phụ thuộc trí nhớ
Test phải có nghĩa Test xanh nhưng không kiểm tra behavior thật vẫn là rủi ro
Không có confidence tuyệt đối Hãy biết đã kiểm tra gì và coverage gap còn lại ở đâu