[proxy::response_processor] [Claude] 流错误 - Claude Code
Quick fix
当 cc-switch 代理 Claude Code 发生流解码错误或超时时,会导致日志遗漏或 token 统计为 0。可通过修改源码中的模型提取回退逻辑来修复模型名显示异常。
Symptom
Section titled “Symptom”[2026-02-24][08:25:52][ERROR][cc_switch_lib::proxy::response_processor] [Claude] 流错误: error decoding response body当 cc-switch 代理 Claude Code 时,如果上游响应出现 error decoding response body 解码错误或触发 120 秒静默期超时,response_processor 将无法获取完整的流式事件。这会导致 proxy_request_logs 中出现系统性的请求遗漏(约 7-25%),或者记录的 token 和费用全部为 0。
此外,由于流被截断,claude_model_extractor 无法从 message_delta 中提取实际使用的映射模型(如 glm-5.1),从而错误地回退到原始请求模型名(如 claude-opus-4-8)。
打开 cc-switch 源码中的 src-tauri/src/proxy/handler_config.rs 文件。
修改 claude_model_extractor 函数,在回退到 request_model 之前,增加从 message_start 事件中提取实际模型名的逻辑。
// src-tauri/src/proxy/handler_config.rsfn claude_model_extractor(events: &[Value], request_model: &str) -> String {if let Some(usage) = TokenUsage::from_claude_stream_events(events) {if let Some(model) = usage.model {return model;}}events.iter().find_map(|e| {if e.get("type")?.as_str()? == "message_start" {e.get("message")?.get("model")?.as_str()} else {None}}).unwrap_or(request_model).to_string()}
Affected Versions
Section titled “Affected Versions”ToolClaude Code
Version未知
PlatformsmacOSLinux
Source Issues
Section titled “Source Issues”本页汇总自 2 个真实 issue
- 为什么数据库里有些请求的 token 和费用都是 0?
- 当流式响应触发 120 秒静默期超时或解码错误时,cc-switch 无法获取包含 usage 的完整 SSE 事件,导致 token 和费用记录为 0。
- 日志遗漏会影响我的实际扣费吗?
- 不会影响。请求已成功到达供应商并被计费,只是 cc-switch 本地数据库未能正确记录用量。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。