Context engineering là gì? Hướng dẫn cho AI coding (2026)
Context engineering là kỷ luật thiết kế và quản lý toàn bộ tập token mà model nhìn thấy ở mỗi lần inference - system prompt, tool, code, lịch sử hội thoại và memory - sao cho AI tạo ra output chuẩn. Khác với prompt engineering (chỉ tối ưu câu lệnh), nó quản lý cả "cửa sổ" thông tin. Với AI coding, chất lượng code phụ thuộc vào context nhiều hơn vào model. Bốn chiến lược nền tảng: Write · Select · Compress · Isolate.
Context engineering là gì?
Context engineering là kỷ luật thiết kế, chọn lọc và quản lý toàn bộ tập token mà mô hình ngôn ngữ nhìn thấy tại mỗi lần gọi (inference), để nó có đủ - và chỉ đủ - thông tin cần thiết nhằm hoàn thành tác vụ. Tập token đó gồm nhiều lớp: system prompt, mô tả tool, nội dung file code bạn đưa vào, lịch sử hội thoại, kết quả trả về từ tool, và memory dài hạn (ví dụ file CLAUDE.md).
Nói ngắn gọn: prompt engineering hỏi "viết câu lệnh thế nào cho hay?", còn context engineering hỏi "cần nạp đúng những gì vào cửa sổ ngữ cảnh, ở thời điểm nào, và bỏ ra những gì?". Anthropic mô tả đây là bước tiến tự nhiên khi các agent chạy nhiều vòng lặp và tích luỹ ngày càng nhiều dữ liệu (xem bài Effective context engineering for AI agents, 29/09/2025).
Với AI coding, đây là điểm mấu chốt: cùng một model, cùng một câu yêu cầu, nhưng nếu bạn nạp sai file, để lịch sử phình to hoặc bỏ quên quy ước dự án, code sinh ra sẽ lệch chuẩn. Chất lượng đầu ra của một coding agent phụ thuộc vào context nhiều hơn phụ thuộc vào model. Đây là lý do một dev biết curate context thường "khai thác" được nhiều hơn từ đúng công cụ mà đồng nghiệp đang dùng.
Context engineering vs prompt engineering
Nhiều người dùng hai khái niệm lẫn lộn. Prompt engineering không hề lỗi thời - nhưng giờ nó là một lớp nằm bên trong context engineering. Prompt là cách bạn viết một chỉ dẫn cụ thể; context là toàn bộ môi trường thông tin bao quanh chỉ dẫn đó.
| Tiêu chí | Prompt engineering | Context engineering |
|---|---|---|
| Câu hỏi cốt lõi | Viết câu lệnh thế nào cho hiệu quả? | Nạp đúng thông tin gì vào cửa sổ ngữ cảnh, khi nào, bỏ gì ra? |
| Phạm vi | Một chỉ dẫn / một lượt hỏi | Toàn bộ tập token qua nhiều lượt, nhiều vòng lặp agent |
| Tính bền | Thường dùng một lần | Bền: memory, quy ước dự án áp cho mọi request |
| Chi phí khi sai | Một câu trả lời tồi | Thuế lên mọi request, kéo dài nhiều tháng |
| Ví dụ trong coding | "Refactor hàm này cho ngắn gọn" | Cấu trúc CLAUDE.md, chọn file nạp, nén lịch sử, tách subagent |
Câu này đáng dán lên tường: một prompt sai chỉ tốn một câu trả lời tồi; một dòng CLAUDE.md sai là khoản thuế đánh lên MỌI request trong nhiều tháng. Đó là lý do context engineering có đòn bẩy cao hơn hẳn - bạn sửa một chỗ, cả nghìn lượt hội thoại sau được hưởng lợi. Nếu muốn viết file quy ước dự án cho chuẩn, xem thêm hướng dẫn viết CLAUDE.md chuẩn cho Claude Code.
Vì sao context quan trọng với AI coding (context window & token budget)
Mọi model đều có context window - giới hạn số token nó có thể "nhìn" cùng lúc. Các model Claude hiện đưa vào Claude Code có cửa sổ khoảng , tương đương chừng vài trăm trang văn bản. Nghe thì nhiều, nhưng khi làm việc thật nó cạn nhanh hơn bạn tưởng.
Hai hiện tượng khiến "cửa sổ to" không đồng nghĩa với "trí nhớ tốt":
- Attention budget cạn dần: mỗi token đưa vào đều "pha loãng" sự chú ý của model. Càng nhồi nhiều, model càng khó bám đúng chi tiết quan trọng. Context là tài nguyên khan hiếm, không phải kho chứa vô hạn.
- Context rot / "lost in the middle": thông tin nằm giữa một hội thoại dài dễ bị model bỏ sót hơn thông tin ở đầu và cuối. Đây là lý do coding agent hay "quên" yêu cầu bạn nói mấy chục lượt trước, hoặc trả lời sai sau một phiên dài.
Con số để bạn tự đo: nếu phần cấu hình "always-on" (system prompt, tool definitions, memory) đã chiếm ~10-20% cửa sổ, phần còn lại mới là chỗ cho code, lịch sử và output của tool. Khi tổng dùng vượt quá phần lớn cửa sổ, chất lượng bắt đầu tụt - đó là lúc phải nén hoặc reset. Việc "curate" chính là giữ cho phần thực sự quan trọng luôn nằm trong ngân sách.
Một cách hình dung thực tế: hãy coi cửa sổ ngữ cảnh như bàn làm việc, không phải kho lưu trữ. Bàn rộng đến mấy thì cũng có lúc chật, và khi bạn chất chồng mọi thứ lên đó, việc tìm đúng tài liệu cần dùng lại chậm đi. Model cũng vậy - nó không "đọc kỹ đều" mọi token, mà phân bổ chú ý. Đây là lý do một phiên làm việc mạch lạc với đúng vài file cần thiết thường cho code chất lượng cao hơn hẳn một phiên "đổ hết repo vào rồi hỏi". Với AI coding, kỷ luật giữ bàn làm việc gọn gàng quan trọng ngang việc chọn đúng model.
4 chiến lược context engineering (Write · Select · Compress · Isolate)
Cộng đồng (LangChain, LlamaIndex và nhiều nguồn) hội tụ về một khung tư duy gọn gồm bốn chiến lược. Đây là bộ khung dễ nhớ nhất để áp vào workflow coding hằng ngày.
Write - ghi ra ngoài
Thay vì nhồi mọi thứ vào context, hãy đẩy thông tin ra ngoài: ghi kế hoạch, ghi chú, quyết định vào file (ví dụ NOTES.md, scratchpad, hoặc memory bền như CLAUDE.md). Context chỉ giữ con trỏ tới thông tin, khi cần mới nạp lại.
Select - chọn lọc
Coi context là khan hiếm: chỉ nạp đúng file/đoạn cần cho tác vụ hiện tại thay vì đổ cả repo vào. Đây là tinh thần của retrieval (RAG), của cú pháp @file, và của just-in-time retrieval - lấy dữ liệu ngay lúc cần chứ không tải sẵn.
Compress - nén
Tóm tắt lịch sử hội thoại và kết quả tool dài trước khi giữ lại. Anthropic gọi kỹ thuật này là compaction: khi context sắp đầy, tóm gọn những gì đã làm thành một bản tóm tắt ngắn rồi tiếp tục, thay vì kéo theo toàn bộ đuôi hội thoại.
Isolate - cô lập
Tách một tác vụ phụ (nghiên cứu, review, tra cứu) sang một subagent riêng có context sạch của nó. Subagent làm xong chỉ trả về một bản summary gọn cho agent điều phối - chi tiết rườm rà không làm bẩn context chính. Ví dụ: khi cần tìm hiểu một thư viện lạ, giao cho subagent đọc tài liệu và trả về "3 hàm cần dùng + cách gọi", thay vì kéo cả trang doc vào context chính.
Bốn chiến lược này không loại trừ nhau - trong một phiên thật bạn thường dùng cả bốn: ghi kế hoạch ra NOTES.md (Write), chỉ nạp file đang sửa (Select), nén khi lịch sử dài (Compress) và đẩy phần nghiên cứu sang subagent (Isolate). Nắm được khung này, bạn sẽ nhìn mọi tính năng của Claude Code dưới lăng kính "nó phục vụ chiến lược context nào".
| Chiến lược | Ý tưởng | Kỹ thuật Claude Code tương ứng |
|---|---|---|
| Write | Ghi ra ngoài, giữ context nhẹ | CLAUDE.md, NOTES.md, plan mode |
| Select | Nạp đúng thứ cần | @file, MCP, just-in-time retrieval |
| Compress | Nén lịch sử / output | /compact |
| Isolate | Tách việc, trả về summary | Subagents |
Kỹ thuật context engineering thực chiến trong Claude Code
Đây là phần quan trọng nhất: map bốn chiến lược trên vào những công cụ bạn dùng mỗi ngày trong Claude Code. Điểm mạnh của Claude Code là mỗi tính năng đều có thể quy về một chiến lược context - nên thay vì học thuộc lệnh, bạn hãy học nhìn "lệnh này giải quyết vấn đề context gì".
CLAUDE.md= memory bền (Write). File này chứa quy ước dự án, cấu trúc repo, do/don't. Nó được nạp vào mọi phiên, nên đây chính là nơi đòn bẩy cao nhất - viết đúng một lần, hưởng lợi mọi request./compactvà/clear(Compress + reset). Khi context gần đầy,/compactnén lịch sử thành tóm tắt;/clearxoá sạch để bắt đầu lại khi bạn chuyển sang tác vụ hoàn toàn mới./context(đo lường). Lệnh này hiển thị breakdown token đang dùng - biết chỗ nào ngốn token thì mới tối ưu được.- Subagents (Isolate). Giao việc nghiên cứu/review cho subagent để chúng tự "đốt" context riêng và chỉ trả kết quả. Xem thêm hướng dẫn dùng subagents trong Claude Code.
- MCP và
@file(Select). Nạp dữ liệu just-in-time từ nguồn ngoài thay vì tải sẵn. Nếu chưa rõ MCP, đọc bài MCP là gì. - Plan mode / scratchpad
NOTES.md(Write). Giữ kế hoạch dài ở ngoài context, agent chỉ tham chiếu khi cần.
Một ví dụ CLAUDE.md ngắn, thực dụng - đủ để agent bám đúng mà không tốn quá nhiều token:
# CLAUDE.md
## Dự án
API đặt lịch, Node.js + Fastify + PostgreSQL (Prisma).
## Cấu trúc
- src/routes - định nghĩa endpoint
- src/services - business logic
- src/db - Prisma schema & migrations
## Quy ước (DO)
- Validate input bằng zod ở tầng route
- Mọi query đi qua service, không gọi Prisma trực tiếp trong route
- Commit theo Conventional Commits
## Tránh (DON'T)
- Không thêm dependency mới khi chưa hỏi
- Không sửa file migration đã merge
- Không log dữ liệu người dùng ra console
Quản lý token budget: đo & tối ưu
Context engineering không phải cảm tính - nó là một vòng lặp đo rồi tối ưu:
- Đọc
/contextđể xem token đang phân bổ đâu: system, tools, messages, files, output. - Nhận diện thứ ngốn token: thường là output tool dài (log, kết quả test), file to nạp nguyên vẹn, hoặc lịch sử hội thoại phình.
- Xử lý theo nguyên nhân: nén (
/compact) khi lịch sử dài; nạp chọn lọc (@filethay vì cả thư mục) khi file to; tách subagent khi tác vụ phụ quá ồn. - Biết khi nào mở phiên mới: khi chuyển hẳn sang việc khác,
/clearhoặc bắt đầu phiên mới sạch sẽ tốt hơn là kéo lê context cũ.
Một mẹo thực chiến: hãy tập thói quen liếc /context ở đầu và giữa mỗi phiên dài, đặc biệt ngay sau khi chạy một lệnh trả về output lớn (build, test, log). Rất thường xuyên thủ phạm ngốn token không phải code bạn đang sửa mà là một đống log dán vào từ lần chạy trước. Nhận ra sớm thì một lần /compact hoặc mở phiên mới sẽ giải phóng lại phần lớn ngân sách.
Vì sao đáng làm? Token là tiền và là độ trễ. Context càng gọn, chi phí mỗi lượt càng thấp và phản hồi càng nhanh - và quan trọng không kém, chất lượng câu trả lời cũng tốt hơn vì model không bị phân tâm. Nếu bạn quan tâm mặt chi phí, xem bài chi phí & tối ưu token Claude Code để nối con số token với hoá đơn thực tế.
Lỗi context engineering thường gặp
Trung thực mà nói, phần lớn lỗi coding agent "ngớ ngẩn" đều bắt nguồn từ context bị hỏng chứ không phải model kém. Nhận diện đúng dạng lỗi giúp bạn sửa nhanh thay vì đổ lỗi cho công cụ. Bốn dạng phổ biến:
- Context poisoning (nhiễm độc): một thông tin sai (giả định sai, quyết định cũ đã thay đổi) kẹt lại trong context và tiếp tục dẫn agent đi lệch. Phòng: sửa hoặc
/clearkhi phát hiện, đừng để agent "tự tin trên nền sai". - Context distraction (mất tập trung): nhồi quá nhiều thông tin không liên quan khiến model loãng chú ý. Phòng: nạp chọn lọc, giữ context tối giản đủ dùng.
- Context clash (xung đột): hai chỉ dẫn mâu thuẫn cùng tồn tại (ví dụ
CLAUDE.mdnói dùng thư viện A, hội thoại lại yêu cầu B). Phòng: giữ nguồn quy ước nhất quán, cập nhật memory khi đổi hướng. - Context rot (mục nát): chất lượng giảm dần khi hội thoại quá dài. Phòng:
/compactđúng lúc, chốt kết quả ra file rồi làm mới phiên.
Công cụ & bộ kit hỗ trợ context engineering
Phần lớn kỹ thuật ở trên bạn hoàn toàn tự làm tay: viết CLAUDE.md, gõ /compact, dựng subagent. Không cần mua gì để bắt đầu. Ngoài ra, có những bộ skill/subagent dựng sẵn đóng gói các pattern như memory, compaction hay isolate để đỡ phải tự dựng lại từ đầu - ví dụ bộ kit AgentKit (giảm 20% qua link) cho Claude Code (CLI ak; lưu ý đây là sản phẩm khác OpenAI AgentKit). Nếu tò mò cách các kit này gói pattern context, đọc thêm bài AgentKit là gì (review). Còn muốn đi sâu riêng về ký ức và ngữ cảnh, xem quản lý context & memory trong Claude Code.
Câu hỏi thường gặp (FAQ)
Context engineering khác prompt engineering thế nào?
Prompt engineering tối ưu một câu lệnh cụ thể cho một lượt hỏi. Context engineering quản lý toàn bộ tập token qua nhiều lượt - system prompt, tool, code, lịch sử, memory. Prompt engineering giờ là một lớp nằm bên trong context engineering.
Học context engineering có cần biết code không?
Khái niệm thì không, nhưng để áp vào AI coding thì rất nên. Các kỹ thuật hiệu quả nhất (viết CLAUDE.md, chọn file nạp, nén lịch sử, tách subagent) đều gắn với quy trình lập trình thực tế.
Context window của Claude Code bao nhiêu token?
Các model Claude trong Claude Code có cửa sổ khoảng vài trăm nghìn token (kiểm chứng con số chính xác tại tài liệu chính thức của Claude Code trước khi dựa vào, vì giới hạn và model thay đổi nhanh). Điều quan trọng hơn con số là biết đo bằng /context và giữ phần quan trọng trong ngân sách.
Khi nào nên dùng /compact?
Khi lịch sử hội thoại đã dài và context gần đầy nhưng bạn vẫn muốn tiếp tục cùng tác vụ. /compact nén hội thoại thành tóm tắt để giữ mạch làm việc. Nếu chuyển sang việc khác hẳn, dùng /clear hoặc mở phiên mới thay vì nén.
CLAUDE.md có phải là context engineering không?
Đúng, đó là một ví dụ điển hình của chiến lược Write: bạn ghi quy ước dự án ra file bền để nạp vào mọi phiên, thay vì lặp lại chỉ dẫn mỗi lần. Viết CLAUDE.md tốt là một trong những đòn bẩy context cao nhất.
Context engineering có thay thế RAG không?
Không - RAG (retrieval) chính là một phần của chiến lược Select trong context engineering. Context engineering là khung rộng hơn, còn RAG là một kỹ thuật cụ thể để nạp đúng thông tin cần vào context.
Kết luận + bước tiếp theo
Context engineering là kỹ năng nền cho AI coding hiệu quả: không phải "model nào mạnh nhất" mà là "bạn curate context tốt tới đâu". Nắm bốn chiến lược Write · Select · Compress · Isolate, đo bằng /context, và xử lý sớm bốn dạng lỗi context - đó là cách đưa coding agent từ "hay quên" thành đáng tin. Đọc tiếp quản lý context & memory trong Claude Code để đi sâu kỹ thuật memory, và chi phí & tối ưu token Claude Code để nối context với chi phí. Nếu bạn mới bắt đầu với phong cách làm việc cùng AI, tham khảo thêm vibe coding là gì và cách tránh AI slop.