跳转到内容

Agent SDK 程序化调用

「PR 机器人能跑,但我想在自己的 Node 服务里启动同样的代理循环。」

CI/CD 集成 里的 GitHub Action 底层即 Claude Agent SDK。SDK 把 Claude Code 的代理循环、工具、权限当作调用,适合自定义服务、内部平台与复杂流水线。官方:OverviewQuickstartHeadless

包名、API 面(query / send / stream)随版本演进。以下示例发布前对照 TypeScript reference 与 quickstart。


方式入口适用
交互 CLIclaude日常开发
非交互 CLIclaude -p "..."简单 CI 脚本
Agent SDKNode / Python 库多轮、流式、嵌应用、细粒度权限

claude -p 适合一次性 prompt;SDK 适合循环读事件、分支处理 tool call、嵌 UI。二者可共存。


Terminal window
mkdir my-agent && cd my-agent
npm init -y
npm install @anthropic-ai/claude-agent-sdk
import { query } from "@anthropic-ai/claude-agent-sdk";
async function main() {
for await (const message of query({
prompt: "List the files in the current directory",
options: {
maxTurns: 5,
allowedTools: ["Read", "Glob", "Grep"],
},
})) {
console.log(message);
}
}
main().catch(console.error);

在仓库根运行,应看到代理循环与工具调用事件。若 import 报错,以官方 quickstart 中的包名为准。

  • 流式:Streaming output,边生成边处理。
  • 多轮:Sessionscontinue / resume / fork
  • 用户审批:User input,在应用里展示 allow/deny。

SDK 可复用仓库内配置,见 Claude Code features in the SDK

能力说明
CLAUDE.md / rules与本地会话一致的项目记忆
Skills.claude/skills/
Hooks生命周期脚本
Subagents.claude/agents/
MCP按项目 .mcp.json

这使「本地能跑通的规范」更容易迁到服务端,但仍需在服务端限制密钥与网络。


机制文档
allow/denySDK permissions
maxTurns / max_budget_usdAgent loop · Turns and budget
成本跟踪Cost tracking

无人值守服务必须设 turn 与工具白名单,等同 CI/CD 章claude -p 的要求。


生产部署见 HostingSecure deployment

  • API Key 仅环境变量或密钥管理,不进镜像层。
  • 沙箱 或容器隔离结合。
  • OpenTelemetry 见 Observability

现象可能原因下一步
工具未执行allowedTools 过窄对照 tools reference
费用失控maxTurns加预算与并发上限
与本地行为不一致未加载 CLAUDE.md指定 cwd 与 settingSources
版本 API 报错SDK 升级读 migration guide

用 SDK: 自建 bot、内部开发者平台、要比 -p 更细的事件处理。

claude -p 单次审查、GitLab job 一行脚本。

用官方 Action: GitHub 标准 @claude,少维护。


  1. SDK 与 claude -p 各适合什么流水线?
  2. 为何服务端必须设 allowedTools
  3. Action 与自建 SDK 服务如何分工?

自检:

  • 跑通过 quickstart 级示例
  • 知道去哪查 TypeScript API
  • 能说出 SDK 可加载的三种仓库内配置

上一章:生态深度集成 · 下一章:CI/CD 与代码审查集成