
v8.0.46 还原 Claude OAuth 工具别名时漏掉「前缀整段丢失」这一种,模型吐出的半截名字被原样退回客户端;这张补丁补上了,但维护者六天前刚说不打算补,两条自动评审也还没解。
Tool xxx not found。orbit_edit;涉及的工具是 edit、write、bash、codemode。claude-opus-5-5,每次模型在下一轮都自己改回正确的工具。6mcp__<server>__<tool> 别名。8
internal/runtime/executor/helps/claude_mcp_alias.go 第 83–89 行:第 84 行把前缀拼成 "mcp__" + server + "__" + toolID + "_",第 85–88 行把语义尾巴截到总长 64 字符以内,第 89 行拼出完整别名。7mcp__<server>__,只剩 orbit_edit 这一截。resolve()。9
internal/runtime/executor/claude_executor_request.go 第 2407–2422 行:第 2408–2414 行先查精确表,第 2416 行取服务器名,第 2417–2419 行是「服务器不在表里就原样返回」的那处早退。9
internal/runtime/executor/claude_executor_request.go 第 2346–2373 行:第 2353 行拒绝空名与 mcp__ 开头的名字,第 2356–2360 行拒绝调用方自己声明的原名,第 2361–2363 行先补一个 mcp__ 查精确表,第 2366–2372 行只在恰好一个候选时才还原。5mcp__ 开头的名字,不改调用方声明的名字,只认唯一的精确尾巴。web_search,又有自定义的 search;若 search 分到的 toolID 恰好是 web(词表里 1/2048 的概率),返回的 tool_reference 名字 web_search 会被改写成 search。11mcp__develop_ocean__timber_eval(对应 eval)与 mcp__develop_ocean__develop_ocean__timber_eval(对应 ocean__timber_eval)同请求并存时,模型吐 develop_ocean__timber_eval,两种前缀还原都成立。12eval,唯一尾巴那段轮不到——结果是调错工具。mcp__、形状是「一个词_你的工具名」、站点用的是 Claude OAuth 凭证。三条都对,就不是你的工具表写错了。
internal/runtime/executor/claude_executor_execute.go 第 205–226 行:第 214 行是 if fp.MCPAlias && cloaked {,整段别名改写在这个条件里;第 227–230 行的敏感词处理同样只在 cloaked 时跑。13cloak_mode: never,或者全局关 upstream.claude.disable-claude-cloak-mode。8-count=50 跑 50 次红了 23 次,改完 dev 上 50 次全过。生产行为本来是对的,红的是测试。mcp__。没有,就是这条,别去改工具表。github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
status.openai.com
status.claude.com
status.claude.com
status.cloud.google.com
codex-reset.com
opentherank.com
community.openai.com
discuss.ai.google.dev
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.