跳转到内容

Mixed LF/CRLF SSE delimiters prevent Claude Code 工具调用

Quick fix

修复 SSE 分隔符解析,使其同时识别混合的 LF/CRLF 空行分隔,以保留 Claude Code 工具调用事件。

报错原文
No `tool_use` block is produced.

`take_sse_block` 只识别 `\n\n` 和 `\r\n\r\n`,未识别数据行以 LF 结束、空行以 CRLF 结束的 `\n\r\n`。因此完整 SSE 事件不会立即被拆出;后续事件到来时,多个事件还可能被合并为一个块。

在 OpenAI Chat Completions SSE 转换为 Anthropic SSE 的路径中,这会使包含工具名、ID、参数片段和 `finish_reason: "tool_calls"` 的完整工具调用无法生成 `tool_use` 块。

  1. 在 `take_sse_block` 的共享 SSE 分隔符列表中加入 `\n\r\n` 和 `\r\n\n`,并继续选择最早出现的完整分隔符。

  2. 为四种 LF/CRLF 分隔组合及传输分片添加 framing 测试,并添加 Chat Completions 到 Anthropic 的工具调用回归测试。

ToolClaude Code
Version3.20.4(受影响)
PlatformsWindows

(暂无 FAQ)

这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。