Claude Code Memory & Context: Hướng Dẫn Quản Lý (2026)

Claude Code là gì có ba lớp bộ nhớ: auto memory (tự ghi vào MEMORY.md), CLAUDE.md (bạn viết tay), và session context (lịch sử cuộc trò chuyện). Context window đã lên tới 1 triệu token từ tháng 3/2026, nhưng mỗi phiên làm việc ngốn 7.850 token chỉ để khởi động. Khi ngưỡng 83.5% đầy, auto-compact tự kích hoạt. Biết cách dùng /compact, --resume, và permissions.deny đúng lúc giúp bạn tiết kiệm token đáng kể và giữ Claude luôn trong trạng thái “nhớ đúng việc”.
(GA tháng 3/2026)
auto-compact
Claude Chat thông thường
nhờ permissions.deny
Mình bắt đầu dùng Claude Code là gì với suy nghĩ đơn giản: “AI thì đọc hết code, mình cứ hỏi thôi.” Sau vài tuần, mình nhận ra mình đã hiểu sai hoàn toàn. Claude Code không “nhớ” theo kiểu database. Nó nhớ theo cơ chế context window, và khi window đầy thì nó… quên. Hiểu đúng ba lớp bộ nhớ của Claude Code là điều mình ước mình biết sớm hơn ba tháng.




Claude Code Nhớ Gì Giữa Các Phiên?
Claude Code duy trì bộ nhớ liên phiên nhờ hệ thống auto memory lưu tại ~/.claude/projects/<project>/memory/MEMORY.md. Mỗi phiên, Claude tự ghi nhận patterns, build commands, và lessons learned vào file này. Tối đa 200 dòng đầu hoặc 25KB được nạp tự động khi phiên mới bắt đầu. (Anthropic Docs, 2026)
Cơ chế này hoạt động khá khéo. Claude không chỉ đọc memory, nó còn cập nhật memory sau mỗi tác vụ quan trọng. Ví dụ, nếu mình chạy npm run build thành công, Claude sẽ ghi lệnh đó vào MEMORY.md để phiên sau không cần hỏi lại. Mình đã thấy rõ điều này khi làm việc với một mono-repo phức tạp: sau tuần đầu, Claude gần như không hỏi lại bất kỳ câu nào về cấu trúc thư mục.
Ngoài auto memory, còn có hai loại khác. CLAUDE.md là file bạn tự viết, chứa quy tắc và conventions dự án. Session context là lịch sử cuộc trò chuyện hiện tại, bao gồm tool results và các file đã đọc. Ba lớp này hoạt động cùng lúc, nhưng với vai trò khác nhau.
/memory trong Claude Code để xem tất cả các file memory đang được nạp vào phiên hiện tại. Rất hữu ích để kiểm tra xem Claude đang “nhớ” gì về dự án của bạn.

CLAUDE.md Hoạt Động Thế Nào?
CLAUDE.md là file instructions bạn tự viết, nạp vào mỗi phiên với chi phí khoảng 1.800 token khi khởi động. (Anthropic Docs, 2026) Khác với auto memory, CLAUDE.md không tự cập nhật. Bạn là người kiểm soát hoàn toàn nội dung của nó.
Điều thú vị là CLAUDE.md hoạt động theo hệ thống 6 cấp độ. Các file này không ghi đè nhau mà được nối tiếp (concat). Claude đọc tất cả, từ managed rules đến local overrides. Thứ tự ưu tiên từ cao xuống thấp là: managed → user → rules → project → project rules → local.
Mình hay dùng CLAUDE.local.md để thêm những ghi chú cá nhân mà không muốn commit vào git. Ví dụ, ghi chú về API key test hay cấu hình local environment. File này thường nằm trong .gitignore, nên an toàn để chứa thông tin nhạy cảm ở mức thấp. Bài chi tiết về CLAUDE.md và cách cấu hình mình đã viết riêng nếu bạn muốn đi sâu hơn.
Context Window 1M Token: Dùng Hết Chưa?
Context window 1 triệu token của Claude Code (Opus 4.6 và Sonnet 4.6) đã chính thức GA vào ngày 13/3/2026. (Claudefa.st, 2026) Con số này nghe lớn, nhưng thực tế mỗi phiên làm việc đã tốn khoảng 7.850 token chỉ để khởi động, trước khi bạn gõ một chữ nào.
Chi phí khởi động phân bổ như sau:
Điều mình thấy thú vị là Skills chỉ tốn token khi được gọi, không phải lúc khởi động. Nếu bạn đang dùng nhiều skills nhưng chỉ dùng một vài cái, đây là chỗ tối ưu được. Còn system prompt thì cố định, không can thiệp được.
Với một tác vụ sửa code đơn lẻ, bạn có thể tiêu từ 50.000 đến 150.000 token. Nếu session phức tạp, con số đó nhân lên nhanh lắm. Đó là lý do tại sao Claude Code ngốn token gấp 10-100 lần so với dùng Claude trên web thông thường. (Claudefa.st, 2026)
/compact Là Gì Và Khi Nào Nên Dùng?
Lệnh /compact thay thế toàn bộ lịch sử cuộc trò chuyện bằng một bản tóm tắt có cấu trúc, giải phóng context để tiếp tục làm việc. Sau khi compact, CLAUDE.md được nạp lại hoàn toàn. Tuy nhiên, skills chưa được invoke trong phiên đó sẽ không được giữ lại.
Có hai cách dùng /compact. Cách đơn giản là gõ /compact không có tham số, để Claude tự quyết định tóm tắt gì. Cách nâng cao là truyền thêm focus:
# Compact thông thường
/compact
# Compact có focus - chỉ giữ lại thông tin liên quan đến auth
/compact focus on auth module
# Compact khi làm việc với database migration
/compact keep migration steps and error details
Mình dùng /compact với focus khi mình đang ở giữa một tác vụ phức tạp và muốn Claude nhớ đúng phần quan trọng. Ví dụ, sau khi debug một pipeline CI/CD trong hai tiếng, context chứa rất nhiều output logs không cần thiết. /compact focus on (chi tiết về cơ chế compaction) failing test steps giúp Claude quay lại đúng vấn đề, không phải wander trong đống logs.
Khi nào nên dùng /compact? Mình có quy tắc đơn giản: khi mình cảm thấy Claude bắt đầu “lạc đề” hoặc đưa ra suggestions không liên quan, đó thường là dấu hiệu context đã quá dài. Không cần chờ auto-compact kích hoạt. Một cách khác để tiết kiệm context là dùng Plan Mode, cho Claude lập kế hoạch trước rồi mới thực thi, tránh lãng phí token cho các hướng đi sai.

Auto-Compaction Trigger Ở Đâu?
Auto-compact tự động kích hoạt khi context đạt 83.5% dung lượng tối đa, tương đương duy trì buffer khoảng 33.000 token cho phần còn lại. (Claudefa.st, 2026) Con số này từng là 45.000 token buffer, nhưng Anthropic đã giảm xuống để tối ưu chi phí.
Bạn có thể override ngưỡng này qua biến môi trường:
# Tắt auto-compact hoàn toàn (dùng khi bạn muốn tự quản lý)
export CLAUDE_AUTO_COMPACT_PCT_OVERRIDE=100
# Compact sớm hơn, ở ngưỡng 70%
export CLAUDE_AUTO_COMPACT_PCT_OVERRIDE=70
# Xem token usage hiện tại
/context
Tại sao việc auto-compact lại quan trọng với DevOps? Vì khi compact xảy ra giữa chừng một tác vụ, Claude có thể mất đi một số context quan trọng về state hiện tại của hệ thống. Mình đã gặp tình huống Claude compact ngay giữa lúc đang deploy, và sau đó hỏi lại những thứ đã làm xong. Giờ mình set ngưỡng 70% để compact sớm hơn, chủ động hơn.
Quản Lý Session Thế Nào?
Claude Code cung cấp bốn lệnh session management cốt lõi để kiểm soát luồng làm việc. Từ phiên bản 2.1.76 trở đi, bạn còn có thể đặt tên cho session, giúp quản lý nhiều dự án song song dễ hơn nhiều.
# Tiếp tục phiên gần nhất
claude --continue
claude -c # shorthand
# Chọn phiên từ danh sách (interactive picker)
claude --resume
claude -r
# Đặt tên cho phiên (v2.1.76+)
claude --name "feature-auth"
claude --name "bugfix-payment"
# Reset context hoàn toàn
/clear
Mình hay dùng --name khi làm việc với nhiều feature branch cùng lúc. Ví dụ, claude --name "sprint-42-auth" cho feature auth và claude --name "sprint-42-ui" cho UI changes. Khi resume, mình dùng -r để chọn đúng session mà không bị nhầm lẫn giữa các context.
Lệnh /clear và --continue trông giống nhau nhưng khác hoàn toàn. /clear xóa sạch context hiện tại, bắt đầu fresh trong cùng session. --continue resume phiên trước từ nơi bạn bỏ dở. Dùng nhầm là mất hết context đang xây dựng.

.claudeignore Và permissions.deny Khác Gì?
Đây là câu hỏi hay gây nhầm lẫn. .claudeignore hiện chưa phải tính năng chính thức, nó đang được thảo luận tại GitHub issue #579. Cơ chế chính thức để kiểm soát context là permissions.deny trong file .claude/settings.json. Dùng đúng cách, bạn tiết kiệm được 40-60% context trên các dự án lớn. (Anthropic Docs, 2026)
// .claude/settings.json
{
"permissions": {
"deny": [
"Read(node_modules/**)",
"Read(dist/**)",
"Read(.git/**)",
"Read(**/*.lock)",
"Read(**/*.log)"
]
}
}
Với permissions.deny, bạn chặn Claude đọc những thư mục không cần thiết. Trong một dự án Node.js điển hình, node_modules một mình đã chiếm hàng trăm nghìn token nếu Claude scan hết. Chặn nó lại là bước tối ưu đầu tiên và đơn giản nhất.
.claudeignore có thể sẽ trở thành tính năng chính thức trong tương lai, nhưng tính đến tháng 4/2026, nó chưa được Anthropic chính thức hỗ trợ. Đừng dựa vào nó cho production workflow. Hãy dùng permissions.deny.
Còn với Hooks, bạn có thể tự động hóa việc cleanup context trước và sau mỗi tác vụ. Ví dụ, hook sau khi chạy test có thể tóm tắt kết quả thay vì dump toàn bộ output vào context. Đây là cách nâng cao để kiểm soát “chất lượng” của context, không chỉ “số lượng”.
So Sánh Context: Claude Code vs Cursor vs Copilot
Claude Code dẫn đầu về kích thước context window với 1 triệu token, gấp 4 lần Cursor (256K) và gần 8 lần GitHub Copilot (~128K). Nhưng kích thước chỉ là một chiều của vấn đề. Chiến lược và cơ chế memory mới là yếu tố quyết định hiệu quả thực tế.
Cursor dùng vector indexing, nghĩa là nó không đọc hết codebase mà chỉ retrieval phần liên quan. Đây là cách tiếp cận khác, không nhất thiết tệ hơn. Với dự án lớn hơn 500K dòng code, Cursor’s retrieval có thể nhanh và chính xác hơn việc Claude Code đọc hết. Mình thường dùng Claude Code cho tác vụ cross-file phức tạp, và đây là nơi 1M context window thực sự tỏa sáng.
Còn với Cline, sub-agents là cách nó bù đắp cho context window nhỏ hơn. Thay vì giữ tất cả trong một context, nó phân rã tác vụ ra và chạy nhiều agent song song. Cách tiếp cận khác, chi phí khác, trade-off khác.

7 Mẹo Quản Lý Context Hiệu Quả
Sau vài tháng dùng Claude Code hàng ngày cho DevOps workflow, mình đúc kết được bảy thói quen giúp giữ context sạch và Claude làm việc hiệu quả hơn. Không có gì phức tạp, nhưng áp dụng đúng lúc thì khác nhau rõ rệt.
1. Viết CLAUDE.md trước khi làm bất cứ điều gì
Trước khi bắt đầu một dự án mới, mình dành 15 phút viết CLAUDE.md. Ghi vào đó: stack, conventions, các lệnh hay dùng, và những thứ Claude không nên làm (như tự sửa production database). Đây là 1.800 token đáng đầu tư nhất trong mỗi phiên.
2. Dùng /compact với focus, không phải mù quáng
Khi compact, luôn chỉ định focus. /compact không tham số để Claude tự quyết định đôi khi bỏ đi những chi tiết quan trọng. /compact focus on current error state and steps taken cho ra kết quả tốt hơn nhiều trong tình huống debug.
3. Đặt tên session ngay từ đầu
Với v2.1.76+, hãy dùng claude --name "feature-xyz" ngay từ lần đầu mở session cho một tác vụ. Khi bạn có 5-6 session đang mở, claude -r sẽ hiện danh sách có tên, dễ chọn đúng session hơn nhiều so với timestamp.
4. Cấu hình permissions.deny cho mỗi dự án
Tạo file .claude/settings.json với permissions.deny cho tất cả thư mục không cần thiết. Mẫu cơ bản: block node_modules, dist, .git, *.lock, *.log. Bước này tiết kiệm context nhiều nhất trong các dự án web thông thường. Bài tiết kiệm token Claude Code có template chi tiết hơn.
5. Xem token usage thường xuyên với /context
Lệnh /context cho bạn breakdown chi tiết: context đang ở mức nào, phần nào chiếm nhiều nhất. Mình check sau mỗi tác vụ lớn. Khi thấy context vượt 50%, mình bắt đầu cân nhắc compact sớm thay vì chờ auto-compact.
6. Browse memory với /memory trước khi bắt đầu debug
Trước khi bắt đầu một phiên debug, chạy /memory để xem Claude đang “nhớ” gì về dự án. Đôi khi auto memory chứa thông tin cũ hoặc không còn chính xác. Biết được điều này sớm giúp tránh việc Claude đưa ra suggestions dựa trên context lỗi thời.
7. Dùng /clear khi chuyển sang tác vụ hoàn toàn mới
Khi context từ tác vụ trước không liên quan gì đến tác vụ mới, hãy /clear thay vì tiếp tục. Context cũ không giúp ích gì, mà còn “nhiễu” Claude. Đừng ngại clear, CLAUDE.md và auto memory sẽ lo phần còn lại.
Câu Hỏi Thường Gặp
Claude Code có nhớ gì sau khi đóng terminal không?
Có, nhưng chỉ qua hai cơ chế. CLAUDE.md (bạn viết) luôn được giữ nguyên. Auto memory (MEMORY.md) được Claude cập nhật và giữ lại giữa các phiên. Session context (lịch sử cuộc trò chuyện) chỉ tồn tại trong phiên đó, nhưng bạn có thể resume bằng claude -r.
1 triệu token nghĩa là tôi có thể đưa hết codebase vào Claude Code không?
Về mặt kỹ thuật là có, nếu codebase dưới ~750MB text. Nhưng thực tế không nên làm vậy vì chi phí token rất cao (50.000-150.000 token mỗi tác vụ) và Claude xử lý tốt nhất khi context tập trung, không phải khi bị “ngập” trong thông tin. Dùng permissions.deny để lọc bớt những gì không cần thiết. (Claudefa.st, 2026)
Sự khác nhau giữa /compact và /clear là gì?
/compact tóm tắt lịch sử cuộc trò chuyện thành bản summary có cấu trúc, giải phóng context nhưng vẫn giữ lại các điểm quan trọng. /clear xóa sạch hoàn toàn, bắt đầu fresh. Sau cả hai lệnh, CLAUDE.md đều được nạp lại. Dùng /compact khi muốn tiếp tục, /clear khi muốn bắt đầu mới.
MEMORY.md tự ghi hay mình phải ghi tay?
MEMORY.md là auto memory: Claude tự ghi sau mỗi tác vụ quan trọng. Bạn không cần và không nên can thiệp thường xuyên vào file này. CLAUDE.md mới là file bạn viết tay, chứa conventions và rules cố định cho dự án. Hai file này có vai trò khác nhau và bổ sung cho nhau.
permissions.deny có ảnh hưởng đến khả năng của Claude không?
Có, nhưng theo hướng tích cực. Khi bạn block những thư mục không liên quan, Claude tập trung vào code thực sự cần quan tâm. Mình thấy chất lượng suggestions tốt hơn sau khi cấu hình permissions.deny đúng cách. Tuy nhiên, đừng block những thư mục Claude cần đọc để hiểu cấu trúc dự án như src/ hay lib/.
Làm sao biết lúc nào nên compact thay vì clear?
Compact khi bạn đang giữa chừng một tác vụ và cần tiếp tục nhưng context quá đầy. Clear khi tác vụ hiện tại đã xong và bạn bắt đầu việc hoàn toàn mới. Quy tắc ngón tay cái: nếu cần Claude “nhớ điều gì đó” từ cuộc trò chuyện này, compact. Nếu không cần gì cả, clear.
Claude Code có hỗ trợ shared memory giữa nhiều developer không?
Có, qua CLAUDE.md trong repository. Khi bạn commit CLAUDE.md vào git, tất cả developer trong team đều nhận cùng set of instructions khi làm việc với Claude Code trên cùng repo. Auto memory thì riêng cho mỗi người vì lưu ở ~/.claude/projects/ trên máy cá nhân.
/mcp và disable servers không dùng trong .claude/settings.json. Với ongboit.com, mình chỉ giữ wp-mcp-ultimate active khi làm blog, tắt khi code thuần.
Kết Luận
Hiểu rõ cách Claude Code quản lý memory và context không phải là “nice to have”, đây là kỹ năng nền tảng để dùng tool này hiệu quả. Ba lớp bộ nhớ (auto memory, CLAUDE.md, session context), cùng với context window 1 triệu token và hệ thống compact, cho bạn nhiều đòn bẩy để kiểm soát trải nghiệm làm việc.
Những gì mình đúc kết sau vài tháng: viết CLAUDE.md kỹ ngay từ đầu, dùng /compact có focus thay vì chờ auto-compact, và cấu hình permissions.deny để loại bỏ noise. Ba bước này một mình đã cải thiện đáng kể chất lượng output của Claude Code trên các dự án DevOps phức tạp của mình.
Context window 1M token là nền tảng kỹ thuật mạnh, nhưng không thay thế được chiến lược. Một context 200K token được quản lý tốt, tập trung đúng vấn đề, vẫn cho kết quả tốt hơn 800K token đầy noise. Bước tiếp theo: xem cách các sub-agents phân chia công việc để mỗi agent có context riêng, sạch, và tập trung hơn.
Đọc thêm lộ trình 6 levels Claude Code để biết bạn đang ở đâu và nên học gì tiếp theo.
