
v8.0.36 起,Claude 以 model_context_window_exceeded 收尾时本地会回 400 并丢掉已生成的正文与 usage,修复只落到 dev;反代部署的站按默认配置会把日志来源 IP 记成 127.0.0.1,改一处 trusted-proxies 再重启即可。
stop_reason: model_context_window_exceeded 收尾。也就是生成把模型的上下文窗口填满了。{"error":{"type":"invalid_request_error","code":"context_length_exceeded"}}。claude_executor_execute.go 搜不到 context_length_exceeded,v8.0.36 起有。a request fault that is not retried on another credential。6
internal/runtime/executor/claude_executor_execute.go 第 413–431 行,米黄高亮为第 418–430 行:第 426 行把带 context_length_exceeded 的响应改写成 400。defaultClaudeChatMaxTokensForModel。finish_reason: "length"。8Closes: #6861。9mapAnthropicStopReasonToOpenAI 第 317 行改成 case "max_tokens", "model_context_window_exceeded":,两种停因都回 length。10case "max_tokens":。toolCallsCount > 0 && finishReason != "length"。v8.0.38 第 526 行还是裸 if toolCallsCount > 0。tool_calls,参数只有半截 JSON。
internal/translator/claude/openai/chat-completions/claude_openai_response.go 第 310–332 行,高亮为第 311–326 行:第 317 行已同时收 max_tokens 与 model_context_window_exceeded。claude_openai-responses_response.go 第 1275 与 1681 行仍把这个停因写成 context_length_exceeded 错误对象。走 /v1/responses 的客户端还会看到它。11client_ip 来自 requestClientIP(),只取 request.RemoteAddr 的 host 段。c.ClientIP() 只在直连对端被信任时才读转发头,而 server.trusted-proxies 默认是空数组。
config.example.yaml 第 41–53 行,高亮为第 42–48 行:默认空列表、示例填法与「改完要重启」。client_ip 永远是 127.0.0.1——这一列按设计就是直连地址。resolved_client_ip 和访问日志那一行也跟着退回直连地址。server.trusted-proxies 填 nginx 的地址(同机填 127.0.0.1,或直接给网段),然后重启进程。resolved_client_ip 与访问日志那一列才是真实来源 IP。历史日志要补真实来源,读 x_forwarded_for 那一列。internal/api/server.go 第 138 行会打一条 invalid trusted-proxies configuration; forwarded client IP headers will be ignored。response.incomplete、incomplete_details.reason=interrupted、空 output、0 输出 token。stream error: upstream terminated with incomplete empty response (0 tokens)。reason == "interrupted" 直接返回 false,其余原因照旧。18
internal/runtime/executor/helps/codex_terminal_incomplete.go 第 27–54 行,高亮为第 28–48 行:第 38–41 行把显式 interrupted 排除出空响应判定。AI providers 里那条 codex 类型会回 503 auth_unavailable: no auth available (…; last upstream error: session_blocked_by_cyber_policy: …)。20 报障人自己试出来的解法是:同一把 key 再建一条 openai 兼容 provider,又能正常调度。我核到的部分只有两处——no auth available 出自 scheduler.go 第 683 与 699 行两条出口,括号里那句取自最后一个候选凭证的上游错误;session_blocked_by_cyber_policy 在本仓源码里搜不到,是上游原文。21server.trusted-proxies 填 nginx 地址,重启。这是今晚唯一必须动的一处。github.com
github.com
github.com
github.com
github.com
github.com
platform.claude.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
status.openai.com
status.anthropic.com
codex-reset.com
opentherank.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.