Skip to content

fix(desktop): drop search tools for Chat bridge - #2439

Open
yuaiccc wants to merge 2 commits into
makecindy:mainfrom
yuaiccc:fix/drop-search-tools-for-chat-bridge
Open

fix(desktop): drop search tools for Chat bridge#2439
yuaiccc wants to merge 2 commits into
makecindy:mainfrom
yuaiccc:fix/drop-search-tools-for-chat-bridge

Conversation

@yuaiccc

@yuaiccc yuaiccc commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

这次改了什么

摘要

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 文档、测试或工程维护
  • 其他:

范围

  • 关联 Issue / 需求:无
  • 本 PR 包含:stripGuardianProviderSearchToolsstripProviderSearchTools 重命名;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 路径。
  • 用户可见变化:使用 Chat Completions 桥接的普通 provider 路由不再因附带 web search 而整请求 400。
  • 是否存在 breaking change:无

UI 变化

不涉及:仅改主进程桥接翻译逻辑,无 renderer / 视觉 / 交互 / 文案变化。

怎么验证的

自动验证

pnpm --filter desktop exec vitest run src/main/maker-host/__tests__/codexProxyHost.test.ts
结果:PR 作者本地已通过;本次触发重审后以 CI 为准。

手工验证

不涉及:桥接翻译行为由单测覆盖。

未执行的验证

本次未本地复跑单测,依赖 CI 重跑确认。

风险

风险分类

  • 无已知风险
  • SQLite / migration
  • system prompt
  • 协议兼容
  • 权限 / 安全 / 用户数据
  • 存量插件兼容
  • 原生层 / fingerprint / OTA
  • 跨平台差异
  • 其他:

影响与回滚

  • 影响范围:只剥离 web_search / x_search 这类 Responses-native search tool 类型,不影响 function tool,不影响 Anthropic bridge 路径。tool_choice 的同步清理留作后续 PR;当前改动已解决请求因附带 web search 而 400 的主要问题。
  • 回滚 / 降级方式:恢复清理条件为仅 opts.requestModelOverride(并还原函数名)。

提交前检查

  • 已 review 完整 diff
  • 每个 commit 都带 DCO 签名
  • UI 改动已在「UI 变化」注明(不涉及 UI)
  • 未提交凭证、令牌或授权文件
  • 已补充必要文档
  • 已确认测试结果或说明未执行原因

Signed-off-by: yuaiccc <yuaiccc@aliyun.com>
@yuaiccc
yuaiccc requested a review from a team as a code owner August 11, 2026 09:29
@greptile-apps

greptile-apps Bot commented Aug 11, 2026

Copy link
Copy Markdown

Greptile Summary

此 PR 将搜索工具清理逻辑推广到所有 Chat Completions 桥接请求,避免 Codex 自动附带的 Responses 原生搜索工具导致普通 provider 请求失败。

  • stripGuardianProviderSearchTools 重命名为更通用的 stripProviderSearchTools
  • 在 Chat bridge 翻译前移除 web_searchx_search,同时保留 function tools
  • 新增普通 Qwen Chat provider 路由的回归测试

Confidence Score: 5/5

当前变更看起来可以安全合并。

未发现仍然存在的阻塞性故障。

Important Files Changed

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]
Loading

Reviews (2): Last reviewed commit: "chore: complete PR description per forma..." | Re-trigger Greptile

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment on lines +702 to 705
body = stripProviderSearchTools({
...body,
model: opts.requestModelOverride,
...(opts.requestModelOverride ? { model: opts.requestModelOverride } : {}),
});

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 同步清理指向已删除搜索工具的 tool_choice

当普通 Chat bridge 请求还包含 function tool,且 tool_choice 显式指向 {type: 'web_search'}{type: 'x_search'} 时,这里只删除工具声明却保留该选择;后续 translateToolChoice() 因仍有 function tools 而处理该字段,并以不支持的 tool_choice 拒绝请求,因此这类搜索请求仍然返回 400,未达到本次避免整次请求失败的目的。删除搜索工具时应同时把引用已删除工具的选择改为 auto 或移除。

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

同意这个 P2 建议。同步清理 tool_choice 是更完整的处理方式,但当前改动已解决主要问题(请求不再因缺少 web search 而 400)。建议在后续 PR 中完善。

@MagicLizi MagicLizi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

格式审查未通过

请按 PR 模板 补全 Description 段落后再请求 re-review。

缺少段落:

  • 这次改了什么 — 说明本次改动的具体内容与动机
  • 怎么验证的 — 列出已验证的测试/检查项
  • 风险 — 评估引入的风险与影响面

这些段落帮助 reviewer 快速理解改动范围与验证情况,缺段落的 PR 一律退回。

@MagicLizi MagicLizi added the status:awaiting-author 等作者修改(review-pr 自动维护,仅展示) label Aug 11, 2026
@MagicLizi

Copy link
Copy Markdown
Contributor

@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>
@MagicLizi MagicLizi added status:awaiting-author 等作者修改(review-pr 自动维护,仅展示) and removed status:awaiting-author 等作者修改(review-pr 自动维护,仅展示) labels Aug 12, 2026
@MagicLizi MagicLizi added status:awaiting-author 等作者修改(review-pr 自动维护,仅展示) and removed status:awaiting-author 等作者修改(review-pr 自动维护,仅展示) labels Aug 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

status:awaiting-author 等作者修改(review-pr 自动维护,仅展示)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants