Chiều thứ sáu, bạn nhờ AI thêm tính năng xuất đơn hàng ra Excel. Nó viết xong, báo "đã hoàn thành, test đều qua". Bạn deploy. Sáng thứ hai khách báo file Excel trống, và trang thanh toán cũng lỗi theo, dù bạn không hề nhờ đụng vào trang đó.
Chuyện kiểu này không hiếm. AI viết code rất nhanh, nhưng nó có sáu cái bẫy quen thuộc. Biết trước thì tránh được gần hết. Mình đi qua từng cái: dấu hiệu để nhận ra, lý do nó xảy ra, và cách phòng.
1. AI bịa ra hàm hoặc thư viện không có
Dấu hiệu: code trông rất hợp lý, nhưng chạy lên báo "không tìm thấy hàm" hoặc "không có thư viện này". Có khi tên hàm giống thật đến mức bạn mất nửa tiếng đi tìm lỗi ở chỗ khác.
Lý do: AI đoán chữ tiếp theo dựa trên những gì nó đã thấy, không tra cứu một danh sách hàm chính xác. Khi nhớ không rõ, nó điền vào một cái tên nghe hợp lý. Tài liệu của Anthropic cũng khuyên cho phép AI nói "tôi không chắc" và yêu cầu nó dẫn nguồn khi trả lời dựa trên tài liệu.
Cách phòng: cho AI xem tài liệu thật của thư viện (dán đoạn liên quan hoặc đưa link) thay vì để nó tự nhớ. Trước khi cài thư viện lạ, tự mở trang chính thức của nó và xem nó có thật, còn được duy trì không. Và luôn chạy thử, vì lỗi này lộ ra ngay lúc chạy.

2. Sửa lan sang chỗ bạn không nhờ
Dấu hiệu: bạn nhờ sửa một hàm, nhưng danh sách file thay đổi dài hơn nhiều. Nó đổi tên biến ở chỗ khác, "dọn" một đoạn code cũ, thêm một thư viện.
Lý do: AI cố làm cho tổng thể gọn đẹp, và nó không biết đoạn code "thừa" kia đang được một chức năng khác dùng.
Cách phòng: nói rõ phạm vi ngay từ đầu ("chỉ sửa file này, không đổi tên gì, không thêm thư viện"). Làm trên một nhánh git riêng để xem được chính xác những gì đã đổi, bằng lệnh git diff. Đọc diff trước khi nhận. Tài liệu Claude Code cũng khuyên đặt phạm vi rõ ràng, chỉ ra file và tình huống cần sửa, thay vì ra lệnh chung chung.

3. Chạm giới hạn lượt dùng giữa chừng
Dấu hiệu: đang làm dở, công cụ báo hết hạn mức, bạn phải chờ vài giờ. Tệ hơn, nó dừng giữa lúc đã sửa nửa số file.
Lý do: các gói thuê bao tính hạn mức theo cửa sổ thời gian. Theo trang giá của Claude (kiểm ngày 21/10/2026), hạn mức tính theo cửa sổ 5 giờ cộng giới hạn theo tuần, dùng chung giữa app Claude và Claude Code. Tài liệu giá của Codex cũng nêu cửa sổ 5 giờ và có thể có giới hạn theo tuần, và chế độ nhanh (fast mode) hay việc tạo ảnh đều tiêu hao hạn mức nhanh hơn.
Cách phòng: chia việc lớn thành các bước nhỏ, mỗi bước xong là commit, để lúc bị ngắt bạn vẫn có một điểm sạch để quay lại. Nhờ AI ghi tiến độ vào một file ghi chú để phiên sau (hoặc công cụ khác) đọc và làm tiếp. Việc đơn giản dùng mô hình nhỏ và rẻ hơn. Nếu thường xuyên chạm trần, tính xem dùng API trả theo lượng dùng có hợp hơn không.
4. Cuộc trò chuyện dài, AI quên điều bạn dặn
Dấu hiệu: đầu phiên nó làm đúng quy ước của bạn, càng về sau càng lệch. Nó hỏi lại điều bạn đã nói, hoặc lặp lại một lỗi đã sửa.
Lý do: mọi thứ trong cuộc trò chuyện, gồm lời bạn, file nó đọc và kết quả lệnh, đều nằm trong một vùng nhớ có giới hạn (gọi là ngữ cảnh, hay context). Tài liệu Claude Code nói thẳng: vùng này đầy rất nhanh, và khi đầy thì chất lượng giảm, AI có thể bắt đầu "quên" chỉ dẫn trước đó.
Cách phòng: một phiên một việc. Xong việc thì bắt đầu phiên mới (Claude Code có lệnh /clear). Nếu bạn đã sửa AI hai lần mà vẫn sai, đừng sửa lần ba, hãy mở phiên mới với yêu cầu rõ hơn. Những quy ước phải nhớ lâu thì ghi vào file hướng dẫn của dự án (với Claude Code là CLAUDE.md), giữ file ngắn, kẻo chính nó cũng bị bỏ qua.

5. Test "xanh" nhưng chẳng kiểm gì
Dấu hiệu: AI báo toàn bộ test qua, nhưng lỗi vẫn còn. Khi mở file test ra, bạn thấy nó chỉ gọi hàm mà không kiểm kết quả, hoặc kiểm đúng cái nó vừa viết, hoặc đã sửa luôn test cho khớp code sai.
Lý do: nếu mục tiêu là "làm test qua", cách ngắn nhất đôi khi là làm test dễ đi. AI không cố lừa bạn, nhưng nó tối ưu theo điều bạn đo.
Cách phòng: tự viết trước vài ví dụ đúng sai bằng lời ("100 giảm 10 phần trăm phải ra 90"), đưa cho AI làm chuẩn. Yêu cầu nó cho bạn xem kết quả chạy thật thay vì chỉ nghe lời báo. Cho một AI khác (hoặc phiên mới) đọc lại test và tìm chỗ nó không kiểm gì. Tài liệu Claude Code cũng nhấn mạnh: không có cách kiểm thì "trông xong" là tín hiệu duy nhất, và bạn phải làm vòng kiểm đó thay.
6. Lộ khoá bí mật trong prompt
Dấu hiệu: bạn dán cả file cấu hình hoặc cả đoạn log lên để hỏi, trong đó có mật khẩu database hoặc khoá API.
Lý do: mọi thứ bạn dán đều được gửi đi. Với Claude Code, tài liệu ghi rằng hội thoại được lưu cục bộ dạng văn bản thường trong thư mục ~/.claude/projects/ (mặc định 30 ngày). Và theo từng loại tài khoản, nội dung có thể được lưu hoặc dùng cho mục đích khác theo điều khoản (xem bài Claude, Codex và Gemini: chọn trợ lý AI viết code nào cho việc gì phần dữ liệu).
Cách phòng: đừng bao giờ dán khoá thật. Thay bằng chữ giả như API_KEY=xxx. Đặt bí mật trong file .env và đưa file đó vào .gitignore. Nếu lỡ dán, coi như lộ: đổi khoá ngay, không cần chờ xem có chuyện gì.
Cho bạn nào viết code
Ba đoạn nhỏ dưới đây mình đã chạy thật trên máy (Python 3, pytest).
Kiểm xem một hàm AI gợi ý có tồn tại không, trước khi mất thời gian:
import importlib
def exists(module, name):
try:
return hasattr(importlib.import_module(module), name)
except ImportError:
return False
print(exists("json", "loads")) # True
print(exists("json", "parse_file")) # False
Test giả và test thật. Hàm bên dưới cố tình sai, nhưng test đầu vẫn xanh:
def apply_discount(price, pct):
return 0 # sai cố ý
def test_fake():
apply_discount(100, 10) # luôn xanh
def test_real():
assert apply_discount(100, 10) == 90 # đỏ, đúng như cần
Chạy pytest -q ra "1 failed, 1 passed": chỉ test thật mới bắt được lỗi.
Quét nhanh bí mật trước khi dán (chỉ bắt vài mẫu quen, không thay cho công cụ chuyên dụng):
import re, sys
PATTERNS = [
r"sk-[A-Za-z0-9_-]{20,}",
r"AKIA[0-9A-Z]{16}",
r"(?i)(password|passwd|secret|token)\s*[:=]\s*\S+",
r"-----BEGIN [A-Z ]*PRIVATE KEY-----",
]
text = sys.stdin.read()
if any(re.search(p, text) for p in PATTERNS):
print("DUNG LAI: có vẻ có bí mật")
sys.exit(1)
Làm gì tiếp theo
Chọn một dự án nhỏ và thử ba thói quen: làm trên nhánh riêng, luôn đọc diff, và đưa cho AI ví dụ đúng sai trước khi nhờ viết. Ba thói quen này giúp tránh được nhiều chuyện ở trên. Muốn viết yêu cầu cho AI rõ hơn, xem Viết yêu cầu cho AI sao cho nó làm đúng và không bịa. Còn nếu cho AI chạy lệnh thẳng trên máy, đọc tiếp Cho AI agent chạy lệnh trên máy hoặc máy chủ của bạn: giữ an toàn thế nào.



