16Agent SDK
L3P0五步章 · 技术章
Why · 为什么要学
Anthropic 2025-10 把 Claude Code SDK 改名 Claude Agent SDK,意思是"Claude Code 同款 harness,你也能用"。几十行代码起一个能跑 file ops + bash + tool 的 agent。但这也是混淆的开始:很多团队用 Agent SDK 搭 agent 就以为自己在做"harness 工程",其实只是 SDK user。理解 Client SDK / Agent SDK / Harness 三者的边界,是 harness 工程师的基础术语关。
1 ·核心要点
Anthropic 三个层级的接口,从低到高:
| 层级 | 包名 | 提供什么 | 你自己写什么 |
|---|---|---|---|
| Client SDK | anthropic | Messages API 包装 | agent loop、tool 执行、context 管理 |
| Agent SDK | @anthropic-ai/claude-agent-sdk | 内置 loop、tools(Read/Edit/Bash)、Hooks、context | prompt、自定义 tool、business 逻辑 |
| Harness 自造 | —— | 所有 | 从 Messages API 起每一行 |
Agent SDK 的核心价值:复用 Claude Code 同款的 agent harness——同一个 loop 实现、同一套 file ops/bash 工具、同样的 hooks(PreToolUse、PostToolUse、PreCompact、UserPromptSubmit、Stop)、同样的 permission 系统。让"做 agent"从 1000 行起步降到 30 行。
能力对比:
用 Client SDK 造 agent:
- 自己写 while loop
- 自己 parse stop_reason / tool_use / tool_result
- 自己 retry / backoff
- 自己管 max_steps / 死循环检测
- 自己设计 hooks(没的话就硬编码)
- 自己写 file ops、bash 这些常用 tool
→ 100-1000 行,典型项目几天到一周
用 Agent SDK 造 agent:
- import query, for await msg of query({...})
- allowedTools: ["Read", "Edit", "Bash"]
- hooks: { PreToolUse: ... }
→ 30 行,几小时跑通
关键认知:Agent SDK 替你 own 了 loop。loop 控制、permission、context 管理这些 harness 工程的核心决策,在你用 Agent SDK 时已经被 SDK 帮你决定了。
这就引出了关键的术语区分(对应 #11 Harness 概念边界):
使用 Agent SDK 造产品 = SDK user(你做的是应用层)
扩展 Agent SDK 的能力 = harness extension(你在边缘)
造 SDK 本身 / 自写 harness = harness 工程师(你 own loop)
2 ·最小代码示例
// TypeScript - Agent SDK 实际使用
import { query } from "@anthropic-ai/claude-agent-sdk";
for await (const msg of query({
prompt: "Refactor src/auth.ts to use async/await throughout",
options: {
allowedTools: ["Read", "Edit", "Bash"], // 限制可用工具
permissionMode: "ask", // 询问每个 write
hooks: {
PreToolUse: [{
matcher: "Edit",
hooks: [async ({ tool_input }) => {
console.log("准备改:", tool_input.path);
return { decision: "approve" };
}]
}]
}
}
})) {
console.log(msg); // 流式输出 thinking、tool_use、tool_result、text
}
// 等价的 Client SDK 实现:你要手写 agent loop、retry、
// stop_reason 解析、tool 执行、permission ask 弹窗——约 300 行
3 ·工程权衡
何时用 Agent SDK
- 快速搭一个能用的 coding agent——内部工具、自动化脚本、CI 集成
- 核心需求是 file ops + bash + 编辑——SDK 默认支持的工具够用
- 不需要深度定制 loop / permission UX——SDK 给的默认行为够好
- 团队没人想造一遍 agent harness——时间花在业务逻辑上更值