Bỏ qua điều hướng
Lập trình viên

Hướng dẫn về Claude memory files và cơ chế điều hướng

Tối ưu ngữ cảnh cho Claude Code bằng Claude memory files, hooks và subagents — biến AI thành một đội ngũ kỹ sư thực thụ thay vì công cụ gõ code tự động.

Tuan Tran Van
9 phút đọc
Mục lục (7 phần)
  1. Vì sao bạn cần memory files cho Claude?
  2. Có những cơ chế memory và điều hướng Claude nào?
  3. CLAUDE.md hoạt động như thế nào?
  4. Chọn đúng cơ chế: rules, skills, subagents hay hooks?
  5. Thiết lập đúng cách: các nguyên tắc tối ưu
  6. Các câu hỏi thường gặp
  7. Tài liệu tham khảo

Claude memory files là một hệ thống phân tầng các file — CLAUDE.md, rules, skills và hooks — giúp Claude Code duy trì ngữ cảnh (context) và điều hướng hành vi qua từng phiên làm việc.

Quản lý "ngân sách chỉ dẫn" (instruction budget) là yếu tố sống còn: Claude Code không phải một chatbot đơn thuần mà là một hệ thống điều phối tác vụ (agent orchestration). Cấu hình đúng các file này, Claude sẽ tự nắm được stack công nghệ, quy trình test và quy ước viết code của dự án mà không bắt bạn lặp lại trong mỗi phiên làm việc.

Mặc định, mỗi phiên làm việc của Claude Code đều không nhớ gì (stateless). Thiếu hệ thống memory, AI sẽ lặp lại lỗi cũ hoặc bắt bạn cung cấp lại thông tin cơ bản — lãng phí cả token lẫn thời gian.

Cấu hình đúng các cơ chế điều hướng, bạn biến Claude từ một công cụ gõ code tự động (autocomplete) thành một đội ngũ kỹ sư hiểu sâu cấu trúc dự án.

Ảnh bìa minh hoạ: Claude Code được điều hướng bởi một chồng memory files gồm CLAUDE.md, rules, skills và hooks, giúp AI giữ ngữ cảnh dự án qua nhiều phiên làm việc.

Vì sao bạn cần memory files cho Claude?

Claude Code mặc định bắt đầu mỗi phiên làm việc từ số 0. Không có hệ thống memory, kỹ sư phải đối mặt với một "vòng lặp lãng phí": lặp lại chỉ dẫn về stack công nghệ, quy trình chạy test và các quy ước viết code đặc thù. Hệ quả là AI hoạt động rời rạc, dễ mắc lại lỗi cũ và khó thực hiện những thay đổi phức tạp ở cấp độ kiến trúc.

Khác biệt nằm ở tư duy hệ thống. Đa số người dùng coi Claude như một công cụ gõ code nhanh; nhóm 1% còn lại thì thiết lập hệ thống memory để điều hướng AI ở cấp độ toàn dự án (project-level). Claude Code thuộc nhóm công cụ AI lập trình dẫn đầu nhờ khả năng đọc toàn bộ codebase, thực thi thay đổi và tự sửa lỗi dựa trên các hướng dẫn có sẵn. Hệ thống memory cho Claude "ý thức" về những đánh đổi (trade-off) trong quá khứ, từ đó đưa ra các quyết định nhỏ (micro-decision) chính xác hơn.

Có những cơ chế memory và điều hướng Claude nào?

Điều phối Claude hiệu quả là bài toán cân bằng giữa ba yếu tố: thời điểm tải (loading), hành vi khi nén hội thoại (compaction) và chi phí token. Bảng dưới đây tóm tắt bảy cơ chế điều hướng chính:

Phương phápKhi nào được tảiHành vi khi nén (compaction)Chi phíKhi nào nên dùng
CLAUDE.md (root)Bắt đầu sessionLuôn được giữ và tải lạiCaoLệnh build, cấu trúc monorepo, quy chuẩn của team
CLAUDE.md (sub)Khi vào thư mục (on-demand)Mất khi ra khỏi phạm viThấpQuy chuẩn riêng cho từng module (ví dụ /src/api)
RulesTheo phạm vi (path-scoped)Rule không giới hạn phạm vi được tiêm lạiTrung bìnhRàng buộc kỹ thuật (ví dụ API phải dùng Zod)
SkillsKhi được gọi (/command)Tái tiêm theo ngân sáchThấpQuy trình thủ tục (checklist deploy, release)
SubagentsKhi gọi qua Agent toolChỉ trả về kết quả cuốiThấpTác vụ chạy song song hoặc cần cô lập ngữ cảnh
HooksKhi có sự kiện lifecycleNằm ngoài luồng nén (bypass)Rất thấpTự động hóa tiền định: chạy lint, chặn rm -rf
Output stylesBắt đầu sessionKhông bao giờ bị nénCaoThay đổi hoàn toàn vai trò (ghi đè mặc định)

Cảnh báo: Output styles ghi đè toàn bộ chỉ dẫn mặc định của Claude Code (về an toàn và quy chuẩn code). Muốn giữ lại các hướng dẫn kỹ thuật cốt lõi, bạn phải đặt keep-coding-instructions: true trong frontmatter của style đó.

Sơ đồ phổ cơ chế điều hướng Claude: từ nhóm cố vấn (advisory, mềm) như CLAUDE.md và skills đến nhóm tiền định (deterministic, cứng) như hooks, settings.json và MCP.

CLAUDE.md hoạt động như thế nào?

File CLAUDE.md ở root hoạt động theo cơ chế "luôn được tải" (always loaded): nó được lưu sẵn vào cache ngay đầu phiên và chỉ đọc lại sau khi nén ngữ cảnh. Với monorepo, hãy dùng các file CLAUDE.md đặt trong thư mục con để nạp thông tin theo nhu cầu (on-demand) — chỉ nạp khi Claude chạm vào file trong thư mục đó, nhờ vậy giảm tải cho ngữ cảnh chính.

Ngân sách chỉ dẫn của CLAUDE.md nên giữ dưới 200 dòng, và nhớ rằng system prompt mặc định đã chiếm khoảng 50 dòng. Vượt ngưỡng này, Claude rơi vào tình trạng bỏ sót chỉ dẫn (instruction dropout) — lờ đi các chỉ dẫn quan trọng nằm ở giữa file. Quy tắc đơn giản: chỉ ghi những gì Claude thường làm sai trên codebase của bạn, đừng ghi lại những điều nó vốn đã làm đúng.

Một file gọn gàng nên bám theo cấu trúc WHAT, WHY, HOW:

  • WHAT — stack kỹ thuật. Thay vì liệt kê tất cả, hãy tham chiếu: "Xem @package.json để biết dependencies".
  • WHY — lý do đằng sau các quyết định kiến trúc (ví dụ "Dùng SSR vì người dùng ở vùng kết nối chậm"). Điều này giúp AI hiểu bối cảnh tổng thể của dự án.
  • HOW — các lệnh thực thi cụ thể (chạy test, lint) và những "điểm mù" Claude hay gặp trên dự án của bạn.

Để đi sâu vào cách viết và tối ưu một file CLAUDE.md, xem CLAUDE.md: Tối ưu hóa ngữ cảnh cho Claude Code.

Chọn đúng cơ chế: rules, skills, subagents hay hooks?

Để tối ưu luồng công việc, hãy áp dụng khung quyết định sau:

  1. Skills — dùng cho các playbook quy trình. Ví dụ, một skill /deploy thực hiện đúng 10 bước checklist review mà không bỏ sót. Khác với MCP (kết nối thực thi), skills tập trung cung cấp hướng dẫn và logic thực hiện.
  2. Subagents — dùng để cô lập các tác vụ nặng (rà soát phụ thuộc, phân tích log dài). Kỹ thuật "Two-Claude review" là một cách làm đáng học theo: Session A viết code, sau đó gọi một subagent (Session B) để review độc lập. Vì subagent không mang theo ngữ cảnh về các đánh đổi của Session A, nó cho nhận xét khách quan hơn. Xem thêm Làm chủ subagents trong Claude Code.
  3. Hooks — dùng cho các rào chắn (guardrail) tiền định 100%. Một PreToolUse hook có thể kiểm tra lệnh bash và trả về exit code 2 để chặn thực thi, thay vì chỉ dặn dò bằng lời trong CLAUDE.md.

Sơ đồ quyết định: khi nào nên dùng rules, skills, subagents hay hooks, dựa trên mức độ tiền định và quy mô điều phối tác vụ.

Thiết lập đúng cách: các nguyên tắc tối ưu

Hệ thống memory hiện đại nên kết hợp hai logic: tinh lọc sự kiện (kiểu Hermes) và truy xuất vector (kiểu memsearch). Cụ thể, chia hệ thống thành ba lớp:

  • Storage (lưu trữ): dùng PostToolUse hook để một model giá rẻ (như Haiku) tự tóm tắt mỗi lượt hội thoại thành các gạch đầu dòng và lưu vào memory file theo ngày (memory/date.md).
  • Injection (tiêm dữ liệu): dùng chiến lược "ảnh chụp đông cứng" (frozen snapshot) — đầu phiên, tiêm khoảng 1.300 token gồm memory.md (biến môi trường), user.md (hồ sơ người dùng) và soul.md. Dữ liệu này được lưu cache nên tiết kiệm chi phí suốt phiên.
  • Recall (truy xuất): dùng /loop để theo dõi CI/CD chạy nền (ví dụ /loop 5m check CI status), giúp bạn giữ luồng công việc chính mà không phải liên tục chuyển ngữ cảnh.

Sơ đồ ba lớp của hệ thống memory trong một phiên làm việc với Claude: Storage (lưu trữ) đưa sang Injection (tiêm dữ liệu) rồi tới Recall (truy xuất).

Ví dụ cấu hình settings.json để chặn lệnh nguy hiểm và tự động lint sau mỗi lần ghi file:

json
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [{ "type": "command", "command": "python .claude/hooks/block_dangerous.py" }]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Write",
        "hooks": [{ "type": "command", "command": "npm run lint --fix" }]
      }
    ]
  }
}

Nếu file block_dangerous.py trả về exit code 2, Claude sẽ bị chặn không thực thi lệnh bash đó.

Các câu hỏi thường gặp

Sự khác biệt cốt lõi giữa Skill và MCP là gì? Skill là file Markdown chứa playbook hướng dẫn quy trình. MCP (Model Context Protocol — giao thức kết nối) là cầu nối để Claude truy cập dữ liệu thực như database, Jira hoặc Slack.

Khi nào nên chạy /compact thủ công? Khi bộ nhớ ngữ cảnh đạt khoảng 50%. Chủ động nén giúp bạn kiểm soát thông tin nào cần giữ lại (qua chỉ dẫn trong CLAUDE.md), thay vì để hệ thống tự tóm tắt ngẫu nhiên.

CLAUDE.local.md dùng để làm gì? Dùng cho các tùy chỉnh cá nhân (kiểu commit message, sở thích riêng) mà bạn không muốn commit vào repository chung của cả nhóm.

Tài liệu tham khảo

Đọc tiếp

Chia sẻ bài viết

X / TwitterFacebookLinkedIn