
CLIProxyAPI v8.0.55 把 Responses 翻成 Chat Completions 的那条路会静默丢掉客户端的检索工具声明,连带 Codex 的延迟 MCP 与连接器加载不出来;这篇拆开请求侧与响应侧三处落点、比对另外三条已桥接的路由,并给出今晚就能动手的处置顺序。
tools 里就只剩第一条了。1function、custom 和 shell 四种;type: "tool_search" 落到 default 直接 return,不留日志。2
internal/translator/openai/openai/responses/openai_openai-responses_tools.go 第 37–70 行:walkResponsesToolDeclarations 里那个 switch 在第 41 行取 type,42/43/45 行只认普通函数、custom 与 shell,50–51 行的 default: return 就是 tool_search 被跳过的地方——跳过时不写日志、不计数。2tool_search_call 与 tool_search_output 在 input 数组里各占一项,转换器对不认识的类型只做一件事:把「可合并助手消息位置」标记置成 -1,然后跳过。整个文件里 tool_search 出现 0 次。3
openai_openai-responses_request.go 第 445–470 行:function_call_output 之后是一段处理工具输出的分支,第 460–461 行的 default: mergeableAssistantIndex = -1 就是 tool_search_call 与 tool_search_output 落地的地方——置位后既不报错也不写日志,只是下一轮请求里再没有它们。3tool_search_call 的反映射;也就是说,即使上游配合把检索调用发回来,回程也没有对应的形状可以放。4tool_search,全部 0 处;v8.0.55 也是 0。internal/translator/claude/openai/responses/claude_openai-responses_tool_search.go。声明变成普通函数,call 与 output 变成一对 tool_use / tool_result,历史上搜到的工具在后续请求里逐个声明;文件第一次出现在 v8.0.24。7
claude_openai-responses_tool_search.go 第 12–50 行:13–19 行的注释原文写明 Claude 没有对应物、所以声明按普通函数、call 与 output 按 tool_use / tool_result 成对映射;37–41 行则是那条限制——clientToolSearchEnabled 关着时「翻译器保留 tool_search 支持之前的行为」,也就是声明被当普通工具、call 与 output 不映射。7internal/translator/gemini/openai/responses/gemini_openai-responses_tool_search.go。它把回放的 tool_search_call / tool_search_output 就地改写成 function_call / function_call_output,交给已有的配对逻辑,不用额外开关;文件第一次出现在 v8.0.28。8tool_search 加发现到的工具名一起出现在 functionDeclarations 里。9upstream.claude.tool-search,默认 false;注释原文的意思是关着时保留支持之前的那套翻译。10
config.example.yaml 第 467–474 行:注释写明打开后 api.anthropic.com 上的凭证(或自建端点里标了 native-tool-search: true 的 key)会走 Anthropic 原生检索,其余凭证回落普通翻译;最后一行 tool-search: false 是默认值。11tool_search_call 分支;命名规则是「用户函数先占名,检索工具排在后面,已有同名 tool_search 时检索工具改名 tool_search_1」,主机端执行的检索(execution: "server")不桥接。他自述在 llama.cpp 上跑了两轮,先拿到检索调用、再拿到带正确命名空间的函数调用,并已在生产使用。14internal/translator/** 有改动时直接判失败,文案是要求先给维护团队开 issue。15 报障人正是因此没有开 PR;这张单开出后一小时里零评论、零标签,也没有对应的补丁在评审。github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
status.openai.com
status.anthropic.com
status.cloud.google.com
codex-reset.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.