Skip to content

修复 RooCode / New API 中转兼容性问题#377

Merged
su-kaka merged 11 commits into
su-kaka:masterfrom
STA1N156:codex/roocode-newapi-compat
May 20, 2026
Merged

修复 RooCode / New API 中转兼容性问题#377
su-kaka merged 11 commits into
su-kaka:masterfrom
STA1N156:codex/roocode-newapi-compat

Conversation

@STA1N156
Copy link
Copy Markdown
Contributor

您好,本 PR 主要修复 RooCode / New API 中转场景下的若干实际兼容性问题,重点集中在 Gemini / Gemini CLI / Antigravity 的请求转换与响应字段映射。

核心改动:

  • 将工具参数转换为 parametersJsonSchema,避免 Gemini 内部接口因 schema 不兼容返回 400
  • 在 OpenAI / Anthropic / Gemini 请求转换链路中规范化 thoughtSignature,避免 Corrupted thought signature
  • 补充 cachedContentTokenCount 到 OpenAI / Anthropic usage 映射,支持显示缓存命中 token
  • 为 Antigravity 注入稳定 sessionId,改善多凭证轮询场景下的会话一致性

验证:

  • 已完成相关 Python 文件的 py_compile 检查
  • 已针对工具调用 schema、缓存 token 映射、thought signature 清理、Antigravity sessionId 生成做了本地场景验证

改动范围集中在转换层与兼容性处理逻辑,尽量避免影响现有接口行为。麻烦方便时 review;如无异议,希望可以合并。谢谢。

@STA1N156 STA1N156 force-pushed the codex/roocode-newapi-compat branch from 100ddce to 707227d Compare May 19, 2026 22:05
@STA1N156
Copy link
Copy Markdown
Contributor Author

补充说明:

这次补丁进一步完善了 Antigravity Claude 工具调用路径的兼容性。部分 OpenAI/RooCode 客户端会传入无参数工具,或在中转后形成缺少有效 schema 的工具声明,Antigravity Claude 上游会因此返回:

custom.input_schema: Field required

本 PR 现在会在最终请求发出前做一层归一化处理:

  • 为无参数工具补充空对象 schema:{"type":"object","properties":{}}
  • 将工具声明中的 parametersJsonSchema 转为 Antigravity Claude 实际接受的 parameters
  • 为 Claude 工具调用请求设置 toolConfig.functionCallingConfig.mode = VALIDATED
  • 保留已有的 sessionId / requestType / requestId 等 Antigravity 请求字段处理

这样可以避免 Claude 工具调用场景下因 schema 字段缺失或字段名不匹配导致 400,同时不改变客户端原始工具语义。

已验证:

  • python -m py_compile src/api/antigravity.py src/converter/gemini_fix.py src/converter/openai2gemini.py
  • OpenAI 兼容请求 Model: claude + 无参数 read_file 工具的烟测通过
  • 最终发往 Antigravity 的 payload 中工具 schema 已转换为 parameters,不再残留 parametersJsonSchema

@su-kaka su-kaka merged commit 9cb0487 into su-kaka:master May 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants