Chat và hệ thống ngữ cảnh trong Cursor

Vượt xa việc chỉnh sửa từng file riêng lẻ

🔄 Trong Bài học 3, bạn đã học cách sử dụng tính năng tự động hoàn thành bằng phím Tab và tổ hợp phím Cmd+K để chỉnh sửa nhanh chóng và chính xác. Những công cụ này hoạt động rất tốt khi bạn biết chính xác cần thay đổi gì và ở đâu. Nhưng lập trình không phải lúc nào cũng đơn giản như vậy.

Đôi khi bạn cần phải hỏi: "Quy trình thanh toán hoạt động như thế nào trong dự án này?" hoặc "Tôi cần thay đổi điều gì để thêm thông báo qua email?" Những câu hỏi này trải rộng trên nhiều file, đòi hỏi sự hiểu biết về kiến ​​trúc và cần nhiều ngữ cảnh hơn là chỉ một đoạn code được chọn.

Đó là lý do Chat và hệ thống ngữ cảnh ra đời.

Chat (Cmd+L): Trò chuyện về code

Nhấn Cmd+L để mở bảng Chat AI ở phía bên phải. Đây là nơi bạn có thể trò chuyện đầy đủ với Cursor về codebase của mình.

Điều gì làm cho tính năng trò chuyện của Cursor khác biệt so với việc chỉ dán code vào ChatGPT:

  • Nó có thể tự động đưa các file liên quan vào cuộc trò chuyện
  • Nó có thể đọc toàn bộ cấu trúc dự án của bạn
  • Nó có thể tham chiếu đến các hàm, lớp và lệnh nhập cụ thể
  • Nó luôn nhận biết được những gì bạn đang xem trong trình chỉnh sửa

Các câu hỏi trò chuyện tốt trông như sau:

  • "Giải thích chức năng này làm gì và tại sao nó sử dụng đệ quy"
  • "Luồng dữ liệu từ API endpoint đến cơ sở dữ liệu trong dự án này là gì?"
  • "Tôi đang gặp lỗi TypeError ở dòng 47 — nguyên nhân là gì?"
  • "Tôi nên cấu trúc một tính năng mới cho tùy chọn người dùng như thế nào?"

Mẹo nhanh: Chọn một số code trong trình chỉnh sửa, sau đó nhấn Cmd+Shift+L để mở cuộc trò chuyện với code đó đã được nhúng sẵn. Nhanh hơn so với sao chép-dán.

Hệ thống ký hiệu @

Ký hiệu @ là cách bạn cung cấp cho Cursor ngữ cảnh chính xác. Nếu không có nó, AI sẽ đoán xem file nào quan trọng. Với nó, bạn hướng sự chú ý của nó chính xác đến nơi cần thiết.

@Files

Tham chiếu các file cụ thể theo tên.

Khi nào nên sử dụng: Bạn biết file nào chứa code liên quan.

Ví dụ: "Hãy xem @auth.ts và giải thích cách hoạt động của logic làm mới JWT."

Đây là ký hiệu @ phổ biến nhất. Nó nhanh, rõ ràng và ngăn AI tìm kiếm các file không liên quan.

@Codebase

Tìm kiếm ngữ nghĩa trong toàn bộ dự án của bạn.

Khi nào nên sử dụng: Bạn không chắc chắn file nào liên quan, hoặc câu trả lời trải rộng trên nhiều file mà bạn không thể dễ dàng liệt kê.

Ví dụ: "@Codebase Việc xử lý lỗi được thực hiện như thế nào trong toàn bộ dự án này? Hãy cho tôi thấy các mẫu."

Cursor tìm kiếm trong chỉ mục ngữ nghĩa của nó, tìm thấy code liên quan nhất và đưa nó vào ngữ cảnh. Điều này mạnh mẽ nhưng sử dụng nhiều không gian cửa sổ ngữ cảnh hơn @Files.

@Code / @Symbols

Tham chiếu đến một hàm, lớp hoặc biến cụ thể.

Khi nào nên sử dụng: Bạn muốn nói về một phần logic cụ thể, chứ không phải toàn bộ file.

Ví dụ: "Giải thích @validateUser và đề xuất cách thêm xác minh email vào đó."

@Docs

Tham chiếu tài liệu được lập chỉ mục cho các thư viện và framework.

Khi nào sử dụng: Bạn đang làm việc với một thư viện không quen thuộc và muốn AI tham chiếu tài liệu chính thức thay vì đoán mò.

Thiết lập: Vào Settings > Features > Docs > Add new doc, dán URL tài liệu của thư viện. Cursor sẽ lập chỉ mục.

Ví dụ: "@Docs Express.js — Làm thế nào để thiết lập middleware cho việc giới hạn tốc độ?"

@Web

Tìm kiếm thông tin hiện tại trên web.

Khi nào sử dụng: Bạn cần thông tin cập nhật mà có thể không có trong codebase hoặc dữ liệu huấn luyện của AI.

Ví dụ: "@Web Phiên bản mới nhất của React Router là gì và có gì thay đổi trong hướng dẫn di chuyển?"

Kiểm tra nhanh: Bạn cần hiểu cách dự án của mình xử lý xác thực nhưng bạn không biết file nào liên quan. Bạn nên sử dụng @Files hay @Codebase? @Codebase — vì bạn không biết file nào cần tham chiếu. @Codebase sẽ tìm kiếm ngữ nghĩa trong dự án của bạn và tìm code liên quan đến xác thực trên nhiều file. Sau khi xác định được file nào quan trọng, bạn có thể chuyển sang @Files để đặt câu hỏi tiếp theo.

5 lớp ngữ cảnh

Mọi phản hồi của AI trong Cursor đều được định hình bởi 5 lớp ngữ cảnh, từ bền vững nhất đến tạm thời nhất:

Lớp Nó là gì? Thời gian kéo dài
1. Quy tắc Các file .cursor/rules/, quy tắc toàn hệ thống Luôn tích cực tham gia dự án
2. Notepad Các gói prompt có thể tái sử dụng trong thanh bên Liên tục, được tham chiếu thủ công
3. @Docs Tài liệu bên ngoài được lập chỉ mục Lưu giữ sau khi đã thêm
4. @Files / @Codebase Code dự án của bạn Phiên hiện tại
5. Cuộc hội thoại Các tin nhắn trò chuyện hiện tại Chỉ cuộc trò chuyện hiện tại

Tại sao điều này quan trọng: Nếu Cursor liên tục bỏ qua các quy ước lập trình của bạn, cách khắc phục không phải là lặp lại chính mình trong mỗi tin nhắn trò chuyện (Lớp 5). Mà là thêm một quy tắc (Lớp 1) được áp dụng tự động cho mọi tương tác. Chúng ta sẽ tìm hiểu chi tiết về các quy tắc trong Bài học 6.

Các phương pháp hay nhất về quản lý ngữ cảnh

Giữ cho các cuộc trò chuyện ngắn gọn. Sau khi hoàn thành một tính năng hoặc sửa lỗi, hãy bắt đầu một cuộc trò chuyện mới bằng Cmd+N. Các cuộc trò chuyện dài sẽ tích lũy ngữ cảnh lỗi thời, gây nhầm lẫn cho AI.

Hãy rõ ràng với @. Thay vì hy vọng Cursor tìm thấy các file phù hợp, hãy nói với nó: "Hãy xem @api/routes.ts và @middleware/auth.ts để trả lời câu hỏi này." Ngữ cảnh rõ ràng luôn tốt hơn ngữ cảnh tự động.

Đừng sao chép toàn bộ file. Nếu một file có hơn 600 dòng, hãy tham chiếu đến hàm cụ thể bằng @Code thay vì toàn bộ file. AI hoạt động tốt hơn với ngữ cảnh được tập trung.

Phân lớp các tham chiếu của bạn. Đối với các câu hỏi phức tạp, hãy kết hợp những ký hiệu @: "Sử dụng @api/routes.ts, @Docs Express.js và các mẫu trong @middleware/, tôi nên thêm một enndpoint được xác thực mới như thế nào?"

Kiểm tra nhanh: Bạn đã thêm URL tài liệu API của nhóm mình vào cài đặt tài liệu của Cursor. Bây giờ, khi gõ @Docs, bạn sẽ thấy nó được liệt kê. Cursor đã làm gì với URL đó? Cursor đã thu thập thông tin và lập chỉ mục tài liệu tại URL đó. Bây giờ khi bạn tham chiếu nó bằng @Docs, AI có thể tìm kiếm nội dung tài liệu thực tế — chứ không chỉ URL. Điều này có nghĩa là các câu trả lời của nó về API đó sẽ tham chiếu đến tài liệu thực thay vì dựa vào dữ liệu huấn luyện (có thể đã lỗi thời).

Những điểm chính cần ghi nhớ

  • Trò chuyện (Cmd+L) cho phép bạn trò chuyện đầy đủ về codebase của mình — AI tự động tìm kiếm các file liên quan
  • Hệ thống ký hiệu @ cho phép bạn kiểm soát chính xác: @Files cho các file cụ thể, @Codebase để tìm kiếm trên toàn dự án, @Docs cho tài liệu, @Code cho những hàm riêng lẻ
  • 5 lớp ngữ cảnh định hình mọi phản hồi: Quy tắc > Notepad > Tài liệu > File > Cuộc trò chuyện
  • Giữ cho các cuộc trò chuyện ngắn gọn và bắt đầu mới cho những nhiệm vụ mới — ngữ cảnh cũ làm giảm chất lượng
  • Hãy rõ ràng với các tham chiếu @ thay vì hy vọng AI đoán đúng

Thử ngay: Template Chat + @ ngữ cảnh

Mở Cursor Chat (Cmd+L trên Mac, Ctrl+L ở các hệ điều hành khác) và dán một trong các template này. Mỗi template thể hiện một chiến lược @ khác nhau — hãy bắt đầu với #1 trên codebase của riêng bạn và làm việc theo thứ tự.

Template 1 — "X hoạt động như thế nào trong codebase này?" (Sử dụng @Codebase + @Files)

📍 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 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ử dụng @Codebase và cụ thể là @[file đầu vào chính] + @[mô-đun liên quan nhất], hãy giải thích cách [tên tính năng] hoạt động trong dự án này.

Hãy trả lời theo đúng cấu trúc sau:
1. Điểm vào: yêu cầu/sự kiện lần đầu tiên chạm đến tính năng này ở đâu?
2. Luồng dữ liệu: liệt kê mọi file/hàm mà nó đi qua, theo thứ tự
3. Lưu trữ: những gì được ghi vào cơ sở dữ liệu/bộ nhớ cache/hệ thống file
4. Các cuộc gọi bên ngoài: những cuộc gọi mạng/dịch vụ nào xảy ra (và đến ai)
5. Đường dẫn lỗi: điều gì xảy ra khi mỗi bước chính thất bại
6. Kiểm thử: những bài kiểm thử nào bao phủ đường dẫn này và chúng nằm ở đâu

Quy tắc:
- Trích dẫn chính xác tên file + tên hàm cho mỗi bước
- Nếu bạn không thể tìm thấy một bước từ các file được tham chiếu, hãy nói "không hiển thị trong ngữ cảnh được tham chiếu"
- KHÔNG được tự tạo tên hàm hoặc hành vi không có trong code

👀 Những gì bạn sẽ thấy: Trong vòng vài giây, AI sẽ trả về một phản hồi có cấu trúc dựa trong prompt ở 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 2 — "Tôi cần thay đổi những file nào để thêm tính năng Y?" (sử dụng @Codebase)

Sử dụng @Codebase, tôi muốn thêm [tính năng bằng ngôn ngữ đơn giản]. Hãy lập kế hoạch thay đổi — không phải code.

Kết quả đầu ra:
1. Các file cần tạo (mỗi file nêu mục đích trên một dòng)
2. Các file cần sửa đổi (với chức năng/phần cụ thể và lý do)
3. Các file cần đọc nhưng không sửa đổi (để tham khảo)
4. Các dependency mới cần thiết (kèm lý do)
5. Các bài kiểm tra tôi nên thêm (kiểm tra đơn vị / tích hợp / end-to-end)
6. Bản đồ rủi ro — những tính năng hiện có nào có thể bị lỗi
7. 3 câu hỏi tôi nên trả lời trước khi viết bất kỳ code nào

Quy tắc:
- Trích dẫn chính xác đường dẫn file
- KHÔNG viết code triển khai ngay
- Đánh dấu bất kỳ thay đổi nào liên quan đến xác thực, thanh toán hoặc thông tin nhận dạng cá nhân (PII) là cần xem xét thêm
- Nếu tính năng này có vẻ thuộc về một dịch vụ/mô-đun chưa tồn tại, hãy nói rõ điều đó và đề xuất vị trí đặt nó

Template 3 — "Gỡ lỗi mà không cần đoán" (sử dụng @Files + @Code + hội thoại)

Sử dụng @[file có lỗi] và @[file kiểm thử nếu có], hãy giúp tôi gỡ lỗi vấn đề này — đừng đoán.

Lỗi:
- Những gì tôi đã chạy: []
- Những gì tôi mong đợi: []
- Điều thực sự đã xảy ra (lỗi / kết quả sai / treo): []
- Thông báo lỗi chính xác hoặc dòng nhật ký: []
- Thời điểm bắt đầu xảy ra lỗi (lần commit hoạt động cuối cùng nếu biết): []

Thực hiện theo thứ tự sau:
1. Đưa ra 3 giả thuyết về nguyên nhân, xếp hạng theo khả năng xảy ra
2. Với mỗi giả thuyết, hãy cho tôi biết dòng code hoặc nhật ký nào tôi nên kiểm tra để xác nhận hoặc loại trừ nó
3. Sau khi tôi báo cáo lại, hãy tinh chỉnh — chưa tiến hành sửa lỗi

Quy tắc:
- KHÔNG đề xuất thay đổi code cho đến khi giả thuyết được xác nhận bằng chứng cứ
- KHÔNG chạy lại vòng lặp "thử cách sửa này" — yêu cầu bằng chứng giữa các lần đoán
- Nếu lỗi liên quan đến xung đột, múi giờ, ngôn ngữ hoặc số thực, hãy nêu rõ điều đó

Template 4 — "Câu trả lời dựa trên tài liệu bên ngoài" (sử dụng @Docs + @Files)

Sử dụng @Docs [tài liệu bạn đã thêm] và @[dự án liên quan] [file], câu trả lời:

[câu hỏi cụ thể về framework/thư viện]

Quy tắc:
- Ưu tiên @Docs hơn kiến ​​thức đào tạo về các chi tiết API cụ thể — API thay đổi và tài liệu tôi đã thêm là tài liệu hiện hành
- Trích dẫn trang tài liệu bạn đã sử dụng
- Nếu @Docs không giải đáp được câu hỏi, hãy nói rõ — KHÔNG được âm thầm sử dụng dữ liệu đào tạo
- Khớp với phiên bản/flavor tôi đang sử dụng trong @[file]

Template 5 — "Phê bình trước khi tôi commit" (sử dụng @Files + ngữ cảnh git diff)

Sử dụng @[file đã thay đổi], xem xét các thay đổi đang chờ xử lý mà tôi sắp commit.

Kiểm tra:
1. Lỗi logic — đặc biệt là các trường hợp ngoại lệ, sai lệch một đơn vị, tranh chấp bất đồng bộ, null/undefined
2. Bảo mật — xác thực đầu vào, kiểm tra xác thực, tấn công SQL/lệnh injection, bí mật trong code
3. Rò rỉ tài nguyên — kết nối chưa đóng, thiếu dọn dẹp, mẫu bộ nhớ
4. Thay đổi gây lỗi — giao diện API được xuất khẩu, chữ ký hàm, hình dạng phản hồi
5. Độ phủ kiểm thử — các bài kiểm thử hiện có còn phát hiện lỗi hồi quy không; cần thêm bài kiểm thử mới nào
6. Sự thay đổi phong cách so với code lân cận

Quy tắc:
- Phân loại mọi phát hiện là Nghiêm trọng / Cao / Trung bình / Thấp
- Đánh dấu bất kỳ điều gì KHÔNG nên được triển khai hôm nay (bảo mật, xác thực, thanh toán, di chuyển dữ liệu)
- KHÔNG đề xuất viết lại toàn bộ code — chỉ đưa ra các phát hiện + đề xuất sửa lỗi một dòng
- Nếu bạn thấy bí mật hoặc thông tin nhận dạng cá nhân được hardcode, hãy đánh dấu là Nghiêm trọng và yêu cầu tôi xoay vòng; Đừng lặp lại bí mật

QUY TẮC NGHIÊM NGẶT cho mọi Chat prompt:

  • Không bao giờ dán thông tin bí mật, API key, dữ liệu khách hàng hoặc thông tin nhận dạng cá nhân (PII) vào chat — mọi thứ đều được gửi đến nhà cung cấp của Cursor
  • Luôn ưu tiên các tham chiếu @ rõ ràng hơn là "tìm kiếm xung quanh codebase" — rõ ràng tốt hơn tự động
  • Bắt đầu một cuộc trò chuyện mới (Cmd+N) sau mỗi tính năng hoặc lỗi — các cuộc trò chuyện dài tích lũy ngữ cảnh lỗi thời
  • Nếu một cuộc trò chuyện đề xuất chỉnh sửa nhiều file, hãy chuyển sang chế độ Agent (Cmd+I) để xem xét đúng cách; đừng để Chat áp dụng các chỉnh sửa ngầm
  • Nếu bạn phát hiện AI tự tạo ra tên hàm hoặc đường dẫn file không tồn tại, hãy dừng lại — đó là dấu hiệu cho thấy ngữ cảnh sai, chứ không phải là bản sửa lỗi có thật

✏️ 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. Đầu vào mơ hồ tạo ra đầu ra mơ hồ — hãy cụ thể.

Những gì bạn sẽ thấy: Các phản hồi chat được nhắm mục tiêu dựa trên những file bạn thực sự đã nêu tên, thay vì các câu trả lời chung chung dựa trên những gì "thường" hoạt động trong framework đó.

📌 Cách xử lý kết quả: Lưu phản hồi vào file Notes. Chọn đề xuất có hiệu quả cao nhất và thực hiện ngay trong tuần này — đừng cố gắng làm tất cả 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 sau: "Hãy cụ thể hơn với ngữ cảnh thực tế của tôi. Bỏ những lời khuyên chung chung." Nếu bỏ qua các chi tiết quan trọng 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 điều đó làm ràng buộc chính."

  • Câu 1:

    Tại sao bạn nên giữ các cuộc trò chuyện Cursor ngắn gọn và bắt đầu những cuộc trò chuyện mới thường xuyên?

    GIẢI THÍCH:

    Mỗi tin nhắn trong một cuộc hội thoại đều bổ sung vào cửa sổ ngữ cảnh. Trong một cuộc trò chuyện dài, AI sẽ thấy câu hỏi hiện tại của bạn cùng với các code snippet cũ, hướng dẫn trước đó và những câu trả lời trước đó — một số trong đó có thể mâu thuẫn với những gì bạn đang làm bây giờ. Bắt đầu lại từ đầu cho mỗi tính năng hoặc lỗi mới giúp giữ cho ngữ cảnh sạch sẽ và các phản hồi tập trung hơn.

  • Câu 2:

    Bạn đang làm việc với một thư viện mà mình chưa từng sử dụng trước đây. Làm thế nào bạn có thể cung cấp cho Cursor thông tin về thư viện đó?

    GIẢI THÍCH:

    Đi đến Settings > Features > Docs và thêm URL tài liệu của thư viện. Cursor sẽ lập chỉ mục nó. Sau đó, trong cuộc trò chuyện, gõ @Docs và chọn thư viện đó. AI sẽ tham chiếu tài liệu thực tế khi trả lời câu hỏi của bạn — tốt hơn nhiều so với việc dựa vào dữ liệu huấn luyện có thể đã lỗi thời.

  • Câu 3:

    Sự khác biệt giữa @Files và @Codebase trong Cursor là gì?

    GIẢI THÍCH:

    `@Files` mang tính chính xác — bạn cho Cursor biết chính xác file nào cần xem. `@Codebase` mang tính khám phá — Cursor tìm kiếm trong chỉ mục ngữ nghĩa của nó trên tất cả các file đã được lập chỉ mục và lấy ra bất cứ thứ gì liên quan nhất đến câu hỏi của bạn. Sử dụng `@Files` khi bạn biết câu trả lời nằm ở đâu. Sử dụng `@Codebase` khi bạn không chắc chắn file nào quan trọng.

Thứ Hai, 01/06/2026 11:06
51 👨
Xác thực tài khoản!

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:

Số điện thoại chưa đúng định dạng!
Số điện thoại này đã được xác thực!
Bạn có thể dùng Sđt này đăng nhập tại đây!
Lỗi gửi SMS, liên hệ Admin
0 Bình luận
Sắp xếp theo