2026-03-145 phút đọcVI
Context với @ và
English title: Context with @ and # — Give AI the Right Input
Bài 4 trong chuỗi 15 bài hướng dẫn Cursor. AI chỉ trả lời dựa trên những gì nó "thấy" — tức là context bạn đưa vào. Nếu bạn không chỉ rõ file nào, đoạn nào, AI dễ trả lời chung chung hoặc sai với codebase của bạn. Trong Cursor bạn dùng @ để thêm file, folder, hoặc symbol, và # để đưa vùng chọn (selection) vào context. Bài này hướng dẫn cách đưa đúng context.
Mở đầu: AI trả lời lệch — thường là thiếu context
Bạn hỏi: "Hàm này có xử lý lỗi chưa?" mà không đưa file hoặc đoạn code — AI không biết "hàm này" là hàm nào. Bạn hỏi: "Refactor đoạn này cho gọn hơn" mà không chọn đoạn — AI có thể đoán nhầm. Thiếu context = câu trả lời lệch. Trong Cursor, @ và # giúp bạn chỉ rõ: file nào, folder nào, hoặc đoạn nào. AI sẽ dựa trên đó để trả lời hoặc sửa đúng chỗ.
1. Đi sâu: Tại sao context quan trọng
Tại sao chủ đề này quan trọng: Model chỉ "thấy" nội dung được inject vào prompt. Ngoài rules và lịch sử chat, phần lớn thông tin về code đến từ context bạn chủ động thêm: file, folder, vùng chọn. Thiếu → AI đoán hoặc hallucinate; đủ → câu trả lời sát với code thật.
Hiểu sai thường gặp: Nhiều người nghĩ "AI đã index cả repo rồi nên không cần @". Thực tế, index giúp AI tìm file, nhưng để trả lời chính xác cho một câu hỏi cụ thể, bạn vẫn nên đưa đúng file/đoạn liên quan — vừa nhanh vừa giảm token thừa.
Bản chất đúng: Context = tập thông tin (file, folder, selection, rules) được đưa vào prompt. @ = chọn file, folder, hoặc symbol (function, class) để đưa nội dung đó vào. # (trong nhiều bản Cursor) = đưa vùng chọn (đoạn code bạn bôi đen) vào context — tiết kiệm token và tập trung.
2. Khái niệm
- @ (at mention): Trong Chat hoặc Composer, gõ @ rồi gõ tên file, tên folder, hoặc symbol. Cursor gợi ý danh sách; bạn chọn. Nội dung tương ứng (file content, file list, symbol definition) được thêm vào context.
- # (selection / codebase search): Tùy phiên bản Cursor: có thể là vùng chọn (bạn bôi đen đoạn code trong editor, rồi mở Chat/Composer — vùng chọn được gắn vào context), hoặc là tìm kiếm codebase. Đọc Cursor Docs phiên bản mới nhất để xác nhận.
- Symbol: Function, class, interface — bạn có thể @ tên symbol để chỉ đưa định nghĩa đó thay vì cả file.
3. Workflow: Đưa context trước khi hỏi
- Xác định AI cần đọc gì: Để trả lời "sửa lỗi trong file auth", AI cần nội dung file auth (hoặc ít nhất biết đường dẫn). Để trả lời "refactor đoạn này", AI cần đoạn đó.
- Dùng @: Trong Composer/Chat, gõ @, chọn file (vd.
auth.ts) hoặc folder (vd.src/api/). Nếu chỉ cần một function, @ symbol tên function nếu Cursor hỗ trợ. - Dùng # (vùng chọn): Bôi đen đoạn code trong editor, mở Composer (Cmd+I), gõ prompt — nhiều bản Cursor tự đính kèm selection vào context. Hoặc dùng # để chọn "selection" nếu UI có tùy chọn đó.
- Tránh @ quá nhiều file: Đưa đủ file liên quan; đưa quá nhiều làm prompt dài, chậm, và đôi khi làm model phân tán.
4. Ví dụ ngắn
- "Giải thích function parseDate trong file utils/time.ts" → @ file
utils/time.ts(hoặc @ symbolparseDatenếu có). AI có nội dung function đó để giải thích. - "Thêm validation cho đoạn này" → Bôi đen đoạn form/validation hiện tại, mở Composer, gõ "Thêm validation cho đoạn này: không để trống, email đúng format." Context đã có đoạn code bạn chọn.
- "Các file trong folder api/ gọi external service thế nào?" → @ folder
api/. AI có danh sách file và có thể đọc nội dung để tổng hợp.
5. Ứng dụng
Sau bài này bạn đã biết: @ = file, folder, symbol; # = vùng chọn (selection). Luôn nghĩ "AI cần đọc gì để trả lời đúng?" rồi đưa đủ qua @ và #. Bài tiếp (5) nói Checkpoints và history (Cmd+Opt+L) — cách quay lại an toàn khi thử nhiều thay đổi.
Bài tiếp: Checkpoints và lịch sử (bài 5) — hoàn tác và xem lịch sử an toàn.