文章总结: 本文通过逆向分析对比Antigravity与ClaudeCode。前者基于PDCA显式状态机,强审计与控制,适合企业重构;后者采用ReAct隐式累积,支持缓存与动态工具,适合敏捷开发。核心差异在于显式协调与模型智能的设计哲学,为技术选型提供参考。 综合评分: 95 文章分类: AI安全,逆向分析,安全工具
React Agent 多轮对话架构深度对比 – Antigravity vs Claude Code
原创
xsser xsser
xsser的博客
2026年1月22日 21:41 浙江
React Agent 多轮对话架构深度对比
这是我最近研究agent架构的时候学习的资料,ai生成的,见谅。核心总结就是claude code是react,而antigravity是pdca agent,未来是哲学的天下,你懂的。
Antigravity (Google DeepMind) vs Claude Code (Anthropic)
摘要
本文深入分析两个前沿 AI 编程助手的 React Agent 多轮对话实现架构:Google DeepMind 的 Antigravity 与 Anthropic 的 Claude Code。通过对实际 API 流量的逆向分析,揭示两者在请求封装、状态管理、工具调用、思考机制等维度的核心差异。
一、整体架构概览
1.1 核心定位对比
| 维度 | Antigravity (Google) | Claude Code (Anthropic) |
| — | — | — |
| 产品形态 | 桌面应用 (Tauri + Rust) | CLI 工具 (Node.js) |
| 底层模型 | Gemini 系列 | Claude 系列 |
| API 端点 | cloudcode-pa.googleapis.com/v1internal | api.anthropic.com/v1/messages |
| 协议风格 | 双层包装结构 | 扁平化直接请求 |
| 状态管理 | 服务端显式状态机 | 客户端隐式累积 |
| 设计哲学 | 「显式协调」 | 「模型智能」 |
1.2 架构图解
Antigravity 请求流
12345678910111213141516171819flowchart LR subgraph Client[“客户端”] A[用户输入] –> B[构建 Inner Request] end subgraph Wrapper[“包装层”] B –> C[注入 project/requestId] C –> D[添加 userAgent/requestType] end subgraph API[“v1internal API”] D –> E[generateContent] D –> F[streamGenerateContent] end subgraph Response[“响应处理”] E –> G[解包 response 字段] F –> G G –> H[提取 candidates]
Claude Code 请求流
202122232425262728293031323334353637flowchart LR subgraph Client[“客户端”] A[用户输入] –> B[追加到 messages 数组] end subgraph Request[“直接请求”] B –> C[构建扁平化 JSON] C –> D[添加 metadata] end subgraph API[“/v1/messages API”] D –> E[POST with beta headers] end subgraph Response[“SSE 流式响应”] E –> F[contentblockstart] F –> G[contentblockdelta] G –> H[message_delta]
二、请求结构深度解析
2.1 Antigravity 双层包装结构
2.1.1 外层包装 (Wrapper Layer)
383940414243{ “project”: “aerobic-surf-ss6dt”, “requestId”: “agent/1768893140744/45527ef3-be65-47f3-8ca3-1986693dcfbf/3”, “model”: “gemini-3-pro-low”, “userAgent”: “antigravity”, “requestType”: “agent”
字段解析
-
project
: 云项目标识,用于配额和计费隔离
-
requestId
: 复合标识符,编码了请求类型、时间戳、会话UUID和轮次号
-
model
: 模型选择,支持动态切换
-
userAgent
: 固定为
antigravity,用于服务端识别 -
requestType
: 请求类型 (
agent/autocomplete等)
2.1.2 requestId 结构深度解析
4445464748agent/1768893140744/45527ef3-be65-47f3-8ca3-1986693dcfbf/3 │ │ │ │ │ │ │ └── 轮次号 (Turn Number) │ │ └── 会话 UUID (Session Identifier) │ └── Unix 时间戳 (毫秒)
设计意图:
-
可追溯性
:完整的请求链路可通过 requestId 重建
-
幂等性
:相同 requestId 可用于重试去重
-
调试友好
:时间戳和轮次号便于问题定位
2.1.3 内层请求 (Inner Request)
495051525354555657{ “request”: { “contents”: […], // 多轮对话历史 “systemInstruction”: {…}, // 系统指令 “tools”: […], // 工具声明 “generationConfig”: {…}, // 生成配置 “toolConfig”: {…}, // 工具配置 “sessionId”: “…” // 会话标识 }
2.2 Claude Code 扁平化结构
2.2.1 完整请求示例
58596061626364656667686970717273{ “model”: “claude-opus-4-5-20251101”, “messages”: [ {“role”: “user”, “content”: “…”}, {“role”: “assistant”, “content”: “…”} ], “system”: [ {“type”: “text”, “text”: “You are Claude Code…”}, {“type”: “text”, “text”: “…”, “cachecontrol”: {“type”: “ephemeral”}} ], “tools”: […], “metadata”: { “userid”: “userxxxaccountxxxsessionxxx” }, “maxtokens”: 32000, “stream”: true
2.2.2 关键差异点
| 特性 | Antigravity | Claude Code |
| — | — | — |
| 系统指令位置 | systemInstruction 对象 | system 数组 |
| 缓存控制 | 无显式支持 | cache_control.type: ephemeral |
| 用户追踪 | project + requestId | metadata.user_id |
| 流式标识 | URL 参数 ?alt=sse | JSON 字段 stream: true |
三、多轮对话状态管理
3.1 Antigravity: Task Boundary 显式状态机
3.1.1 状态机模型
747576777879808182838485868788899091929394959697stateDiagram-v2 [] –> NOTASK: 初始状态 NOTASK –> PLANNING: taskboundary(PLANNING) PLANNING –> PLANNING: 更新计划 PLANNING –> EXECUTION: 计划批准 EXECUTION –> EXECUTION: 实现迭代 EXECUTION –> VERIFICATION: 实现完成 VERIFICATION –> EXECUTION: 发现bug VERIFICATION –> PLANNING: 设计缺陷 VERIFICATION –> []: 验证通过 note right of PLANNING 创建 implementationplan.md 等待用户审批 end note note right of EXECUTION 更新 task.md 执行代码修改 end note note right of VERIFICATION 运行测试 创建 walkthrough.md
3.1.2 task_boundary 工具定义
9899100101102103104105106107108109110111112113114115116117118119120121122123124125{ “name”: “task_boundary”, “description”: “Indicate the start of a task or make an update to the current task…”, “parameters”: { “type”: “OBJECT”, “properties”: { “TaskName”: { “type”: “STRING”, “description”: “Name of the task boundary…” }, “Mode”: { “type”: “STRING”, “description”: “PLANNING, EXECUTION, or VERIFICATION” }, “TaskStatus”: { “type”: “STRING”, “description”: “Active status of the current action…” }, “TaskSummary”: { “type”: “STRING”, “description”: “Concise summary of what has been accomplished…” }, “PredictedTaskSize”: { “type”: “INTEGER”, “description”: “Estimated tool calls needed…” } } }
3.1.3 Artifact 系统
| Artifact | 路径 | 用途 |
| — | — | — |
| task.md | <appDataDir>/brain/<conversation-id>/ | 任务分解和进度跟踪 |
| implementation_plan.md | 同上 | 技术方案设计文档 |
| walkthrough.md | 同上 | 完成后的工作总结 |
task.md 格式示例:
126127128129130131132## 用户认证模块实现 – [x] 研究现有认证代码- [/] 实现 JWT 验证中间件 – [x] 创建 middleware 文件 – [ ] 添加 token 解析逻辑- [ ] 编写单元测试
核心设计理念
Antigravity 将任务管理显式化,通过 artifact 文件和 task_boundary 工具实现:
-
可见性
:用户可随时查看任务进度
-
可控性
:关键节点需要用户审批
-
可追溯性
:所有决策都有文档记录
3.2 Claude Code: 隐式上下文累积
3.2.1 对话历史管理
133134135136137138139140141142143144145146147148149150151152153{ “messages”: [ // Turn 1 {“role”: “user”, “content”: “创建一个登录页面”}, {“role”: “assistant”, “content”: [ {“type”: “text”, “text”: “我来帮你创建…”}, {“type”: “tooluse”, “id”: “tooluxxx”, “name”: “Write”, “input”: {…}} ]}, // Turn 2 (工具结果) {“role”: “user”, “content”: [ {“type”: “toolresult”, “tooluseid”: “tooluxxx”, “content”: “文件已创建”} ]}, // Turn 3 {“role”: “assistant”, “content”: [ {“type”: “text”, “text”: “登录页面已创建完成…”} ]}, // … 线性累积 ]
3.2.2 状态管理对比
154155156157158159160161162163164165166167168169170171172flowchart TB subgraph Antigravity[“Antigravity 状态管理”] A1[用户请求] –> A2{taskboundary?} A2 –>|是| A3[创建/更新 task.md] A3 –> A4[执行工具调用] A4 –> A5[更新 TaskStatus] A5 –> A6{notifyuser?} A6 –>|是| A7[等待用户审批] A6 –>|否| A4 end subgraph Claude[“Claude Code 状态管理”] C1[用户请求] –> C2[追加到 messages] C2 –> C3[模型推理] C3 –> C4{tooluse?} C4 –>|是| C5[执行工具] C5 –> C6[toolresult 追加] C6 –> C3 C4 –>|否| C7[返回响应]
四、工具调用机制对比
4.1 工具声明格式
4.1.1 Antigravity: functionDeclarations
173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203{ “tools”: [{ “functionDeclarations”: [ { “name”: “view_file”, “description”: “View the contents of a file…”, “parameters”: { “type”: “OBJECT”, “properties”: { “AbsolutePath”: { “type”: “STRING”, “description”: “Path to file to view…” }, “StartLine”: { “type”: “INTEGER”, “description”: “Optional. Startline to view…” }, “EndLine”: { “type”: “INTEGER”, “description”: “Optional. Endline to view…” }, “waitForPreviousTools”: { “type”: “BOOLEAN”, “description”: “If true, wait for all previous tool calls…” } }, “required”: [“AbsolutePath”] } } ] }]
4.1.2 Claude Code: tools with input_schema
204205206207208209210211212213214215216217218219220221222223224225226227228{ “tools”: [ { “name”: “Read”, “description”: “Reads a file from the local filesystem…”, “inputschema”: { “type”: “object”, “properties”: { “filepath”: { “type”: “string”, “description”: “The absolute path to the file to read” }, “offset”: { “type”: “number”, “description”: “The line number to start reading from…” }, “limit”: { “type”: “number”, “description”: “The number of lines to read…” } }, “required”: [“file_path”] } } ]
4.1.3 格式差异对照表
| 特性 | Antigravity | Claude Code |
| — | — | — |
| 包装方式 | functionDeclarations 数组 | 直接 tools 数组 |
| Schema 字段 | parameters | input_schema |
| 类型声明 | 大写 (STRING, OBJECT) | 小写 (string, object) |
| 并发控制 | waitForPreviousTools 字段 | 无显式支持 |
| 工具数量 | 22 个预定义工具 | 按需动态加载 |
4.2 工具分类对比
4.2.1 Antigravity 工具集 (22个)
| 类别 | 工具名称 | 功能 |
| — | — | — |
| 文件操作 | view_file , write_to_file, replace_file_content, multi_replace_file_content | 文件读写和编辑 |
| 搜索 | grep_search , find_by_name, view_code_item | 代码搜索 |
| 命令执行 | run_command , send_command_input, command_status | 终端交互 |
| 浏览器 | browser_subagent , read_url_content | 网页交互 |
| 任务管理 | task_boundary , notify_user | 任务边界控制 |
| 资源 | list_resources , read_resource | MCP 资源访问 |
| AI | generate_image , search_web | 多模态能力 |
4.2.2 Claude Code 工具集 (动态)
| 类别 | 工具名称 | 功能 |
| — | — | — |
| 文件操作 | Read , Write, Edit, NotebookEdit | 文件读写和编辑 |
| 搜索 | Glob , Grep, LSP | 代码搜索和分析 |
| 命令执行 | Bash , KillShell, TaskOutput | 终端交互 |
| 子代理 | Task | 启动专用子代理 |
| 网络 | WebFetch , WebSearch | 网页访问 |
| 交互 | AskUserQuestion , Skill | 用户交互 |
| 计划 | EnterPlanMode , ExitPlanMode, TodoWrite | 计划模式管理 |
4.3 工具调用流程
4.3.1 Antigravity 并发控制
229230231232233234235236237238239240241242243244245// 第一个工具调用 – 立即执行{ “name”: “viewfile”, “parameters”: { “AbsolutePath”: “/path/to/file1.py”, “waitForPreviousTools”: false }} // 第二个工具调用 – 等待前序完成{ “name”: “replacefile_content”, “parameters”: { “TargetFile”: “/path/to/file1.py”, “waitForPreviousTools”: true, “…” }
并发控制设计
Antigravity 通过 waitForPreviousTools 字段实现细粒度的工具调用顺序控制:
-
false: 与其他工具并行执行
-
true: 等待所有前序工具完成后执行
4.3.2 Claude Code 工具调用
246247248249250251252253254255256257258259260261262263// 请求中的工具调用{“role”: “assistant”, “content”: [ {“type”: “text”, “text”: “让我读取这个文件…”}, { “type”: “tooluse”, “id”: “toolu014SkUFqpnJBRjnwEtvTMTYT”, “name”: “Read”, “input”: {“filepath”: “/path/to/file.py”} }]} // 工具结果返回{“role”: “user”, “content”: [ { “type”: “toolresult”, “tooluseid”: “toolu_014SkUFqpnJBRjnwEtvTMTYT”, “content”: “文件内容…” }
五、思考机制 (Thinking/Reasoning) 对比
5.1 Antigravity: thinkingConfig
5.1.1 配置结构
264265266267268269270271272273274275{ “generationConfig”: { “temperature”: 1, “topP”: 1, “topK”: 40, “candidateCount”: 1, “maxOutputTokens”: 16384, “thinkingConfig”: { “includeThoughts”: true, “thinkingBudget”: 128 } }
5.1.2 参数解析
| 参数 | 类型 | 说明 |
| — | — | — |
| includeThoughts | boolean | 是否在响应中包含思考过程 |
| thinkingBudget | integer | 思考 token 预算上限 |
设计特点
-
预算制控制
:显式设置思考 token 数量
-
成本可预测
:避免无限思考导致的 token 浪费
-
灵活调整
:不同任务可设置不同预算
5.2 Claude Code: Interleaved Thinking
5.2.1 Beta Header 启用
5.2.2 响应结构
276277278279280281282283// SSE 流式响应中的思考块data: {“type”:”contentblockstart”,”index”:0,”contentblock”:{“type”:”thinking”,”thinking”:”让我分析这个问题…”}} data: {“type”:”contentblockdelta”,”index”:0,”delta”:{“type”:”thinkingdelta”,”thinking”:”首先需要考虑…”}} data: {“type”:”contentblockstop”,”index”:0} // 随后是实际响应
5.2.3 思考机制对比
| 特性 | Antigravity | Claude Code |
| — | — | — |
| 启用方式 | thinkingConfig 配置 | Beta Header |
| 控制粒度 | Token 预算 | 无显式限制 |
| 输出位置 | 响应内嵌入 | 独立 content block |
| 计费方式 | 计入预算 | 独立计费 |
六、系统提示工程对比
6.1 Antigravity System Instruction
6.1.1 结构层次
284285286287288289290291292293systemInstruction├──
6.1.2 身份定义示例
294295296297
6.1.3 模式描述
298299300301302303304305306307
6.2 Claude Code System Prompt
6.2.1 结构层次
308309310311312313314315316317318319{ “system”: [ { “type”: “text”, “text”: “You are Claude Code, Anthropic’s official CLI for Claude…” }, { “type”: “text”, “text”: “# Tool usage policy\n- When doing file search…”, “cache_control”: {“type”: “ephemeral”} } ]
6.2.2 缓存控制策略
320321322323{ “cache_control”: { “type”: “ephemeral” }
缓存优化
Claude Code 使用 ephemeral 缓存控制,允许系统提示在多轮对话中被缓存,减少重复传输成本。
6.2.3 系统提示对比
| 特性 | Antigravity | Claude Code |
| — | — | — |
| 格式 | XML 标签结构化 | JSON 数组 |
| 缓存 | 无显式支持 | cache_control |
| 长度 | 约 15000 tokens | 约 8000 tokens |
| 模块化 | 高度模块化 | 相对扁平 |
| 任务管理 | 详细的 artifact 指南 | 简化的 TodoWrite |
| | | |
七、子代理系统对比
7.1 Antigravity: browser_subagent
7.1.1 工具定义
324325326327328329330331{ “name”: “browser_subagent”, “description”: “Start a browser subagent to perform actions in the browser…”, “parameters”: { “TaskName”: “Name of the task…”, “Task”: “A clear, actionable task description…”, “RecordingName”: “Name of the browser recording…” }
7.1.2 使用场景
- 网页自动化测试
- UI 验证
- 交互式内容抓取
7.2 Claude Code: Task Tool
7.2.1 工具定义
332333334335336337338339340341342343{ “name”: “Task”, “description”: “Launch a new agent to handle complex, multi-step tasks autonomously…”, “inputschema”: { “properties”: { “description”: “A short (3-5 word) description of the task”, “prompt”: “The task for the agent to perform”, “subagenttype”: “The type of specialized agent to use”, “model”: “Optional model to use for this agent”, “runinbackground”: “Set to true to run this agent in the background” } }
7.2.2 子代理类型
| 类型 | 功能 | 可用工具 |
| — | — | — |
| Bash | 命令执行专家 | Bash |
| general-purpose | 通用任务处理 | 全部工具 |
| Explore | 代码库探索 | 除编辑外的工具 |
| Plan | 架构设计 | 除编辑外的工具 |
| code-reviewer | 代码审查 | 全部工具 |
7.2.3 子代理系统对比
| 特性 | Antigravity | Claude Code |
| — | — | — |
| 类型数量 | 1 (browser) | 10+ 种专用类型 |
| 后台运行 | 不支持 | run_in_background |
| 模型选择 | 固定 | 可选 (sonnet/opus/haiku) |
| 恢复能力 | 不支持 | resume 参数 |
八、流式响应处理对比
8.1 Antigravity: SSE with alt=sse
8.1.1 请求配置
8.1.2 响应格式
344345346347data: {“response”:{“candidates”:[{“content”:{“role”:”model”,”parts”:[{“text”:”Hello”}]}}]}} data: {“response”:{“candidates”:[{“content”:{“role”:”model”,”parts”:[{“text”:” World”}]}}]}}
8.2 Claude Code: SSE with stream:true
8.2.1 请求配置
348349{ “stream”: true
8.2.2 响应格式
350351352353354355356357358359360361data: {“type”:”messagestart”,”message”:{“id”:”msgxxx”,”type”:”message”,”role”:”assistant”,…}} data: {“type”:”contentblockstart”,”index”:0,”contentblock”:{“type”:”text”,”text”:””}} data: {“type”:”contentblockdelta”,”index”:0,”delta”:{“type”:”textdelta”,”text”:”Hello”}} data: {“type”:”contentblockdelta”,”index”:0,”delta”:{“type”:”textdelta”,”text”:” World”}} data: {“type”:”contentblockstop”,”index”:0} data: {“type”:”messagedelta”,”delta”:{“stopreason”:”endturn”,”stopsequence”:null},”usage”:{“outputtokens”:2}}
8.2.3 流式响应对比
| 特性 | Antigravity | Claude Code |
| — | — | — |
| 启用方式 | URL 参数 ?alt=sse | JSON 字段 stream: true |
| 事件类型 | 单一格式 | 多种事件类型 |
| 结束标识 | finishReason: STOP | message_stop 事件 |
| 用量统计 | usageMetadata | usage 在 delta 中 |
| 思考流 | 嵌入响应 | 独立 thinking block |
九、错误处理与重试机制
9.1 Antigravity 错误处理
9.1.1 常见错误码
362363364365366367{ “error”: { “code”: 429, “message”: “Resource has been exhausted (e.g. check quota).”, “status”: “RESOURCE_EXHAUSTED” }
| 错误码 | 状态 | 处理策略 | | — | — | — | | 429 | RESOURCE_EXHAUSTED | 指数退避重试 | | 400 | INVALID_ARGUMENT | 检查请求格式 | | 403 | PERMISSION_DENIED | 刷新 Token |
9.1.2 多端点容错
Antigravity 配置多个 API 端点,按优先级尝试:
368369370V1INTERNALENDPOINTS = [ “https://cloudcode-pa.googleapis.com/v1internal”, # 生产 “https://daily-cloudcode-pa.sandbox.googleapis.com/v1internal”, # 测试
9.2 Claude Code 错误处理
9.2.1 多级速率限制架构
Claude Code 实现了双窗口速率限制机制,从响应头中可提取完整配额信息:
371372373374375376377378379380381382# 统一限制状态anthropic-ratelimit-unified-status: allowedanthropic-ratelimit-unified-overage-status: rejected
5 小时窗口限制anthropic-ratelimit-unified-5h-status: allowedanthropic-ratelimit-unified-5h-reset: 1768406400anthropic-ratelimit-unified-5h-utilization: 0.5690785454545455
7 天窗口限制anthropic-ratelimit-unified-7d-status: allowedanthropic-ratelimit-unified-7d-reset: 1768406400
9.2.2 利用率实测数据
| 窗口 | 利用率 | 含义 | | — | — | — | | 5h | 56.9% | 已使用 5 小时配额的 56.9% | | 7d | 9.1% | 已使用 7 天配额的 9.1% |
配额管理策略
-
当
5h-utilization > 80%时,建议降低请求频率 -
当
7d-utilization > 50%时,建议启用省成本模式 -
overage-status: rejected表示超额请求将被拒绝
9.2.3 错误处理对比
| 特性 | Antigravity | Claude Code |
| — | — | — |
| 多端点 | 支持 (生产/测试) | 单端点 |
| 速率限制 | 简单 429 | 双窗口 (5h/7d) 详细配额 |
| 利用率可见 | 无 | ✅ 实时百分比 |
| 重置时间 | 未知 | Unix 时间戳 |
| 重试策略 | 客户端实现 | SDK 内置 |
| 配额可见性 | loadCodeAssist 接口 | 响应头实时反馈 |
| 超额控制 | 无 | overage-status |
十、会话与用户追踪
10.1 Antigravity 多维追踪
10.1.1 追踪层级
383384385386387388389390391392393394┌─────────────────────────────────────────────┐│ Project Level: “aerobic-surf-ss6dt” ││ └─ User/Account 隔离 ││ └─ Quota 计费单元 │├─────────────────────────────────────────────┤│ Session Level: “-3750763034362895579” ││ └─ 单次对话会话标识 ││ └─ 上下文连续性 │├─────────────────────────────────────────────┤│ Request Level: “agent/ts/uuid/turn” ││ └─ 单次请求完整追踪 ││ └─ 重试幂等性 │
10.1.2 对话历史 Context 注入
395396397398399400401402403404{ “contents”: [ {“role”: “user”, “parts”: [{“text”: “
Context 注入模式
Antigravity 使用 前缀注入 模式,将系统上下文作为多个 user 消息注入到对话历史开头,包括:
- 用户信息 (
<user_information>) - 代理模式 (
<agentic_mode_overview>) - 用户规则 (
<user_rules>) - 工作流 (
<workflows>) - 历史对话摘要
10.2 Claude Code 简化追踪
10.2.1 用户标识结构
405406user2630e4e3c65580f730f3ffa166a01f80d1ac22b93a3e5694f60870b32d7b39f4account_e6a55441-1397-4c31-997c-bfef9ac0aa45
组成部分:
-
user_xxx: 用户哈希标识
-
account_xxx: 账户 UUID
-
session_xxx: 会话 UUID
10.2.2 追踪对比
| 特性 | Antigravity | Claude Code | | — | — | — | | 层级数 | 3 (Project/Session/Request) | 3 (User/Account/Session) | | 轮次追踪 | requestId 内编码 | 无显式支持 | | 配额绑定 | Project | Account | | 幂等性 | requestId | 无显式支持 |
十一、场景适用性分析
11.1 Antigravity 优势场景
11.1.1 复杂项目重构
407408409410411412413414415flowchart TB A[大型重构需求] –> B[PLANNING: 创建 implementation_plan.md] B –> C{用户审批?} C –>|批准| D[EXECUTION: 分阶段实现] C –>|修改| B D –> E[task.md 跟踪进度] E –> F[VERIFICATION: 运行测试] F –> G{测试通过?} G –>|是| H[创建 walkthrough.md]
优势:
- ✅ 显式的计划-执行-验证流程
- ✅ 用户可随时查看任务进度
- ✅ 关键决策有文档记录
- ✅ 支持长时间任务的断点续作
11.1.2 需要审计追踪的场景
| 场景 | 追踪能力 | | — | — | | 代码变更审计 | requestId 完整记录每次修改 | | 配额使用分析 | Project 级别的用量统计 | | 问题回溯 | 时间戳 + 轮次号定位 |
11.2 Claude Code 优势场景
11.2.1 快速原型开发
416417418419420421422flowchart LR A[需求] –> B[直接执行] B –> C{工具调用} C –> D[Read/Write/Bash] D –> E[结果] E –> F{完成?} F –>|否| C
优势:
- ✅ 协议简洁,延迟低
- ✅ 无需显式计划审批
- ✅ 适合探索性开发
11.2.2 第三方集成
| 特性 | 优势 | | — | — | | 标准化 API | OpenAPI 兼容风格 | | 简单认证 | Bearer Token | | 文档完善 | 官方 SDK 支持 |
11.3 场景推荐矩阵
| 场景 | 推荐方案 | 原因 | | — | — | — | | 企业级项目重构 | Antigravity | 完整的任务边界管理和审批流程 | | 快速原型/PoC | Claude Code | 轻量协议,快速迭代 | | 需要审计追踪 | Antigravity | requestId 提供完整追溯链 | | 第三方 API 集成 | Claude Code | API 更标准化,文档完善 | | 成本敏感场景 | Claude Code | 协议开销小,按需工具加载 | | 长周期复杂任务 | Antigravity | artifact 系统支持状态持久化 | | 交互式探索 | Claude Code | 灵活的对话累积模式 | | 浏览器自动化 | Antigravity | 内置 browser_subagent | | 多子代理协作 | Claude Code | Task tool 支持 10+ 专用代理 |
十二、核心洞察总结
12.1 设计哲学差异
423424425426427428429430431432┌─────────────────────────────────────────────────────────────┐│ 设计哲学光谱 ││ ││ 显式协调 ◄─────────────────────────────────► 模型智能 ││ ││ Antigravity Claude Code ││ ├─ 服务端状态机 ├─ 客户端历史累积 ││ ├─ 强制计划-执行-验证 ├─ 自然对话流 ││ ├─ 用户审批节点 ├─ 模型自主决策 ││ └─ 结构化 Artifact └─ 简化 TodoWrite │
12.2 技术取舍对比
| 维度 | Antigravity 选择 | Claude Code 选择 | | — | — | — | | 复杂度 | 协议复杂,功能丰富 | 协议简洁,易于理解 | | 灵活性 | 结构化约束 | 自由度高 | | 可预测性 | 显式状态,行为可预测 | 依赖模型推理 | | 学习曲线 | 陡峭 (需理解 task_boundary) | 平缓 (标准对话) | | 扩展性 | 预定义工具集 | 动态工具加载 |
12.3 演进趋势
未来展望
-
Antigravity
可能向更智能的自动状态管理演进,减少显式 task_boundary 调用
-
Claude Code
可能增加更多结构化任务管理能力 (如 Plan mode)
-
两者最终可能在「结构化控制」与「智能自主」之间找到平衡点
十三、10个深度问题解析
分析方法论
通过对实际 API 流量的深度逆向分析,回答以下 10 个关键技术问题,揭示两个产品在实现细节上的差异。
13.1 Token 计费模式有何差异?
Antigravity 计费结构
433434435436437438439440441442{ “usageMetadata”: { “promptTokenCount”: 56, “candidatesTokenCount”: 11, “totalTokenCount”: 89, “trafficType”: “ON_DEMAND”, “promptTokensDetails”: [{“modality”: “TEXT”, “tokenCount”: 56}], “candidatesTokensDetails”: [{“modality”: “TEXT”, “tokenCount”: 11}], “thoughtsTokenCount”: 22 }
Claude Code 计费结构
443444445446447448449450451452453454{ “usage”: { “inputtokens”: 9, “cachecreationinputtokens”: 8349, “cachereadinputtokens”: 14137, “cachecreation”: { “ephemeral5minputtokens”: 8349, “ephemeral1hinputtokens”: 0 }, “outputtokens”: 66, “servicetier”: “standard” }
缓存命中率实测数据
从流量分析计算实际缓存效果:
455456457458459460总输入 Token: 22,495├── 缓存读取: 14,137 (62.8%) ← 成本最低├── 缓存创建: 8,349 (37.1%) ← 首次写入└── 非缓存: 9 (0.04%) ← 完整计费 缓存命中率: 62.8%
实时成本追踪
Claude Code 通过遥测系统实现实时成本计算:
461462463464{ “costusd”: 0.060944750000000006, “durationms”: 2995, “ttft_ms”: 2990
| 特性 | Antigravity | Claude Code |
| — | — | — |
| 缓存计费 | 无 | ✅ 详细缓存统计 |
| 思考 Token | thoughtsTokenCount 单独统计 | 隐含在 output_tokens |
| 缓存层级 | 无 | 5分钟/1小时 两级缓存 |
| 多模态统计 | promptTokensDetails 按模态 | 无显式支持 |
| 实时成本 | 无 | cost_u_s_d 精确到小数点后15位 |
成本优化洞察
Claude Code 的缓存机制 (cache_read_input_tokens) 可显著降低多轮对话成本:
-
ephemeral_5m
: 5分钟短期缓存,适合快速迭代
-
ephemeral_1h
: 1小时长期缓存,适合长时间工作会话
-
Antigravity 目前无此优化,每轮对话全量计费
13.2 上下文窗口管理策略如何?
配置对比
| 参数 | Antigravity | Claude Code |
| — | — | — |
| 最大输出 | maxOutputTokens: 16384 | max_tokens: 32000 |
| 思考预算 | thinkingBudget: 128 | 无显式限制 |
| 上下文缓存 | 无 | cache_control: ephemeral |
Antigravity 停止序列
465466467468469470471472{ “stopSequences”: [ “<|user|>“, “<|bot|>“, “<|contextrequest|>”, “<|endoftext|>“, “<|endof_turn|>” ]
设计差异
-
Antigravity
:通过停止序列精确控制生成边界
-
Claude Code
:依赖
stop_reason自然终止
13.3 工具调用失败如何处理?
Claude Code 错误处理
473474475476477{ “type”: “toolresult”, “tooluseid”: “tooluxxx”, “content”: “Error: File not found”, “is_error”: true
Antigravity 错误处理
Antigravity 无显式 is_error 字段,错误通过以下方式传递:
- 工具返回的文本内容描述错误
- HTTP 状态码 (429, 400, 403)
| 特性 | Antigravity | Claude Code |
| — | — | — |
| 错误标记 | 无 | is_error: true |
| 错误传递 | 文本描述 | 结构化字段 |
| 重试提示 | 依赖模型判断 | 可程序化处理 |
13.4 多模态能力支持程度?
| 能力 | Antigravity | Claude Code |
| — | — | — |
| 图像生成 | ✅ generate_image 工具 | ❌ 不支持 |
| 图像理解 | ✅ view_file 支持二进制 | ✅ Read 支持图像 |
| 视频处理 | ✅ 浏览器录制 (WebP) | ❌ 不支持 |
| PDF 处理 | 未知 | ✅ Read 支持 PDF |
Antigravity 图像生成工具
478479480481482483484485{ “name”: “generate_image”, “description”: “Generate an image or edit existing images based on a text prompt…”, “parameters”: { “Prompt”: “Text prompt to generate”, “ImageName”: “Name for the generated image”, “ImagePaths”: “Optional paths to edit/combine images” }
13.5 会话持久化机制差异?
Antigravity Artifact 系统
486487488/brain/
Claude Code 持久化
489490491492~/.claude/├── CLAUDE.md # 用户全局配置├── projects/
| 特性 | Antigravity | Claude Code |
| — | — | — |
| 任务状态 | Artifact 文件持久化 | TodoWrite 内存态 |
| 跨会话恢复 | ✅ 支持 (artifact) | ❌ 不支持 |
| 用户配置 | <MEMORY> 标签注入 | CLAUDE.md 文件 |
13.6 并发/批量请求支持?
Antigravity 并发控制
493494{ “waitForPreviousTools”: true // 显式依赖控制
执行模式:
-
false: 与其他工具并行执行
-
true: 等待所有前序工具完成
Claude Code 并发控制
系统提示中说明:
“You can call multiple tools in a single response. If you intend to call multiple tools and there are no dependencies between them, make all independent tool calls in parallel.”
| 特性 | Antigravity | Claude Code |
| — | — | — |
| 控制方式 | waitForPreviousTools 字段 | 系统提示指导 |
| 粒度 | 工具级别 | 响应级别 |
| 显式性 | ✅ 显式声明 | ❌ 隐式依赖模型理解 |
13.7 用户自定义规则如何注入?
Antigravity: XML 标签注入
495496497498499500
Claude Code: CLAUDE.md + system-reminder
501502503504505506{ “role”: “user”, “content”: [{ “type”: “text”, “text”: “
| 特性 | Antigravity | Claude Code |
| — | — | — |
| 存储位置 | 服务端 Memory 系统 | 本地 CLAUDE.md 文件 |
| 注入方式 | <MEMORY> XML 标签 | <system-reminder> 标签 |
| 作用域 | 全局/项目级 | 全局/项目级 |
| 编辑方式 | 对话中修改 | 手动编辑文件 |
13.8 历史对话压缩策略?
Antigravity: conversation_summaries
507508509510511512513514
USER Objective:Debugging Auth ConnectionThe user’s main objective is to establish a successful gRPC connection…
特点:
- 保留最近 5 个对话摘要
- 包含标题、时间戳、用户目标
- 结构化 Markdown 格式
Claude Code: automatic summarization
系统提示中说明:
“The conversation has unlimited context through automatic summarization.”
| 特性 | Antigravity | Claude Code | | — | — | — | | 压缩触发 | 显式注入历史摘要 | 自动上下文压缩 | | 摘要格式 | 结构化 (ID/标题/目标) | 不透明 | | 可见性 | ✅ 用户可见 | ❌ 内部处理 |
13.9 安全/权限控制机制?
Antigravity 安全控制
515516517518519520521522{ “name”: “run_command”, “parameters”: { “SafeToAutoRun”: { “type”: “BOOLEAN”, “description”: “Set to true if command is safe to run WITHOUT user approval…” } }
Claude Code 安全控制
523524525526527528529530531{ “name”: “Bash”, “input_schema”: { “properties”: { “dangerouslyDisableSandbox”: { “description”: “Set this to true to dangerously override sandbox mode…” } } }
| 安全特性 | Antigravity | Claude Code |
| — | — | — |
| 自动执行控制 | SafeToAutoRun | SafeToAutoRun (类似) |
| 沙箱模式 | 无 | dangerouslyDisableSandbox |
| 用户审批 | notify_user 强制审批 | 隐式 (高风险命令) |
| 破坏性操作 | 系统提示警告 | NEVER push --force 等 |
13.10 调试/可观测性支持?
Antigravity 可观测性
532533requestId: “agent/1768893140744/45527ef3-be65-47f3-8ca3-1986693dcfbf/3” ↓ ↓ ↓ ↓
Claude Code 可观测性
请求级追踪:
534request-id: req_011CX7KeaFknwtxtaYm2N9ng
DataDog 遥测集成:
从流量分析发现,Claude Code 使用 DataDog 作为遥测后端:
遥测指标体系:
535536537538539540541542543544545546{ “tenguapisuccess”: { “durationms”: 2995, “ttftms”: 2990, “costusd”: 0.060944750000000006, “inputtokens”: 22495, “outputtokens”: 66 }, “tengutoolusesuccess”: { “toolname”: “Read”, “durationms”: 150 }
| 指标名称 | 类型 | 说明 |
| — | — | — |
| tengu_api_success | Counter | API 调用成功计数 |
| tengu_tool_use_success | Counter | 工具调用成功计数 |
| duration_ms | Gauge | 请求总耗时 (毫秒) |
| ttft_ms | Gauge | Time To First Token (毫秒) |
| cost_u_s_d | Gauge | 单次请求成本 (美元) |
异常上报 (statsig):
547548549550{ “tag”: “_getInternalRequestArgs”, “exception”: “SyntaxError”, “info”: “SyntaxError: Unexpected end of JSON input…”
| 特性 | Antigravity | Claude Code |
| — | — | — |
| 请求追踪 | requestId (复合结构) | request-id (简单UUID) |
| 轮次追踪 | ✅ 内置轮次号 | ❌ 无 |
| 遥测后端 | 未知 (Google 内部?) | DataDog (us5) |
| 实时成本 | 无 | cost_u_s_d 精确计算 |
| 工具追踪 | 无 | tengu_tool_use_success |
| TTFT 监控 | 无 | ttft_ms |
| 异常上报 | 未知 | ✅ statsig 集成 |
| 组织追踪 | project | anthropic-organization-id |
INTJ 洞察
Claude Code 的遥测架构实现了全链路可观测性:
-
性能监控
:
duration_ms+ttft_ms追踪延迟 -
成本控制
:
cost_u_s_d实时计算每次请求成本 -
工具分析
:
tengu_tool_use_success追踪工具使用模式
十四、综合优缺点对比
14.1 Antigravity 优势
| 优势领域 | 具体表现 | 适用场景 |
| — | — | — |
| 任务管理 | PDCA + task_boundary 完整流程 | 企业级项目、合规要求 |
| 可追溯性 | requestId 完整编码轮次/时间戳 | 审计、问题定位 |
| 状态持久化 | Artifact 系统跨会话保存 | 长周期任务 |
| 并发控制 | waitForPreviousTools 显式依赖 | 复杂工具链 |
| 多模态 | 图像生成 + 浏览器录制 | UI 设计、测试 |
| 用户审批 | notify_user 强制门禁 | 高风险操作 |
14.2 Antigravity 劣势
| 劣势领域 | 具体表现 | 影响 | | — | — | — | | 学习曲线 | task_boundary/artifact 概念复杂 | 上手成本高 | | 协议开销 | 双层包装 + 22工具全量传输 | 延迟/成本高 | | 无缓存计费 | 无 cache_control 支持 | 多轮对话成本高 | | 单一子代理 | 仅 browser_subagent | 任务分解能力弱 | | 闭源 | API 非公开 | 无法第三方集成 |
14.3 Claude Code 优势
| 优势领域 | 具体表现 | 适用场景 |
| — | — | — |
| 协议简洁 | 扁平化 JSON,标准 API | 第三方集成 |
| 缓存计费 | 两级缓存 (5m/1h) | 成本优化 |
| 子代理系统 | 10+ 专用类型,后台运行 | 并行任务 |
| 动态工具 | 按需加载工具 | 轻量启动 |
| 开放生态 | 官方 SDK、MCP 协议 | 扩展开发 |
| 错误处理 | is_error 结构化字段 | 程序化处理 |
14.4 Claude Code 劣势
| 劣势领域 | 具体表现 | 影响 | | — | — | — | | 任务管理 | 仅 TodoWrite,无 artifact | 长任务状态丢失 | | 并发控制 | 无显式依赖声明 | 复杂工具链难控制 | | 轮次追踪 | 无内置轮次号 | 调试困难 | | 图像生成 | 不支持 | UI 设计受限 | | 跨会话恢复 | 不支持 | 任务中断后难恢复 |
14.5 综合评分
551552553554555556557558559560561562563564565566567568569570571572┌─────────────────────────────────────────────────────────────┐│ 综合能力雷达图 │├─────────────────────────────────────────────────────────────┤│ ││ 任务管理 ████████████░░░░ Antigravity (85%) ││ ████████░░░░░░░░ Claude Code (50%) ││ ││ 协议简洁 ████████░░░░░░░░ Antigravity (50%) ││ ████████████████ Claude Code (100%) ││ ││ 成本优化 ██████░░░░░░░░░░ Antigravity (40%) ││ ██████████████░░ Claude Code (85%) ││ ││ 可追溯性 ████████████████ Antigravity (100%) ││ ████████████░░░░ Claude Code (75%) ││ ││ 扩展生态 ████████░░░░░░░░ Antigravity (50%) ││ ██████████████░░ Claude Code (90%) ││ ││ 多模态 ██████████████░░ Antigravity (85%) ││ ████████████░░░░ Claude Code (70%) ││ │
十五、设计模式总结
15.1 ReAct vs PDCA 双层模型
573574575576577578579580581582583584585586587588589590591592flowchart TB subgraph Meta[“元模型层”] PDCA[“PDCA(项目管理)”] ReAct[“ReAct(步骤执行)”] end subgraph Antigravity[“Antigravity 实现”] APDCA[“taskboundaryPLANNING→EXECUTION→VERIFICATION”] AReAct[“工具调用循环Thought→Action→Observation”] APDCA –> AReAct end subgraph Claude[“Claude Code 实现”] CReAct[“纯 ReAct 模式messages 线性累积”] CPlan[“可选 Plan ModeEnterPlanMode/ExitPlanMode”] CPlan -.->|可选| CReAct end PDCA –> APDCA ReAct –> A_ReAct
15.2 设计取舍矩阵
| 取舍维度 | Antigravity 选择 | Claude Code 选择 | 原因分析 | | — | — | — | — | | 状态管理 | 显式服务端 | 隐式客户端 | Google 偏好可控性,Anthropic 信任模型能力 | | 协议复杂度 | 高 (双层封装) | 低 (扁平化) | 企业级需求 vs 开发者体验 | | 工具加载 | 全量预加载 | 按需动态 | 确定性 vs 灵活性 | | 审批机制 | 强制门禁 | 可选建议 | 合规优先 vs 效率优先 | | 错误处理 | 文本描述 | 结构化字段 | 模型理解 vs 程序处理 |
附录
A. 完整工具清单
A.1 Antigravity 22 个工具
browser_subagent
- 浏览器子代理
command_status
- 命令状态查询
find_by_name
- 文件名搜索
generate_image
- 图像生成
grep_search
- 内容搜索
list_dir
- 目录列表
list_resources
- MCP 资源列表
multi_replace_file_content
- 多处替换
notify_user
- 用户通知
-
read_resource- 读取资源
-
read_terminal- 读取终端
-
read_url_content- 读取 URL
-
replace_file_content- 单处替换
-
run_command- 执行命令
-
search_web- 网页搜索
-
send_command_input- 发送命令输入
-
task_boundary- 任务边界
-
view_code_item- 查看代码项
-
view_content_chunk- 查看内容块
-
view_file- 查看文件
-
view_file_outline- 查看文件大纲
-
write_to_file- 写入文件
A.2 Claude Code 核心工具
Task
- 子代理启动
Bash
- Shell 命令
Read
- 文件读取
Write
- 文件写入
Edit
- 文件编辑
Glob
- 文件模式匹配
Grep
- 内容搜索
LSP
- 语言服务协议
WebFetch
- 网页获取
-
WebSearch- 网页搜索
-
AskUserQuestion- 用户问询
-
TodoWrite- 任务管理
-
EnterPlanMode- 进入计划模式
-
ExitPlanMode- 退出计划模式
-
Skill- 技能调用
B. 参考资料
- Google Cloud AI Companion API
- Anthropic API Reference
- React Agent Pattern
结语
两种架构代表了 AI Agent 设计的两个重要方向:Antigravity 选择了「显式协调」路线,通过完善的任务边界管理和 artifact 系统实现可控的复杂任务处理;Claude Code 选择了「模型智能」路线,依赖模型自身的长上下文理解能力实现灵活的交互式开发。没有绝对的优劣,选择取决于具体使用场景和团队偏好。
核心差异总结:
-
Antigravity
: PDCA 宏观 + ReAct 微观,22 工具全量加载,显式 task_boundary,无缓存计费
-
Claude Code
: 纯 ReAct 模式,动态工具加载,两级缓存 (5m/1h),DataDog 遥测,实时成本计算
文档生成时间:2026-01-20 最后更新:2026-01-20 (整合流量分析新发现至相关章节) 数据来源:API 流量逆向分析 (mitmproxy 抓包)
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:xsser的博客 xsser xsser《React Agent 多轮对话架构深度对比 – Antigravity vs Claude Code》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论