Hai công cụ này phục vụ người ngồi trong editor nhiều nhất. Bài này đi sâu điểm mạnh, cách thiết lập và khi nào dùng cái nào.
GitHub Copilot — trợ lý gõ code
Điểm mạnh: gợi ý inline cực nhanh, quen thuộc, cài như một extension, không phá vỡ workflow. Copilot Chat trả lời câu hỏi ngay trong editor và có thể giải thích/viết test cho đoạn đang chọn.
Khi nào dùng: bạn viết nhiều code mới theo pattern lặp lại (CRUD, boilerplate, test), muốn giữ nguyên IDE và team đã dùng GitHub.
Các bước thiết lập Copilot
- Cài extension GitHub Copilot trong VS Code (hoặc JetBrains).
- Đăng nhập tài khoản GitHub có bật Copilot.
- Mở một file, bắt đầu gõ; nhấn Tab để chấp nhận gợi ý.
- Mở Copilot Chat để hỏi hoặc chọn code rồi ra lệnh.
# Trả về danh sách user active trong 30 ngày, sắp theo last_login giảm dần
def get_recent_active_users(users):
# Copilot sẽ gợi ý phần thân dựa trên comment này
Cursor — IDE đặt AI làm trung tâm
Điểm mạnh: hiểu toàn bộ codebase qua index, edit nhiều file cùng lúc, Agent/Composer mode làm được task vừa và lớn, và tính năng "@" để đưa file/tài liệu vào ngữ cảnh chính xác.
Khi nào dùng: bạn thường xuyên refactor xuyên nhiều file, muốn ra lệnh bằng ngôn ngữ tự nhiên và xem diff trước khi apply, hoặc làm việc trên codebase lớn cần AI "hiểu cả dự án".
Các bước bắt đầu với Cursor
- Tải và cài Cursor, import cấu hình VS Code (extension, phím tắt) khi được hỏi.
- Mở dự án; để Cursor index codebase.
- Dùng
Cmd/Ctrl + Kđể sửa inline một vùng chọn. - Dùng
Cmd/Ctrl + Lđể chat; gõ@filenameđể thêm file vào ngữ cảnh. - Bật Agent mode cho task nhiều bước, xem diff, nhấn Accept/Reject từng phần.
Ví dụ dùng @ để định ngữ cảnh chính xác
@services/auth.py @models/user.py
Thêm khóa tài khoản sau 5 lần đăng nhập sai. Cập nhật cả model lẫn service.
Khung tư duy: Copilot bổ trợ, Cursor thay thế
- Copilot là lớp phủ lên IDE bạn đang dùng.
- Cursor là IDE mới thay VS Code; đổi Cursor nghĩa là đổi nhà.
- Nhiều người dùng Copilot cho gõ nhanh và chuyển sang Cursor khi cần AI hiểu cả dự án — nhưng bên trong Cursor thường không cần Copilot nữa vì đã có autocomplete riêng.
Checklist chọn giữa hai
- [ ] Task chủ yếu là gõ code mới, một file? -> Copilot đủ.
- [ ] Cần refactor/hiểu nhiều file? -> Cursor.
- [ ] Muốn giữ nguyên môi trường hiện tại? -> Copilot.
- [ ] Sẵn sàng đổi IDE để có trải nghiệm AI sâu? -> Cursor.
Sai lầm thường gặp
- Không đưa ngữ cảnh cho Cursor: quên dùng
@, agent đoán mò và sửa nhầm file. - Chấp nhận gợi ý Copilot mù quáng: nhất là với logic bảo mật/tính toán — luôn đọc lại.
- Kỳ vọng Copilot làm task đa file: nó không phải agent tự chủ; sẽ hụt hơi.
- Bật cả hai chồng chéo: chạy Copilot bên trong Cursor gây gợi ý trùng, gây rối; nên chọn một nguồn autocomplete.
Autocomplete: rủi ro ít ai nói
Autocomplete có một rủi ro riêng, khác hẳn agent: nó làm bạn chấp nhận code bạn không thật sự đọc. Gợi ý xuất hiện đúng lúc bạn đang trong luồng, bấm Tab nhanh hơn đọc, và sau 200 lần bấm Tab trong ngày, bạn không nhớ dòng nào là của mình.
Bốn chỗ cần đọc chậm lại, luôn luôn:
| Loại code | Vì sao nguy hiểm |
|---|---|
| Điều kiện biên | < và <=, off-by-one — gợi ý sai nhìn giống gợi ý đúng |
| Xử lý lỗi | Nó thường bắt lỗi rồi bỏ qua im lặng |
| Truy vấn dữ liệu | Thiếu điều kiện lọc, hoặc nối chuỗi thay vì tham số hoá |
| Bất cứ chỗ nào có số | Timeout, giới hạn, ngưỡng — nó đoán, và số đoán trông như số thật |
try { ... } catch { } là gợi ý AI rất hay đưa ra, và nó biến một lỗi ồn ào thành một lỗi âm thầm.Cursor và ngữ cảnh: chỉ file đúng quan trọng hơn index
Cursor index toàn dự án, nhưng chỉ vào đúng file vẫn cho kết quả tốt hơn rõ rệt. Lý do: index giúp nó tìm, còn bạn chỉ file giúp nó biết cái nào là khuôn mẫu.
Thói quen hiệu quả: khi nhờ làm một việc mới, luôn kèm một ví dụ đã có trong dự án — "làm tương tự như file này". Đây là cách rẻ nhất để code sinh ra khớp quy ước của đội, và nó hiệu quả hơn mọi mô tả bằng lời.
Khi nào dùng cái nào
| Tình huống | Chọn | Vì sao |
|---|---|---|
| Viết code mới theo mẫu lặp lại | Autocomplete | Nhanh nhất, rủi ro thấp |
| Sửa một hàm, biết rõ muốn gì | Chat/Edit trong IDE | Thấy diff ngay |
| Sửa xuyên nhiều file | Agent mode | Cần ngữ cảnh rộng |
| Không biết code ở đâu | Hỏi với ngữ cảnh toàn dự án | Đây là việc AI làm tốt hơn grep |
Giữ diff nhỏ
Nguyên tắc áp dụng cho mọi công cụ trong bài này: một yêu cầu, một mục tiêu. Diff 60 dòng bạn đọc được; diff 600 dòng bạn sẽ bấm duyệt mà không đọc, và ở đó là nơi lỗi đi vào sản phẩm.
Nếu công cụ trả về diff quá lớn, đừng sửa nó — hãy chia lại yêu cầu và làm lại.
Làm ngay
Trong ngày làm việc tới, mỗi lần autocomplete gợi ý code thuộc bốn loại trong bảng đầu, dừng lại đọc kỹ. Đếm bao nhiêu lần bạn phát hiện gợi ý sai — con số đó cho bạn biết bạn đang bấm Tab quá nhanh ở mức nào. <!--/les-append-->