Product Management
Đăng nhập
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

Bài 1 — AI Coding Agent là gì và khác gì so với autocomplete

Đã đọc 0/12 mục · còn khoảng 5 phút
Cách chúng tôi ghi nhận

Một mục được tính là đã đọc khi nó nằm giữa màn hình đủ lâu so với độ dài của nó (bảng và sơ đồ tính một nửa), bạn vẫn đang cuộn hoặc bấm phím, và bạn đã thấy tới cuối mục. Lướt nhanh hoặc để tab mở không được tính. Chúng tôi chỉ lưu thời gian đọc từng mục — không lưu gì khác.

Rất nhiều người gọi chung mọi công cụ AI viết code là "Copilot", nhưng thực tế có ba cấp độ khác nhau. Hiểu đúng cấp độ giúp bạn chọn công cụ đúng và không kỳ vọng sai.

Ba cấp độ trợ lý AI trong lập trình

  • Autocomplete (gợi ý dòng lệnh): AI đoán vài dòng tiếp theo dựa trên ngữ cảnh con trỏ. Bạn vẫn là người lái. Ví dụ điển hình: GitHub Copilot bản gốc.
  • Chat/Edit trong IDE: Bạn chọn một đoạn code, ra lệnh bằng ngôn ngữ tự nhiên ("refactor hàm này thành async"), AI sửa ngay trong file. Cursor và Windsurf mạnh ở đây.
  • Agent tự chủ (agentic): Bạn giao một nhiệm vụ ("thêm endpoint đăng nhập, viết test, chạy test cho pass"), agent tự đọc nhiều file, sửa nhiều nơi, chạy lệnh terminal, đọc kết quả và lặp lại. Claude Code, Aider, Devin thuộc nhóm này.
Điểm khác biệt cốt lõi: autocomplete phản ứng theo con trỏ, còn agent lập kế hoạch và hành động qua nhiều bước, có vòng lặp phản hồi (đọc lỗi -> sửa -> chạy lại).

Ví dụ cụ thể

Giả sử bạn cần sửa một bug: hàm tính thuế trả sai số khi giá trị âm.

  • Với autocomplete: bạn phải tự mở file, tự tìm hàm, gõ sửa; AI chỉ gợi ý cú pháp.
  • Với agent: bạn gõ một câu.
Bug: calc_tax() trả sai với input âm.
Hãy tìm hàm, viết 1 test tái hiện bug, sửa, chạy test cho pass.

Agent sẽ grep tìm calc_tax, đọc file, viết test, chạy pytest, đọc thông báo lỗi, sửa, chạy lại — tất cả trong một lượt.

Các bước để nhận diện bạn đang cần cấp độ nào

  • Xác định phạm vi công việc: một dòng, một hàm, hay nhiều file?
  • Hỏi: công việc có cần chạy lệnh (test, build, git) không?
  • Nếu chỉ gõ nhanh trong lúc code -> autocomplete là đủ.
  • Nếu cần sửa có chủ đích một vùng cụ thể -> chat/edit.
  • Nếu cần "giao việc rồi đi làm việc khác" -> agent tự chủ.

Khung tư duy: Tam giác Kiểm soát – Tự chủ – Rủi ro

  • Càng tự chủ, càng nhanh nhưng càng cần review kỹ.
  • Càng kiểm soát (từng dòng), càng an toàn nhưng chậm.
  • Chọn cấp độ theo mức độ bạn tin vào output và khả năng rollback.

Checklist chọn cấp độ

  • [ ] Tôi có thể mô tả nhiệm vụ bằng một câu rõ ràng không?
  • [ ] Có test hoặc cách kiểm chứng tự động không?
  • [ ] Nếu agent làm sai, tôi có git để hoàn tác không?
  • [ ] Vùng code có nhạy cảm (thanh toán, bảo mật) không?

Sai lầm thường gặp

  • Kỳ vọng agent "đọc được suy nghĩ": nhiệm vụ mơ hồ -> kết quả lan man. Agent cần tiêu chí thành công rõ ràng.
  • Giao việc lớn cho agent mà không có test: không có cách kiểm chứng -> bạn phải đọc từng dòng, mất luôn lợi ích tốc độ.
  • Dùng autocomplete để làm việc của agent: cố dùng Copilot gõ tay refactor 10 file, chậm và dễ sót.
  • Không dùng version control: agent sửa hỏng mà không rollback được là thảm họa.
Hiểu ba cấp độ này là nền tảng để so sánh các công cụ ở những bài sau. Mỗi công cụ đặt cược vào một cấp độ khác nhau, và "tốt nhất" luôn phụ thuộc vào việc bạn đang cần cấp độ nào.

<!--les-append-->

Vì sao ba cấp độ này đòi ba kỹ năng khác nhau

Phân biệt cấp độ không chỉ để chọn công cụ — mỗi cấp độ đòi bạn làm một việc khác:

Cấp độViệc của bạnKỹ năng quyết định
AutocompleteĐọc và chấp nhận từng gợi ýĐọc code nhanh
Chat/Edit trong IDEDiễn đạt yêu cầu, xem diffViết yêu cầu rõ ràng
Agent tự chủĐặt tiêu chí nghiệm thu, rồi kiểmBiết thế nào là xong
Bước nhảy khó nhất là từ hàng 2 sang hàng 3. Ở hai hàng đầu, bạn thấy từng thay đổi khi nó xảy ra. Ở hàng ba, bạn giao một nhiệm vụ và nhận về 300 dòng thay đổi trong 9 file — và nếu bạn không định nghĩa trước "xong nghĩa là gì", bạn không có cách nào đánh giá ngoài đọc hết.

Điều agent tự chủ thay đổi: ai giữ ngữ cảnh

Với autocomplete, ngữ cảnh ở trong đầu bạn. Bạn biết vì sao mỗi dòng ở đó.

Với agent, ngữ cảnh ở trong phiên làm việc của agent — và nó mất khi phiên kết thúc. Bạn còn lại code không ai trong đội hiểu lý do tồn tại, kể cả bạn. Đây là dạng nợ kỹ thuật mới mà autocomplete không tạo ra.

Cách chặn: mỗi lần agent làm xong một việc đáng kể, bạn viết hai dòng vào mô tả commit hoặc PR — vì sao làm cách này, và phương án nào đã bị loại. Nếu bạn không viết được hai dòng đó, bạn chưa hiểu code mình vừa nhận.

Phép thử: bạn có thật sự dùng được cấp độ 3 chưa

Ba câu, trả lời trung thực:

  • Dự án của bạn có test chạy được bằng một lệnh không?
  • Bạn có nói được "xong" nghĩa là gì, bằng một tiêu chí kiểm được không?
  • Bạn có đọc được diff 300 dòng và phát hiện chỗ sai không?
Thiếu câu 1 thì agent không có vòng phản hồi — nó không biết mình sai. Thiếu câu 2 thì nó không biết dừng. Thiếu câu 3 thì bạn đang đưa code mình không hiểu vào sản phẩm.

Không đạt cả ba thì hãy ở cấp 1–2 trước. Đó không phải lùi bước — đó là dùng đúng công cụ.

Sai kỳ vọng phổ biến nhất

"Agent làm được mọi việc, chỉ cần mô tả rõ." Không đúng. Agent mạnh ở việc có tiêu chí kiểm được (sửa cho test pass, thêm endpoint theo mẫu có sẵn, đổi tên xuyên dự án) và yếu ở việc đòi phán đoán kiến trúc hoặc bối cảnh nghiệp vụ không có trong code.

Nói cách khác: agent tốt ở việc bạn biết cách kiểm, kém ở việc bạn phải nghĩ.

Làm ngay

Trả lời ba câu ở trên cho dự án bạn đang làm. Nếu câu 1 là "không", việc đáng làm nhất tuần này không phải là thử một công cụ AI — mà là làm cho test chạy được bằng một lệnh. <!--/les-append-->

Học xong bài này rồi? Tạo tài khoản miễn phí để lưu lại — lần sau vào là biết ngay đang dở ở đâu, và học hết khóa thì có chứng chỉ. Lưu tiến độ của tôi