AI không chỉ bịa fact. Trong vibe coding, nó còn bịa niềm tin.

Nó có thể nói “implemented”, “tested”, “secure”, “production-ready”, “fixed” bằng giọng rất chắc. Nhưng phía sau có thể là test chưa chạy, auth chỉ nằm ở UI, API chưa gọi thật, fallback che lỗi, hoặc build pass vì code path nguy hiểm chưa được đụng tới.

Điểm nguy hiểm là niềm tin giả này xuất hiện rất nhanh. Nhanh ngang tốc độ AI build app.

Nếu bạn chỉ nhìn summary của agent, bạn sẽ thấy tiến độ. Nếu bạn nhìn evidence, bạn mới biết tiến độ đó có thật không.

Summary không phải evidence

Agent summary thường nghe rất gọn:

Implemented login, dashboard, booking management, and error handling.
All tests pass.
Ready for review.

Đọc dễ chịu. Nhưng mỗi câu cần bằng chứng.

  • Implemented login: auth thật hay fake login?
  • Dashboard: data thật hay mock?
  • Booking management: create, update, delete có persist không?
  • Error handling: lỗi API thật hay chỉ có try/catch trang trí?
  • Tests pass: test nào, chạy command nào?
  • Ready for review: review cái gì, còn limitation nào?

Một summary tốt phải có evidence đi kèm:

Changed files:
- src/pages/bookings.tsx
- src/lib/api/bookings.ts

Verified:
- npm run build
- Manual test: create booking, refresh, booking remains

Limitations:
- Auth still uses existing session only
- Payment is not implemented

Nếu thiếu phần VerifiedLimitations, summary đang bán cảm giác nhiều hơn bán sự thật.

Test rỗng tạo tự tin giả

“All tests pass” nghe mạnh. Nhưng test có thể rỗng.

Các kiểu test rỗng:

  • Chỉ test component render mà không test flow.
  • Mock API quá nhiều nên không bắt contract sai.
  • Snapshot pass dù behavior hỏng.
  • Build pass nhưng form submit không lưu.
  • Lint pass nhưng permission sai.
  • Unit test pass nhưng integration chưa chạy.

Với vibe coding, một câu hỏi tốt hơn là:

Which user behavior did the test prove?

Nếu không trả lời được, test đó chỉ là tín hiệu yếu.

Fallback có thể che bug

Agent rất hay thêm fallback để app không vỡ. Fallback có lúc tốt, nhưng trong prototype chuyển sang real app, fallback dễ che sự thật.

Ví dụ:

  • API lỗi thì dùng sample data.
  • Auth missing thì auto login demo user.
  • Env thiếu thì dùng hard-coded placeholder.
  • Save fail thì vẫn hiện success toast.
  • Permission lỗi thì ẩn UI thay vì chặn backend.

Kết quả: app trông ổn khi đáng lẽ phải báo lỗi.

Prompt nên rõ:

Do not add silent fallback.
If real API, auth, env, or permission is missing, fail visibly and report the missing piece.

Trong vibe coding, lỗi hiện ra sớm là bạn tốt. Lỗi bị che là nợ.

”Production-ready” là claim phải bị nghi ngờ

Khi agent nói “production-ready”, hãy coi đó là claim cần audit, không phải kết luận.

Production-ready tối thiểu phải có:

  • Real data path.
  • Real auth and permission.
  • Environment separation.
  • Error handling visible to user.
  • Logs or error tracking.
  • Rollback path.
  • No secrets in frontend.
  • Manual or automated verification of core flow.
  • Owner who understands deploy and recovery.

Nếu agent không chứng minh từng phần, hãy đổi label thành:

Prototype-ready for review.

Label đúng giảm rủi ro hơn rất nhiều so với summary đẹp.

Bắt AI nói bằng mức chắc chắn

Một cách giảm niềm tin giả là bắt agent phân loại claim.

Prompt:

Classify your final report into:
- Verified by command
- Verified manually
- Inferred from code
- Assumed
- Not implemented

Do not mix assumptions into verified items.

Khi đó bạn sẽ thấy sự khác biệt. “Build passed” là verified by command. “This is secure” thường chỉ là inferred hoặc assumed nếu chưa test permission thật.

Đừng cấm agent suy luận. Nhưng bắt nó dán nhãn suy luận.

Khi agent quá tự tin, giảm quyền sửa

Nếu agent đã nói chắc nhưng bạn phát hiện sai, đừng prompt:

Fix everything.

Prompt đó cho nó thêm quyền tạo niềm tin giả mới.

Dùng prompt hẹp hơn:

Stop editing.
Compare your previous claim with the actual evidence.
List exactly which claims were wrong or unsupported.
Then propose one smallest fix.

Đây là cách biến một lỗi thành feedback loop, không biến nó thành vòng sửa mù.

Chốt lại

AI build app nhanh. Nhưng nó cũng tạo narrative nhanh: đã làm, đã test, đã secure, đã xong. Narrative đó có thể đúng, cũng có thể chỉ là giọng tự tin phủ lên một prototype chưa kiểm chứng.

Vibe coding có kiểm soát không phải là không tin AI. Nó là không tin summary nếu thiếu evidence.

Hãy bắt agent tách verified, inferred, assumed, and not implemented. Hãy yêu cầu lỗi hiện ra thay vì fallback im lặng. Hãy đổi “production-ready” thành “prototype-ready” khi chưa có bằng chứng.

Bạn không cần chậm lại ở mọi bước. Nhưng ở bước tạo niềm tin, phải chậm.

Đọc thêm trong series