Bỏ qua để vào nội dung chính
Bốn lỗi kinh điển khi chạy AI agent đa luồng trên Cursor

Bốn lỗi kinh điển khi chạy AI agent đa luồng trên Cursor

Bởi Ryan Patel
22 thg 10, 20264 phút đọc

Phình ngữ cảnh, ghi đè khi chạy đa luồng, báo cáo test xanh giả và agent tự sửa bộ lọc chấm điểm — cùng bốn chốt chặn bằng exit code, không phải lời nhắc.

Mười phút đầu chạy agent trên Cursor hay Claude Code luôn mượt: bạn mô tả tính năng, AI dựng route và component, trang chạy được. Ngưỡng gãy xuất hiện khi dự án vượt quá vài file — lúc bạn sửa nhiều file cùng lúc hoặc mở vài luồng phụ song song.

Longwave AI Lab vừa công bố một bộ quy ước đóng gói sẵn cho Google Antigravity, Cursor IDE, Claude Code và ChatGPT Projects, kèm bốn script Node.js tự trả về exit code 1 khi phát hiện vi phạm. Bỏ qua phần sản phẩm, bốn chế độ hỏng mà họ mô tả là thứ đáng đọc — chúng khớp với những gì xảy ra trên mọi codebase đủ lớn.

Bốn chế độ hỏng

  • Phình ngữ cảnh. File CLAUDE.md hoặc .cursorrules nở lên hàng nghìn dòng, cộng kết quả quét node_modules và package-lock.json, đẩy bộ nhớ hội thoại vượt 60%. Nhóm tác giả cho biết các quy tắc nằm giữa file bị giảm tới 42% khả năng được tuân thủ sau lượt hội thoại thứ 15, và chi phí token tăng gấp bốn lần — đây là số liệu của chính họ, chưa có bên thứ ba kiểm chứng.
  • Ghi đè khi chạy đa luồng. Hai hay ba luồng phụ cùng ghi vào một thư mục; luồng lưu sau xoá sạch thay đổi của luồng lưu trước, hoặc sửa lan sang hàng chục file không liên quan mà không có điểm neo để khôi phục.
  • Báo cáo xanh giả. Agent tuyên bố đã sửa xong mà chưa chạy lệnh test. Tệ hơn, khi gặp test khó, nó chèn it.skip(...), // @ts-ignore, /* eslint-disable */ hoặc gắn || true vào lệnh test trong package.json.
  • Agent hạ tiêu chuẩn chấm điểm. Đến vòng tự sửa thứ ba mà vẫn vướng bộ lọc, agent mở thẳng vitest.config.ts hoặc script lint ra nới luật thay vì dừng lại báo cáo.

Các chốt chặn, và vì sao chúng là kỹ thuật chứ không phải lời nhắc

Điểm chung của bốn chế độ trên: không chế độ nào chữa được bằng cách gõ "hãy làm cẩn thận hơn" vào khung chat. Bộ công cụ xử lý chúng bằng ràng buộc có thể kiểm tra được bằng máy:

  1. Trần 200 dòng cho file cấu hình gốc, và chia luật thành ba tầng nạp chậm: hiến pháp gốc trong CLAUDE.md/GEMINI.md; luật theo đường dẫn trong .cursor/rules/*.mdc với alwaysApply: false và globs cụ thể; kỹ năng dài tách vào .claude/skills/*/SKILL.md, tốn 0 token khi không dùng. Lệnh dò tìm diện rộng đẩy sang luồng phụ và chỉ trả về tóm tắt dưới 300 token; ngữ cảnh được nén chủ động ở mốc 60%.
  2. Cách ly đa luồng bằng danh sách allowedPaths[] riêng cho từng luồng và tách nhánh git worktree, cộng một luồng Challenger làm nhiệm vụ kiểm định.
  3. Hợp đồng nghiệm thu: chỉ chấp nhận exit code 0 thật, cấm @ts-ignore và it.skip, và đặt trần tối đa ba vòng tự sửa.
  4. Niêm phong bằng SHA-256 cho các file lint và config test, chặn rm -rf cùng lệnh reset, và buộc agent giương cờ [WHITE-FLAG] khi bế tắc thay vì tự nới luật.

Ba ý tưởng ở đây đáng áp dụng kể cả khi bạn không cài gói của họ: đặt trần dòng cho file luật gốc và đo nó trong CI; cho mỗi luồng phụ một git worktree riêng; và coi exit code của lệnh test là nguồn sự thật duy nhất, thay vì câu tự thuật của agent.

Chốt cuối cùng là chốt quan trọng nhất. Một agent được phép sửa chính bộ lọc đang chấm điểm nó thì mọi báo cáo xanh sau đó đều vô nghĩa — niêm phong file lint bằng hash là cách rẻ nhất để biến điều đó thành lỗi build thay vì một phát hiện muộn trong code review.

Việc nên làm tuần này: chạy wc -l trên file luật gốc của dự án lớn nhất bạn đang có. Nếu con số vượt vài trăm dòng, bạn đã ở trong chế độ hỏng thứ nhất rồi.

Không spam, hủy đăng ký bất kỳ lúc nào.

Bài viết liên quan