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 种路径:

  1. 自己直接写:用 Claude API + 自己写工具调用循环
  2. 用 Agent SDK:让 SDK 替你管 agent 行为
  3. 用 Claude Code 当后端:把 Claude Code CLI 当 subprocess 跑

维度 1:嵌入方式和上手成本

Claude Agent SDK 的嵌入是”代码层”的:

1
2
3
from anthropic_agent import Agent
agent = Agent(model="claude-sonnet-4-6", tools=[...])
result = agent.run("分析这个文件夹")

你得自己定义工具、自己处理消息流、自己决定哪些指令塞 system prompt。SDK 帮你做的是”agent loop”那一层——决定何时调工具、何时停。

Claude Code CLI 的嵌入是”进程层”的:

1
2
3
4
5
6
proc = subprocess.Popen(
["claude", "--no-color", "-p", "分析这个文件夹"],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
cwd="/path/to/project"
)

你不需要管 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
2
3
@agent.tool
def fetch_user_data(user_id: str) -> dict:
return db.get_user(user_id)

这个差异决定了:

  • 如果你的 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 道题选完后能定方向

  1. 你的 agent 主要是跑”开发者工具”(代码 / git / 文件 / shell)?
    是 → +1 CLI;否 → +1 SDK

  2. 你的 agent 需要调用内部应用 API / 数据库?
    是 → +2 SDK

  3. 你需要完全控制 system prompt 和工具描述?
    是 → +2 SDK

  4. 你的产品价值在”用 Claude Code 的默认行为”?
    是 → +2 CLI

  5. 你的产品要持续做大量 agent 调用、计费敏感?
    是 → +1 SDK;否 → 平

CLI 总分高 → 用 CLI 嵌入起步,未来需要细节再迁移到 SDK。
SDK 总分高 → 直接 SDK,不要先用 CLI 再迁移(迁移成本不低)。


延伸阅读: