🔄 Trong bài học 3 và bài học 4, bạn đã học các công cụ hỗ trợ lập trình: Tab dự đoán chỉnh sửa tiếp theo của bạn, Cmd+K chuyển đổi code bạn highlight và Chat trả lời các câu hỏi về codebase của bạn. Trong mỗi trường hợp, bạn đều là người điều khiển.
Chế độ Agent đảo ngược tình thế. Bạn mô tả những gì mình muốn, và Cursor sẽ thực hiện điều đó — đọc file, viết code, chạy các lệnh terminal và lặp lại cho đến khi nhiệm vụ hoàn thành.
Đây là tính năng mạnh mẽ nhất trong Cursor. Và cũng là tính năng nguy hiểm nhất nếu bạn không hiểu các biện pháp kiểm soát an toàn.
Cách hoạt động của chế độ Agent
Mở Composer bằng Cmd+I, sau đó bật/tắt chế độ Agent bằng Cmd+. (đây là chế độ mặc định trong Cursor 2.0).
Hãy giao nhiệm vụ bằng ngôn ngữ đơn giản:
"Thêm tính năng reset mật khẩu kèm xác thực email"
"Chuyển đổi API người dùng từ REST sang GraphQL"
"Sửa các lỗi kiểm thử trong mô-đun xác thực"
Những việc Agent thực hiện tiếp theo:
Đọc codebase của bạn — quét các file liên quan để hiểu cấu trúc hiện tại
Lập kế hoạch — quyết định tạo, sửa đổi hoặc xóa file nào
Thực hiện chỉnh sửa — viết code trên nhiều file cùng lúc
Chạy lệnh — cài đặt gói, chạy thử nghiệm, khởi động máy chủ phát triển
Lặp lại — nếu kiểm thử thất bại hoặc quá trình xây dựng bị lỗi, nó sẽ đọc lỗi và cố gắng khắc phục
Mỗi bước đều yêu cầu sự chấp thuận của bạn theo mặc định. Bạn sẽ thấy những gì Agent muốn làm trước khi nó thực hiện.
Checkpoint: Lưới an toàn của bạn
Đây là tính năng quan trọng nhất của Agent: checkpoint.
Mỗi khi Agent sửa đổi code của bạn, Cursor sẽ tự động lưu snapshot trạng thái trước khi thay đổi. Các checkpoint này là:
Chỉ lưu trữ cục bộ — được lưu trên máy tính của bạn, không phải trên đám mây
Tách biệt với Git — chúng không ảnh hưởng đến lịch sử commit của bạn
Khôi phục tức thì — nhấp vào một checkpoint để hoàn tác tất cả các file về trạng thái đó
Khi nào nên sử dụng checkpoint:
Chỉnh sửa của Agent làm hỏng thứ gì đó bạn không thể dễ dàng sửa chữa
Bạn muốn thử một cách tiếp cận khác cho cùng một vấn đề
Agent đã đi sai hướng và thực hiện quá nhiều thay đổi để hoàn tác thủ công
Cách khôi phục: Trong bảng Composer, bạn sẽ thấy các checkpoint được liệt kê theo thứ tự thời gian. Nhấp vào checkpoint bạn muốn quay lại. Tất cả các file sẽ được hoàn tác về điểm đó. Sau đó, bạn có thể cung cấp cho Agent những hướng dẫn mới và thử lại.
✅ Kiểm tra nhanh: Chế độ Agent đã thực hiện thay đổi trên 6 file nhưng kết quả không hoạt động. Bạn cũng có các thay đổi thủ công chưa được commit trong 2 file khác mà bạn không muốn mất. Việc khôi phục checkpoint có ảnh hưởng đến các thay đổi thủ công của bạn không? Các checkpoint chỉ theo dõi những file mà Agent đã sửa đổi. Các thay đổi thủ công của bạn trong những file khác vẫn an toàn. Nhưng nếu Agent vô tình chỉnh sửa một file mà bạn cũng đã thực hiện các thay đổi thủ công, việc khôi phục sẽ hoàn tác cả mọi thay đổi của Agent VÀ các thay đổi thủ công của bạn trong file cụ thể đó. Khi không chắc chắn, hãy xác nhận công việc thủ công của bạn trước.
Chế độ Plan: Suy nghĩ trước khi hành động
Đối với các tác vụ phức tạp, bạn không muốn Agent bắt đầu chỉnh sửa ngay lập tức. Chế độ Plan sẽ giúp nó dừng lại và suy nghĩ trước.
Cách sử dụng: Trong Composer, chuyển sang chế độ Plan (hoặc hỏi Agent: "Hãy lập kế hoạch cách bạn sẽ thực hiện việc này trước khi thực hiện bất kỳ thay đổi nào").
Những gì bạn nhận được:
Agent nghiên cứu codebase của bạn.
Nó đề xuất một kế hoạch từng bước: cần thay đổi những file nào, cần thêm gì, cần sửa đổi gì.
Bạn xem xét kế hoạch và phê duyệt, điều chỉnh hoặc chuyển hướng.
Chỉ sau khi được phê duyệt, nó mới bắt đầu chỉnh sửa.
Khi nào chế độ Plan giúp ích cho bạn:
Thêm một tính năng ảnh hưởng đến nhiều file — bạn muốn xác minh rằng Agent hiểu kiến trúc trước khi viết code
Tái cấu trúc — bạn muốn đảm bảo cách tiếp cận của Agent phù hợp với tầm nhìn của bạn
Codebase không quen thuộc — kế hoạch sẽ cho thấy liệu Agent có thực sự hiểu dự án hay không.
Chế độ YOLO: Tự chủ tối đa
Ngược lại với chế độ Plan, chế độ YOLO loại bỏ các bước phê duyệt cho những lệnh terminal.
Hành vi mặc định: Agent yêu cầu quyền trước khi chạy mọi lệnh terminal (npm install, git status, chạy thử nghiệm).
Chế độ YOLO: Tự động phê duyệt các lệnh phù hợp với những mẫu bạn định nghĩa. Kích hoạt chế độ này trong Settings > Features > Agent.
Khi nào nên sử dụng: Chạy thử nghiệm, kiểm tra cú pháp, xây dựng — các lệnh an toàn và có thể đảo ngược. Bạn đang theo dõi kết quả và có thể nhấn Ctrl+C nếu có lỗi xảy ra.
Khi nào KHÔNG nên sử dụng: Không bao giờ tự động phê duyệt các lệnh sửa đổi cơ sở dữ liệu sản xuất, đẩy lên kho lưu trữ từ xa, xóa file hoặc tương tác với những dịch vụ bên ngoài. Chế độ YOLO chỉ nên áp dụng cho các lệnh chỉ đọc hoặc dễ dàng đảo ngược.
Viết Agent prompt hiệu quả
Agent phản hồi rất mạnh mẽ dựa trên chất lượng prompt. Dưới đây là những gì hiệu quả:
Chia nhỏ các tác vụ phức tạp thành nhiều bước:
Thay vì: "Xây dựng một bảng điều khiển người dùng hoàn chỉnh với biểu đồ, bảng và bộ lọc"
Hãy thử: "Thêm một trang bảng điều khiển người dùng. Bắt đầu chỉ với tuyến đường và bố cục cơ bản. Tôi sẽ cho bạn biết cần thêm gì tiếp theo."
Tham khảo các mẫu hiện có:
"Thêm một endpoint API mới cho /users/preferences theo cùng các mẫu như @api/users/profile.ts"
Bao gồm những tiêu chí chấp nhận:
"Tính năng được hoàn thành khi: (1) bộ kiểm thử vượt qua, (2) trình biên dịch TypeScript không báo lỗi và (3) endpoint /api/preferences trả về phản hồi JSON."
Đưa ra các ràng buộc:
"Không cài đặt các dependency mới. Sử dụng thư viện date-fns hiện có để định dạng ngày tháng."
✅ Kiểm tra nhanh: Bạn yêu cầu Agent thêm một lớp cache và nó đã cài đặt Redis, sửa đổi 12 file và thay đổi logic kết nối cơ sở dữ liệu. Điều đó nhiều hơn nhiều so với những gì bạn muốn. Cách tiếp cận nào tốt hơn? Chia nhỏ vấn đề. Bắt đầu với: "Chỉ thêm cache vào hàm getUser. Không cần cài đặt thêm gì mới — hãy sử dụng một Map đơn giản." Hãy làm cho nó hoạt động. Sau đó mở rộng: "Bây giờ hãy thêm cache vào getProducts bằng cách sử dụng cùng một mẫu." Các hướng dẫn nhỏ, có phạm vi cụ thể sẽ cho bạn nhiều quyền kiểm soát hơn và tạo ra kết quả tốt hơn.
Các agent song song
Cursor 2.0 cho phép bạn chạy tối đa 8 agent cùng lúc. Mỗi agent có một tab riêng trong bảng Composer. Điều này hữu ích khi bạn có các tác vụ độc lập:
Agent 1: Viết bài kiểm tra cho mô-đun A
Agent 2: Tái cấu trúc mô-đun B
Agent 3: Thêm tài liệu vào mô-đun C
Chúng hoạt động độc lập — mỗi agent có cuộc hội thoại, checkpoint và thay đổi file riêng. Chỉ cần đảm bảo rằng chúng không chỉnh sửa cùng một file, nếu không bạn sẽ gặp xung đột hợp nhất.
Những điểm chính cần ghi nhớ
Chế độ Agent (Cmd+I + Cmd+.) là một đối tác lập trình tự động — nó đọc, ghi, chạy lệnh và lặp lại
Checkpoint là các snapshot tự động trước mỗi lần chỉnh sửa của Agent — lưới an toàn của bạn để hoàn tác những thay đổi
Chế độ Plan cho phép Agent đề xuất một phương pháp trước khi chỉnh sửa — sử dụng nó cho các tác vụ phức tạp
Chế độ YOLO tự động phê duyệt các lệnh terminal — chỉ bật cho các thao tác an toàn, có thể đảo ngược
Chia các tác vụ phức tạp thành những hướng dẫn nhỏ, cụ thể với tiêu chí chấp nhận rõ ràng
Chạy tối đa 8 agent song song cho các tác vụ độc lập trong Cursor 2.0
Sổ tay hướng dẫn chế độ Agent an toàn
Mở Cursor và nhấn Cmd+I (chế độ Agent). Trước khi bạn gõ, hãy đọc sổ tay hướng dẫn này — đó là sự khác biệt giữa việc Agent là một yếu tố nhân rộng sức mạnh và việc Agent viết lại 14 file trong khi bạn đang đi pha cà phê.
📍 Nơi dán: Mở ChatGPT (chat.openai.com), Claude (claude.ai) hoặc Gemini (gemini.google.com) và bắt đầu một cuộc trò chuyện mới.
📋 Cách sao chép prompt này: Nhấp chuột vào bất kỳ đâu bên trong khối màu xám, nhấn Cmd+A rồi Cmd+C (Mac) hoặc Ctrl+A rồi Ctrl+C (Windows). Hoặc sử dụng biểu tượng sao chép xuất hiện.
SỔ TAY VẬN HÀNH AGENT AN TOÀN — dán template phù hợp bên dưới khi gọi Agent.
TEMPLATE A — Agent lập kế hoạch trước (sử dụng cho bất kỳ tác vụ nào liên quan đến hơn 2 file)
Làm việc ở PLAN MODE. Chưa chỉnh sửa gì cả.
Nhiệm vụ:
[một câu rõ ràng]
Ràng buộc:
- Chỉ tác động đến các file trong [thư mục cụ thể / file cụ thể]
- KHÔNG cài đặt các dependency mới
- KHÔNG sửa đổi [list: auth, payments, migrations, env, CI config, production secrets, lockfiles]
- Khớp với các mẫu hiện có trong @[file tham chiếu]
Đưa ra kế hoạch như sau:
1. Các file bạn sẽ TẠO (đường dẫn + mục đích)
2. Các file bạn sẽ SỬA ĐỔI (đường dẫn + phần cụ thể + lý do)
3. Các file bạn sẽ ĐỌC nhưng không thay đổi
4. Các lệnh bạn sẽ chạy (liệt kê chúng — chưa chạy)
5. Các bài kiểm tra bạn sẽ viết hoặc cập nhật
6. Các giả định bạn cần tôi xác nhận
7. Bản đồ rủi ro — điều này có thể gây ra lỗi gì
Dừng lại sau khi hoàn thành kế hoạch. Hãy đợi tôi duyệt trước khi chỉnh sửa.
👀 Những gì bạn sẽ thấy: Trong vòng vài giây, AI sẽ trả về một câu trả lời có cấu trúc dựa trên câu hỏi ở trên. Hãy đọc kỹ và coi đó là bản nháp, không phải câu trả lời cuối cùng.
TEMPLATE B — Agent chỉnh sửa phạm vi (sử dụng sau khi Kế hoạch được phê duyệt, hoặc cho một thay đổi nhỏ)
Nhiệm vụ:
[một câu]
Phạm vi:
- CHỈ chỉnh sửa các file sau: [danh sách chính xác]
- KHÔNG tạo file mới
- KHÔNG cài đặt các dependency
- KHÔNG chạy các lệnh phá hủy (rm, rm -rf, DROP, TRUNCATE, force push, git reset --hard)
Chấp nhận:
- Bộ kiểm thử tại [đường dẫn] vượt qua
- TypeScript / linter không báo cáo lỗi mới nào
- Thay đổi chỉ giới hạn trong các file được liệt kê
Quy trình làm việc:
1. Thực hiện thay đổi nhỏ nhất đáp ứng yêu cầu chấp nhận
2. Tự chạy các bài kiểm thử
3. Báo cáo tóm tắt khác biệt trước khi thoát
4. Nếu các bài kiểm thử thất bại, KHÔNG thử lại 3 lần trở lên — dừng lại ở 2 lần thất bại và hỏi tôi để được hướng dẫn
QUY TẮC BẮT BUỘC (agent phải tuân theo):
- Không bao giờ bỏ qua các hook (--no-verify), không bao giờ vô hiệu hóa việc ký, không bao giờ bỏ qua linter
- Không bao giờ xóa file hoặc thư mục
- Không bao giờ sửa đổi .env, secrets hoặc cấu hình CI
- Không bao giờ ép buộc đẩy hoặc sửa đổi các commit
- Nếu bạn cần chạy một lệnh mà bạn chưa thấy tôi phê duyệt, hãy dừng lại và hỏi
TEMPLATE C — Agent viết bài test (tác vụ song song tốt)
Viết bà test cho [chức năng / file cụ thể].
Quy tắc:
- KHÔNG được sửa đổi code triển khai dưới bất kỳ hình thức nào
- Chỉ tạo các bài test [đơn vị / tích hợp / end-to-end] trong [thư mục test]
- Phù hợp với kiểu kiểm thử được sử dụng trong [file test tham chiếu]
- Phạm vi: trường hợp thành công, 2 trường hợp ngoại lệ, 1 chế độ lỗi
- Sử dụng trình chạy bài test và các công cụ hỗ trợ hiện có (không có dependency mới)
Chấp nhận:
- Các bài test mới vượt qua so với triển khai hiện tại
- Không có bài test hiện có nào bị lỗi
- Kích thước file test dưới 200 dòng
Dừng lại và báo cáo các bài test mới + ghi chú về phạm vi khi hoàn thành.
TEMPLATE D — Các biện pháp bảo vệ agent song song (khi chạy 2–8 agent cùng một lúc)
Trước khi bắt đầu: xác nhận danh sách SCOPE của các file của mỗi agent song song không trùng lặp với bất kỳ agent nào khác đang chạy.
Nếu có sự trùng lặp: hãy tuần tự hóa — không chạy chúng song song, hoặc hợp nhất chúng thành một tác vụ duy nhất.
Với từng agent:
- Mỗi agent nhận được khối Template B riêng với phạm vi file không trùng lặp
- Không agent nào được phép sửa đổi cấu hình dùng chung (package.json, lockfile, tsconfig, cấu hình linter, CI)
- Nếu một file dùng chung thực sự cần thay đổi, hãy chỉ định nó cho MỘT tác vụ
- Sau khi tất cả các tác vụ hoàn thành, tôi xem xét từng sự khác biệt riêng biệt trước khi commit
QUY TẮC NGHIÊM NGẶT — Chế độ YOLO + checkpoint:
KHÔNG bật chế độ YOLO trên bất kỳ dự án nào có triển khai sản xuất được kết nối với dữ liệu khách hàng thực hoặc các lệnh phá hủy trong lịch sử shell mặc định
Trước mỗi lần chạy Agent, hãy xác nhận bạn có trạng thái git sạch (cam kết hoặc lưu trữ công việc đang chờ xử lý trước)
Sau mỗi lần chạy Agent, hãy xem lại sự khác biệt trong thanh bên trước khi chấp nhận — không chấp nhận mù quáng
Nếu Agent sửa đổi một file mà bạn không liệt kê trong phạm vi, hãy từ chối toàn bộ thay đổi và chạy lại với phạm vi chặt chẽ hơn
Sử dụng checkpoint như nút "oops"; nếu quá trình chạy gặp sự cố, hãy hoàn tác thay vì cố gắng vá lỗi tiếp theo
Không bao giờ cấp quyền truy cập cho Agent vào thông tin đăng nhập sản xuất, bảng điều khiển quản trị đám mây hoặc hệ thống thanh toán, ngay cả qua terminal
Đối với code quan trọng về an toàn (xác thực, thanh toán, di chuyển dữ liệu, luồng thông tin nhận dạng cá nhân), luôn sử dụng Template A (lập kế hoạch trước), không bao giờ sử dụng trực tiếp Template B.
✏️ Cách điền thông tin chi tiết của bạn: Thay thế mỗi [] và trình giữ chỗ trong ngoặc bằng thông tin cụ thể từ tình huống thực tế của bạn. Thông tin đầu vào mơ hồ sẽ tạo ra kết quả đầu ra mơ hồ — hãy cụ thể.
Những gì bạn sẽ thấy: Các lần chạy của Agent nằm trong phạm vi cho phép — với những kế hoạch bạn đã phê duyệt, các thay đổi bạn đã xem xét và những checkpoint bạn có thể hoàn tác — thay vì sự bất ngờ "nó đã làm nhiều hơn những gì tôi muốn".
📌 Nên làm gì với kết quả đầu ra: Lưu phản hồi vào file Notes. Chọn đề xuất có tác động cao nhất và thực hiện nó trong tuần này — đừng cố gắng làm mọi thứ cùng một lúc.
⚠️ Nếu kết quả không ổn: Nếu các đề xuất có vẻ chung chung, hãy dán nội dung này: "Hãy cụ thể hơn với ngữ cảnh thực tế của tôi. Bỏ qua lời khuyên chung chung." Nếu nó bỏ qua các chi tiết quan trọng mà bạn đã cung cấp, hãy hỏi: "Bạn đã bỏ sót [X] trong ngữ cảnh của tôi — hãy thực hiện lại với [X] làm ràng buộc chính."
Câu 1:
Khi nào bạn nên sử dụng chế độ Plan thay vì để Agent chỉnh sửa trực tiếp?
GIẢI THÍCH:
Chế độ Plan khiến Agent nghiên cứu codebase của bạn và đề xuất một kế hoạch từng bước trước khi chỉnh sửa bất kỳ file nào. Điều này rất hữu ích cho các tác vụ phức tạp, nơi mà cách tiếp cận sai sẽ lãng phí thời gian. Đối với các sửa lỗi đơn giản hoặc những tính năng nhỏ, việc chuyển thẳng sang chế độ Agent là ổn. Đối với các thay đổi về kiến trúc hoặc các tính năng multi-file, chế độ Plan cho phép bạn điều chỉnh hướng đi trước khi viết bất kỳ code nào.
Câu 2:
Các checkpoint trong chế độ Agent là gì?
GIẢI THÍCH:
Mỗi khi Agent sửa đổi code của bạn, Cursor sẽ lưu trạng thái trước khi thay đổi dưới dạng checkpoint. Chúng được lưu trữ cục bộ trên máy của bạn, tách biệt với Git. Nếu một chỉnh sửa của Agent làm hỏng thứ gì đó, bạn có thể khôi phục bất kỳ checkpoint nào để quay lại trạng thái chính xác đó. Hãy coi chúng như một cỗ máy thời gian cục bộ cho các chỉnh sửa của AI.
Câu 3:
Chế độ Agent có thể làm được gì mà Chat và Cmd+K không thể?
GIẢI THÍCH:
Chat trả lời câu hỏi. Cmd+K chỉnh sửa một vùng chọn duy nhất. Chế độ Agent là một đối tác lập trình tự động — nó đọc codebase của bạn, tạo và sửa đổi các file trong toàn bộ dự án, chạy những lệnh trong terminal, cài đặt các dependency và có thể lặp lại cho đến khi những bài kiểm tra thành công. Đó là sự khác biệt giữa việc nhận lời khuyên và việc có người làm thay công việc.
Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây: