Skip to content

【上游 Bug】内置 OpenAI provider 经自定义 base_url 路由时,远程压缩 v2 报错 "expected exactly one compaction output item"(DeepSeek via DSCodex) #6

Description

@LeaningLearner

现象

报错发生时的配置状态:未设置 model_provider,使用内置默认 openai provider(name = "OpenAI"),请求经 openai_base_url 转发到 DSCodex 路由(DeepSeek V4 Flash,Responses 兼容 API):

openai_base_url = "http://127.0.0.1:10110/<token>/v1"

长会话自动压缩或手动 /compact 时,远程压缩任务直接失败:

Error running remote compact task: Fatal error: remote compaction v2 expected exactly one compaction output item, got 0 from 2 output items

got 0 from N 中的 N 随上下文输出项数量变化(同一错误其他用户报过 1/4/6)。

根因分析(openai/codex 源码)

  1. 内置 openai provider 的 name 为 "OpenAI",supports_remote_compaction()(is_openai() || is_azure_responses_provider(name, base_url))返回 true, 因此即使 base_url 已被覆盖为自定义后端,Codex 仍尝试远程压缩 v2;
  2. 远程压缩 v2 会发送一个 compaction_trigger 输入项 (openai/codex#22809), 随后 collect_compaction_output 强校验"恰好 1 个 compaction 输出项";
  3. DeepSeek 的 Responses 兼容 API 不识别 compaction_trigger,响应中不含 compaction 输出 → 直接 fatal error,没有回退到本地压缩。

期望行为

当 provider 不返回 compaction 输出(或不支持 compaction_trigger)时,Codex应自动回退到本地压缩,而不是让整个任务失败;或提供开关显式禁用远程压缩(对应 openai/codex#24418的 feature request)。

上游关联

  • openai/codex#31742(open):同一错误,2026-08-01 有用户报 DeepSeek via custom proxy(remote compaction v2,got 0 from 6)
  • openai/codex#32646(open):Windows + 第三方模型,同样的 got 0 from 2 output items
  • openai/codex#24418(open):feature request,增加禁用远程压缩/回退本地压缩的选项

本 issue 用于 DSCodex 侧跟踪该上游 bug,修复依赖 openai/codex。

环境

  • 报错时:Windows 11 + Codex Desktop(底层 CLI 0.146.0-alpha.9.2),内置
    openai provider + openai_base_url 指向 DSCodex 路由,模型 DeepSeek V4 Flash
  • 触发方式:长会话自动压缩/手动 /compact

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