Claude Code / Agent SDK / Anthropic API
三者深度解读

同一个 Claude,三种打开方式 — 该选哪个?
📅 2026 年 5 月 · by Marcus🐦 · 面向开发者 / Agent 玩家
一句话结论 Claude Agent SDK 本质就是「Claude Code CLI + Python/TS 包装」,调的还是同一个 Claude。 三种方式的真正区别不是"哪个 Claude 更聪明",而是"中间层架构""计费方式"。 你 99% 应该用 Agent SDK + Max 订阅。

0. 前置:先搞清三者的关系

很多人一开始就被名字搞晕。其实它们是同一个模型(claude-opus-4-7 / sonnet-4-6 / haiku-4-5),只是到达模型的路径不一样

三种调用路径全景图
路径 A:Anthropic API 直连
   你的代码 ─→ HTTP ─→ Anthropic API ─→ Claude(Opus/Sonnet/Haiku)
   特点:最底层、最自由、自己写工具循环、独立 API key 计费

路径 B:Claude Code CLI(交互式)
   人类 ─→ 终端 REPL ─→ Claude Code 进程 ─→ Anthropic API ─→ Claude
   特点:给人用的命令行 IDE,REPL 模式,跟 Max/Pro 订阅绑定

路径 C:Claude Agent SDK(程序化)
   你的代码 ─→ Python/TS SDK ─→ subprocess ─→ Claude Code(headless)
                                        ─→ Anthropic API ─→ Claude
   特点:本质是 Claude Code 的 Python/TS 包装,给程序调的

看清楚没?路径 C 其实是路径 B 套了一层壳。Agent SDK 内部就是 spawn 一个 claude --print --json-stream 子进程,通过 stdin/stdout 跟它对话。

"既然 Agent SDK 是 Claude Code 套壳,那我自己 spawn claude 子进程是不是更直接?" — 这是错觉。你那是在重新发明 Agent SDK,且大概率写得更差。

1. 路径 A:Anthropic API 直连

装个 pip install anthropic,拿 API key,直接调 messages.create()。最原始最自由。

from anthropic import Anthropic
client = Anthropic(api_key="sk-...")

# 单次调用,自己处理 tool_use 循环
response = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=1024,
    tools=[{"name": "search", "description": "...", "input_schema": {...}}],
    messages=[{"role": "user", "content": "查下天气"}],
)

# 如果模型返回 tool_use,你要自己执行工具,把结果回传
while response.stop_reason == "tool_use":
    result = your_tool_executor(response.content[-1])
    response = client.messages.create(
        ...
        messages=[..., {"role": "user", "content": [{"type": "tool_result", ...}]}],
    )

能拿到啥独家能力

代价

2. 路径 B:Claude Code CLI(终端 REPL)

就是 claude 那个命令行工具,给人坐在终端前用的。打开 REPL 模式跟 Claude 对话,让它读文件改代码跑命令。

$ claude
> 帮我看看 src/auth.py 有什么 bug
[Claude 读文件、思考、给出修复建议、问你要不要应用]

它也有 --print headless 模式(吐一次结果就退出),但这本来不是给程序调的,是给 shell 脚本组合用的:

$ claude --print "git diff 干啥的,一句话总结"

核心定位

3. 路径 C:Claude Agent SDK(推荐)

2025 年 Anthropic 把 Claude Code 的能力包装成了 Python/TS 库,叫 Agent SDK。它本质上是「让程序用上 Claude Code 全套能力」

from claude_agent_sdk import query, ClaudeAgentOptions

async for message in query(
    prompt="帮我找 src/ 里所有 TODO 并整理",
    options=ClaudeAgentOptions(
        allowed_tools=["Read", "Glob", "Grep"],
        model="claude-opus-4-7",
    ),
):
    print(message)
# Tool 循环 SDK 帮你跑完,你只需要消费结果

它在内部干了啥

Agent SDK 调用一次的实际过程
  你的 Python 代码
      │
      │ query(prompt, options)
      ▼
  Agent SDK Python 包装
      │
      │ 把 ClaudeAgentOptions 翻译成 CLI flag
      │ subprocess.Popen(["claude", "--print", "--json-stream", ...])
      ▼
  Claude Code CLI 子进程(Node.js)
      │
      │ 内部跑 tool 循环 / hook / subagent 调度
      │ HTTPS to api.anthropic.com
      ▼
  Anthropic API
      │
      ▼
  Claude (Opus/Sonnet/Haiku)

独家能力(API 直连没有的)

4. 三者对比一表

维度路径 A: API 直连路径 B: Claude Code CLI路径 C: Agent SDK
调用方程序人类(REPL)程序
编程接口HTTP / SDK命令行Python / TypeScript
Tool 循环自己写内置内置
Subagent自己造支持支持
Hook
MCP自己接原生原生
JSON mode强制 100%不透传不透传
Prompt caching手动控制自动但不可见自动但不可见
计费独立 API key
pay-as-you-go
Max/Pro 订阅
或 API key
Max SDK credit
($100/$200 月)
启动延迟~50ms HTTP~1-2s~0.5-1s spawn
并发能力极强 (asyncio)REPL 不并发受 subprocess 限
新 API 特性延迟0 天几周几周

5. 怎么选?

用 Agent SDK

90% 的人
  • 构建 AI 应用 / Agent
  • 需要工具/记忆/子代理
  • 有 Max 订阅
  • 不想自己造轮子

用 API 直连

特定刚需场景
  • 必须 JSON 强约束输出
  • 追求毫秒级响应
  • 高并发(同时跑百+)
  • 对 caching 有精细控制
  • 用 Batch 省钱

用 Claude Code CLI

日常编程
  • 人类用,写代码
  • 不是给程序调的
  • 跟 IDE / git 集成

决策树(一分钟搞定)

你的代码要不要调用 Claude?
— 你只是想坐终端跟 Claude 写代码
→ 用 Claude Code CLI
— 程序要调
需要 Tool 循环 / Subagent / Hook / MCP 吗?
需要(90% 情况)→ 用 Agent SDK
不需要(单纯文本生成 / JSON 输出 / 高并发)→ 用 API 直连

6. 计费坑(很多人在这翻车)

三个池子互相独立,不互通:

计费池覆盖范围Max 20x 给的额度
Interactive credit Claude.ai 网页 / Claude Code 终端交互 "无限"用(合理范围)
Agent SDK credit Agent SDK 程序化调用 $200/月独立额度
API key messages.create() 直连 不给,独立 pay-as-you-go
⚠️ 重要:Max 订阅不能用于 API 直连 你以为"Max 订阅了,随便调 API"——错。 Anthropic 官方:"Direct API calls are separate from your Max plan. Claude Platform accounts using an API key don't receive a credit." API 调用要单独 API key + pay-as-you-go 计费。

7. 一个实战案例:微信群机器人

我用 Agent SDK + Max 订阅 + Opus 4.7 给自己的微信群造了个机器人,48 小时迭代了 23 个 commit。下面是真实选型逻辑:

场景用哪条路径为什么
主回复(群友 @ 我) Agent SDK 要 Tool 循环、Subagent、Hook、MCP,SDK 全包
早报(每天 8:55) Agent SDK + Extended Thinking 多源综合,要长考。Opus 4.7 thinking 输出更深度
意图分类(每条群消息) Agent SDK + Haiku 4.5 单步判断"是不是研究类问题",省钱用 Haiku
self_modify(bot 改自己代码) Agent SDK + Opus 4.7 + Plan mode 改代码风险高,先 plan 后改
JSON 结构化输出 理论上 API 直连 但实际 Opus 4.7 在 SDK 里"听话度"够用,没切

🎯 我的最终选型

主架构 Agent SDK + Max 订阅 + Opus 4.7。 打开了 Subagent(researcher / finance_analyst / group_summarizer / search_dispatcher)、 Hook(工具调用审计 + 危险命令拦截)、MCP(自建 8 个垂直 search 工具)、 Skills(人设 / 早报员)等全套。

个别 deterministic 场景(如热点新闻 JSON 输出)预留切 API 直连的口子, 但只在 SDK 真不行的时候才用。不要为了切而切,混合架构有维护成本。

8. 常见误区

❌ "API 直连一定更快更便宜"

不一定。HTTP 启动是快,但要自己写 tool 循环 = 一次任务多次 round-trip。 SDK 一次 query() 内部跑完,对终端用户感受未必更慢。 Max 订阅 $200/月覆盖大量调用,API 按 token 算可能更贵。

❌ "Claude Code 是给人用的,不能给程序调"

claude --print 是为程序设计的。但你不需要自己 spawn 它 — Agent SDK 已经替你包装好了。 你"自己 spawn claude" = 重写 Agent SDK。

❌ "用 SDK 就拿不到最新模型"

SDK 支持所有 Anthropic 模型,包括最新的 Opus 4.7: ClaudeAgentOptions(model="claude-opus-4-7")

❌ "SDK 是 Anthropic 限制版,没 API 全"

SDK 在 tool 生态、subagent、hook、MCP 这些层面比 API 强很多。 API 强在 JSON mode、caching 控制、batch 这些底层旋钮。 不是"谁强",是"侧重不同"。

9. 进阶资源