0. TL;DR
Bài viết này xuất phát từ sáu tháng sử dụng Claude Code một cách chuyên sâu và những bài học rút ra khi chi 40 USD/tháng cho hai tài khoản. Tôi hy vọng có thể cung cấp một số thông tin hữu ích cho mọi người.
Ban đầu, tôi sử dụng nó như một ChatBot, nhưng nhanh chóng nhận ra mọi thứ đang đi sai hướng: ngữ cảnh trở nên lộn xộn, các công cụ tăng lên nhưng hiệu quả lại giảm, và các quy tắc bị bỏ qua mặc dù ngày càng dài. Sau khi nghiên cứu về bản thân Claude Code, tôi nhận ra đó không phải là vấn đề về Prompt, mà là vấn đề về thiết kế hệ thống.
Tôi muốn thảo luận về: cách Claude Code hoạt động bên trong, tại sao ngữ cảnh trở nên lộn xộn và cách kiểm soát nó, cách thiết kế Skills và Hooks, cách sử dụng Subagents đúng đắn, tác động kiến trúc của Prompt Caching, và cách viết một tệp CLAUDE.md thực sự hữu ích.
Cách trực tiếp nhất để hiểu nó là chia Claude Code thành sáu lớp:

Chỉ củng cố một lớp sẽ gây mất cân bằng. Nếu CLAUDE.md quá dài, nó sẽ làm nhiễm độc ngữ cảnh; quá nhiều công cụ gây nhầm lẫn; quá nhiều subagents dẫn đến sai lệch trạng thái; bỏ qua xác minh khiến không thể tìm ra nơi thất bại.
1. Cách hoạt động bên trong

Cốt lõi của Claude Code không phải là "trả lời", mà là một vòng lặp tác nhân lặp đi lặp lại:
1Thu thập Ngữ cảnh → Thực hiện Hành động → Xác minh Kết quả → [Kết thúc hoặc Lặp lại]2 ↑ ↓3 CLAUDE.md Hooks / Quyền / Sandbox4 Skills Tools / MCP5 Bộ nhớ
Tôi nhận ra rằng các nút thắt cổ chai hiếm khi do mô hình không đủ thông minh, mà là do cung cấp cho nó ngữ cảnh sai hoặc không có cách nào để đánh giá xem đầu ra có đúng hay không hoặc để khôi phục lại.
Năm lớp cần tập trung:

Nhìn vào các lớp này giúp việc xử lý sự cố dễ dàng hơn. Kết quả không ổn định? Hãy kiểm tra thứ tự tải ngữ cảnh. Tự động hóa mất kiểm soát? Hãy kiểm tra lớp kiểm soát. Chất lượng giảm dần trong các phiên dài? Các sản phẩm trung gian đã làm nhiễm độc ngữ cảnh; bắt đầu một phiên mới tốt hơn là tinh chỉnh prompt.
2. Ranh giới Khái niệm: MCP / Plugin / Tools / Skills / Hooks / Subagents

Nguyên tắc đơn giản: Sử dụng Tools/MCP cho các hành động mới, Skills cho quy trình làm việc, Subagents cho môi trường cách ly, Hooks cho các ràng buộc/kiểm toán bắt buộc, và Plugins để phân phối giữa các dự án.
3. Kỹ thuật Ngữ cảnh: Ràng buộc Hệ thống Quan trọng Nhất
Nhiều người coi ngữ cảnh là một "vấn đề về dung lượng", nhưng nút thắt cổ chai thường là nhiễu. Thông tin hữu ích bị chôn vùi trong nội dung không liên quan.
Cấu thành Chi phí Ngữ cảnh Thực tế

200K ngữ cảnh của Claude Code không được sử dụng hoàn toàn:
1200K Tổng Ngữ cảnh2├── Chi phí Cố định (~15-20K)3│ ├── Hướng dẫn hệ thống: ~2K4│ ├── Mô tả Skill: ~1-5K5│ ├── Định nghĩa công cụ MCP Server: ~10-20K ← Kẻ giết người ẩn giấu lớn nhất6│ └── Trạng thái LSP: ~2-5K7│8├── Bán cố định (~5-10K)9│ ├── CLAUDE.md: ~2-5K10│ └── Bộ nhớ: ~1-2K11│12└── Khả dụng Động (~160-180K)13 ├── Lịch sử trò chuyện14 ├── Nội dung tệp15 └── Kết quả công cụ

Một MCP Server điển hình (như GitHub) chứa 20-30 định nghĩa công cụ, mỗi định nghĩa ~200 token, tổng cộng 4.000-6.000 token. Kết nối 5 máy chủ sẽ tiêu tốn 25.000 token (12,5%). Điều này rất quan trọng khi đọc một lượng lớn mã.
Phân lớp Ngữ cảnh được Khuyến nghị
1Luôn Thường trú → CLAUDE.md: Hợp đồng dự án / lệnh xây dựng / điều cấm kỵ2Dựa trên Đường dẫn → rules: Quy tắc cụ thể theo ngôn ngữ / thư mục / loại tệp3Theo Yêu cầu → Skills: Quy trình làm việc / kiến thức miền4Cách ly → Subagents: Khám phá quy mô lớn / nghiên cứu song song5Ngoài Ngữ cảnh → Hooks: Script xác định / kiểm toán / chặn
Đừng tải những thứ bạn chỉ thỉnh thoảng sử dụng.
Các Thực hành Tốt nhất về Ngữ cảnh
- Giữ CLAUDE.md ngắn gọn, cứng nhắc và có thể thực thi được. Tệp của chính Anthropic chỉ khoảng ~2.5K token.
- Di chuyển các tài liệu tham khảo lớn sang các tệp hỗ trợ của Skills.
- Sử dụng .claude/rules/ cho các quy tắc đường dẫn/ngôn ngữ.
- Sử dụng /context để theo dõi mức tiêu thụ.

- Sử dụng /clear để chuyển đổi tác vụ và /compact cho các giai đoạn mới.
- Viết Hướng dẫn Thu gọn trong CLAUDE.md để kiểm soát những gì được giữ lại.
Nhiễu Đầu ra của Công cụ: Một Kẻ Giết người Ẩn giấu Khác
Đầu ra động của công cụ (như cargo test hoặc git log) có thể dễ dàng lấp đầy ngữ cảnh. Claude không cần phải thấy mọi thứ.
RTK (Rust Token Killer) là một cách tiếp cận tốt: nó lọc đầu ra lệnh trước khi đến Claude. Ví dụ, nó có thể cô đọng hàng nghìn dòng đầu ra kiểm tra thành một thông báo thành công duy nhất.
Bẫy Nén
Việc nén mặc định có thể xóa các quyết định kiến trúc và ràng buộc.

Giải pháp: Chỉ định Hướng dẫn Thu gọn trong CLAUDE.md để ưu tiên các quyết định kiến trúc, các tệp đã sửa đổi, trạng thái xác minh và các việc cần làm (TODOs).
Một giải pháp chủ động khác: Yêu cầu Claude viết tệp HANDOFF.md trước khi bắt đầu một phiên mới để giải thích tiến độ và các ngõ cụt.
Giá trị Kỹ thuật của Chế độ Kế hoạch

Chế độ Kế hoạch (Plan Mode) tách biệt việc khám phá khỏi thực thi.

Đối với việc tái cấu trúc phức tạp, điều này tốt hơn là lao vào viết code. Mẹo nâng cao: Sử dụng một Claude để viết kế hoạch và một Claude khác làm "Kỹ sư Cao cấp" để xem xét nó.
4. Thiết kế Skills: Quy trình Làm việc được Tải Theo Yêu cầu
Skills là kiến thức và quy trình làm việc theo yêu cầu.
Điều gì tạo nên một Skill tốt
- Phần Mô tả nên nói "khi nào sử dụng tôi", chứ không phải "tôi làm gì."
- Có các bước hoàn chỉnh, đầu vào, đầu ra và điều kiện dừng.
- Giữ nội dung chính cho việc định hướng và các ràng buộc cốt lõi; di chuyển chi tiết sang các tệp hỗ trợ.
- Đặt disable-model-invocation: true cho các skill có tác dụng phụ.
Tiết lộ Dần dần
Claude Code nhấn mạnh "tiết lộ dần dần": trước tiên cung cấp các chỉ số và điều hướng, sau đó kéo chi tiết khi cần.
Ba Loại Skill Điển hình
- Danh sách Kiểm tra (Cổng Chất lượng): ví dụ: release-check.
- Quy trình Làm việc (Thao tác Chuẩn hóa): ví dụ: config-migration với khả năng khôi phục.
- Chuyên gia Miền (Khuôn khổ Quyết định): ví dụ: runtime-diagnosis.
Giữ mô tả ngắn gọn để tiết kiệm không gian ngữ cảnh.
5. Thiết kế Công cụ: Giúp Claude Lựa chọn Chính xác
Các công cụ dành cho tác nhân nên tập trung vào sự dễ dàng sử dụng đúng cách hơn là tính năng đầy đủ.
Công cụ Tốt so với Công cụ Xấu

Nguyên tắc thiết kế: Sử dụng tiền tố (github_pr_*), hỗ trợ định dạng ngắn gọn, cung cấp thông báo lỗi hữu ích và tránh hiển thị quá nhiều công cụ phân mảnh.
Sự Tiến hóa của Công cụ Nội bộ

Sự tiến hóa của công cụ "AskUserQuestion" cho thấy một công cụ chuyên dụng ổn định hơn so với định dạng markdown hoặc tham số thoát.


Các công cụ danh sách việc cần làm (Todo) đã trở thành "xiềng xích" khi các mô hình mạnh hơn. Các công cụ tìm kiếm đã tiến hóa từ RAG sang Grep để có tính linh hoạt tốt hơn và "tiết lộ dần dần."
6. Hooks: Logic Bắt buộc Trước/Sau Thao tác
Hooks giành lại quyền kiểm soát xác định đối với các quy trình như định dạng, bảo vệ tệp và thông báo.

Phù hợp với Hooks
Chặn các tệp được bảo vệ, tự động định dạng sau khi chỉnh sửa, tiêm ngữ cảnh động (nhánh Git) và thông báo.
Phát hiện Lỗi Sớm

7. Subagents: Các Phiên bản Claude Độc lập
Subagents cung cấp sự cách ly. Các tác vụ như quét kho lưu trữ hoặc chạy thử nghiệm tạo ra đầu ra lớn không nên làm xáo trộn luồng chính.
Ràng buộc Rõ ràng
Giới hạn các công cụ, chọn mô hình phù hợp (Haiku cho khám phá, Opus cho xem xét) và đặt maxTurns.
8. Prompt Caching: Cốt lõi của Kiến trúc Claude Code
Claude Code được xây dựng xoay quanh Prompt Caching. Tỷ lệ trúng cao giúp tiết kiệm tiền và tăng giới hạn tốc độ.
Bố cục Prompt cho Caching

Thứ tự rất quan trọng để so khớp tiền tố: Prompt Hệ thống → Định nghĩa Công cụ → Lịch sử Trò chuyện → Đầu vào Người dùng.
Không Chuyển đổi Mô hình Giữa Phiên
Chuyển đổi mô hình sẽ phá vỡ bộ nhớ đệm. Thay vào đó, hãy sử dụng Subagents để bàn giao.
Triển khai Thu gọn

Việc thu gọn (Compaction) sử dụng một fork để tóm tắt lịch sử với chi phí chỉ bằng 1/10 nhờ các lần trúng bộ nhớ đệm.
9. Vòng lặp Xác minh: Không có Trình xác minh, Không có Tác nhân Kỹ thuật
"Claude nói rằng nó đã xong" là vô ích nếu không có xác minh. Xác định xác minh một cách rõ ràng trong Prompt, Skill và CLAUDE.md.
10. Các Lệnh Tần suất Cao
Các lệnh như /context, /clear, /compact và /memory giúp quản lý ngữ cảnh một cách chủ động.
Quản trị và Song song

Các lệnh ẩn hữu ích: /simplify (đánh giá mã), /rewind (đánh dấu điểm kiểm tra), /btw (câu hỏi phụ), /insight (phân tích phiên để cập nhật CLAUDE.md).
11. Cách Viết CLAUDE.md Tốt
Nó là một hợp đồng, không phải cơ sở kiến thức.

Bao gồm các lệnh xây dựng/kiểm tra, ranh giới kiến trúc, quy ước mã hóa, rào cản an toàn và Hướng dẫn Thu gọn. Yêu cầu Claude cập nhật CLAUDE.md sau khi sửa lỗi của nó.
12. Kinh nghiệm Gần đây
Bài học từ việc xây dựng Kaku (Rust + Lua): tính minh bạch của môi trường là rất quan trọng (sử dụng lệnh 'doctor') và Hooks rất tốt cho các dự án đa ngôn ngữ.
13. Các Phản mẫu

14. Kiểm tra Sức khỏe
Sử dụng npx skills add tw93/claude-health để kiểm tra cấu hình của bạn.
15. Kết luận

Trọng tâm chuyển từ "cách sử dụng tính năng" sang "cách để tác nhân chạy trong các ràng buộc." Nếu bạn không thể định nghĩa "xong", thì tác vụ đó chưa sẵn sàng cho một tác nhân.





