
这一小时四个中转项目都没有发版:Claude 的逐轮思考档位被读成顶层占位值,日志会错、Devin 模型会真的按最低档跑;Kimi 并发 403 仍停十分钟,改成五秒的补丁还没合。本期给出今晚能做的两处绕法与其余两条的等待状态。
| 你在跑什么 | 会踩到的现象 | 错在哪一层 | 今晚 |
|---|---|---|---|
带 mid-conversation-output-config-2026-07-01 beta 的 Claude 请求 | 用量日志里 reasoning_effort 是顶层那个值 | 只错记录 | 不用动,等 #7236 |
devin/ 前缀的 Claude 模型(如 devin/claude-opus-5-5) | 每条都按 low 档跑、按 low 档计费 | 错在执行与成本 | 现在就能绕 |
| Kimi 号并发打满 | 一次 403 让该账号停十分钟 | 错在状态 | 今晚只能压并发或手动解冻 |
| 关掉或拉不到远端价目同步 | Sonnet 5.5 缓存读按 $0.20/MTok 计 | 错在计费 | 现在就能改 |
role=system 的消息,带上 output_config.effort。为了让 prompt cache 不失效,发这条指令的客户端会把顶层 output_config.effort 钉成一个固定值——报障人自己用的 pi 客户端就把它固定成 low1。extractClaudeConfigFromGetter,函数只从请求体顶层读 output_config.effort,不遍历 messages2。后果是你的用量面板里每条请求的档位都写成 low,按档位做的统计和告警会一起失真。
internal/thinking/apply.go 第 821–842 行:第 826–827 行判完 thinking.type 之后,只取顶层 output_config.effort,没有任何遍历 messages 的分支2messages.1.output_config.effort: Input should be 'low', 'medium', 'high', 'xhigh' or 'max',说明执行侧读的确实是那条指令1。别把这条写成「思考档位也错了」。devin/ 前缀的模型走的是另一条翻译链。copyClaudeThinkingToInteractionsDoc 先把 thinking.type 映射进 generation_config.thinking_level,随后只有顶层 output_config.effort 能改写这个字段3。逐轮指令所在的那条 system 消息在翻译时被整条跳过,指令里的档位根本没进上游请求。
thinking.type 写 thinking_level,第 91–92 行再用顶层 output_config.effort 覆盖,覆盖顺序决定了顶层占位值永远赢3output_config.effort 直接写成你真正想要的档位(代价是 prompt cache 可能失效),要么用模型后缀,写成 devin/claude-opus-5-5(high)——后缀在解析时优先级高于传入的 level。这两条报障人都实测过4。ClaudeEffortDirective 函数,倒序遍历 messages,取最后一条带 output_config.effort 的 system 消息;用量侧与 Devin 侧都改成优先用它5。
internal/thinking/claude_effort_directive.go 全文 47 行:第 26–37 行遍历 messages 并让后出现的值覆盖前一个,第 38 行返回最后一条;注释第 16 行写明「客户端为了让 prompt cache 保持稳定会钉住顶层值」6internal/thinking 与 Devin 执行器、不碰 internal/translator——后者的改动会被仓库的路径守卫直接拒掉,这也是这类修复经常绕道的原因。handleCNProviderConcurrencyLimit403 直接用 openAI403CooldownMinutesDefault 算出停调截止时间,写进账号级临时不可调度8。
handleCNProviderConcurrencyLimit403 用同一个常量算截止时间,再调 setCNProviderTempUnschedulable 写账号级停调——整段没有任何读取设置的分支8apply429FallbackRateLimit,于是停调时长变成 429 冷却那个值,默认 5 秒;仍然返回「需要换号」,不会把并发打满的请求硬留在同一张凭证上重试10。4 个文件 +180/−14,开于北京 00:44,open、可合并(clean),Fixes #8502,而 #8502 本身还开着、零评论7。GET/DELETE /api/v1/admin/accounts/{id}/temp-unschedulable 手动解冻,不必等那十分钟11。合并之后再来那一波并发,才会变成「停五秒、换号继续」。pricing_service.go 里按模型族匹配的硬编码兜底也这么写13。
pricing.remote_url 指向上游价目仓库,启动时拉一次、之后每十分钟比对一次哈希,远端主分支现在已经是 $0.10,所以正常跑着的实例会自己纠正过来14。断网、内网隔离、或手动关掉同步的实例,才会一直按两倍计。pricing.override_file 给 claude-sonnet-5-5 的 cache_read_input_token_cost 写 1e-7,覆盖文件优先级最高;改完按内容哈希自动重载,不用重启。顺手在日志里搜一次 [Pricing],看同步到底有没有跑成功——作者也是让对不上的人先贴这段日志14。github.com
github.com
github.com
github.com
claude.com
github.com
github.com
github.com
github.com
github.com
status.openai.com
status.anthropic.com
status.cloud.google.com
codex-reset.com
opentherank.com
community.openai.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.