Mổ xẻ toàn diện cách Claude Code hoạt động bên trong — từ Agentic Loop đến nạp context
(mintlify.com)Dưới đây là phần tóm lược những điểm cốt lõi về cách Claude Code vận hành trong terminal, dựa trên tài liệu chính thức (bản tổng hợp Mintlify của VineeTagarwaL).
Claude Code hoạt động như thế nào?
Nói ngắn gọn, đó là một vòng lặp “đọc → suy nghĩ → dùng công cụ → xem kết quả → lặp lại”.
6 bước của Agentic Loop
- Người dùng nhập thông điệp trong terminal (hoặc truyền qua
--print/ stdin) - Ghép system prompt — ngày hiện tại, trạng thái git, tệp
CLAUDE.md, danh sách công cụ khả dụng - Gọi Anthropic API → model tạo khối
tool_use(tên công cụ + đầu vào JSON) - Kiểm tra quyền — quyết định một trong ba trạng thái: tự động phê duyệt / yêu cầu xác nhận / chặn
- Thực thi công cụ → thêm kết quả (nội dung tệp, đầu ra lệnh, v.v.) vào cuộc hội thoại dưới dạng
tool_result - Model nhận kết quả rồi gọi thêm công cụ hoặc đưa ra phản hồi cuối cùng — lặp cho đến khi không còn lời gọi công cụ nào
Vòng lặp này chỉ chạy trong tiến trình terminal cục bộ. Trừ những công cụ chủ động gọi ra bên ngoài như WebFetch, WebSearch, máy chủ MCP, còn lại tệp, shell và thông tin xác thực sẽ không rời khỏi máy.
Context được tạo như thế nào?
Khi bắt đầu cuộc trò chuyện, hệ thống ghép hai khối và gắn chúng vào đầu mọi lời gọi API.
- Context hệ thống — nhánh hiện tại, 5 commit gần nhất, kết quả
git status --short(bị cắt nếu vượt quá 2.000 ký tự) - Context người dùng — tệp bộ nhớ
CLAUDE.md(duyệt phân cấp 4 tầng), ngày hôm nay (Today's date is YYYY-MM-DD)
Cả hai khối đều được cache theo từng cuộc hội thoại bằnglodash/memoize. Khi gọisetSystemPromptInjection(), cache sẽ được xóa ngay lập tức.
Mô hình quyền — khi nào công cụ được chạy?
| Kết quả | Hành động |
|---|---|
allow |
Chạy ngay, thêm kết quả vào hội thoại |
ask |
Tạm dừng → hiển thị hộp thoại xác nhận |
deny |
Từ chối → trả lỗi về cho model |
- Chế độ
bypassPermissions: bỏ qua toàn bộ bước kiểm tra - Chế độ
acceptEdits: tự động phê duyệt chỉnh sửa tệp, nhưngbashvẫn yêu cầu xác nhận - Các công cụ chỉ đọc như Read, Glob, Grep được tự động phê duyệt mặc định ở mọi chế độ
Sub-agent (công cụ Task)
Claude có thể spawn sub-agent bằng công cụ Task (AgentTool). Sub-agent chạy Agentic Loop riêng trong một cuộc hội thoại tách biệt, với bộ công cụ có thể được giới hạn, rồi trả kết quả về cho agent cha khi hoàn tất. Nó có thể chạy cục bộ (in-process) hoặc trên hạ tầng compute từ xa.
Lưu và khôi phục cuộc hội thoại
Cuộc hội thoại được lưu trong ~/.claude/ dưới dạng tệp transcript JSON.
--resume <session-id>hoặc chỉ--resumeđể tiếp tục cuộc trò chuyện trước đó- Khi resume: nạp toàn bộ lịch sử tin nhắn, quét lại tệp
CLAUDE.md, chế độ quyền được reset về mặc định cấu hình - Cuộc trò chuyện dài sẽ được compact định kỳ — tóm tắt các tin nhắn cũ để quản lý context window. Toàn bộ transcript gốc vẫn được giữ trên đĩa
Query engine làm gì?
Mỗi “turn” được query.ts điều phối.
- Xuất luồng token ra terminal theo thời gian thực
- Dispatch khối
tool_useđến handler phù hợp - Quản lý ngân sách token và số lần gọi công cụ cho mỗi turn
- Kích hoạt compact khi context window đầy
- Mỗi công cụ có thuộc tính
maxResultSizeChars— nếu kết quả vượt giới hạn này, nó sẽ được lưu vào tệp tạm và model chỉ nhận đường dẫn tệp (để tránh overflow context window)
Nguyên văn: How Claude Code works — Mintlify
Ghi chú: Đây là tài liệu mirror không chính thức, do VineeTagarwaL biên soạn lại tài liệu chính thức của Claude Code trên Mintlify.
1 bình luận
Từ năm 2023 đến nay, cấu trúc ReAct hầu như không thay đổi nhiều.