Skip to content

Agent SDK API 参考速查

这一页把官方 TypeScript/Python API 参考压缩成工程速查。完整 API 仍以官方参考为准,但日常选型通常只需要先判断:一次性 query()、长连接 client、custom tools、session 管理、settings 解析和迁移差异。

如果你要看 custom tools、streaming、structured output、tool search 和用户审批,看 Agent SDK 运行时模式。如果你要做多租户和生产部署,看 Agent SDK 生产部署

覆盖的官方页面

官方页面本页覆盖重点
Agent SDK overviewSDK 定位、能力和与 CLI/API 的差异
Quickstart安装、最小 agent、权限模式
TypeScript referencequery()startup()tool()、session API、resolveSettings()
Python referencequery()ClaudeSDKClient@tool、session API
Migration guide包名、system prompt、setting sources 和 breaking changes
TypeScript V2 preview removed已移除 API 的替代路线

安装

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

TypeScript 包通常通过 optional dependency 带平台对应 binary。生产镜像里仍要确认 binary 存在,并保留 PATH

pip install claude-agent-sdk

Python 需要 3.10 或更新版本。持续会话优先用 ClaudeSDKClient,一次性任务用 query()

接 Gushen888 时,关键仍是子进程环境:

export ANTHROPIC_BASE_URL="https://api.gushen888.cloud"
export ANTHROPIC_AUTH_TOKEN="sk-你的 Gushen888 API Key"

TypeScript env 选项会替换子进程环境。传自定义 env 时通常要展开 ...process.env

选择入口

需求TypeScriptPython说明
一次性任务query()query()最简单,流结束后进程退出
持续聊天continue: true 或保存 session IDClaudeSDKClient同一上下文多轮交互
流式输入AsyncIterable<SDKUserMessage>AsyncIterable[dict]适合 WebSocket 或后台队列
自定义工具tool()@tool用 in-process MCP server 暴露函数
列出本地 sessionlistSessions()list_sessions()可做历史列表和恢复入口
解析 settingsresolveSettings()参考 Python options 行为适合宿主应用展示有效配置

query() 最小例子

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

for await (const message of query({
  prompt: "解释这个仓库的入口文件",
  options: {
    cwd: process.cwd(),
    maxTurns: 5,
    permissionMode: "dontAsk",
    allowedTools: ["Read", "Grep", "Glob"],
    env: {
      ...process.env,
      ANTHROPIC_BASE_URL: "https://api.gushen888.cloud",
      ANTHROPIC_AUTH_TOKEN: process.env.GUSHEN888_API_KEY ?? ""
    }
  }
})) {
  if (message.type === "result") {
    console.log(message.result);
  }
}
import asyncio
from claude_agent_sdk import ClaudeAgentOptions, query

async def main() -> None:
    options = ClaudeAgentOptions(
        cwd=".",
        max_turns=5,
        permission_mode="dontAsk",
        allowed_tools=["Read", "Grep", "Glob"],
        env={
            "ANTHROPIC_BASE_URL": "https://api.gushen888.cloud",
            "ANTHROPIC_AUTH_TOKEN": "sk-你的 Gushen888 API Key",
        },
    )

    async for message in query(prompt="解释这个仓库的入口文件", options=options):
        if getattr(message, "type", None) == "result":
            print(message.result)

asyncio.run(main())

Python query() 与 ClaudeSDKClient

项目query()ClaudeSDKClient
会话默认新 session同一个 client 复用 session
多轮需要 continue_conversationresume自动保持上下文
连接自动创建和关闭由你打开和关闭
Interrupt不适合支持
用途job、CI、一次性后台任务聊天 UI、IDE 面板、长会话

如果你的产品是“用户打开一个 agent 面板连续对话”,Python 优先用 ClaudeSDKClient。如果是“队列里每条任务跑一次”,用 query() 更简单。

常用函数

函数语言作用
query()TS/Python启动 agent loop 并返回消息流
startup()TS提前初始化子进程,降低首条消息延迟
tool() / @toolTS/Python定义 custom tool
createSdkMcpServer() / create_sdk_mcp_server()TS/Python把 custom tools 包装为 in-process MCP server
listSessions() / list_sessions()TS/Python列出本地 session
getSessionMessages() / get_session_messages()TS/Python读取 transcript 消息
getSessionInfo() / get_session_info()TS/Python查单个 session 元数据
renameSession() / rename_session()TS/Python重命名 session
tagSession() / tag_session()TS/Python给 session 打标签
resolveSettings()TS解析 settings 生效结果和 provenance

Permission mode 速查

模式行为适合
default未被规则覆盖的工具会触发审批 callback自定义审批 UI
acceptEdits自动批准文件编辑和常见文件系统命令人监督的开发流
plan只读探索,编辑会走审批大改前规划
dontAsk不提示,未 allow 的动作直接拒绝受限 headless agent
autoTypeScript 可用,用 classifier 判断半自治任务
bypassPermissions大部分动作直接执行只用于强隔离 sandbox

allowedTools 是预批准列表,不是工具全集限制。要移除工具定义,使用 disallowedTools 或缩小 tools

Session API

字段含义
sessionId / session_idUUID,恢复或查看历史时使用
summary自动或手动标题
lastModified最近更新时间
cwdsession 结束时所在目录
gitBranch结束时 Git branch
tag用户设置标签

常见 UI:

const sessions = await listSessions({ dir: "/repo", limit: 50 });
const current = await getSessionInfo(sessions[0].sessionId, { dir: "/repo" });
const messages = await getSessionMessages(sessions[0].sessionId, { dir: "/repo", limit: 100 });

不要把本地 transcript 当唯一可靠存储。跨主机恢复看 Agent SDK 生产部署SessionStore

Settings 解析

TypeScript resolveSettings() 适合宿主应用在启动前展示“最终哪些配置生效”。

选项用途
cwd按哪个目录解析 project/local settings
settingSources选择 user、project、local,传 [] 可跳过文件系统 settings
managedSettings宿主应用提供更严格的 policy-tier settings
serverManagedSettings宿主传入服务端 settings snapshot

多租户产品建议默认:

{
  settingSources: [],
  env: {
    ...process.env,
    CLAUDE_CONFIG_DIR: `/srv/claude-config/${tenantId}`,
    CLAUDE_CODE_DISABLE_AUTO_MEMORY: "1"
  }
}

从旧 SDK 迁移

@anthropic-ai/claude-code@anthropic-ai/claude-agent-sdk
claude-code-sdkclaude-agent-sdk
Python ClaudeCodeOptionsClaudeAgentOptions
默认 Claude Code system prompt需要显式设置 claude_code preset
隐式 settings 行为要认真确认 settingSources
TS V2 session API已移除,改用当前 query()、session API 或 Python client

如果你从 CLI 迁移,并希望行为像 Claude Code CLI,设置:

systemPrompt: {
  type: "preset",
  preset: "claude_code"
}

缓存影响

变化5m/1h cache 影响
systemPrompt改变前缀,通常导致 miss
settingSources可能增减 CLAUDE.md、skills、hooks 和 settings
改 tools/MCP工具 schema 变化会改变前缀
query() 新 session历史为空,只复用稳定 system/tools 前缀
continue / resume延续历史,更可能命中同一前缀
ENABLE_PROMPT_CACHING_1H=1可选请求 1 小时 TTL,写入成本更高,适合反复调用同一 agent 配置

观测字段见 Agent SDK 生产部署

官方参考

面向编码工具与 Agent 工作流的稳定模型网关。