AI Agents & Skills

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_toolsTool được tự động duyệt (không phải danh sách tool khả dụng)
disallowed_toolsChặn hẳn tool
permission_modeVí dụ acceptEdits để tự nhận sửa file
hooksHàm Python chạy ở PreToolUse… có thể từ chối hành động