Skip to content

[Feature]: Codex 长会话触发 grok-4.5 500k 超限,建议补 context 元数据与超限保护 #693

Description

@muqing-kg

功能模块

OpenAI API 兼容层(Responses / Chat Completions)

相关 Provider

Grok Build

问题与使用场景

Codex 经本地代理(cc-switch)调用 grok2api 的 grok-4.5 时,长会话会直接失败:

HTTP 400
This model's maximum prompt length is 500000 but the request contains 907154 tokens.

建议方案

  1. P0:/v1/modelsgrok-4.5 返回 context_length=500000(及兼容字段),方便客户端提前 compact。
  2. P0:/responses 增加本地 token 预检;接近/超过上限时返回可恢复错误,或引导 compact,避免直接打上游 400。
  3. P1:强化 Build compact 路径,保证 compact 后可续跑,并裁剪过旧 reasoning/tool 历史。
  4. P1:文档补充当前没有 context/auto-compact 配置项、长会话建议走 Build、reasoningReplayEnabled 的作用与副作用。

期望行为:

  • 接近 500k 时能提前 compact 或给出可恢复错误
  • 不再直接 upstream 400

验收标准

  • 当请求 /v1/models 时,grok-4.5 应返回 context_length=500000(或等价兼容字段)
  • /responses 请求接近/超过 500k 时,系统应拦截或引导 compact,而不是直接把超大请求打到上游并返回笼统 400
  • 当调用 /v1/responses/compact(Build)后,会话应可继续多轮 /responses
  • 现有短会话、不依赖 compact 的客户端应继续兼容
  • Codex 长会话回归中,500k 超限硬失败应明显减少

API、配置或界面示例

  1. 期望的 models 响应片段:

{
"object": "list",
"data": [
{
"id": "grok-4.5",
"object": "model",
"owned_by": "grok2api",
"context_length": 500000
}
]
}

  1. 超限时期望的可恢复错误示例:

{
"error": {
"type": "invalid_request_error",
"code": "context_length_exceeded",
"message": "Prompt too long for grok-4.5 (estimated 907154 > 500000). Please call /v1/responses/compact or reduce input."
}
}

  1. 相关接口:
  • GET /v1/models
  • POST /v1/responses
  • POST /v1/responses/compact
  1. 配置说明:
    当前无 context/auto-compact 配置项;与上下文相关的主要是:

routing:
reasoningReplayEnabled: true
reasoningReplayTTL: 1h
reasoningReplayMaxEntries: 10240

替代方案

No response

兼容性、部署与迁移影响

No response

提交前检查

  • 我已经搜索现有 Issue 和 Pull Request,确认没有相同建议。
  • 该 Issue 只聚焦一个功能或改进方向。
  • 我已经说明用户价值和可验证的验收标准。

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions