5 chiến lược nén context: MicroCompact → Truncation
Tìm hiểu 5 cấp độ nén thông tin từ Claude Code — từ MicroCompact tinh chỉnh đến Truncation khẩn cấp — để giữ state sống sót qua hàng chục phiên làm việc với...
Định nghĩa
Context compression là quá trình giảm kích thước thông tin đầu vào trong khi vẫn bảo toàn giá trị ngữ nghĩa thiết yếu, cho phép AI agent xử lý dự án kéo dài nhiều phiên làm việc mà không vượt quá giới hạn context window.
Giải thích chi tiết
Từ "đầy bộ nhớ" đến "nén thông minh"
Mọi người thường hiểu sai về context window: không phải cứ nhét nhiều thông tin vào là AI sẽ "thông minh" hơn. Context window giống như RAM của máy tính — có giới hạn cứng và tốc độ truy cập không đồng đều. Khi agent làm việc với codebase lớn hoặc dự án kéo dài ngày, tuần, việc nhồi nhét toàn bộ lịch sử chat, code, và quyết định vào prompt không chỉ tốn token đắt đỏ mà còn khiến model bị "ngộp", dẫn đến hiệu suất suy giảm (hiện tượng "lost in the middle").
Nén context không phải là xóa bỗng dưng, mà là chuyển đổi định dạng lưu trữ: từ verbose logs sang structured state, từ conversational history sang semantic checkpoints.
5 cấp độ nén của Claude Code
Anthropic triển khai trong Claude Code một hệ thống 5 cấp độ nén thông minh, từ nhẹ nhàng đến triệt để, tương ứng với mức độ "nguy cấp" của context budget:
1. MicroCompact: Gom cụm ý niệm
Chiến lược nén triệt để nhưng tinh tế nhất. Thay vì lưu nguyên văn: "Người dùng yêu cầu thêm button màu xanh ở header, sau đó đổi thành màu đỏ do nhầm lẫn, rồi cuối cùng quay lại xanh", MicroCompact ghi: Header button: final_color = blue, rationale = reverted after testing.
Biến chuỗi sự kiện (events) thành trạng thái cuối (state), loại bỏ intermediate steps nhưng giữ rationale — vừa tiết kiệm token vừa giữ lý do logic.
2. Structured Summary: Phân cấp thông tin
Tạo bản tóm tắt phân tầng theo mức độ quan trọng: P0 (critical — architectural decisions), P1 (important — implementation details), P2 (contextual — discussion nuances). Khi nén, giữ nguyên P0, tóm tắt ngắn gọn P1, và loại bỏ hoàn toàn P2. Điều này đảm bảo những quyết định mang tính "kiến trúc" (như chọn database hoặc API contract) không bị mất trong quá trình nén.
3. Semantic Chunking: Cắt theo nghĩa
Thay vì cắt text theo số ký tự hoặc số dòng (dễ tạo ra các đoạn văn bị cắt nửa chừng, mất ngữ cảnh), Semantic Chunking chia theo unit logic: mỗi chunk là một hàm hoàn chỉnh, một user story, một bug report đã fix, hoặc một quyết định thiết kế. Các chunk này có thể được đánh index và retrieve lại khi cần, thay vì nhét cả khối vào context.
4. Selective Retention: Chọn lọc thông minh
Dựa trên heuristics hoặc classifier để quyết định "cái gì sống, cái gì chết":
- Luôn giữ: API contracts, pending tasks, architectural constraints, failed attempts (để tránh lặp lại sai lầm)
- Chủ động xóa: Successful test runs, đoạn chat xã giao ("cảm ơn", "được rồi"), intermediate reasoning steps đã dẫn đến kết luận cuối
5. Truncation: Cắt bỏ khẩn cấp
Giải pháp cuối cùng khi context sắp overflow: cắt bỏ oldest-first (FIFO — First In First Out), loại bỏ các tin nhắn đầu phiên để nhường chỗ cho tin nhắn mới. Đây là "phao cứu sinh" — có thể mất thông tin quan trọng nếu các quyết định kiến trúc nằm ở đầu conversation, nhưng đảm bảo agent không bị crash do vượt quá token limit.
progress.txt và JSON Feature List: Nén trong thực chiến
Hai pattern nén phổ biến trong hệ thống production:
progress.txt: File văn bản thuần túy lưu trạng thái hiện tại của dự án dưới dạng highly compressed. Ví dụ: Status: Đang viết module auth. Blocker: Chờ review PR #24. Next: Integrate với payment. Khi session mới bắt đầu, agent đọc file này (chỉ vài trăm bytes) thay vì phải đọc lại toàn bộ conversation history (có thể hàng chục nghìn tokens).
JSON Feature List: Dùng trong Anthropic Console và các hệ thống long-running — lưu danh sách tính năng dạng JSON có version control, tránh ghi đè (anti-overwrite). Mỗi feature là một object nén: {"id": "feat-001", "status": "implemented", "key_decisions": ["use JWT", "no SQL"], "created_at": "...", "compressed_from": "session-123-logs"}. Cách này cho phép kiểm tra lại lineage của thông tin (thông tin nén từ đâu) mà không cần giữ toàn bộ raw data.
Ví dụ thực tế
Claude Code với codebase 100.000 dòng
Khi Claude Code làm việc với repository lớn, nó không đọc toàn bộ file vào context. Thay vào đó, nó dùng MicroCompact để lưu: File src/auth.js: modified lines 45-67, added import "bcrypt", removed deprecated function "hashOld". Sau 10 phiên làm việc liên tiếp, thay vì lưu 50MB log chat đầy đủ, hệ thống chỉ giữ 5KB structured summary gồm các thay đổi kiến trúc quan trọng và rationale. Khi người dùng hỏi "tại sao chúng ta dùng bcrypt?", agent vẫn trả lời được dựa trên compressed rationale đã lưu, dù không còn giữ đoạn chat gốc.
Anti-overwrite trong Memory 3 tầng
Hệ thống Memory 3 tầng (MEMORY.md → Topic files → Session transcripts) áp dụng nén theo chiều đi lên:
- Session transcripts (tầng 3): Dữ liệu thô, verbose, đầy đủ conversation
- Topic files (tầng 2): Được nén từ tầng 3 qua MicroCompact — chỉ giữ key decisions và action items
- MEMORY.md (tầng 1): Được nén từ tầng 2 qua Structured Summary — chỉ còn lại các architectural pillars và constraints
Cơ chế này đảm bảo thông tin ở tầng cao nhất (MEMORY.md) không bị ghi đè bởi thông tin nhiễu từ các session cụ thể, đồng thời vẫn cho phép drill-down vào topic files khi cần chi tiết.
progress.txt trong workflow nghiên cứu 2 tuần
Một agent được giao nhiệm vụ viết tài liệu kỹ thuật về hệ thống payment gateway. Mỗi ngày kết thúc, agent tự động append vào progress.txt: [Day 3] Hoàn thành: Phân tích các loại transaction. Đang chờ: Input từ team Security về encryption. Blocker: Chưa có tài liệu PCI-DSS mới nhất.
Ngày hôm sau, khi mở phiên mới, agent đọc file này (200 bytes) và biết ngay cần làm gì, thay vì phải đọc toàn bộ conversation 3 ngày trước (30.000 tokens). Nếu cần chi tiết về "các loại transaction", agent có thể retrieve từ vector store bằng semantic search, chứ không cần giữ trong working memory.
Ứng dụng
Kỹ sư AI xây dựng agent
Thiết kế pipeline nén tự động: đầu vào là conversation logs, đầu ra là structured state. Tích hợp 5 cấp độ nén vào system prompt, cho phép agent tự quyết định khi nào nén sâu (MicroCompact) và khi nào giữ nguyên (full logs) cho các quyết định quan trọng.
Developer dùng Claude Code hoặc Cursor
Hiểu cách công cụ "nhớ" thông tin giữa các phiên chat. Biết cách ép buộc retention cho thông tin quan trọng bằng cách đánh dấu rõ ràng trong chat (ví dụ: ghi chú #critical hoặc tạo file DECISIONS.md riêng) để tránh bị nén mất hoặc truncated khi context dài.
Doanh nghiệp triển khai AI agent dài hạn
Xây dựng chính sách nén (compression policies) cho các workflow kéo dài tuần/tháng: thiết lập compression ratio targets, xác định retention criteria cho từng loại dữ liệu (financial records giữ lâu hơn chat logs), và triển khai checkpoint systems để có thể "rewind" về trạng thái trước khi nén nếu cần audit trail.
So sánh
| Chiến lược | Tỷ lệ nén | Chi phí xử lý | Rủi ro mất mát | Khi nào dùng |
|---|---|---|---|---|
| MicroCompact | 10–50x | Thấp | Thấp | Mọi phiên làm việc thông thường |
| Structured Summary | 5–20x | Trung bình | Thấp | Chuyển giữa các session |
| Semantic Chunking | 2–5x | Cao | Trung bình | Xử lý tài liệu dài (PDF, docs) |
| Selective Retention | 3–10x | Trung bình | Cao nếu lọc sai | Context window gần đầy (80%) |
| Truncation | 1–2x | Thấp | Rất cao | Khẩn cấp, sắp overflow |
MicroCompact và Structured Summary nên là mặc định cho mọi hệ thống production — chúng giảm volume đáng kể mà không tổn hại khả năng reasoning của model. Truncation chỉ nên dùng như "phao cứu sinh" cuối cùng, và luôn kèm theo cảnh báo cho người dùng rằng một phần lịch sử đã bị cắt bỏ, có thể ảnh hưởng đến coherence của agent.
Bài viết liên quan
State Management: State sống sót qua context window
Tìm hiểu cách state được duy trì khi vượt quá giới hạn một phiên làm việc
Memory 3 tầng: Index → Topic files → Session transcripts
Kiến trúc phân tầng để lưu trữ bộ nhớ dài hạn cho AI agent
Progress Tracking: JSON feature list, checklist, progress files
Các pattern theo dõi tiến độ công việc qua nhiều phiên
Session Handoff: Truyền state giữa các session
Kỹ thuật truyền giao trạng thái giữa các phiên làm việc liên tiếp
Đọc tiếp
State Management: State sống sót qua context window
Làm sao để AI agent không quên tiến độ khi đóng laptop? Kỹ thuật cross-session state management cho dự án phức tạp.
Memory 3 tầng: Index → Topic files → Session transcripts
Kiến trúc bộ nhớ ngoài 3 tầng giúp AI agent không quên dự án dài hạn. Từ MEMORY.md index đến topic files và session transcripts - giải pháp cross-session con...