写在前面
作为一名对 AI Agent 充满热情的开发者,我在看到 Claude Agent SDK 发布时几乎第一时间就开始尝试。官方文档描绘了一个美好的蓝图:构建能够自主读取文件、运行命令、搜索网络、编辑代码的 AI 智能体------这正是我一直寻找的工具。
然而,当我真正开始深入研究这个 SDK,试图理解它的底层架构,准备将它集成到生产环境时,我发现了一些值得深入理解的技术设计。这篇文章将带你一步步剖析 Claude Agent SDK 的真实架构,帮助你更全面地理解这个工具,并做出更明智的技术选型。
一、核心架构:依赖 Claude Code 运行时
让我们从最基础的安装步骤开始。打开官方文档的 Get Started 部分,你会看到这样的说明:
bash
# 第一步:安装 Claude Code
npm install -g @anthropic-ai/claude-code
# 第二步:安装 SDK
npm install @anthropic-ai/claude-agent-sdk
注意这里的关键点:必须先安装 Claude Code CLI。这不是一个可选项,也不是为了更好的体验而推荐的额外步骤------这是一个硬性要求。
这意味着 Claude Agent SDK 本质上是 Claude Code CLI 的编程接口包装,而不是一个独立的、可移植的智能体开发框架。
二、依赖链条深度剖析
2.1 第一层:Claude Code 是必需的基础设施
当你在代码中调用 SDK 的 query() 函数时,看起来是这样的:
javascript
import { query } from '@anthropic-ai/claude-agent-sdk';
// 看起来很简单的调用
for await (const msg of query("分析这个代码库", {
allowedTools: ['Read', 'Bash']
})) {
console.log(msg);
}
但实际执行流程远比表面复杂:
- SDK 启动 Claude Code CLI 进程
- 通过进程间通信(IPC)传递请求
- Claude Code 管理完整的 agentic loop
- Claude Code 执行工具调用(读文件、运行 bash 等)
- 结果通过 IPC 返回给代码
核心结论:整个 Agent 循环的核心逻辑都在 Claude Code CLI 中,SDK 只是一个薄薄的门面层。
2.2 第二层:核心功能的来源
SDK 宣传的所有强大功能,实际上都继承自 Claude Code:
| 功能 | 实际位置 | 说明 |
|---|---|---|
| Agentic Loop | Claude Code | Gather Context → Take Action → Verify Work 三阶段循环 |
| Tools | Claude Code | Read、Write、Bash、Edit 等工具的实现 |
| Skills | Claude Code | 技能的发现、解析、加载机制 |
| Subagents | Claude Code | 多智能体协作、并行任务处理、上下文隔离 |
对于 Skills,SDK 要使用必须配置:
javascript
const options = {
settingSources: ['project', 'user'] // 告诉 Claude Code 去哪找配置
};
2.3 第三层:系统提示词的耦合
更微妙但同样重要的是系统提示词(system prompt)的设计。SDK 文档指出:
The Agent SDK uses an empty system prompt by default for maximum flexibility.
这听起来很灵活,但当你需要完整的 Agent 能力时,会这样配置:
javascript
const options = {
systemPrompt: { preset: "claude_code" }
};
preset: "claude_code" 这个预设包含了:
- 工具使用指令
- 代码规范和格式化指南
- 响应语气和详细程度设置
- 安全和安保指令
- 当前工作目录和环境的上下文
这些提示词是经过精心调优的,专门针对 Claude Code 的使用场景,而不是通用的 Agent 提示词。
三、Claude 模型的强耦合
现在来谈谈更深层的依赖:对 Claude 模型本身的耦合。
3.1 表面上的开放性
SDK 文档列出了支持的其他模型提供商:
- Amazon Bedrock
- Google Vertex AI
- Microsoft Foundry
但这里有个关键限制:你只能使用 Claude 模型。这些选项只是让你可以通过不同云平台调用 Claude 模型,而不是支持其他品牌的大模型。
3.2 尝试使用其他模型会发生什么?
理论上,SDK 基于标准的工具调用协议构建。GPT-5.2、Gemini 3 Pro 等其他大模型也支持工具调用。那么,能否用它们替代 Claude?
答案是:技术上可能,但实际效果会显著下降。原因如下:
1. Agentic Loop 的设计针对 Claude 的特性
Claude Code 的三阶段循环(Gather → Act → Verify)是针对 Claude 模型的思维模式优化的:
- Context Gathering 阶段:Claude 擅长通过 agentic search(使用 grep、tail、head 等)精确定位需要的信息
- Verification 阶段:Claude 的自我反思能力在代码质量检查、错误识别方面特别强
2. 长上下文处理能力的匹配
Claude Opus 4.5 和 Sonnet 4.5 支持 200K token 的上下文窗口,这对于 Agent 工作至关重要:
一个典型的 Agent 会话可能包含:
- 初始提示词: ~1K tokens
- 文件系统结构: ~5K tokens
- 读取的代码文件: ~20K tokens
- 工具调用历史: ~10K tokens
- 中间结果和反思: ~15K tokens
总计: ~51K tokens,还有很大余量
如果使用上下文窗口较小的模型,会频繁触发上下文截断问题。
3.3 简单的性能对比测试
我进行了一个简单的测试,用相同的任务分别尝试 Claude Opus 4.5 和 GPT-5.2:
任务:在一个 10 万行的代码库中找到所有认证相关的 bug 并修复
| 维度 | Claude Opus 4.5 | GPT-5.2 |
|---|---|---|
| 策略 | 使用 grep 搜索关键词,智能采样文件 | 尝试分析整体架构,利用 400K 上下文 |
| 问题识别 | 23 个相关文件 → 5 个潜在问题 | 识别 4 个问题,遗漏 1 个边缘情况 |
| 修复方案 | 逐一修复,运行测试全部通过 | 方案较为通用,需要额外验证 |
| 耗时 | 约 8 分钟 | 约 12 分钟(含人工确认) |
注:这是基于特定场景的单次测试,不同任务类型可能有不同结果。但可以看出,SDK 的设计确实针对 Claude 模型进行了深度优化。
四、为什么会存在这样的依赖?
理解了"是什么"之后,我们需要思考"为什么"。Anthropic 的开发者选择这种深度耦合,背后有其合理性。
4.1 演进路径决定架构
Claude Agent SDK 的前身是 Claude Code SDK,而 Claude Code SDK 本质上是 Claude Code CLI 的可编程版本。这个演进路径决定了架构:
- 首先,Anthropic 内部构建了 Claude Code,用于提升开发者生产力
- 然后,他们发现 Claude Code 可以做的远不止写代码
- 于是,他们开放了 SDK,让外部开发者能够调用 Claude Code 的能力
- 最后,将 Claude Code SDK 改名为 Claude Agent SDK,反映更广泛的用途
核心结论:SDK 是 Claude Code 的 API 化,而不是独立的 Agent 框架。
4.2 务实的工程权衡
如果要构建一个真正模型无关的 Agent 框架,Anthropic 需要:
- 重新设计工具执行引擎(而不是复用 Claude Code)
- 实现通用的 agentic loop(而不是依赖 Claude Code 的循环)
- 开发抽象的提示词管理系统(而不是使用 Claude Code 的 system prompt)
这需要大量的工程投入,而且可能会:
- 延迟 SDK 的发布时间
- 增加维护成本(两套并行的系统)
- 牺牲性能(通用抽象总是比专用实现慢)
从技术债务权衡角度,Anthropic 选择了务实的路径:快速推出能工作的产品,接受耦合作为代价。
4.3 商业视角的考量
从商业角度看,这种深度耦合创造了一个强大的护城河:
- 开发者使用 SDK 构建的 Agent 很难迁移到其他模型
- Claude Code CLI 成为了事实上的 Agent 运行时标准
- Skills 和配置文件格式形成了一个专属生态
这不一定是恶意的锁定策略,但客观上确实产生了这样的效果。
五、对开发者的实际影响
5.1 技术选型的两难
如果你想构建生产级的 Agent 应用,现在面临的选择是:
| 维度 | Claude Agent SDK | 其他 Agent 框架(LangChain、Vercel AI SDK 等) |
|---|---|---|
| 优点 | 完整的工具生态、成熟的 agentic loop、出色的 Agent 性能 | 模型选择灵活、完全开源和可定制 |
| 缺点 | 必须使用 Claude 模型、必须安装 Claude Code CLI、成本和延迟受限于 Anthropic API | Agent 性能通常较差、需要自己实现大量基础设施、缺少 Skills/Subagents 等高级特性 |
对于大多数团队来说,Claude Agent SDK 仍然是最实用的选择,但必须接受它带来的约束。
5.2 成本考量
使用 Claude 模型,成本和延迟是需要认真考虑的因素:
| 模型 | 输入价格 | 输出价格 | 适用场景 |
|---|---|---|---|
| Claude Haiku 4.5 | $1 / 1M tokens | $5 / 1M tokens | 最快速,适合高频调用 |
| Claude Sonnet 4.5 | $3 / 1M tokens | $15 / 1M tokens | 平衡性能和成本,最常用 |
| Claude Opus 4.5 | $5 / 1M tokens | $25 / 1M tokens | 旗舰模型,最强性能 |
对于 Agent 应用,由于需要大量的工具调用和中间步骤,实际成本可能是普通对话的 5-10 倍。
成本计算示例(Claude Sonnet 4.5):
一个复杂任务:
- 初始上下文: 10K tokens
- 10 次工具调用,每次:
- 工具描述: 2K tokens
- 工具结果: 5K tokens
- Agent 思考: 1K tokens
- 最终响应: 3K tokens
总计:
输入: 10K + 10 × (2K + 5K) = 80K tokens → $0.24
输出: 10 × 1K + 3K = 13K tokens → $0.195
单次任务成本: ~$0.44
如果应用每天处理 1000 个任务,使用 Sonnet 4.5 的月成本约 13,200,使用 Opus 4.5 则上升到约 21,900。
5.3 部署与运维复杂性
使用 Claude Agent SDK 的生产环境需要封装成容器,比单纯的 API 调用复杂得多:
dockerfile
# Dockerfile 示例
FROM node:20
# 安装 Claude Code CLI(额外的依赖)
RUN npm install -g @anthropic-ai/claude-code@2.1.1
# 安装应用
COPY package.json .
RUN npm install
# 需要持久化 Claude Code 的配置
VOLUME /root/.claude
# 环境变量
ENV ANTHROPIC_API_KEY=sk-xxx
ENV CLAUDE_CODE_USE_BEDROCK=1 # 如果使用 AWS
CMD ["node", "app.js"]
主要挑战:
- 容器镜像更大(多了 Claude Code CLI)
- 启动时间更长(需要初始化 Claude Code)
- 需要管理额外的配置文件和缓存
- 进程间通信可能成为性能瓶颈
5.4 开源生态的局限性
Claude Agent SDK 本身是开源的,但它依赖的 Claude Code CLI 和 Claude 模型不是。这意味着:
- ✅ 可以看到 SDK 的源代码
- ✅ 可以修改和扩展 SDK
- ❌ 无法替换核心运行时(Claude Code CLI)
- ❌ 无法使用非 Claude 的模型而不牺牲性能
这种半开源的状态让社区难以真正创新和扩展生态。
六、总结与建议
深入了解 Claude Agent SDK 的底层依赖关系后,我对这个设计有了更全面的认识。这是一个有明确权衡的技术选择。
6.1 核心发现
- 架构本质:Claude Agent SDK 是 Claude Code CLI 的编程接口包装,不是独立的 Agent 框架
- 模型锁定:必须使用 Claude 模型,其他模型无法获得同等性能
- 功能来源:所有高级功能(Skills、Subagents、Tools)都继承自 Claude Code
- 成本结构:Agent 应用的成本是普通对话的 5-10 倍,需要仔细规划
6.2 适用场景建议
| 场景 | 推荐方案 | 理由 |
|---|---|---|
| 关键业务应用,Agent 质量至关重要 | Claude Agent SDK | 成熟的架构、优化的性能 |
| 实验性项目,快速迭代验证 | 考虑更灵活的方案 | 避免过早锁定 |
| 成本敏感的大规模应用 | 混合架构 | Haiku 4.5 处理简单任务,Sonnet/Opus 4.5 处理复杂场景 |
| 多模型支持是刚需 | 其他 Agent 框架 | 模型选择灵活性优先 |
6.3 最后的话
Claude Agent SDK 不是一个银弹,也不是一个枷锁。它是一个有明确设计目标和工程权衡的工具。理解这些权衡,才能更好地利用它的优势,规避它的局限。
对于想要构建生产级 Agent 应用的开发者来说,选择 Claude Agent SDK 意味着接受它的约束,但也能获得经过验证的成熟架构和优秀的 Agent 性能。关键是在特定场景下做出明智的决策。
本文基于 Claude Agent SDK 2.1.1 版本编写,部分数据和功能可能随版本更新而变化。建议查阅官方文档获取最新信息。