Sự phát triển của AI đang chuyển dịch mạnh mẽ từ các tính năng LLM đơn lẻ (trả lời câu hỏi) sang các quy trình làm việc (workflow) có cấu trúc, và giờ đây là kỷ nguyên của các Agent (Tác tử). Khác với workflow chỉ hoạt động theo kịch bản có sẵn, Agent có khả năng tự xây dựng ngữ cảnh, quyết định hướng đi và hoạt động một cách tự chủ để thực hiện nhiều hành động đa dạng.
Bài viết này sẽ tóm tắt những tư duy thiết kế và phương pháp lập trình Agent hàng đầu được Anthropic đúc kết từ việc phát triển Claude Code và Claude Agent SDK.
1/. Tại sao lại là Claude Agent SDK?
Claude Agent SDK được xây dựng trực tiếp trên nền tảng của Claude Code – một trong những Agent lập trình thực thụ đầu tiên có thể hoạt động tự chủ liên tục từ 10 đến 30 phút.
Anthropic phát triển SDK này vì họ nhận thấy khi xây dựng các Agent, các kỹ sư thường phải liên tục thiết kế lại các thành phần giống hệt nhau: từ gọi mô hình, công cụ (tools), prompt, đến hệ thống tệp tin (file system). Đội ngũ nhận ra rằng cấu trúc cốt lõi của Claude Code không chỉ dùng cho lập trình mà còn giải quyết rất tốt các tác vụ phi lập trình (non-coding tasks) cho các phòng ban khác như tài chính, khoa học dữ liệu và marketing.
Do đó, Claude Agent SDK được đóng gói sẵn với những “triết lý có tính định hướng cao” (opinionated), bao gồm các tiêu chuẩn tốt nhất về việc xử lý lỗi công cụ và quản lý bộ nhớ.
2/. Triết lý thiết kế: “Bash là tất cả những gì bạn cần”
Một trong những quan điểm cốt lõi mạnh mẽ nhất của Thariq Shihipar là: Công cụ Bash là công cụ mạnh mẽ nhất của Agent.

Thay vì phải tạo ra hàng tá công cụ thủ công (như một công cụ để tìm kiếm, một công cụ để lint code, một công cụ để thực thi), việc cấp cho Agent quyền sử dụng các lệnh Unix nguyên thủy (như Bash và file system) mang lại sức mạnh “Code mode” thế hệ đầu tiên.
- Tính kết hợp cao (Composability): Agent có thể tự động viết script, lưu kết quả công cụ vào một tệp (file), sử dụng grep để lọc dữ liệu, hoặc sử dụng các phần mềm có sẵn như ffmpeg hoặc jq.
- Giải quyết tác vụ linh hoạt: Trong các tác vụ phi lập trình, ví dụ như tìm tổng tiền đi chung xe (ride-sharing) trong email, thay vì đọc toàn bộ hàng trăm email một cách thủ công, Agent có thể dùng Bash để tạo ra một truy vấn tìm kiếm Gmail, grep các mức giá, lưu vào tệp để đối chiếu và tự cộng tổng.
3/. Ba phương thức thực hiện hành động: Tools vs. Bash vs. Codegen
Để Agent tương tác với thế giới, Anthropic phân loại ba cấp độ phương tiện, mỗi loại có ưu và nhược điểm riêng:
-
Tools (Công cụ):
Bản chất: Hành động nguyên tử (atomic), có cấu trúc cực kỳ chặt chẽ và đáng tin cậy.
Ứng dụng: Phù hợp cho những hành động không thể hoàn tác (ví dụ: gửi email) hoặc cần kiểm soát chặt (ghi đè vào file).
Hạn chế: Không thể kết hợp với nhau và sử dụng rất nhiều dung lượng bộ nhớ ngữ cảnh (context window). Càng nhiều tool, Agent càng dễ bối rối.
-
Bash:
Bản chất: Các tập lệnh tĩnh, sử dụng ít ngữ cảnh và có khả năng kết hợp cao.
Ứng dụng: Tuyệt vời để lặp lại công việc, tìm kiếm trong thư mục, lint code và duy trì bộ nhớ thông qua việc đọc/ghi các tệp tạm thời.
-
Code Generation (Tạo mã linh hoạt):
Bản chất: Các kịch bản có tính năng động cao nhất, tốn nhiều thời gian nhất để thực thi vì cần biên dịch/chạy thử.
Ứng dụng: Hoàn hảo để tổng hợp nhiều API, phân tích dữ liệu hoặc phân tích chuyên sâu (deep research). Ví dụ: Agent có thể viết một script gọi API thời tiết, lấy địa chỉ IP của người dùng và gọi một API tủ đồ để gợi ý quần áo.
4/. Thiết kế Vòng lặp Agent (Agent Loop)
Thiết kế vòng lặp Agent được ví như một môn nghệ thuật. Vòng lặp cơ bản bao gồm 3 bước:
- Bước 1: Thu thập ngữ cảnh (Gather Context): Hãy để Agent tự tìm kiếm tài nguyên thay vì “mớm” sẵn toàn bộ thông tin. Ở bước này, sự sáng tạo nằm ở cách xây dựng giao diện tìm kiếm. Ví dụ với một tệp bảng tính khổng lồ, việc biến bảng tính thành định dạng SQL hoặc XML sẽ giúp Agent vận dụng khả năng xử lý truy vấn dễ dàng hơn so với việc đọc thuần túy.
- Bước 2: Hành động (Take Action): Dựa trên ngữ cảnh, Agent dùng Bash, Tools hoặc Codegen để thao tác nghiệm vụ.
- Bước 3: Xác thực công việc (Verify Work): Đây là bước quan trọng nhất quyết định mức độ tự chủ của Agent. Nếu bạn có thể kiểm chứng được công việc của Agent, bạn có trong tay một Agent tuyệt vời.
– Nên ưu tiên xác thực theo dạng quy tắc (deterministic) như kiểm tra lỗi null pointer, bắt lỗi biên dịch code.
– Bạn có thể đặt việc kiểm tra rải rác ở bất kỳ đâu trong quy trình, hoặc dùng hệ thống Hooks để đưa ra phản hồi (feedback) yêu cầu mô hình sửa lỗi ngay khi phát hiện.
5/. Quản lý Ngữ cảnh (Context) & Sub-agents (Agent phụ)
Khi hệ thống lớn lên, số lượng token trong Context Window sẽ cạn kiệt và mô hình sẽ giảm độ hiệu quả. Anthropic khuyến nghị việc xóa lịch sử ngữ cảnh thường xuyên, vì trạng thái công việc (state) vốn đã được lưu giữ trong các file (như Git diff hoặc bảng tính) thay vì nằm trong đoạn chat.
Đặc biệt, Sub-agents được xem là phương pháp hiệu quả nhất để ngăn chặn ô nhiễm ngữ cảnh (context pollution). Khi phải đối mặt với một bảng tính khổng lồ hàng triệu dòng, Agent chính có thể tạo ra ba Sub-agent chạy song song để đọc, tóm tắt các trang tính khác nhau, và chỉ trả về kết quả cuối cùng cho Agent chính. Claude Agent SDK xử lý việc chạy song song các tiến trình bash này cực kỳ tốt mà không gây ra xung đột.
Bên cạnh đó, SDK hỗ trợ khái niệm Skills, hiểu đơn giản là việc lưu trữ ngữ cảnh trong các tệp hướng dẫn chuyên môn (ví dụ: skill.md để dạy Agent cách làm front-end). Khi Agent cần, nó tự điều hướng vào thư mục để đọc hướng dẫn đó thay vì nhồi nhét mọi thứ vào System Prompt ngay từ đầu (Progressive context disclosure).
6/. Bảo mật và Giới hạn (Guardrails)
Việc trao cho hệ thống công cụ Bash mạnh mẽ đi kèm với rủi ro. Anthropic áp dụng mô hình Phòng thủ phô mai Thụy Sĩ (Swiss Cheese Defense) với nhiều lớp bảo mật:
- Lớp Mô hình: Huấn luyện mô hình cơ sở tuân thủ tính an toàn (Alignment).
- Lớp SDK/Harness: Sử dụng các trình phân tích cú pháp (Parser) cho lệnh Bash để phát hiện các lệnh nguy hiểm và quản lý quyền truy cập.
- Lớp Sandboxing: Cài đặt Agent chạy trong một hộp cát ảo (ví dụ: Cloudflare, E2B) vô hiệu hóa các truy vấn mạng trái phép, đảm bảo kẻ tấn công không thể trích xuất (exfiltrate) dữ liệu nhạy cảm ra ngoài.
Thariq kết luận rằng, cách tốt nhất để bắt đầu xây dựng một Agent là hãy đơn giản hóa. Hãy bắt đầu bằng cách cấp cho Claude Code một vài kịch bản (scripts), thư viện hoặc API gốc (như Poke API để xây dựng một bộ tư vấn chiến thuật Pokemon) và quan sát cách nó tự viết script để giải quyết vấn đề. Từ việc đọc lại lịch sử hoạt động của nó (transcript), bạn sẽ “cảm” được cách Agent vận hành và dần dần xây dựng các giới hạn hoặc hệ thống file hỗ trợ hợp lý nhất.