Tính đến ngày 23/6, bài này được tổng hợp từ trải nghiệm của tôi + Reddit về Cursor + cộng đồng Cursor + SNS + nhiều bài blog khác nhau. Hoan nghênh phản biện, góp ý và thảo luận.
Mẹo 1. Hãy chọn model một cách chiến lược
- Mỗi model có năng lực code, tốc độ và chi phí khác nhau, nên điều quan trọng là chọn theo từng tình huống.
- Các model Thinking (Claude 4, Gemini 2.5 Pro, v.v.) có tính tự chủ cao nhưng chậm.
- Các model Non-Thinking (GPT 4.1, v.v.) bám chỉ dẫn rõ ràng tốt và nhanh.
- Model được khuyến nghị sẽ khác nhau tùy loại công việc (ví dụ: thay đổi đơn giản thì Sonnet, lập kế hoạch phức tạp thì Opus).
- Tính năng
Auto-selectcó độ tin cậy không cao, nên tốt hơn là tự thử nhiều model và tìm ra phong cách phù hợp với mình.
Mẹo 2. Khi sửa app phức tạp, trước tiên hãy lập kế hoạch bằng chế độ Ask
- Chế độ Agent sửa code trực tiếp, nên với app phức tạp có thể làm hỏng các tính năng đang có.
- Chế độ Ask là chế độ chỉ đọc, không sửa file, rất hữu ích khi lập kế hoạch.
- An toàn hơn nếu trước tiên thảo luận kế hoạch với AI ở chế độ Ask, rồi mới thực thi ở chế độ Agent.
- Nếu viết prompt rõ ràng như “đừng sửa ngay bây giờ”, bạn có thể giảm các hành động không cần thiết trong chế độ Ask.
- Chế độ Manual yêu cầu tự chỉ định file tham chiếu nên mức độ hữu dụng tương đối thấp.
Mẹo 3. Khi debug, đừng cho sửa file ngay mà hãy xác định nguyên nhân cùng với test
- Nếu giao ngay việc sửa bug cho AI, rất dễ gặp thất bại lặp đi lặp lại.
- Bước 1 (Agent): Trước tiên yêu cầu viết mã test “đang fail” để tái hiện bug (theo cách TDD).
- “Ở trang X, khi nhấn Y thì lẽ ra phải hoạt động như A nhưng lại hoạt động như B. Tôi muốn sửa theo cách TDD, hãy viết và chạy mã test để tái hiện hiện tượng này. Hãy nhớ rằng ở thời điểm hiện tại test phải fail trước. Tôi cũng có thể đang nhầm, nên nếu không tái hiện được thì hãy báo cho tôi. Đừng bắt đầu sửa vấn đề nếu chưa có lệnh của tôi.”
- Bước 2 (Ask): Yêu cầu giải thích các nguyên nhân có thể có và cách kiểm tra để xác định nguyên nhân gốc.
- “Tôi muốn xác định nguyên nhân gốc của bug này. Hãy đưa ra các khả năng vì sao hiện tượng này xảy ra và xảy ra khi nào. Đồng thời hãy nói luôn cách kiểm tra để xác nhận khả năng nào là đúng. Ví dụ như cần thêm thông tin gì, nên log cái gì, v.v. Không cần thực thi các cách đó, chỉ cần giải thích thôi. Nếu trong lúc viết test mà bạn đã xác định được nguyên nhân thì hãy giải thích điều đó.”
- Bước 3 (Agent): Khóa mã test bằng
.cursorignore, rồi chỉ thị sửa code cho đến khi test pass.- “Hãy thêm mã test vừa tạo vào
.cursorignore. Sau đó, như bạn đã đề xuất, hãy lần lượt xác định nguyên nhân gốc từ khả năng cao nhất, rồi tóm tắt luồng hoạt động lý tưởng dưới dạng flowchart. Và dựa trên luồng lý tưởng đó, hãy sửa code cho đến khi mã test pass. Nếu có gì tôi cần xác nhận hoặc can thiệp thì hãy báo cho tôi.”
- “Hãy thêm mã test vừa tạo vào
- Cũng nên tạo sẵn quy tắc cho việc viết mã test.
Mẹo 4. Hãy để Cursor tự quản lý rule để ngày càng thông minh hơn
- Nếu trong phiên chat có những trao đổi có ý nghĩa, bạn có thể dùng tính năng /Generate Cursor Rules.
- Chỉ cần yêu cầu: “Hãy tạo hoặc chỉnh sửa Rule dựa trên nội dung cuộc trò chuyện này.”
- Đặc biệt sau khi debug, nếu đã xác định được nguyên nhân của bug thì rất hữu ích khi yêu cầu thêm/chỉnh sửa Rule để không lặp lại cùng một sai lầm.
- Nhờ đó, bạn có thể khiến Cursor tự học, tự bảo trì và ngày càng thông minh hơn.
Mẹo 5. Tăng năng suất bằng nhiều tab và các tùy chọn Auto
- Trong Cursor, bạn có thể dùng đồng thời nhiều tab chat. Trong khi Agent đang sửa code ở một tab, bạn có thể làm việc khác bằng chế độ Ask ở tab khác.
- Nếu bật tùy chọn
Auto-run, các thao tác như chạy terminal hay ghi file sẽ được tiến hành tự động mà không cần phê duyệt từng lần. - Nếu bật
Auto-Fix Lints, các lỗi kiểu type error sẽ được tự động sửa, khá tiện.
Mẹo 6. Đừng duy trì một phiên chat quá lâu
- Khi cuộc chat quá dài, do giới hạn kích thước context, AI có thể quên mất các thông tin quan trọng trước đó. (Cursor sẽ tự động tóm tắt)
- Khi hoàn thành một công việc, sẽ có lợi hơn nếu bắt đầu một phiên chat mới.
- Trong chat mới, bạn có thể dùng
@Past Chatsđể đưa phần tóm tắt cuộc trò chuyện trước đó vào context. - Nếu nội dung quan trọng đã được biến thành rule (mẹo 4), nhu cầu duy trì chat dài cũng sẽ giảm đi.
Mẹo 7. Khi hoàn tất thay đổi có ý nghĩa, nhất định hãy commit
- Sau khi xong một công việc, việc hình thành thói quen commit vào Git là rất quan trọng.
- Commit là lớp bảo vệ tối thiểu để có thể quay lại khi AI sửa code sai.
- Bạn có thể nhờ Cursor hỗ trợ từ cấu hình Git ban đầu đến viết commit message.
- “Tôi muốn upload codebase này lên GitHub. Vấn đề là tôi không biết gì về Git và GitHub, thậm chí còn chưa có tài khoản. Tôi cũng không biết Git đã được cài chưa. Hãy hướng dẫn tôi từng bước.”
- Bạn cũng có thể dùng tính năng AI Commit Message để tự động tạo commit message.
Mẹo 8. Hãy cho Cursor biết cấu trúc code, đồng thời điều chỉnh độ dài file và tên file
- Sẽ rất hữu ích nếu hiểu đặc tính của các Tool nội bộ trong Cursor
List Directorykhông đọc nội dung file mà chỉ đọc tên thư mục và tên fileRead Filechỉ đọc tối đa 250 dòng nội dung file mỗi lần (ở chế độ Max là 750 dòng)- Nếu kích thước file hoặc thư mục được tham chiếu quá lớn, thay vì đưa toàn bộ vào, nó sẽ bị nén lại và chỉ giữ các phần quan trọng như nơi gọi hàm
- Trong một phiên chat chỉ có thể gọi Tool tối đa 25 lần; muốn nhiều hơn thì phải tự bấm Continue (ngay cả khi đã bật tùy chọn Auto apply edit cũng vậy. Ở chế độ Max có thể lên đến 200 lần mà không cần Continue)
- Vì vậy, nên đặt tên file và thư mục sao cho vai trò rõ ràng, đồng thời giữ độ dài file dưới 500 dòng.
- Nếu thêm cấu trúc thư mục cốt lõi hoặc thông tin component vào rule
Always Applied, AI sẽ không cần phải khám phá lại mỗi lần. - Bạn có thể yêu cầu AI tạo tài liệu mô tả cấu trúc code rồi thêm nó thành rule.
- “Hãy tạo một tài liệu để bạn có thể nắm được cấu trúc của codebase này và các file quan trọng chỉ trong một lần nhìn. Dùng mermaid diagram cũng được. Sau đó hãy thêm nó thành project rule phù hợp. Hãy đặt
AlwaysApply: true.”
- “Hãy tạo một tài liệu để bạn có thể nắm được cấu trúc của codebase này và các file quan trọng chỉ trong một lần nhìn. Dùng mermaid diagram cũng được. Sau đó hãy thêm nó thành project rule phù hợp. Hãy đặt
Mẹo 9. Khi file quá dài, hãy để Cursor mô-đun hóa
- Khi file trở nên quá dài, tốt hơn là yêu cầu AI mô-đun hóa.
- Bước 1 (Ask): “Nếu mô-đun hóa project này thì nên làm theo góc nhìn hay chiến lược nào? Ví dụ: 1) góc nhìn Layered Architecture 2) góc nhìn AOP 3) góc nhìn FSD 4) góc nhìn Clean Architecture”
- Bước 2 (Ask): “Hãy tổng hợp các chiến lược bạn đã đưa ra để lập một kế hoạch mô-đun hóa phù hợp.”
- Bước 3 (Agent): “Hãy tài liệu hóa kế hoạch đó rồi thực thi nó.”
Mẹo 10. Hãy chủ động đưa context vào bằng cách dùng @
- Nếu dùng ký hiệu
@để trực tiếp đưa vào nhiều loại context ngoài file và folder, AI sẽ làm việc tốt hơn. @Code: Có thể chỉ tham chiếu một phần cụ thể của code như hàm hay biến.@Docs: Tham chiếu tài liệu chính thức của thư viện để viết code chính xác hơn. Có tài liệu mà Cursor đã có sẵn, cũng có thể tự thêm qua URL trực tiếp.@Git: Có thể tham chiếu nội dung của một branch hoặc commit cụ thể để so sánh hoặc yêu cầu giải thích.@Web,@Link: Có thể tìm kiếm web hoặc đọc nội dung của một liên kết cụ thể.@Recent Change: Có thể tham chiếu các thay đổi gần đây của codebase. Tôi chưa tìm được cơ chế hoạt động chính xác, nhưng có vẻ nó dựa trênunstaged changesvà các commit gần đây. Có lẽ sẽ hữu ích cho người không chuyên phát triển, những người không quản lý commit quá chặt.
Mẹo 11. Nếu bảo mật quan trọng, hãy bật chế độ Privacy
- Nếu không bật chế độ Privacy, dữ liệu như code hay prompt có thể bị thu thập và dùng để huấn luyện model.
- Nếu bật chế độ Privacy, một phần code có thể được mã hóa và lưu tạm thời, nhưng sẽ không bị lưu vĩnh viễn hoặc dùng để huấn luyện.
- Tuy nhiên, trong chế độ Privacy, một số tính năng mới như background agent sẽ không dùng được.
- Để biết chi tiết, hãy tham khảo tài liệu mà Cursor giải thích về chế độ privacy.
Mẹo 12. Hãy dùng MCP và các công cụ giúp việc phát triển thuận tiện và chính xác hơn
- Ở khía cạnh quản lý task, khuyến nghị memory bank, TaskMaster, Vooster.
- Các MCP trong tài liệu chính thức của Cursor có thể được cài đặt một lần bằng deep link
- Dùng Browserbase để mở trình duyệt, click, đọc console, chụp screenshot, v.v.
- Dùng PlayWright để thêm E2E test
- Dùng Sentry để theo dõi và sửa lỗi
- Dùng Stripe và Paypal để thanh toán
- Dùng Netlify và Heroku để triển khai
- Dùng Snyk và Semgrep để kiểm tra bảo mật
- Dùng Supabase để đọc và ghi bảng DB → không xuất hiện trong tài liệu chính thức của Cursor, nhưng theo tôi nếu là vibe coder thì đây là thứ gần như bắt buộc phải cài
- Nếu làm việc trong công ty và cần truyền đạt tốt context về tình hình công ty hay nhiều sản phẩm khác nhau, bạn cũng có thể tự phát triển MCP. (Tham khảo: Working with Documentation)
- Bạn cũng có thể dùng công cụ bên ngoài như StageWise để chỉ vào một phần cụ thể của UI rồi yêu cầu sửa bug, v.v.
Một vài mẹo nhỏ khác
- Chế độ Max: Tính phí theo token thay vì theo request, đồng thời cho context lớn hơn và dùng được nhiều Tool hơn.
- Thêm model: Trong phần cài đặt, bạn có thể bật các model mặc định đang bị ẩn như Claude 4 Opus.
- Custom API Key: Tính năng liên kết API key LLM của riêng bạn. Mức độ hữu dụng tương đối thấp. Lưu ý là kể cả làm vậy thì vẫn luôn đi qua server của Cursor.
- Đồng bộ cài đặt: Việc đồng bộ cài đặt giữa nhiều PC hiện vẫn chưa được hỗ trợ chính thức tốt. Có báo cáo rằng Profile Export/Import hoạt động không ổn, và vài tuần trước có một extension xuất hiện, nhưng tính đến 23/6 vẫn còn một số vấn đề
- Có hiển thị trên VSCode Marketplace nhưng không tìm thấy trong danh sách Extension của Cursor
- Có thể cài trên VSCode rồi dùng tính năng
Import VSCode Settings and Extensionscủa Cursor để nhập vào. Tuy nhiên trên thực tế extension không được khởi tạo đúng cách (issue liên quan) - Trông có vẻ ổn nên hy vọng tác giả sẽ sớm sửa
22 bình luận
Mẹo 4 và mẹo 6 hay đấy ~~
Mình có thắc mắc là, với mình thì 500 lượt mỗi tháng ít đến mức vô lý, vậy mọi người giải quyết vấn đề này như thế nào?
Gần đây giới hạn đã không còn bị gỡ bỏ nữa phải không?
Tôi cũng đang dùng kèm Claude Code, và có lẽ vì tôi chủ yếu cố gắng đưa ra các yêu cầu đã được gọt giũa sau khi thảo luận đủ kỹ trong AI Studio + thiết lập rule + khi cần thì tự triển khai bằng tính năng tự động hoàn thành theo tab, v.v., nên hiếm khi tôi cảm thấy là nó bị thiếu.
Về cơ bản, có phải cần đăng ký trả phí mới dùng được những tính năng đó không? Hay nếu mức sử dụng thấp thì thành viên miễn phí cơ bản cũng có thể làm theo được?
Theo kinh nghiệm của tôi, Cursor khá hạn chế về tính năng và hạn mức trong gói miễn phí, nên có lẽ không dễ để dùng miễn phí.
Có những model có thể dùng miễn phí, nhưng bù lại khả năng code của chúng cũng không tốt lắm.
Các mẹo này rất hay.
Cảm ơn bạn!
Có khá nhiều nội dung hữu ích mà mình trước đây chưa biết nữa~ Cảm ơn bạn!
Cảm ơn vì mẹo hay~ Mình học hỏi được rất nhiều.
Cảm ơn bạn đã chia sẻ nội dung hữu ích. =b
"Tuy nhiên, ở chế độ Privacy thì không thể sử dụng một số tính năng mới như background agent."
=> Tôi muốn biết nội dung cụ thể. Cho xin nguồn với..
ref.
https://docs.cursor.com/background-agent
Background Agents khả dụng trong Privacy Mode. Chúng tôi sẽ không bao giờ dùng mã của bạn để huấn luyện, và chỉ lưu giữ mã cho mục đích chạy agent. Tìm hiểu thêm về Privacy mode
Ồ, mới cách đây không lâu còn không dùng được, vậy mà giờ đã thay đổi rồi nhỉ!! Cảm ơn bạn.
Trong trường hợp của tôi,
trước khi AI thay đổi mã nguồn hoặc trước khi đặt câu hỏi trong prompt,
tôi sao lưu toàn bộ mã nguồn vào máy cục bộ.
Bên dưới
./history/./hisrory/r0001/./hisrory/r0002/...Tôi tạo các thư mục có cấu trúc như vậy và chạy script để sao lưu mã nguồn phát triển..
Vì môi trường phát triển của tôi là Windows nên đây là file ps1.
So với việc dùng Git thì phương pháp này có những ưu và nhược điểm gì?
Hãy dùng cả Git cùng lúc nữa..
Vì khi phát triển thực tế, AI có thể thay đổi mã nguồn rất nhiều..
Nên dù có kiểm tra kỹ từng chỗ đi nữa, khi build vẫn có thể phát sinh lỗi hoặc bug
vì thế..
Sẽ rất tiện khi cần rollback về mã trước đó.
Dù cũng có thể rollback mã bằng Git..
nhưng vì toàn bộ mã được sao lưu đầy đủ
nên tôi thấy nó giúp ích khi nhanh chóng tìm lại và triển khai trong lúc xem những phần mã đã thay đổi.
Có vẻ dùng
git subtreesẽ khá hữu ích.git worktree?
À, tôi nhầm tên rồi haha, đúng là
worktree.Cảm ơn bạn đã phản hồi!
Chẳng có ưu điểm nào cả.. hệ thống quản lý phiên bản ra đời chính là để tránh những hành vi như vậy.
Theo tôi thấy thì bạn nên học git kỹ hơn.
MCP tên là context7 khá hữu ích nên tôi hay dùng khi muốn hỏi cách sử dụng thư viện.
À, giờ tôi mới nhớ ra là đã quên giới thiệu cái này, nên tôi đã cập nhật tài liệu bài giảng nhưng lại chưa cập nhật blog. Nhờ vậy mà tôi đã bổ sung thêm. Cảm ơn.
Mẹo 2, câu hỏi. Ở chế độ ask, nếu không dặn rõ là đừng chỉnh sửa thì nó vẫn sẽ cố gắng sửa chứ?
Vâng, có những lúc đang thử sửa thì bị quá thời gian chờ nên không dùng được
edit_files, rồi lại chuyển sang làm việc khác.Có vẻ như ý ở đây là ngay cả khi không thực sự chỉnh sửa, chế độ Ask cũng giúp giảm bớt những thao tác chuẩn bị không cần thiết ngay trước bước chỉnh sửa.