Hôm nay, chúng tôi ra mắt một bản cập nhật mới cho lệnh /usage, nhằm giúp bạn hiểu rõ hơn về tình hình sử dụng Claude Code của mình. Quyết định này xuất phát từ nhiều cuộc trao đổi sâu rộng gần đây với người dùng.
Trong các cuộc trao đổi đó, chúng tôi liên tục nghe thấy một hiện tượng: thói quen quản lý phiên làm việc của mọi người thực sự muôn hình vạn trạng. Đặc biệt là gần đây khi Claude Code nâng cấp cửa sổ ngữ cảnh (Context Window) lên mốc 1 triệu token, sự khác biệt này càng trở nên rõ rệt hơn.
Bạn có thói quen chỉ giữ một hoặc hai phiên đang mở trong terminal? Hay mỗi lần nhập prompt (lệnh) lại mở một phiên mới? Bạn thường sử dụng tính năng Nén (Compact), Quay Lại (Rewind) hay Trí tuệ Nhân tạo Con (Subagents) vào lúc nào? Và nguyên nhân nào dẫn đến một lần nén dữ liệu tồi tệ?
Ẩn chứa trong đó là cả một khoa học. Những chi tiết tưởng chừng như không đáng kể này lại ảnh hưởng rất lớn đến trải nghiệm sử dụng Claude Code của bạn. Và cốt lõi của tất cả đều quy về một việc: làm thế nào để quản lý cửa sổ ngữ cảnh của bạn.
Kiến thức cơ bản nhanh: Ngữ cảnh, Nén ngữ cảnh và Suy giảm ngữ cảnh
Cái gọi là "Cửa sổ Ngữ cảnh (Context Window)" giống như tất cả thông tin mà mô hình có thể đồng thời "nhìn thấy" trước mắt khi tạo ra câu trả lời tiếp theo. Nó bao gồm prompt hệ thống (System Prompt) của bạn, lịch sử trò chuyện cho đến thời điểm hiện tại, mỗi lần gọi công cụ (Tool Call) và kết quả đầu ra của nó, thậm chí cả mọi tệp mà nó đã đọc. Hiện tại, Claude Code sở hữu một cửa sổ ngữ cảnh siêu lớn lên tới 1 triệu token (Token)(Chú thích: Token là đơn vị cơ bản mà mô hình lớn xử lý văn bản, thường một từ tiếng Anh khoảng 1 Token, một chữ Hán có thể chiếm 1-2 Token).
Nhưng thật đáng tiếc, việc sử dụng ngữ cảnh cần phải trả một cái giá nhỏ, chúng tôi thường gọi đó là sự suy giảm ngữ cảnh (Context Rot)(Chú thích: chỉ hiện tượng khi lịch sử hội thoại ngày càng dài, mô hình cần xử lý lượng thông tin quá lớn, dẫn đến sự tập trung chú ý của nó bị phân tán, quên đi thông tin quan trọng ban đầu hoặc bị nhiễu bởi nội dung không liên quan). Khi ngữ cảnh ngày càng dài, hiệu suất của mô hình thường sẽ kém đi, đó là bởi vì sự chú ý của nó bị phân tán vào nhiều Token hơn. Những nội dung còn sót lại từ ban đầu, nay đã không còn quan trọng, sẽ bắt đầu can nhiễu vào nhiệm vụ hiện tại mà mô hình đang thực hiện.
Cửa sổ ngữ cảnh có một giới hạn dung lượng cứng. Vì vậy, khi bạn sắp làm đầy cửa sổ, bạn phải tóm tắt nhiệm vụ mình đang làm thành một mô tả ngắn gọn, rồi mang theo mô tả này để tiếp tục công việc trong một cửa sổ ngữ cảnh mới.
Chúng tôi gọi quá trình này là Nén ngữ cảnh (Compaction)(Chú thích: quá trình tinh lược lịch sử quá dài thành bản tóm tắt súc tích để giải phóng không gian bộ nhớ). Tất nhiên, bạn cũng có thể chủ động kích hoạt quá trình nén này bất cứ lúc nào.
Hãy tưởng tượng, bạn vừa yêu cầu Claude giúp bạn làm một việc, và nó đã hoàn thành. Bây giờ, ngữ cảnh của bạn đã chứa đầy một số thông tin (như lời gọi công cụ, kết quả đầu ra của công cụ, chỉ dẫn bạn đưa ra).
Tiếp theo nên làm gì? Bạn có thể sẽ ngạc nhiên khi phát hiện ra rằng bản thân lại có nhiều lựa chọn đến vậy:
· Tiếp tục (Continue)— Trong cùng một phiên, trực tiếp gửi tin nhắn tiếp theo
· Quay lại (/rewind hoặc nhấn phím Esc hai lần liên tiếp)— Quay ngược thời gian, trở lại một tin nhắn trước đó, và bắt đầu thử lại từ đó
· Xóa sạch (/clear)— Mở một phiên hoàn toàn mới, thường là mang theo bản tóm tắt ngắn gọn mà bạn đã đúc kết từ cuộc trò chuyện vừa rồi
· Nén (Compact)— Tóm tắt đoạn hội thoại hiện tại, rồi tiếp tục công việc trên cơ sở của bản tóm tắt này
· Trí tuệ Nhân tạo Con (Subagents)— Ủy thác công việc cho giai đoạn tiếp theo cho một Trí tuệ Nhân tạo (AI Agent) khác có ngữ cảnh sạch sẽ của riêng nó, và chỉ kéo kết quả công việc cuối cùng của nó về
Mặc dù "Tiếp tục" là phản ứng hợp lý nhất, nhưng bốn tùy chọn còn lại được thiết lập chính là để giúp bạn quản lý ngữ cảnh tốt hơn.
Khi nào nên mở một phiên mới?
Rốt cuộc khi nào nên duy trì một phiên cũ kéo dài, khi nào lại nên bắt đầu một phiên mới? Nguyên tắc kinh nghiệm của chúng tôi là: khi bạn bắt đầu một nhiệm vụ mới, bạn cũng nên mở một phiên mới.
Cửa sổ ngữ cảnh 1 triệu token có nghĩa là bây giờ bạn có thể hoàn thành các nhiệm vụ dài hơn, phức tạp hơn một cách rất đáng tin cậy. Ví dụ, để Claude xây dựng cho bạn một ứng dụng full-stack từ con số không.
Nhưng đôi khi, bạn có thể đang làm một số nhiệm vụ có liên quan trước sau. Lúc này, bạn cần giữ lại một phần ngữ cảnh trước đó, nhưng không phải là tất cả. Ví dụ, bạn vừa viết xong một tính năng mới, bây giờ cần viết tài liệu hướng dẫn sử dụng cho nó. Tất nhiên bạn có thể mở một phiên mới, nhưng điều đó có nghĩa là Claude phải đọc lại tất cả các tệp code bạn vừa viết — điều này không chỉ chậm hơn mà còn tốn kém hơn.
Sử dụng "Quay lại" thay vì "Sửa chữa"
Nếu buộc phải chọn ra một thói quen tốt đại diện cho "khả năng quản lý ngữ cảnh xuất sắc", thì đó chắc chắn là sử dụng tốt tính năng "Quay lại (Rewind)".
Trong Claude Code, nhấn đúp phím Esc (hoặc chạy lệnh /rewind) có thể đưa bạn quay trở lại bất kỳ tin nhắn nào trước đó, sau đó gửi prompt lại từ đó. Còn tất cả các đoạn hội thoại xảy ra sau thời điểm đó sẽ bị loại bỏ hoàn toàn khỏi ngữ cảnh.
Khi sửa lỗi của AI, "Quay lại" thường là cách làm cao minh hơn. Ví dụ: Claude đã đọc năm tệp, thử một phương pháp và thất bại. Phản ứng theo bản năng của bạn có thể là gõ vào hộp thoại: "Cách này không được, thử phương pháp X đi." Nhưng cách thông minh hơn là quay lại thời điểm nó vừa đọc xong năm tệp đó, rồi mang theo bài học bạn vừa học được để nói lại với nó: "Đừng dùng phương pháp A nữa, module foo hoàn toàn không hỗ trợ cái đó — hãy thử trực tiếp phương pháp B đi."
Bạn thậm chí có thể sử dụng tính năng "tóm tắt từ đây (summarize from here)" để Claude tự tổng kết những bài học mà nó học được thành một "thông tin bàn giao". Cảm giác này giống như "Claude phiên bản tương lai" vừa vấp ngã, để lại một mẩu giấy cho chính mình trong quá khứ chưa bắt đầu hành động.
Nén ngữ cảnh so với Phiên mới hoàn toàn
Khi một phiên làm việc ngày càng dài, bạn có hai cách để "giảm tải" cho nó: sử dụng /compact (nén) hoặc /clear (xóa sạch và bắt đầu lại từ đầu). Hai thao tác này nghe có vẻ khá giống nhau, nhưng biểu hiện thực tế lại rất khác biệt.
Nén (Compact) là để mô hình tóm tắt đoạn hội thoại cho đến thời điểm hiện tại, sau đó sử dụng bản tóm tắt này để thay thế cho lịch sử dài dòng. Quá trình này là "có tổn hao" (lossy), có nghĩa là bạn đã trao quyền quyết định "nội dung nào quan trọng" cho Claude.
Lợi ích là bạn không cần phải viết gì cả, và Claude có thể chu đáo hơn bạn nghĩ trong việc giữ lại những bài học kinh nghiệm hoặc hồ sơ quan trọng. Bạn cũng có thể kiểm soát hướng nén bằng cách ra lệnh cho nó (ví dụ: /compact tập trung vào việc tái cấu trúc module xác thực, bỏ đi những nội dung về gỡ lỗi kiểm thử).
Còn việc sử dụng /clear thì đòi hỏi chính bạn phải viết ra những điểm chính (ví dụ: "Chúng ta đang tái cấu trúc middleware xác thực, các ràng buộc hiện tại là X, các tệp quan trọng liên quan là A và B, và chúng ta đã loại trừ phương pháp Y"), sau đó bắt đầu lại với một trạng thái vô cùng sạch sẽ. Mặc dù mất công hơn, nhưng ngữ cảnh mới được tạo ra này, một trăm phần trăm đều là tinh hoa mà bạn cho là thực sự liên quan.
Kiểu "Nén" nào sẽ thất bại?
Nếu bạn thường xuyên duy trì các phiên siêu dài, bạn có khả năng cao đã gặp phải tình huống hiệu quả "nén" cực kỳ tệ hại. Chúng tôi phát hiện ra rằng, sự "thất bại" này thường xảy ra vào một thời điểm cụ thể: đó là khi mô hình ngôn ngữ lớn (LLM) không thể dự đoán được hướng công việc tiếp theo của bạn.
Ví dụ, sau một quá trình gỡ lỗi code kéo dài, hệ thống kích hoạt nén tự động, tóm tắt lại quá trình xử lý sự cố trước đó. Kết quả là bạn lập tức gửi theo một câu: "Bây giờ, hãy sửa cảnh báo khác mà chúng ta đã thấy trong bar.ts trước đây đi."
Thế nhưng, do trọng tâm của phiên làm việc trước đó hoàn toàn tập trung vào việc gỡ lỗi Bug trước, nên cảnh báo chưa kịp sửa kia rất có thể đã bị coi là thông tin không quan trọng và bị loại bỏ trực tiếp trong lúc tóm tắt.
Đây là một vấn đề khá khó giải quyết. Bởi vì bị giới hạn bởi sự suy giảm ngữ cảnh, vào thời điểm thực hiện nén, thường là lúc "chỉ số thông minh" của mô hình không ở trạng thái tốt nhất. May mắn thay, với dung lượng ngữ cảnh 1 triệu token, bây giờ bạn đã có không gian dư dả hơn để chủ động mang theo mô tả "tôi muốn làm gì tiếp theo" để thực hiện lệnh /compact trước.
Trí tuệ Nhân tạo Con và Cửa sổ Ngữ cảnh Mới hoàn toàn
Trí tuệ Nhân tạo Con cũng là một phương tiện quản lý ngữ cảnh tuyệt vời. Chiêu này đặc biệt hiệu quả khi bạn dự đoán trước được một công việc nào đó sẽ tạo ra lượng kết quả trung gian "xem xong là vứt" (sau này không dùng đến nữa) rất lớn.
Khi Claude thông qua công cụ trí tuệ nhân tạo (Agent tool) tạo ra một Trí tuệ Nhân tạo Con, tiểu家伙 này sẽ nhận được một cửa sổ ngữ cảnh hoàn toàn mới mẻ. Nó có thể thỏa sức vùng vẫy trong đó, làm bao nhiêu công việc cũng được. Đợi đến khi đại công cáo thành, nó sẽ đúc kết kết quả lại, chỉ giao nộp báo cáo cuối cùng cho Claude "cấp cha".
Câu hỏi "soi vào tâm can" mà chúng tôi dùng để đánh giá có nên dùng Trí tuệ Nhân tạo Con hay không là: sau này tôi còn cần xem kết quả đầu ra chi tiết của những công cụ này chạy không, hay tôi chỉ muốn một kết luận cuối cùng?
Mặc dù Claude Code sẽ tự động gọi Trí tuệ Nhân tạo Con ở phía sau, nhưng đôi khi bạn cũng có thể chỉ huy nó một cách rất rõ ràng. Ví dụ, bạn có thể nói với nó:
· "Cử một Trí tuệ Nhân tạo Con đi, căn cứ theo tệp quy phạm dưới đây, xác minh xem công việc chúng ta vừa làm có đúng không"
· "Cử một Trí tuệ Nhân tạo Con đi đọc thông suốt một kho code khác, tổng kết xem nó triển khai quy trình xác thực như thế nào, sau đó tự mình bắt chước, triển khai lại một lần nữa bên này"
· "Cử một Trí tuệ Nhân tạo Con đi, căn cứ theo lịch sử sửa đổi Git của tôi, viết một tài liệu hướng dẫn cho tính năng mới này"
Tóm lại, khi Claude hoàn thành một lượt trả lời, và bạn đang chuẩn bị gửi một tin nhắn mới, bạn đang đứng ở một ngã rẽ quyết định.
Chúng tôi kỳ vọng trong tương lai, Claude sẽ đủ thông minh để tự giúp bạn xử lý tốt tất cả những việc này. Nhưng ở thời điểm hiện tại, việc nắm vững các quyết định này chính là con đường tất yếu để bạn hướng dẫn Claude tạo ra kết quả chất lượng cao.














