Skip to content

[Bug][Codex/Kimi] v3.19.2-18 原生 Responses 请求因 $defs/$ref/type Schema 不兼容返回 400 #72

Description

@meroxwang

自检

  • 已核对 README 的 Codex MultiRouter 使用说明。
  • 已搜索 open/closed issues(moonshot schemak3schema),未发现相同错误。

环境

  • CCSwitchMulti:3.19.2-18,已通过安装包元数据和实际启动日志确认。
  • 操作系统:macOS 26.6.2 / arm64
  • 涉及应用:Codex Desktop,内嵌客户端版本 0.150.0-alpha.8
  • Codex provider:codex_model_router_v2
  • 实际路由:Kimi For Coding,模型 k3,reasoning effort high
  • 上游地址:https://api.kimi.com/coding/v1/responses

重现步骤(本次观察)

  1. 在 CCSwitchMulti 3.19.2-18 中启用 Codex MultiRouter,并将 k3 路由至 Kimi For Coding 的原生 Responses 接口。
  2. 在 Codex Desktop 新建会话,选择 k3 / high,保留本机现有工具配置。
  3. 发送简单消息:测试一下
  4. 首次请求即被上游 HTTP 400 拒绝,没有模型回复或工具执行。

本报告记录一次实际失败,排查时没有反复重放请求;尚未缩减出独立的最小工具 Schema 复现,因此不声称所有工具配置均会触发。

期望行为

CCSM 应在这条 Kimi 原生 Responses 路径正确处理工具参数 Schema 的兼容性,使请求可被上游接受;若当前工具 Schema 无法安全适配,应提供明确的兼容性诊断。

实际行为

2026-08-26 的失败请求返回:

CC Switch local proxy failed while handling Codex endpoint /responses.
Provider: Kimi For Coding; model: k3; upstream_status: HTTP 400;
cause: Invalid request: tools.function.parameters is not a valid moonshot flavored json schema,
details: <At path '$defs.__schema20': when using $ref, type should be defined in the referenced schema instead of the parent schema>

脱敏运行时证据

以下仅摘录必要字段;省略所有认证字段、会话/trace/route 标识及无关信息:

event=route_resolved endpoint=/responses model=k3 effective_name=Kimi_For_Coding route_missed=false
event=request_prepared endpoint=/responses effective_endpoint=/responses model=k3 upstream_url=https://api.kimi.com/coding/v1/responses responses_to_chat=false responses_to_messages=false responses_to_anthropic=false streaming=true upstream_stream=true
event=upstream_send model=k3 transport=reqwest request_bytes=405489 timeout_ms=600000 uses_upstream_proxy=false
event=upstream_status model=k3 status=400 elapsed_ms=2176
  • 请求已经命中 Kimi,且确实发送至原生 /coding/v1/responses不是 Responses → Chat Completions 转换路径
  • 上游明确拒绝 tools.function.parameters,错误位置为 $defs.__schema20,涉及 $reftype 的定义位置。
  • 这次错误是上游 Schema 校验 400,不是网络断线、401 鉴权错误,也不是测试代码运行失败。

已知边界 / 建议排查方向

  • 已确认的是兼容性故障,尚未确认具体代码根因。 没有保存完整出站请求体,无法确认 __schema20 对应哪个工具,也不能判断冲突结构由 Codex 原始请求携带,还是 CCSM 转发改写产生。
  • 问题发生在更新后,但没有同条件前后版本对照,不将其断言为 3.19.2-18 新引入的回归
  • 本地源码 checkout 旧于安装版,未据此给当前二进制指定责任函数或行号。
  • 建议在当前版本的 Kimi 原生 Responses 工具 Schema 路径,对照脱敏后的输入与出站 Schema,定位 $defs 内的引用节点;若需要适配,应保留原有约束语义,并覆盖嵌套 $defs / $ref,而非只处理参数根节点或直接删除约束。

隐私

本 issue 不包含 API Key、Token、Cookie、认证头值、本机用户名/路径、完整请求体、配置、数据库或原始日志附件。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions