TROISINH
Nâng cao & Tự động hoáTính năng nâng cao

Context Compaction: Cách Claude Code tự 'nén' trí nhớ khi hội thoại quá dài

Context Compaction là cơ chế nén thông tin tự động của Claude Code khi đạt 200K token, giữ lại ý chính vào Task Lists để bạn làm việc liên tục nhiều giờ không lo mất ngữ cảnh.

Định nghĩa

Context Compaction là cơ chế nén thông tin tự động của Claude Code khi hội thoại tiếp cận giới hạn 200K token, chuyển đổi lịch sử chat chi tiết thành bản tóm tắt gọn gàng để giải phóng không gian cho các turn mới, trong khi vẫn bảo toàn trạng thái quan trọng thông qua Task Lists.

Giải thích chi tiết

Claude "đọc lại" chứ không "nhớ"

Khác với con người, Claude không thực sự nhớ cuộc trò chuyện. Mỗi lần trả lời, nó phải đọc lại toàn bộ cuộc hội thoại từ đầu đến cuối — từ lúc bạn chào hỏi cho đến câu hỏi vừa rồi — để tạo phản hồi. Khi khối lượng này gần chạm ngưỡng 200K token, Claude tự động "dọn dẹp" theo cách phân tầng thông minh:

  • Tầng gần nhất (Giữ nguyên chi tiết): Khoảng 20-30K token vừa trao đổi được giữ nguyên vẹn, đảm bảo Claude hiểu rõ ngữ cảnh hiện tại bạn đang làm gì
  • Tầng giữa (Tóm tắt có chọn lọc): Các đoạn hội thoại cách đây một lúc được rút gọn thành dạng "state representation" — chỉ giữ lại kết luận, bỏ đi chi tiết tra cứu thừa thãi
  • Tầng xa (Lược bỏ thông tin): Các turn cũ nhất bị loại bỏ, nhưng dữ liệu quan trọng đã được "cứu" vào Task Lists trước khi xóa

Cách này giống như bạn ghi chú họp: không ghi lại từng câu nói, nhưng vẫn nắm được quyết định chính và việc cần làm. Claude quên "cách chúng ta tìm ra bug" nhưng vẫn nhớ "bug là do Redis timeout và đã tăng pool size lên 20".

Khác gì với việc xóa chat thông thường?

Dùng lệnh /clear là xóa sạch trắng tinh — mất luôn ngữ cảnh. Còn compaction là nén có chọn lọc, áp dụng nguyên tắt "càng xa càng ít quan trọng". Thông tin cách đây 3 giờ ít khả năng liên quan đến tác vụ hiện tại hơn là lệnh bạn vừa gõ 30 giây trước.

Compaction giúp bạn tránh hiện tượng "bức tường 20 phút" — nơi AI đột nhiên quên mất chỉ thị quan trọng vì context đầy. Ví dụ: nếu bạn dặn "Không được xóa email nào khi chưa có approve", rule này sẽ được lưu vào Task List và sống sót qua compaction, thay vì bị chôn vùi trong lịch sử chat cũ.

Task Lists: Bộ nhớ ngoài không bị nén

Task Lists đóng vai trò như ổ cứng ngoài (external memory) không bị ảnh hưởng bởi compaction. Khi hệ thống nén thông tin, các quyết định kiến trúc, TODO items, và kết quả tìm kiếm quan trọng được ghi nhận vào Task Lists, sau đó được đưa lại vào context mỗi lần Claude trả lời.

Điều này tạo thành "khiên chắn" bảo vệ thông tin quan trọng khỏi bị cuốn theo dòng xoáy compaction.

Quan hệ với Memory System

Nếu nói CLAUDE.md là ổ cứng lưu trữ lâu dài (persistent memory), thì context compaction là cách quản lý RAM của session hiện tại. Khi compaction xảy ra, thông tin quan trọng nên được "checkpoint" vào memory files để sống sót qua nhiều session.

Subagents cũng liên quan mật thiết: bằng cách tách tác vụ phức tạp sang subagent với context window riêng, bạn tránh việc main context bị đầy quá nhanh, giảm tải cho cơ chế compaction.

Ví dụ thực tế

Debug marathon với hệ thống thanh toán VietQR

Bạn đang debug lỗi thanh toán VietQR trong hệ thống microservices của ứng dụng giao đồ ăn (kiểu GrabFood). Sau 2 giờ trace logs qua Redis, PostgreSQL, và thử nghiệm 15 file khác nhau, context đã đầy 180K token. Thay vì dừng lại và bắt đầu session mới (mất toàn bộ mental model), Claude tự động compact các turn cũ thành:

"Đã thử cách A (tăng timeout VietQR), B (thêm retry logic) thất bại, đang nghiêng về giả thuyết C liên quan đến race condition trong Redis connection pool."

Bạn tiếp tục debug thêm 1 tiếng nữa mà không bị mất dấu vết, cuối cùng tìm ra lỗi do ngân hàng partner trả về mã lỗi không chuẩn ISO mà không cần restart session hay giải thích lại từ đầu.

Refactor codebase sàn thương mại điện tử

Khi refactor 50 file PHP legacy của dự án marketplace kiểu Shopee/Tiki, thay vì nhét tất cả vào context chính (gây overflow sau file thứ 10), bạn dùng subagents để xử lý từng nhóm file riêng biệt:

  • Subagent A refactor module thanh toán (context window riêng)
  • Subagent B refactor module inventory (context window riêng)
  • Main agent chỉ giữ bản tóm tắt: "Đã refactor module X, Y, Z thành công, đang chờ merge"

Context compaction đảm bảo main agent chỉ lưu kết quả tổng quan, tránh bị ngập trong chi tiết implementation của từng file riêng lẻ như cách đặt tên biến hay cấu trúc loop cụ thể.

Pair programming qua ca kíp tại công ty fintech

Tech lead tại công ty fintech ở TP.HCM (kiểu Momo, ZaloPay) bắt đầu review kiến trúc vào cuối giờ chiều, để lại session với 150K token context gồm các quyết định về database schema và API contracts cho hệ thống core banking. Sáng hô sau, developer junior resume session và tiếp tục implementation.

Nhờ compaction và Task Lists, các quyết định kiến trúc quan trọng ("Dùng Repository pattern, không dùng ActiveRecord trực tiếp", "API phải trả về 404 thay vì 204 cho resource không tồn tại") vẫn được giữ nguyên trong context, ngay cả khi các chi tiết tra cứu tạm thời (logs, Stack Overflow links) đã bị compact để tiết kiệm token.

Ứng dụng

Developer debug hệ thống phức tạp

Dùng compaction để duy trì "mental model" qua nhiều giờ debugging liên tục. Kết hợp với Extended Thinking để đảm bảo ngay cả khi compact, các suy luận phức tạp về nguyên nhân gốc rễ vẫn được bảo toàn trong cấu trúc tóm tắt, không bị rút gọn thành mức mất nghĩa.

Tech lead quản lý nhiều dự án song song

Sử dụng Session Management để fork các session cho từng dự án. Compaction giúp mỗi session có thể chạy lâu dài (cả ngày) mà không bị "nghẹt" context, cho phép chuyển đổi giữa các dự án trong ngày mà không mất trạng thái mental model đã xây dựng.

DevOps chạy automation dài hạn

Khi dùng /loop cho các tác vụ monitoring hoặc maintenance kéo dài nhiều ngày (ví dụ: kiểm tra logs lỗi mỗi 30 phút cho hệ thống ngân hàng), compaction đảm bảo context không bị đầy do tích lũy logs và kết quả qua thời gian, trong khi vẫn nhớ các rule quan trọng được lưu trong memory hoặc Task Lists.

So sánh

Đặc điểmContext CompactionSession Reset (/clear)CLAUDE.md Memory
Tự độngCó, khi đạt ngưỡng tokenThủ công, chủ động gọiLưu trữ liên tục
Mức độ mất mátNén có chọn lọc (giữ state, bỏ history chi tiết)Toàn bộ context hiện tại biến mấtKhông mất, persistent qua session
Phạm vi áp dụngTrong 1 sessionTrong 1 sessionCross-session, project-wide
Mục đích chínhTiếp tục làm việc lâu dài không gián đoạnKhởi đầu mới, loại bỏ noise cũLưu trữ kiến thức lâu dài, conventions
Tương tác người dùngTrong suốt, tự độngUser chủ động gọiUser chủ động đọc/ghi
Nội dung surviveTask Lists, summariesKhông có gìToàn bộ nội dung file

Kết luận: Compaction là cầu nối giữa làm việc ngắn hạn (session) và lưu trữ dài hạn (memory). Nó cho phép "vibe coding" marathon kéo dài nhiều giờ mà không cần restart, khác biệt hoàn toàn với việc reset hoàn toàn (mất trắng) hoặc lưu trữ vĩnh viễn (cần chủ động quản lý).

Bài viết liên quan

Cùng cụm (Tính năng nâng cao)

  • Git Worktrees — Chạy song song nhiều Claude session trong 1 repo để tránh context pollution giữa các feature khác nhau, giảm tải cho compaction
  • Batch Processing — Xử lý hàng trăm file song song, giảm tải cho context window chính để tránh compaction sớm
  • Session Management — Resume, fork, rename session để quản lý nhiều luồng làm việc dài hạn mà không lo mất context
  • Subagents — Cách tách biệt context sang window riêng để tránh cần compact quá sớm

Đọc tiếp

  • Auto Mode — Để Claude tự quyết định quyền trong các session dài mà không cần approve liên tục, tận dụng compaction để chạy liên tục
  • Headless Mode — Tích hợp Claude vào CI/CD pipeline với context được quản lý và compact tự động
  • CLAUDE.md - Bộ nhớ bền vững — Lưu trữ thông tin quan trọng để sống sót qua nhiều session và compaction events

On this page