TROISINH
Nền tảngKhái niệm cốt lõi

Context Window 200K token: Tại sao Claude hay 'quên' và cách xử lý

Context window 200K token là 'trí nhớ ngắn hạn' của Claude Code. Hiểu cơ chế compaction và phân biệt với CLAUDE.md giúp bạn làm chủ codebase lớn mà không lo AI 'quên' lệnh.

Định nghĩa

Context window (cửa sổ ngữ cảnh) là lượng thông tin tối đa mà AI có thể "nhớ" trong một lần trao đổi, tính bằng token. Với Claude 3.5/3.7 Sonnet trong Claude Code, giới hạn thực tế là 200.000 token — tương đương khoảng 500 trang A4 văn bản tiếng Anh, đủ để chứa toàn bộ codebase nhỏ hoặc một module lớn trong khi vẫn duy trì khả năng suy luận.

Giải thích chi tiết

Context Window là "RAM" của AI

Hãy tưởng tượng não bộ AI có hai loại bộ nhớ giống như máy tính: RAM (bộ nhớ truy cập nhanh) và Ổ cứng (lưu trữ lâu dài). Context window chính là RAM — nơi AI đọc, suy nghĩ và quyết định trong thời gian thực.

Khi bạn chat với Claude, mỗi lượt trao đổi (cả câu hỏi của bạn và câu trả lời của AI) đều chiếm chỗ trong context window. Nếu bạn paste 50 file code vào một lúc, context window sẽ đầy nhanh chóng. Khi đầy, Claude không thể "nhớ" thêm thông tin mới trừ khi... quên bớt thông tin cũ.

Compaction: Khi bộ nhớ đầy đến 200K token

Khi hội thoại tiến gần đến giới hạn 200K token, Claude Code tự động kích hoạt compaction (nén ngữ cảnh) — một cơ chế lossy compression giống như việc tóm tắt lại cuộc họp dài hai tiếng thành vài bullet point.

Cơ chế này hoạt động theo tầng:

  • Gần đây (khoảng 20-30K token cuối): Giữ nguyên chi tiết đầy đủ
  • Giữa chừng: Tóm tắt thành các ý chính, bỏ chi tiết dư thừa
  • Quá cũ: Xóa bỏ nhưng trích xuất các quyết định quan trọng vào Task Lists — những danh sách nhiệm vụ đặc biệt sống sót qua compaction

Đây là lý do tại sao Claude có thể làm việc liên tục hàng giờ mà không "đơ" — nó liên tục "dọn dẹp" trí nhớ ngắn hạn, giữ lại chỉ những gì quan trọng nhất.

"Lost in the Middle": Điểm mù của ngữ cảnh

Có một hiện tượng tâm lý học gọi là Lost in the Middle (lạc giữa đường): AI chú ý rất tốt đến đầu và cuối cuộc hội thoại, nhưng thường "bỏ qua" thông tin ở giữa. Điều này giống như khi bạn đọc một email dài 500 dòng từ sếp — bạn nhớ rõ yêu cầu đầu tiên và kết luận cuối cùng, nhưng quên mất các bước thực hiện ở giữa.

Trong thực tế, điều này có nghĩa là: nếu bạn dump cả thư mục node_modules hoặc 100 file không liên quan vào context, Claude sẽ "bị ngộp" và có thể bỏ qua các yêu cầu bảo mật quan trọng bạn đưa ra ở đầu cuộc trò chuyện. Đây là lý do tại sao nhiều người dùng nhận thấy Claude "quên" không chạy test sau khi sửa code — vì lệnh "phải chạy test" nằm quá xa trong context window đã bị compaction.

Phân biệt Context Window và CLAUDE.md

Đây là điểm gây nhầm lẫn nhất cho người mới:

  • Context Window (200K token): Giống như trí nhớ làm việc của bạn lúc này. Khi tắt máy (kết thúc session), nó biến mất. Dùng để suy nghĩ, tính toán, so sánh code hiện tại.
  • CLAUDE.md (Memory): Giống như sổ tay bạn viết ra giấy. Nó tồn tại trên ổ đĩa (~/.claude/ hoặc ./.claude/), sống qua nhiều session, không giới hạn dung lượng (vì nằm trên disk), nhưng AI phải "đọc" lại mỗi lần bắt đầu.

Khi bạn có project lớn, bạn không thể nhét cả project vào context window (200K token sẽ hết). Thay vào đó, bạn viết kiến trúc tổng quan vào CLAUDE.md (lưu trữ lâu dài), và dùng context window để "suy nghĩ" về file cụ thể đang sửa.

Ví dụ thực tế

Refactor module thanh toán VietQR 50 file trong fintech startup

Cách làm sai: Mở Claude, paste toàn bộ 50 file liên quan đến module thanh toán VietQR vào cùng lúc, yêu cầu "refactor tất cả". Kết quả: Sau file thứ 30, Claude quên mất bạn muốn chuyển từ class component sang React hooks, vì context đã bị compaction chi tiết yêu cầu ban đầu.

Cách làm đúng: Dùng Subagents. Agent chính giữ context sạch (chỉ chứa danh sách file cần sửa), rồi delegate từng file cho subagent riêng. Mỗi subagent có context window 200K token riêng, chỉ chứa 1 file + yêu cầu cụ thể. Kết quả merge lại sau cùng. Đây là cách Claude xử lý "batch processing" mà không bị đầy bộ nhớ.

Phân tích log lỗi production Shopee ngày sale 11/11

Cách làm sai: Copy-paste toàn bộ log lỗi 10.000 dòng vào chat. Log chiếm 50K token. Sau đó bạn thảo luận thêm 10 lượt về nguyên nhân lỗi payment gateway, context đầy, Claude bắt đầu quên các pattern lỗi ở đầu file log.

Cách làm đúng: Lưu log vào file error.log, dùng lệnh Read hoặc MCP Filesystem để Claude đọc từng đoạn khi cần. Hoặc dùng grep trong Bash tool để lọc trước: grep "VietQR" error.log | head -100. Giữ context window cho việc phân tích nguyên nhân, không để nó chứa dữ liệu thô.

Sinh viên Bách Khoa học codebase Laravel của dự án Grab-like

Một sinh viên năm 3 muốn hiểu kiến trúc hệ thống đặt xe. Thay vì load cả thư mục Laravel (vượt quá 200K token), sinh viên này:

  1. Tạo CLAUDE.md chứa tóm tắt kiến trúc database schema và luồng đặt xe (file-based memory)
  2. Dùng context window để thảo luận từng file cụ thể: "File BookingController.php này xử lý gì?", "Function calculateFare() gọi đến đâu?"
  3. Khi context đầy (sau 20-30 câu hỏi), dùng /clear để reset và bắt đầu chủ đề mới (ví dụ: chuyển sang tìm hiểu phần Notification), hoặc dùng memory để lưu insight quan trọng ra file.

Ứng dụng

Dành cho Developer mới vào nghề

Hiểu rằng bạn không thể "nhồi" cả repository vào Claude. Học cách chia nhỏ task: sửa tính năng A trước, commit, rồi mới đến tính năng B. Dùng git diff để đưa chỉ thay đổi vào context thay vì cả file. Khi thấy Claude trả lời "lạc đề" hoặc quên yêu cầu cũ (ví dụ: bỏ qua yêu cầu viết unit test), đó là dấu hiệu context đầy — hãy dùng /compact hoặc bắt đầu session mới.

Dành cho Senior Developer/Architect

Dùng Planning Mode để tạo roadmap trước khi code. Planning giúp externalize suy nghĩ ra khỏi context window — bạn có kế hoạch viết sẵn, AI chỉ cần nhớ plan đó thay vì nhớ toàn bộ codebase. Kết hợp với CLAUDE.md để offload kiến thức domain (công thức tính hoa hồng Grab, luật giao dịch điện tử) ra khỏi context window, chỉ giữ lại logic code trong đầu AI.

Dành cho PM và Data Analyst

Khi phân tích tài liệu, nếu báo cáo dài trên 200 trang (vượt quá 200K token), chia thành các batch nhỏ hơn 500 token mỗi batch (khoảng 20 trang). Hoặc dùng MCP Database để truy vấn dữ liệu on-demand thay vì load toàn bộ CSV vào chat. Nhớ rằng mỗi turn trả lời của AI cũng tốn token — một câu trả lời dài 4000 token sẽ nhanh chóng làm đầy context window trong 10-15 lượt trao đổi.

Dành cho Non-coder (Vibe Coding)

Khi build app bằng cách "vibe coding", mỗi lần chỉnh sửa dễ dẫn đến context bloat vì AI phải nhớ cả lịch sử thay đổi. Nếu thấy Claude bắt đầu "quên" các quyết định kiến trúc đã thống nhất từ đầu (ví dụ: "tôi tưởng chúng ta dùng màu xanh chứ?"), đó là lúc context window đầy. Giải pháp: dùng /clear hoặc start new session, và viết lại các quyết định quan trọng vào CLAUDE.md để chúng "sống sót" qua các session.

So sánh

Đặc điểmContext WindowCLAUDE.md (Memory)
Bản chấtRAM - bộ nhớ tạmDisk - lưu trữ lâu dài
Giới hạn200K token (Claude 3.5/3.7)Không giới hạn (file trên ổ đĩa)
Thời gian sốngChỉ trong sessionVĩnh viễn cho đến khi xóa file
Tốc độ truy cậpTức thì (đã load sẵn)Cần đọc file (chậm hơn chút)
Chi phí APITính tiền mỗi tokenChỉ tính tiền lúc đọc/ghi file
Mất mát dữ liệuMất khi đóng terminalGiữ lại sau khi tắt máy
Dùng đểSuy nghĩ, tính toán, so sánh codeLưu quy tắc, kiến thức domain, lịch sử dự án

Kết luận: Context window là nơi AI "suy nghĩ", CLAUDE.md là nơi AI "học bài". Bạn cần cả hai: dùng CLAUDE.md để lưu kiến thức bền vững, dùng context window để xử lý thông tin động. Khi context window đầy, hãy "flush" thông tin quan trọng ra CLAUDE.md trước khi tiếp tục.

Bài viết liên quan

Cùng cụm (Core Concepts):

  • how-agent-loop-works - Hiểu vòng lặp đọc-nghĩ-hành động, nơi context window được sử dụng liên tục
  • claude-md-guide - Cách dùng CLAUDE.md để bù đắp cho giới hạn context window
  • permission-modes - Các chế độ như planauto ảnh hưởng đến cách quản lý context

Đọc tiếp (Level 1 - Sử dụng thực chiến):

  • bundled-skills - Cách Skills dùng Progressive Disclosure để tiết kiệm context window
  • subagents-overview - Chạy song song nhiều agent để tránh bị "bóp" context khi xử lý nhiều file
  • agent-memory - Hiểu sâu hơn về 3 cấp độ memory (user/project/local) và cách chúng tương tác với context window

On this page