Claude Agent SDK (Python): tự build agent trên chính “bộ máy” của Claude Code
Tóm tắt
pip install claude-agent-sdk (Python 3.10+, đã kèm Claude Code CLI). Dùng query() cho tác vụ một chiều, ClaudeSDKClient cho hội thoại hai chiều, custom tool và hook. Tool tự viết chạy in-process qua create_sdk_mcp_server, không cần tiến trình MCP riêng.
Tối giản
import anyio
from claude_agent_sdk import query, ClaudeAgentOptions
async def main():
opts = ClaudeAgentOptions(
system_prompt="Bạn là reviewer, chỉ đọc code",
allowed_tools=["Read", "Grep", "Glob"],
cwd="./my-repo", max_turns=5)
async for msg in query(prompt="Tìm chỗ xử lý lỗi thiếu log", options=opts):
print(msg)
anyio.run(main)Custom tool bằng Python
from claude_agent_sdk import tool, create_sdk_mcp_server, ClaudeAgentOptions
@tool("get_sprint", "Lấy thông tin sprint hiện tại", {"team": str})
async def get_sprint(args):
data = await jira_client.current_sprint(args["team"]) # code của bạn
return {"content": [{"type": "text", "text": str(data)}]}
server = create_sdk_mcp_server(name="pm", version="1.0.0", tools=[get_sprint])
opts = ClaudeAgentOptions(mcp_servers={"pm": server},
allowed_tools=["mcp__pm__get_sprint"])Các tuỳ chọn chính
| Tuỳ chọn | Ý nghĩa |
|---|---|
allowed_tools | Tool được tự động duyệt (không phải danh sách tool khả dụng) |
disallowed_tools | Chặn hẳn tool |
permission_mode | Ví dụ acceptEdits để tự nhận sửa file |
hooks | Hàm Python chạy ở PreToolUse… có thể từ chối hành động |
Tài liệu: anthropics/claude-agent-sdk-python · Agent SDK — Python reference