LuoLuoLuoLuo Wiki
Claude Code

Agent SDK

把 Claude Code 的 Agent 能力嵌入你自己的应用——安装、query()、多轮对话、自定义工具与 Subagents

概述

Claude Agent SDK 把 Claude Code 的 agent loop、内置工具(Read / Edit / Bash 等)和上下文管理打包成一个可嵌入的库。底层会启动 Claude Code 子进程,SDK 自带 CLI 二进制,无需单独安装 Claude Code。

简单说就是——你在终端里用 Claude Code 能做的事,现在可以用几行代码在自己的应用里做了。

它和其他东西有什么区别?

定位一句话总结
Claude Code CLI终端交互工具在命令行里直接和 Claude 对话写代码
Agent SDK嵌入式 Agent 库把 Claude Code 的全部能力封装成 Python / TypeScript API
Client SDK@anthropic-ai/sdkAPI 客户端直接调 Messages API,tool loop 要自己实现
Managed Agents云端托管服务Anthropic 托管的 Agent,2026-04 公测

安装

Python

pip install claude-agent-sdk

需要 Python 3.10+。

TypeScript

npm install @anthropic-ai/claude-agent-sdk

需要 Node.js 18+。

认证

SDK 通过环境变量读取 API 密钥:

export ANTHROPIC_API_KEY="sk-ant-..."

也支持 Amazon Bedrock、Google Vertex AI 和 Foundry 等替代认证方式。

快速开始

核心入口是 query() 函数。它返回一个异步迭代器,需要用 async for / for await 逐条消费消息。

Python

from claude_agent_sdk import query

async for message in query(
    prompt="查找所有 TODO 并修复",
    options={"allowedTools": ["Read", "Edit", "Bash"]}
):
    if message.type == "assistant":
        print(message.content)

TypeScript

import { query } from '@anthropic-ai/claude-agent-sdk';

for await (const message of query({
  prompt: '查找所有 TODO 并修复',
  options: { allowedTools: ['Read', 'Edit', 'Bash'] }
})) {
  if (message.type === 'assistant') {
    console.log(message.content);
  }
}

注意query() 不是 await 一次拿到完整结果,而是流式返回 AsyncIterator[Message]。每条 message 有 type 字段区分角色。

多轮对话

如果需要在同一个会话里连续提问(保持上下文),用 ClaudeSDKClient

from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions

async with ClaudeSDKClient(ClaudeAgentOptions(...)) as client:
    await client.connect()

    response = await client.query("这个项目用了什么框架?")
    messages = await client.receive_response()

    # 继续追问,上下文自动保留
    response = await client.query("帮我找到所有 API 路由")
    messages = await client.receive_response()

    await client.disconnect()

自定义工具

用 @tool 注册工具

@tool 装饰器需要三个参数:工具名称描述input_schema(JSON Schema 格式):

from claude_agent_sdk import tool

@tool("get_weather", "获取天气信息", {
    "type": "object",
    "properties": {"city": {"type": "string", "description": "城市名"}},
    "required": ["city"]
})
def get_weather(city: str) -> str:
    return f"{city}: 晴天 25°C"

注意:不能写裸的 @tool——name、description、input_schema 三个参数缺一不可。

用 create_sdk_mcp_server 暴露工具

把注册好的工具打包成 MCP 服务器,SDK 会自动管理进程通信:

from claude_agent_sdk import create_sdk_mcp_server

server = create_sdk_mcp_server(
    name="my-tools",
    version="1.0.0",
    tools=[get_weather]
)

这种方式比手动跑外部 MCP 服务器更轻量——无需单独管理子进程,单进程内完成一切。

自定义 Subagents

Subagents 是运行在独立上下文中的专门化 AI 助手。

方式一:Markdown 文件

.claude/agents/ 下创建 .md 文件:

---
name: code-reviewer
description: 专门审查代码质量和安全性的 Agent
model: sonnet
tools:
  - Read
  - Glob
  - Grep
maxTurns: 10
permissionMode: plan
---

你是一个代码审查专家。审查代码时关注:
1. 安全漏洞(SQL 注入、XSS 等)
2. 性能问题
3. 代码规范

方式二:交互式创建

在 Claude Code 中输入 /agents,通过引导式设置创建。

Subagent 配置字段

字段说明
nameAgent 名称(必需)
descriptionAgent 描述(必需)
model模型别名:sonnet / opus / haiku / fable / inherit,或完整模型 ID
tools可用工具列表
disallowedTools禁用工具列表
maxTurns最大交互轮次
permissionMode权限模式
mcpServersMCP 服务器配置
hooks生命周期钩子
skills启动时预加载的 Skills
memory持久记忆(user/project/local)
effort推理 effort 级别
background是否后台运行
isolationworktree 隔离
color在 UI 中显示的颜色
initialPrompt作为主会话 agent 运行时的初始提示

内置 Subagents

Agent模型用途
ExploreHaiku只读,快速代码搜索
Plan继承计划模式研究
General-purpose继承完整工具,复杂任务

相关概念

Tool Runner

Client SDK(@anthropic-ai/sdk)提供的 beta 功能 client.beta.messages.tool_runner,可以自动执行 agentic loop——你定义好工具,它帮你跑完整个"调用工具 → 拿结果 → 再推理"的循环。

和 Agent SDK 的区别:Tool Runner 基于 Messages API,工具定义和执行逻辑都在你这边;Agent SDK 则直接复用 Claude Code 的内置工具和 agent loop,开箱即用。

Managed Agents

2026 年 4 月公测的云端托管 Agent 服务。你不需要跑任何本地进程,Anthropic 在云端为你管理 Agent 的生命周期和执行环境。适合不想维护基础设施、只想调用 API 拿结果的场景。

On this page