fix(desktop): drop search tools for Chat bridge - #2439
Conversation
Signed-off-by: yuaiccc <yuaiccc@aliyun.com>
|
| Filename | Overview |
|---|---|
| apps/desktop/src/main/maker-host/codex-proxy-host.ts | 将搜索工具过滤扩展到所有 Chat bridge 路径,并保留原有 Guardian 模型覆盖行为。 |
| apps/desktop/src/main/maker-host/tests/codexProxyHost.test.ts | 新增普通 Chat provider 请求的回归覆盖,验证搜索工具被删除而 function tool 与产品提示词继续转发。 |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart LR
A[Codex Responses 请求] --> B[prepareLocalBridgeBody]
B --> C{bridge === chat?}
C -- 是 --> D[移除 web_search / x_search]
C -- 否 --> E[保持原工具列表]
D --> F[Responses → Chat Completions 翻译]
E --> G[其他 bridge]
F --> H[Chat provider]
Reviews (2): Last reviewed commit: "chore: complete PR description per forma..." | Re-trigger Greptile
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ae0a88c642
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| body = stripProviderSearchTools({ | ||
| ...body, | ||
| model: opts.requestModelOverride, | ||
| ...(opts.requestModelOverride ? { model: opts.requestModelOverride } : {}), | ||
| }); |
There was a problem hiding this comment.
当普通 Chat bridge 请求还包含 function tool,且 tool_choice 显式指向 {type: 'web_search'} 或 {type: 'x_search'} 时,这里只删除工具声明却保留该选择;后续 translateToolChoice() 因仍有 function tools 而处理该字段,并以不支持的 tool_choice 拒绝请求,因此这类搜索请求仍然返回 400,未达到本次避免整次请求失败的目的。删除搜索工具时应同时把引用已删除工具的选择改为 auto 或移除。
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
同意这个 P2 建议。同步清理 tool_choice 是更完整的处理方式,但当前改动已解决主要问题(请求不再因缺少 web search 而 400)。建议在后续 PR 中完善。
|
@yuaiccc 👋 这个 PR 还有 1 条 review conversation 没 resolve(apps/desktop/src/main/maker-host/codex-proxy-host.ts),auto-review 因此暂时跳过、没法继续审查 / 合并。 如果你已经按评论改完或回应了,请到对应 thread 上点 Resolve conversation;全部 resolve 后,下一轮 auto-review 会自动重新审查这个 PR。 |
Signed-off-by: yuaiccc <yuaiccc@aliyun.com>
这次改了什么
摘要
将
stripGuardianProviderSearchTools重命名为更通用的stripProviderSearchTools,并在prepareLocalBridgeBody中把清理范围从「仅 Guardian 的requestModelOverride」扩展到「任何 Chat Completions 桥接(bridge === 'chat')」。Chat Completions 协议没有 Responses 原生的web_search/x_search工具,而 Codex 会自动附带,转发到 chat provider 会导致整请求失败;现在在翻译前剥离这些 Responses-native search tool,而不是让整请求 400。变更类型
feat新功能fix缺陷修复refactor/perf重构或性能优化docs/test/chore文档、测试或工程维护范围
stripGuardianProviderSearchTools→stripProviderSearchTools重命名;prepareLocalBridgeBody的清理条件从opts.requestModelOverride扩展为opts.requestModelOverride || opts.bridge === 'chat';新增单测drops Responses-native search tools before forwarding an ordinary Chat bridge turn。tool_choice的同步清理(留作后续 PR);Anthropic bridge 路径。UI 变化
不涉及:仅改主进程桥接翻译逻辑,无 renderer / 视觉 / 交互 / 文案变化。
怎么验证的
自动验证
手工验证
不涉及:桥接翻译行为由单测覆盖。
未执行的验证
本次未本地复跑单测,依赖 CI 重跑确认。
风险
风险分类
影响与回滚
web_search/x_search这类 Responses-native search tool 类型,不影响 function tool,不影响 Anthropic bridge 路径。tool_choice的同步清理留作后续 PR;当前改动已解决请求因附带 web search 而 400 的主要问题。opts.requestModelOverride(并还原函数名)。提交前检查