Skip to content

fix(desktop): preserve Orca worker provider routing - #2513

Open
ZJPex wants to merge 3 commits into
makecindy:mainfrom
ZJPex:fix/issue-1919-orca-worker-provider-routing
Open

fix(desktop): preserve Orca worker provider routing#2513
ZJPex wants to merge 3 commits into
makecindy:mainfrom
ZJPex:fix/issue-1919-orca-worker-provider-routing

Conversation

@ZJPex

@ZJPex ZJPex commented Aug 12, 2026

Copy link
Copy Markdown

这次改了什么

摘要

修复 Orca 创建 Worker 时丢失实际模型来源的问题。

此前 Claude Code Lead 使用 Anthropic 来源时,新建 Worker 可能只继承模型,却把
providerId 保存为 null。后续凭证解析无法识别 Anthropic OAuth 路由,可能错误地
回退到 Cindy AI,并触发预算不足等与实际配置不符的错误。

本 PR 让 Worker 创建边界持久化实际解析出的 provider,并在 Lead 已绑定的同模型来源
不可用时提前失败,避免静默切换到其他凭证来源。

变更类型

  • feat 新功能
  • fix 缺陷修复
  • refactor / perf 重构或性能优化
  • docs / test / chore 文档、测试或工程维护
  • 其他:

范围

  • 关联 Issue / 需求:Closes Orca 协同 Worker(Claude Code agent)不继承 Claude 订阅登录,落到 fallback 网关后 429/超预算饿死 #1919
  • 本 PR 包含:
    • 持久化 Orca Worker 实际解析出的 providerId
    • 明确来源解析优先级:显式来源、兼容的 Lead/default 来源、当前默认来源
    • Lead 同模型来源断连时返回 PROVIDER_ROUTE_UNAVAILABLE
    • 增加 Anthropic 来源继承、凭证模式和断连保护回归测试
    • 更新 Orca Team 架构约束文档
  • 明确不包含:
    • 不修改 Provider 配置结构
    • 不修改 MCP 参数协议
    • 不修改 UI
    • 不修改数据库 schema 或 migration
  • 用户可见变化:
    • Anthropic Claude Lead 创建的 Worker 会继续使用 Anthropic OAuth 凭证
    • Lead 来源不可用时会明确报错,不再静默切换到 Cindy AI
  • 是否存在 breaking change:无

UI 变化

不涉及:本次仅修改主进程中的 Orca Worker 路由解析、测试和架构文档,没有视觉、交互或文案变化。

  • 引用的设计规范:不涉及

怎么验证的

自动验证

pnpm.cmd --filter desktop exec vitest run src/main/maker-ipc/__tests__/orcaWorkerCreationService.test.ts
结果:通过,96 个测试全部通过

pnpm.cmd --filter desktop typecheck
结果:通过

pnpm.cmd test:unit -- --workspace-concurrency 1
结果:通过,376 个测试通过,8 个跳过,0 个失败

git diff --check
结果:通过;仅有工作区 LF/CRLF 转换提示

手工验证

不涉及。本次行为由 Orca Worker creation service 的定向回归测试覆盖。

未执行的验证

无。

风险

风险分类

  • 无已知风险
  • SQLite / migration
  • system prompt
  • 协议兼容
  • 权限 / 安全 / 用户数据
  • 存量插件兼容(批准状态 / 指纹 / manifest 校验 / 安装布局 / 包格式)
  • 原生层 / fingerprint / OTA
  • 跨平台差异
  • 其他:Orca Worker 模型来源与凭证路由行为

影响与回滚

  • 影响范围:Desktop 主进程中的 Orca Worker 创建流程,以及 Worker session 的 provider 路由持久化。
  • 风险:旧逻辑可能把默认或官方来源表示为 null;新逻辑会保存实际解析出的 provider。Lead 已绑定的同模型来源断连时,现在会提前失败,而不是静默改用其他来源。
  • 回滚 / 降级方式:回滚本 PR 即可恢复原有 provider 解析行为;不涉及数据库 migration 或持久化格式迁移。

提交前检查

  • 已 review 完整 diff
  • 每个 commit 都带 DCO 签名(git commit -s,见 DCO
  • UI 改动已在「UI 变化」注明引用的设计规范章节(不涉及 UI 则跳过)
  • 未提交凭证、令牌或授权文件
  • 已补充必要文档
  • 已确认测试结果或说明未执行原因

Signed-off-by: ZJPex <3258236335@qq.com>
Copilot AI lite review requested due to automatic review settings August 12, 2026 07:17
@ZJPex
ZJPex requested a review from a team as a code owner August 12, 2026 07:17
@greptile-apps

greptile-apps Bot commented Aug 12, 2026

Copy link
Copy Markdown

Greptile Summary

此 PR 修复 Orca Worker 创建时丢失实际 provider 路由的问题,并在 Lead 已绑定来源不可用时提前终止创建。

  • 按“显式来源 → 兼容的 Lead 来源 → Worker defaults 来源 → 当前默认来源”解析并持久化 providerId
  • 使用最终路由来源执行凭证、预算、Fast mode、effort 与远端兼容性检查
  • 增加 Anthropic OAuth 继承、断连保护、缓存来源规范化及默认来源持久化测试
  • 更新 Orca Team 架构约束,并简化 Review plugin 注册测试的模块加载方式

Confidence Score: 5/5

当前证据未显示仍有阻塞合并的故障,因此此 PR 看起来可以安全合并。

没有阻塞性故障仍然存在。

Important Files Changed

Filename Overview
apps/desktop/src/main/maker-ipc/orcaWorkerCreationService.ts 重构 Worker provider 解析与持久化流程,优先保留兼容的 Lead 路由,并对不可用的同模型 Lead 来源提前失败。
apps/desktop/src/main/maker-ipc/tests/orcaWorkerCreationService.test.ts 扩充 Anthropic 路由继承、断连拒绝、缓存 provider 规范化及默认路由持久化的回归覆盖。
apps/desktop/src/renderer/features/right-sidebar/plugins/review/tests/plugin.test.ts 将逐测试动态模块重载改为文件级静态导入,并在测试文件结束后统一清理注册表。
docs/dev-rules/orca-team-architecture.md 记录 Worker 必须持久化实际 provider、Lead 路由优先级及断连时禁止静默切换凭证来源的架构约束。

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
  A[创建 Orca Worker] --> B{显式 provider?}
  B -->|是| C[校验显式来源与模型]
  B -->|否| D{兼容且可用的 Lead 来源?}
  D -->|是| E[继承 Lead provider]
  D -->|否,Lead 同模型来源已断连| F[返回 PROVIDER_ROUTE_UNAVAILABLE]
  D -->|否| G{有效 Worker defaults 来源?}
  G -->|是| H[使用 defaults provider]
  G -->|否| I[解析当前默认 provider]
  C --> J[持久化实际 providerId]
  E --> J
  H --> J
  I --> J
  J --> K[按实际来源校验凭证、预算、Fast、effort 与远端兼容性]
  K --> L[预留并启动 Worker session]
Loading

Reviews (2): Last reviewed commit: "fix(desktop): preserve Orca worker provi..." | 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: 95efc83f6c

ℹ️ 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 thread apps/desktop/src/main/maker-ipc/orcaWorkerCreationService.ts Outdated

Copilot AI 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.

Pull request overview

该 PR 修复 Desktop 主进程 Orca Worker 创建时可能丢失实际模型来源(providerId 被写成 null)的问题,确保后续凭证解析能稳定按真实来源(尤其是 Anthropic OAuth)路由,并在 Lead 绑定来源不可用时提前失败,避免静默降级到其它凭证家族。

Changes:

  • 调整 Worker 创建时的 provider 解析优先级与落盘策略:解析出实际来源后写入 Worker session(不再清成 null)。
  • 增加「Lead 同模型来源断连」时的前置拒绝(PROVIDER_ROUTE_UNAVAILABLE),防止静默切换到 Cindy AI。
  • 增加 Anthropic 继承/断连保护等回归测试,并更新 Orca Team 架构约束文档。

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

File Description
docs/dev-rules/orca-team-architecture.md 补充 Worker 创建边界必须持久化实际 providerId 的不变量与优先级说明。
apps/desktop/src/main/maker-ipc/orcaWorkerCreationService.ts 修复 Worker 创建时 provider 路由解析与持久化逻辑,新增断连前置失败策略。
apps/desktop/src/main/maker-ipc/tests/orcaWorkerCreationService.test.ts 覆盖 Anthropic Lead 继承、断连拒绝、默认路由持久化等回归用例。

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread apps/desktop/src/main/maker-ipc/orcaWorkerCreationService.ts Outdated
…-worker-provider-routing

Signed-off-by: ZJPex <3258236335@qq.com>
@MagicLizi

Copy link
Copy Markdown
Contributor

维护者确认

本 PR 涉及 Orca worker provider routing 修复,同时改动了规则文档 docs/dev-rules/orca-team-architecture.md,触发规则文档确认门。

确认方式:请维护者直接在 PR 上 Approve;如需修改请 Request Changes,作者改完后重新 Approve 即放行。

讨论 issue:#2528

@MagicLizi MagicLizi added touches:core 改动碰到架构核心路径(review-pr 自动维护,仅展示) touches:rules 改动碰到规则 / 规范文档(review-pr 自动维护,仅展示) labels Aug 12, 2026
Prefer a compatible Lead provider before cached Maker defaults, normalize cached provider IDs, and retain exact connected routes for explicit model selections. Stabilize the Review plugin registration test by avoiding repeated heavy module reloads.

Signed-off-by: ZJPex <3258236335@qq.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting-discussion 等待维护者讨论(review-pr) touches:core 改动碰到架构核心路径(review-pr 自动维护,仅展示) touches:rules 改动碰到规则 / 规范文档(review-pr 自动维护,仅展示)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Orca 协同 Worker(Claude Code agent)不继承 Claude 订阅登录,落到 fallback 网关后 429/超预算饿死

3 participants