
四仓这一小时没有新版本,但 Claude 的拒答与上下文超限在 OpenAI 两端点都被报成正常完成,pause_turn 又让客户端提前收手;本期给出三处今天就能改的处置与一张已开的修复补丁。
Claude 的 stop_reason | /v1/responses 今天回 | /v1/chat/completions 今天回 |
|---|---|---|
refusal | completed,像一条正常答案 | finish_reason: content_filter,这条已经对3 |
model_context_window_exceeded | completed | finish_reason: stop、HTTP 2003 |
pause_turn | incomplete,incomplete_details 为 null | 不适用4 |

internal/translator/claude/openai/responses/claude_openai-responses_response.go 第 171–196 行。第 173–174 行是 max_tokens 改写成 max_output_tokens,第 179 行把 pause_turn 的细节写成 null,第 181 行对其它原因返回 false;第 184–189 行据此给 incomplete 或 completed,第 191–196 行再换成终局事件名。completed,抽检和自动重试会把它当合格输出放过。completed,客户端不知道这一轮其实被截断了,重发的机会也就没有了。default 一律返回 stop,所以 model_context_window_exceeded 落进兜底,客户端看到的是一个正常收尾。
internal/translator/claude/openai/chat-completions/claude_openai_response.go 第 311–326 行。第 321–322 行是 refusal 与 sensitive,第 323–324 行的 default 让上下文超限也变成 stop。incomplete 且细节为空6。客户端读到「没说完就停了」,于是不再续轮。parallel_tool_calls: false 到 Claude 侧没有对应物。claude_openai-responses_request.go 里搜不到这个键。claude-opus-5-5,false 回 1 个函数调用,true 回 3 个。completed 当成「答案完整可信」。做抽检、自动重试、按成功计费时,这一类响应会和真结束的混在一起,本地没有字段能分开。/v1/chat/completions。这条路今天就会把 parallel_tool_calls: false 翻成关闭并行,不必等修复。client.codex.web-search-result-cache。它默认关着,样例是 enabled: false、ttl: 24h、limit: 10248。pause_turn 的报法,但已完成搜索会按会话存下来,等修复进了版本,续轮能把结果带回去。#6801,19:42 创建、19:52 最后更新,12 个文件 +1015/−36,base 是 dev,1 笔提交,可合并状态 unstable6。refusal 给 response.incomplete,model_context_window_exceeded 给 response.failed。
gracjankubicki/CLIProxyAPI@fix/claude-stop-reasons-parallel-tools 的 claude_openai-responses_stop_reasons_test.go 第 296–312 行。第 305–306 行是新的终局映射表,第 328–329 行要求这两个原因下不能再出现 response.completed9。Claude 的 stop_reason | 修好之后 |
|---|---|
refusal | incomplete,incomplete_details.reason: content_filter |
model_context_window_exceeded | 流式 response.failed;非流式 status: failed + error.code: context_length_exceeded |
pause_turn | completed + end_turn: false,下一轮带回暂停的助手内容 |
请求 parallel_tool_calls: false | tool_choice.disable_parallel_tool_use: true |
internal/translator/**,仓库的路径守卫会让这类 PR 直接失败,所以要先用 issue 把分析交上去。europe-west2-b 那个可用区的电源事件导致宕机10。europe-west2-b 里的服务仍不可用,而且现在还建不出新工作负载——要现在恢复,只能把负载迁到别的可用区或区域。| 仓库 | 当前发行版 | 主干最新提交 | 窗口内 |
|---|---|---|---|
| CLIProxyAPI | v8.0.35,10-20 03:08 发布11 | main 12:23、dev 18:54 | 一条新单、一张补丁、一条旧单被推 |
| sub2api | v0.2.17,10-16 12:41 发布12 | main 10-19 20:45 | 一条旧帖被顶起 |
| codex-proxy | v2.1.19,10-20 05:10 发布13 | dev 10-20 04:57 | 无 |
| codex2api | v3.1.1,10-17 05:46 发布14 | main 10-17 05:35 | 无 |
#8239 还热着,但它没有新回复:仍 18 条评论、最后一条停在 19:20,维护者没有表态15。#6581 也被推了一笔,但第 4 笔提交只是把 dev 合进来,不是新代码16。#6801 会不会合、合进 dev 之后落在哪个 tag;pause_turn 在实跑里能不能复现——开单人跑了 30 次搜索也没撞上,这条路径目前只有按文档形状写的测试覆盖。completed 当可信判据;需要单工具调用的,先走 Chat Completions。github.com
platform.claude.com
github.com
github.com
github.com
github.com
status.cloud.google.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.