当 Claude 直接以多个 tool_use 块起始(无文本前导,index=0)时, -1 偏移导致 index=0 和 index=1 同时映射到 fcIdx=0: - index=0 的工具 args 先流完,发出一次合法调用 ✓ - index=1 的 args 追加到同一 map 槽位,污染后为非法 JSON,该工具丢失 ✗ - index=2 以后的工具各自独占唯一 fcIdx,正常发出 ✓ 结果:每轮并发调用中第 2 个工具必然丢失, 模型收不到对应的工具结果后重试剩余工具, 产生雪球效应(10个→9个→8个...逐轮收缩)。 修复:直接使用 Claude 的 block index 作为 fcIdx,不做偏移。 fcIdx 仅作为本地 map 的 key,只需保证唯一性,无需从 0 开始。
| Name |
Last commit
|
Last Update |
|---|---|---|
| .. | ||
| channel | Loading commit data... | |
| common | Loading commit data... | |
| common_handler | Loading commit data... | |
| constant | Loading commit data... | |
| helper | Loading commit data... | |
| reasonmap | Loading commit data... | |
| audio_handler.go | Loading commit data... | |
| chat_completions_via_responses.go | Loading commit data... | |
| claude_handler.go | Loading commit data... | |
| compatible_handler.go | Loading commit data... | |
| embedding_handler.go | Loading commit data... | |
| gemini_handler.go | Loading commit data... | |
| image_handler.go | Loading commit data... | |
| mjproxy_handler.go | Loading commit data... | |
| param_override_error.go | Loading commit data... | |
| relay_adaptor.go | Loading commit data... | |
| relay_task.go | Loading commit data... | |
| rerank_handler.go | Loading commit data... | |
| responses_handler.go | Loading commit data... | |
| websocket.go | Loading commit data... |