Quản Lý Session Trong Claude Code Và Context 1M Token
Khi Claude Code hỗ trợ context window lên tới 1M token, câu hỏi không còn chỉ là “model có đủ dài để nhớ không”. Câu hỏi thực tế hơn là: bạn nên giữ session hiện tại, quay lại bước trước, nén bớt context hay mở hẳn một phiên mới?
Bài viết này trả lời đúng bài toán đó. Đây là một hướng dẫn rất thực dụng để bạn biết khi nào nên tiếp tục cùng một session, khi nào nên rewind, khi nào nên dùng /compact, khi nào nên /clear, và khi nào nên giao việc cho sub-agent.
Điểm chính
- Context window càng lớn không đồng nghĩa session càng dài sẽ luôn tốt hơn; context cũ và nhiễu vẫn có thể làm chất lượng suy giảm.
rewind,/compact,/clearvà sub-agent là bốn công cụ khác nhau cho bốn kiểu vấn đề khác nhau.- Quy tắc đơn giản nhất là: đổi task thì nên đổi session; chỉ giữ phiên cũ khi context trước đó vẫn còn giá trị thật sự.
Claude Code hiện có thêm lệnh /usage để bạn kiểm tra mình đang dùng context ra sao. Theo bài gốc, phản hồi từ người dùng cho thấy mỗi người có thói quen dùng session rất khác nhau, và điều đó trở nên quan trọng hơn nhiều khi cửa sổ ngữ cảnh đã lớn tới 1M token.
Tổng quan nhanh về context, compaction và "context rot"
Trong Claude Code, context window là toàn bộ những gì model đang nhìn thấy ở thời điểm hiện tại: chỉ dẫn hệ thống, lịch sử hội thoại, tool calls cùng kết quả của chúng, và mọi file đã được nạp vào phiên làm việc.
Nghe thì có vẻ càng nhiều càng tốt, nhưng thực tế không đơn giản như vậy. Khi context phình to dần, hiệu năng có thể giảm vì những phần cũ, ít liên quan hoặc đã lỗi thời bắt đầu chen chỗ của thứ quan trọng hơn ở hiện tại. Bài viết gọi hiện tượng suy giảm này là một dạng "context rot".
Khi cửa sổ ngữ cảnh tiến gần giới hạn, Claude Code sẽ tóm tắt phần công việc đang diễn ra rồi tiếp tục trong một cửa sổ mới. Quá trình đó được gọi là compaction. Đây là cách hệ thống giảm tải, nhưng nó cũng có một đánh đổi rõ ràng: tóm tắt luôn là một dạng nén mất mát.
Mỗi lượt làm việc là một điểm rẽ nhánh
Sau khi xong một phần việc, bạn không nhất thiết phải tiếp tục theo đúng một đường thẳng. Theo bài gốc, mỗi turn thực chất là một điểm rẽ nhánh, nơi bạn có thể chọn một trong nhiều hướng:
- Tiếp tục cùng session hiện tại.
- Quay lại một điểm trước đó bằng
rewind. - Xóa context hiện tại và bắt đầu lại.
- Compact cuộc hội thoại rồi tiếp tục.
- Giao một phần việc sang sub-agent.
Cách nhìn này rất hữu ích vì nó biến session management thành một quyết định chủ động, thay vì thứ chỉ xảy ra khi model bắt đầu lẫn hoặc chậm đi.
Khi nào nên bắt đầu một session mới?
Quy tắc ngắn gọn nhất của bài viết là: khi task đã đổi, hãy bắt đầu một session mới.
Một session dài vẫn có thể hữu ích nếu bạn đang làm những phần việc còn liên quan chặt với nhau. Nhưng nếu công việc đã chuyển sang một mục tiêu khác, context cũ rất dễ trở thành gánh nặng hơn là tài sản. Nó có thể làm Claude chậm hơn, bám vào hướng suy luận cũ, hoặc ưu tiên nhầm những chi tiết không còn quan trọng nữa.
Nói cách khác, đừng giữ session cũ chỉ vì bạn "đã đi được khá xa". Hãy giữ nó khi những gì đã có vẫn thật sự giúp ích cho bước tiếp theo.
Rewind thay vì chỉ sửa prompt
Một trong những ý hay nhất của bài gốc là dùng rewind khi Claude đã đi sai hướng, thay vì cứ tiếp tục sửa dần trong cùng một nhánh hội thoại.
Rewind cho phép bạn quay lại một tin nhắn trước đó và thử lại từ điểm ấy, đồng thời loại bỏ các tin nhắn về sau khỏi context. Cách này đặc biệt hữu ích khi bạn muốn giữ lại những lần đọc file hoặc khám phá hữu ích, nhưng bỏ đi phần thử nghiệm thất bại.
Lợi ích lớn ở đây là bạn không cần kéo theo toàn bộ dấu vết của một nỗ lực sai. Bạn vẫn giữ được những gì đáng giá, rồi viết lại prompt với thông tin mới hoặc chỉ dẫn tốt hơn. Bài gốc cũng nhắc tới kiểu handoff như "summarize from here" như một cách khác để giữ lại bài học đã có, nhưng không buộc phải mang nguyên xi toàn bộ nhánh cũ sang trước mặt model.
Nên dùng /compact hay mở session mới bằng /clear?
Bài gốc đặt cạnh nhau hai cách rất phổ biến để giảm bớt "hành lý" trong một phiên làm việc dài:
"/compact": yêu cầu Claude tóm tắt cuộc hội thoại rồi tiếp tục từ bản tóm tắt đó."/clear": tự viết lại brief cần thiết và bắt đầu từ một session sạch hoàn toàn.
/compact dễ hơn và trong nhiều trường hợp cũng đầy đủ hơn, vì Claude có thể nhìn lại toàn bộ chuỗi làm việc để tự rút ra điều quan trọng. Nhưng nó có tính mất mát. Những gì không được tóm tắt đúng mức có thể biến mất khỏi context kế tiếp.
/clear tốn công hơn vì bạn phải tự quyết định cái gì đáng mang sang. Bù lại, bạn có quyền kiểm soát chính xác hơn. Nếu bạn đã biết rất rõ vấn đề bây giờ là gì, đâu là yêu cầu thực sự cần giữ, và đâu là rác nên bỏ, thì /clear thường cho một điểm khởi đầu sạch hơn.
Có thể hiểu đơn giản như sau: /compact là để Claude tự dọn bàn làm việc; /clear là bạn tự dọn và chỉ đặt lại những gì thật sự cần.
Vì sao autocompact đôi khi cho kết quả kém?
Theo bài viết, compaction có thể hoạt động không tốt khi model không đoán được công việc đang đi về đâu. Trong tình huống đó, các nhánh phụ quan trọng hoặc các chi tiết mà bạn sắp cần tới có thể bị rơi khỏi bản tóm tắt.
Một vấn đề khác là autocompact thường xảy ra vào lúc model đã chịu áp lực context khá lớn. Tức là khi cần nén nhất, cũng là lúc việc chọn lọc thông tin trở nên khó hơn. Vì thế, bài gốc gợi ý rằng compact chủ động, có kèm hint hoặc định hướng, thường đáng tin hơn so với chờ hệ thống tự compact khi đã quá sát trần.
Đây là một ý rất thực tế: nếu bạn đã thấy session bắt đầu loãng, hãy nén sớm khi bạn còn chủ động được câu chuyện.
Sub-agent và lợi thế của context window mới
Sub-agent đặc biệt phù hợp khi bước tiếp theo sẽ tạo ra rất nhiều output trung gian mà bạn biết trước là mình sẽ không cần giữ lại về sau.
Một sub-agent có context window sạch riêng, làm việc độc lập, rồi chỉ trả về phần kết quả đã được tổng hợp cho agent cha. Theo cách diễn đạt của bài gốc: nếu bạn chỉ cần kết luận, hãy delegate; nếu bạn sẽ cần cả chi tiết trung gian về sau, hãy giữ việc đó trong main thread.
Đây là một nguyên tắc rất hữu ích để giảm nhiễu. Không phải mọi log, mọi bước tìm kiếm hay mọi thử nghiệm đều nên nằm lại trong session chính. Nếu bạn chỉ cần "đáp án cuối", hãy để sub-agent hấp thụ phần ồn đó thay bạn.
Tổng hợp nhanh: nên chọn cách nào trong từng tình huống?
| Tình huống | Hành động gợi ý | Vì sao |
|---|---|---|
| Vẫn là cùng một task và context trước đó còn quan trọng | Continue |
Cửa sổ hiện tại vẫn còn giá trị, nên không cần dựng lại từ đầu. |
| Claude đã đi sai hướng | Rewind (nhấn Esc hai lần) |
Giữ lại các lần đọc hữu ích, bỏ nhánh đi sai và thử lại với chỉ dẫn tốt hơn. |
| Session bị bừa bộn bởi debug cũ hoặc các nhánh khám phá đã stale | "/compact <hint>" |
Cách nhanh để thu nhỏ context mà vẫn chỉ cho Claude điều gì cần giữ lại. |
| Bạn đang bắt đầu một task thật sự mới | "/clear" |
Loại bỏ hoàn toàn context cũ để bắt đầu sạch. |
| Bước tiếp theo sẽ tạo ra nhiều output trung gian có thể bỏ đi | Sub-agent |
Giữ phần ồn đó ra khỏi session chính và chỉ nhận lại kết quả. |
Kết luận
Nếu bạn làm việc với Claude Code thường xuyên, session management không còn là một mẹo nhỏ nữa. Nó là một phần của workflow. Context 1M token mở ra nhiều khả năng hơn, nhưng không tự động giải quyết vấn đề nhiễu, lệch hướng hay tích tụ lịch sử không còn liên quan.
Điểm hay của bài viết này là nó không biến session management thành thứ quá lý thuyết. Thay vào đó, nó cho bạn một khung ra quyết định rất thực dụng: cùng task thì tiếp tục, đi sai thì rewind, loãng thì compact, đổi task thì clear, còn phần nào nhiều output rác thì giao cho sub-agent.
Nếu bạn nắm được năm lựa chọn này và dùng đúng lúc, Claude Code sẽ không chỉ "biết nhiều hơn" nhờ context lớn. Nó sẽ làm việc gọn hơn, đúng hướng hơn và đỡ mệt cho bạn hơn.
Bình luận