Claude Agent SDK vs Claude Code CLI:把 AI 嵌进自己应用前,先看怎么选
Managed Agents 跟 Claude Code 的对比 写过一次”托管 vs 本地”的取舍。但开发者再深一层会问:如果想把 Claude 嵌到自己应用里,到底是用 Claude Agent SDK,还是直接调用 Claude Code CLI 二进制?这两个看上去都能完成任务,落地差很多。
这篇文章不讲基础概念——Anthropic 的官方文档已经讲了 SDK 和 CLI 各是什么。讲的是真正动手嵌入时,两者的实操差别 + 4 个常见场景对应该选哪个。
先把概念理顺
| 名称 | 是什么 | 主入口 |
|---|---|---|
| Claude API | 直接调 LLM 的 HTTP 接口 | anthropic.messages.create() |
| Claude Agent SDK | 把 agent 行为(工具调用、子任务、上下文管理)封装成库 | Anthropic Agent 类 |
| Claude Code CLI | 装在终端里能跟用户对话的可执行程序 | claude 命令 |
| Claude Code SDK / API | 通过 API 调用 Claude Code 行为(headless) | HTTP / stdio 协议 |
注意 Claude Code 本身既是 CLI 也提供”被调用模式”。它不是只能交互运行——你可以从你的应用里 spawn 一个 Claude Code 进程,喂指令,收输出。这点很多人没意识到。
所以”嵌入”实际有 3 种路径:
- 自己直接写:用 Claude API + 自己写工具调用循环
- 用 Agent SDK:让 SDK 替你管 agent 行为
- 用 Claude Code 当后端:把 Claude Code CLI 当 subprocess 跑
维度 1:嵌入方式和上手成本
Claude Agent SDK 的嵌入是”代码层”的:
1 | from anthropic_agent import Agent |
你得自己定义工具、自己处理消息流、自己决定哪些指令塞 system prompt。SDK 帮你做的是”agent loop”那一层——决定何时调工具、何时停。
Claude Code CLI 的嵌入是”进程层”的:
1 | proc = subprocess.Popen( |
你不需要管 agent loop——Claude Code 内置了。但你得管进程生命周期、IO 流、超时、CLI 的输出格式解析。
上手成本:
- SDK:写代码量更大,但行为完全可控
- CLI:写代码量极小,但行为是 Claude Code 默认的(包括它怎么读 CLAUDE.md、怎么用工具、怎么命中 skill)
初次嵌入推荐 CLI——3 行代码就能跑通。深度产品集成考虑 SDK——你需要的细节控制 SDK 才给。
维度 2:上下文管理
这是两者最大的差异。
Claude Code CLI 自带一整套上下文规则:自动加载 CLAUDE.md、激活匹配的 skill、保存会话历史、压缩长上下文。这是它最贵的资产——花了大量工程的”AI 编程默认行为”。
Claude Agent SDK 把这些都还给你:你想要的所有”项目记忆”得自己塞进 system prompt 或 user message。SDK 不会自动读 CLAUDE.md,不会知道你的 skill 文件夹。
实战影响:
- 用 CLI 嵌入:把项目目录传给 Claude Code,它自己会读 CLAUDE.md、找到 .claude/skills/、按”开发者熟悉的方式”工作
- 用 SDK 嵌入:你得自己加载 CLAUDE.md 的内容,自己实现 skill 加载机制(如果你想要的话)
举个具体例子:你想做一个 “代码审查 bot”,给 PR 写 review 评论。
- 用 CLI:把 PR 的 diff 喂给 Claude Code,让它跑 review skill。你的代码就是”调一次 CLI”。
- 用 SDK:你得自己写 system prompt 告诉它怎么 review、怎么输出格式、怎么判断风险等级。你的代码是”写一个 review prompt + 调 Agent.run”。
如果你的产品就是要复刻”程序员用 Claude Code 时的体验”,CLI 是捷径。如果你要的是一个完全自定义行为的 agent,CLI 反而是负担——你不想要它的默认行为。
维度 3:工具和 Hooks
Claude Code CLI 的工具集是固定的(Bash, Read, Edit, Write, Grep, Glob, Task, …),权限走它自己的 prompt UI(用户每次确认)。Hook 系统让你在 PreToolUse / PostToolUse / SessionStart 等节点插入自定义逻辑——但 Hook 是配置在 .claude/settings.json 里的,不是从应用层动态注入。
Claude Agent SDK 的工具是你自己注册的:
1 |
|
这个差异决定了:
- 如果你的 agent 需要调用应用内部状态(比如读数据库、调内部 API)—— SDK 更合适
- 如果你的 agent 需要的工具就是 “标准 dev 工具”(git, 文件读写, shell)—— CLI 更合适
第一种情况强行用 CLI,你得通过 MCP server 暴露内部能力,绕一大圈。第二种情况强行用 SDK,你得把 Bash / Read / Edit 这些都重新实现一遍。
维度 4:计费和资源消耗
CLI 和 SDK 都计你 Anthropic 账户的 API 调用费用。但消耗模式不同:
Claude Code CLI 一次会话的 token 消耗包括:
- 系统提示(很大,因为内置一整套行为规则)
- 加载的 CLAUDE.md
- 激活的 skill 文件
- 工具描述
- 完整对话历史
CLI 的系统提示约 6-10k token,单次任务的最低成本就在那。
Claude Agent SDK 的 token 消耗你完全控制:
- 系统提示是你写的(可能 1k 也可能 10k)
- 工具描述是你的工具的(自己控制详尽度)
- 对话历史是你的(你决定保留多少)
如果你的产品要跑大量 agent 调用(比如批量处理工单),SDK 的可控成本是关键优势。CLI 单次成本相对固定,但里面包含了你可能用不上的能力开销。
实战数字感:同一个简单任务(”读这个文件并总结”),CLI 大概比 SDK 多花 40-60% 的 token。但 CLI 的产出质量通常更稳——因为它”默认懂工程”。
维度 5:维护成本
容易被忽略但实战很重要的一点。
Claude Code CLI 是 Anthropic 官方维护、持续更新的二进制。你嵌入的依赖是”一个进程”——升级 CLI = 升级一个二进制。但 CLI 的输出格式、CLAUDE.md 字段、skill 接口可能在版本之间变。你的产品依赖这些就要跟着改。
Claude Agent SDK 是个库,依赖管理跟正常 npm/pip 包一样。版本固定、行为固定。但 SDK 跟着 Anthropic API 演进——新模型出来 SDK 默认会跟,但你的工具实现不一定在新模型下表现一样好。
我的经验:
- 如果你的产品不打算长期紧跟 Claude Code 演进,用 CLI 等于把自己绑死在 Anthropic 的产品 roadmap 上
- 如果你的产品就是 Claude Code 的延伸(比如帮团队管理 Claude Code 配置 / 给 Claude Code 加企业能力),用 CLI 反而是合理的
4 种常见场景对应该选哪个
场景 A:你想做一个 AI Pair Programmer
例:开发者打开你的产品,输入”帮我实现登录功能”,期待跟 Claude Code 类似的体验。
✅ 选 CLI 嵌入。Claude Code 已经把这种体验做完了,你重写没意义。
场景 B:你想做一个客服 / 数据分析 / 内容生成的 Agent
例:用户问问题 → agent 查数据库 → agent 生成报告。
✅ 选 SDK。你的工具是应用内部能力,CLI 的”开发者工具集”用不上。
场景 C:你做内部 DevOps 自动化
例:每天定时跑”这周提交了什么”、”哪些 PR 没合”、”有哪些 dependency 警告”。
✅ 看任务性质:
- 涉及代码 / git / 文件分析 → CLI 更省心
- 涉及自定义 dashboard / 内部 API → SDK 更合适
场景 D:你做一个 SaaS 卖给别人用
✅ 强烈倾向 SDK。原因:
- 用户体验稳定(你完全控制 prompt 和 tool)
- 计费可预测
- 不依赖 CLI 二进制分发
- 多租户隔离更可控
唯一例外:如果你的 SaaS 就是”把 Claude Code 包装给团队用”,那 CLI 是核心资产。
跟 Managed Agents 的层级关系
Managed agents 那篇 比较的是”托管 vs 本地”,本质是部署位置的差异。本篇比较的是”嵌入方式”,是API 形态的差异。组合来看:
| 部署位置 | API 形态 | 典型用法 |
|---|---|---|
| 本地 | CLI 嵌入 | 内部工具、增强本地开发 |
| 本地 | SDK 嵌入 | 自定义产品、桌面应用 |
| 托管(Anthropic 主机) | Managed Agents API | 不想自己 host agent runtime |
| 自有云 | SDK 部署 | SaaS 后端、企业内部平台 |
决策清单
最后给一份决策清单。5 道题选完后能定方向:
你的 agent 主要是跑”开发者工具”(代码 / git / 文件 / shell)?
是 → +1 CLI;否 → +1 SDK你的 agent 需要调用内部应用 API / 数据库?
是 → +2 SDK你需要完全控制 system prompt 和工具描述?
是 → +2 SDK你的产品价值在”用 Claude Code 的默认行为”?
是 → +2 CLI你的产品要持续做大量 agent 调用、计费敏感?
是 → +1 SDK;否 → 平
CLI 总分高 → 用 CLI 嵌入起步,未来需要细节再迁移到 SDK。
SDK 总分高 → 直接 SDK,不要先用 CLI 再迁移(迁移成本不低)。
延伸阅读:
- Managed Agents vs Claude Code 比较了”托管运行时 vs 本地”,跟本篇正交
- AI Agent 开发完整指南 不绑定具体工具的 agent 设计原理
- AI Agent 技术栈选型 帮你在 SDK / 框架 / 自实现之间做更大格局的选择
- Claude Code 项目实战工作流 看 CLI 模式下完整工作流,再决定是否值得抽出来做产品



