Claude Code Arch
1. Mục đích của Framework điều phối
Việc gọi API LLM thuần túy không đủ để xây dựng một AI Agent tự hành. Claude Code CLI đóng vai trò như một lớp vỏ (Harness) bao bọc quanh LLM, giải quyết ba vấn đề cốt lõi:
Quản lý ngữ cảnh
Phân chia công việc thông minh, tránh việc nạp toàn bộ mã nguồn vào mỗi lượt tương tác, ngăn chặn tình trạng bão hòa cửa sổ ngữ cảnh.
Kiểm soát tài nguyên
Tối ưu hóa việc gửi dữ liệu lặp lại giữa các lượt gọi. Cấu trúc lại luồng dữ liệu để giảm thiểu tối đa lượng token tiêu thụ thông qua Cache.
Xử lý song song
Kiến trúc đa tác vụ cho phép thực hiện đồng thời các thao tác như đọc file, tìm kiếm thông tin thông qua cơ chế Sub-agents.
2. Luồng thực thi vòng lặp (Control Flow)
Thay vì cơ chế "hỏi-đáp" một lần, hệ thống duy trì một quy trình lặp đi lặp lại tự động.
3. Hệ thống Lifecycle Hooks
Hooks cho phép lập trình viên (hoặc Framework) can thiệp vào vòng đời hoạt động của LLM. Claude Code phân chia Hooks thành 3 nhịp độ chính.
SessionStart & SessionEnd
Can thiệp khi ứng dụng Agent bắt đầu khởi động hoặc bị tắt.
UserPromptSubmit, Stop & StopFailure
Nhịp Turn quản lý từng vòng lặp hỏi/đáp. Đây là nơi triển khai cơ chế "Tự sửa lỗi" (Self-Correction) rất mạnh mẽ.
Khi LLM đòi dừng lại (end_turn) vì nghĩ đã code xong. Hook `Stop` sẽ kích hoạt tự động chạy Unit Test (VD: `npm test`).
- Nếu Test PASS: Trả về exit code 0 -> Cho phép dừng.
- Nếu Test FAIL: Trả về exit code 2 -> Framework **chặn LLM lại**, nhét log lỗi vào Context và ép LLM phải vòng lại sửa lỗi!
PreToolUse & PostToolUse
Bảo vệ hệ thống và kiểm soát dữ liệu liên quan đến việc thực thi câu lệnh Local.
4. Phương pháp khởi tạo & Phân bổ Token
Khi cần chia nhỏ công việc cho các Sub-agents, hệ thống hỗ trợ 2 phương pháp. Khởi tạo Kế thừa (Fork) là kỹ thuật quan trọng nhất để tối ưu chi phí thông qua Context Caching.
So sánh tiêu thụ Token (Giả lập khởi tạo 5 Sub-agents)
Khởi tạo Độc lập (Vanilla)
Isolated- Cơ chế: Sub-agent bắt đầu với Prompt trắng tinh.
- Chi phí: Toàn bộ lượng token phải tính phí từ đầu (Không hit cache).
- Áp dụng: Các task rời rạc không cần ngữ cảnh (VD: Agent dịch thuật).
Khởi tạo Kế thừa (Fork)
Shared Memory- Cơ chế: Sao chép toàn bộ lịch sử hội thoại hiện tại.
- Chi phí: Nhờ cơ chế KV-Cache của LLM, phần lịch sử cũ được tái sử dụng (0đ), chỉ tính phí phần token mới sinh ra.
- Áp dụng: Agent định dạng (Formatter) cần đọc lại kết quả của các Agent trước đó.
5. Cơ chế Xử lý Đầu ra của Sub-agent
Để tránh việc bộ nhớ của Parent Agent bị quá tải (Context Overflow), dữ liệu từ các Sub-agents không được đẩy trực tiếp lên mà phải đi qua quy trình "tóm lược" nghiêm ngặt.
Agent Tool Interface
Việc tạo Sub-agent được tính như một hành động tool_call. Khi Sub-agent chạy xong, kết quả trả về như một tool_response.
Summarization (Lọc rác)
Framework sẽ tự động loại bỏ chuỗi suy luận nội bộ (thinking steps) của Sub-agent, chỉ giữ lại văn bản Text tổng hợp cuối cùng.
Context Integration
Kết quả sạch được nối (append) vào cuối mảng Message của Parent Agent để đọc trong vòng lặp tiếp theo.
6. Quản lý trạng thái qua File System
Thay vì dùng Database cồng kềnh, mạng lưới Agent liên lạc với nhau thông qua một hệ thống file JSON cục bộ cực kỳ nhẹ nhàng.
Ghi dữ liệu dạng broadcast đến nhiều inbox cùng lúc.
7. Tầng Inference & Raw Payload View
Khám phá thực tế cách Framework lắp ráp bộ nhớ (Context Window) và gửi chuỗi Raw String xuống API Model thông qua Use Case: "Tổng hợp tin tức".
👉 CLICK VÀO TỪNG NODE TRÊN ĐỒ THỊ để mở Simulator. Bấm nút "Bước tiếp" để xem LLM nối Context ra sao!