Claude Code API 请求结构解析

基于对 Claude Code 与 Anthropic API 通信的实际抓包分析。
Claude Code 版本:2.1.167


一、请求体顶层结构

{
  "model": "claude-opus-4-8",
  "messages": [ ... ],
  "system": [ ... ],
  "tools": [ ... ],
  "metadata": { ... },
  "max_tokens": 64000,
  "thinking": { "type": "adaptive" },
  "context_management": { ... },
  "output_config": { "effort": "high" },
  "stream": true
}
字段 类型 说明
model string 指定模型,支持 claude-opus-4-8claude-sonnet-4-6claude-haiku-4-5
messages array 对话历史,包含 user / assistant / system 角色
system array 顶层系统提示词,可包含多个文本块和缓存控制
tools array 工具定义列表(27 个),遵循 JSON Schema 2020-12
metadata object 用户/设备/会话标识
max_tokens number 最大输出 token 数,默认 64000
thinking object 扩展思考配置:adaptive(自适应)/ enabled / disabled
context_management object 上下文编辑策略(如清除旧思考块)
output_config object 输出质量:effort: high/medium/low
stream boolean 是否启用 SSE 流式响应

二、messages 结构

2.1 用户消息 (role: “user”)

{
  "role": "user",
  "content": [
    {
      "type": "text",
      "text": "<system-reminder>\n# currentDate\nToday's date is 2026/06/06.\n</system-reminder>"
    },
    {
      "type": "text",
      "text": "你好",
      "cache_control": { "type": "ephemeral" }
    }
  ]
}
说明
<system-reminder> Claude Code 运行时注入,包含日期、计划模式状态等上下文
实际用户输入块 可携带 cache_control: ephemeral 标记缓存断点

2.2 助手消息 (role: “assistant”)

{
  "role": "assistant",
  "content": [
    { "type": "text", "text": "你好!有什么我可以帮你的吗?" }
  ]
}

或包含工具调用:

{
  "role": "assistant",
  "content": [
    {
      "type": "tool_use",
      "id": "call_00_xxx",
      "name": "Write",
      "input": { "file_path": "/path/to/file", "content": "..." }
    }
  ]
}

2.3 系统消息 (role: “system”)

{
  "role": "system",
  "content": "The following skills are available for use with the Skill tool:\n\n- deep-research: ...\n- code-    			review: ...\n..."
}

技能列表作为 role: "system" 消息注入,与顶层 system 参数不同。

2.4 工具结果消息 (role: “user”)

{
  "role": "user",
  "content": [
    {
      "tool_use_id": "call_00_xxx",
      "type": "tool_result",
      "content": "File created successfully at: ..."
    }
  ]
}

三、system 结构(顶层系统提示词)

"system": [
  {
    "type": "text",
    "text": "x-anthropic-billing-header: cc_version=2.1.167.b60; cc_entrypoint=cli; cch=<hash>;"
  },
  {
    "type": "text",
    "text": "You are Claude Code, Anthropic's official CLI for Claude.",
    "cache_control": { "type": "ephemeral" }
  },
  {
    "type": "text",
    "text": "\nYou are an interactive agent that helps users with software engineering tasks...\n\n# Harness\n...\n# Memory\n...\n# Environment\n...\n# Context management\n..."
  }
]
内容 作用
块 1 遥测头(版本号、入口、会话哈希) Anthropic 计费/追踪
块 2 身份声明 模型身份认知
块 3 核心系统提示词 行为规范、运行框架、记忆系统、环境信息

核心系统提示词章节

章节 内容概要
角色定义 软件工程助手;安全测试授权;拒绝恶意请求
Harness Markdown 输出、权限模式、工具优先级、并行调用
编码风格 匹配周边代码风格
操作原则 不可逆操作需确认、如实报告结果
会话指导 ! 前缀执行本地命令、/skill 调用技能
Memory 文件式持久记忆系统,支持 frontmatter 和 [[link]]
Environment 工作目录、平台、Shell、OS 版本、模型信息
Context management 长对话自动摘要

四、tools 结构

每个工具包含:

{
  "name": "ToolName",
  "description": "详细的工具描述,包含使用场景和注意事项...",
  "input_schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": { ... },
    "required": [ ... ],
    "additionalProperties": false
  }
}

完整工具列表见 Claude Code 完整工具列表


五、metadata 结构

{
  "user_id": "{\"device_id\":\"<hash>\",\"account_uuid\":\"\",\"session_id\":\"<uuid>\"}"
}
字段 说明
device_id 设备指纹(SHA-256)
account_uuid 账户 UUID(未登录时为空)
session_id 会话唯一标识

六、其他参数

6.1 thinking

{ "type": "adaptive" }
说明
adaptive 自适应思考深度
enabled 始终扩展思考
disabled 关闭思考(如会话标题生成)

6.2 context_management

{
  "edits": [
    { "type": "clear_thinking_20251015", "keep": "all" }
  ]
}

控制上下文编辑行为,keep: "all" 表示保留所有思考内容。

6.3 output_config

{ "effort": "high" }
说明
high 高推理深度(编程任务)
medium 中等
low 低(如标题生成)

七、完整请求流程

用户输入
    │
    ▼
Claude Code 组装请求体
    ├── 注入 system-reminder (日期等)
    ├── 注入 技能列表 (role: system)
    ├── 注入 系统提示词 (顶层 system[])
    ├── 注入 工具定义 (27个)
    ├── 携带 对话历史 (messages)
    └── 设置 模型/思考/流式等参数
    │
    ▼
POST https://api.anthropic.com/v1/messages
    │
    ▼
返回 SSE 流式响应
    ├── thinking_delta  → 思考过程(不展示给用户)
    ├── text_delta      → 用户可见文本
    ├── tool_use        → 工具调用指令
    └── stop_reason     → end_turn / tool_use
    │
    ▼
Claude Code 解析响应
    ├── 有文本 → 渲染 Markdown 展示
    ├── 有工具调用 → 执行工具 → 将结果加入历史 → 再次请求
    └── end_turn → 等待用户下一轮输入

八、模型选择策略

场景 模型 特点
会话标题生成 claude-haiku-4-5 最快/最便宜,关闭思考
常规编程任务 claude-opus-4-8 最强能力,1M 上下文
内部搜索代理 claude-opus-4-8 精简提示词,仅 1 个工具

九、缓存策略

  • cache_control: { type: "ephemeral" } 标记在系统提示词和用户消息上
  • 大量工具定义(约 21K tokens)可被后续请求复用
  • 实际新增输入通常仅几百 tokens

十、内部子请求机制

当主模型调用 WebSearch 等工具时,Claude Code 发起独立的精简子请求:

维度 主请求 搜索子请求
系统提示词 完整 ~4000 字 "You are an assistant for performing a web search tool use"
工具 27 个 web_search
消息 完整对话历史 仅搜索 prompt
目的 通用任务 专注搜索执行
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐