Skip to content

fix: Orca worker 收口 / Pi rehydrate resume / CC 隐式路由 / Subagent 详情入口 (#3153 #2882 #3210 #3154) - #3232

Open
yuaiccc wants to merge 6 commits into
makecindy:mainfrom
yuaiccc:fix/orca-pi-routing-subagent-issues
Open

fix: Orca worker 收口 / Pi rehydrate resume / CC 隐式路由 / Subagent 详情入口 (#3153 #2882 #3210 #3154)#3232
yuaiccc wants to merge 6 commits into
makecindy:mainfrom
yuaiccc:fix/orca-pi-routing-subagent-issues

Conversation

@yuaiccc

@yuaiccc yuaiccc commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

这次改了什么

摘要

四个 issue 的修复(按 commit 顺序):

Commit Issue 范围
5fa431f3 #3153 Orca worker terminal 边界 done→idle 收口
e5abeba5 #2882 Pi 会话中途开 Orca rehydrate 前从 DB 回填 resumeSessionId
273babb0 #3210 (resolver) 隐式本地 bridge 路由加歧义保护 + wire 缺省推断
9b37bb92 #3210 (arch-gate) cc 代理接入 ①.5 隐式来源路由
86cedc50 #3154 普通 Subagent 卡展开区加「查看 Subagent 详情」入口

变更类型

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

范围

UI 变化

  • 引用的设计规范:

    • bug: Subagent不能看进度 #3154 新增的「查看 Subagent 详情」链接按钮位于既有任务卡(AgentTaskCard)展开区底部,字号 text-12、颜色 var(--text-link)、hover 下划线,与展开区其它元信息(lastTool/outputFile,同 text-12 / --text-tertiary)同一基线,仅颜色提升为链接色以表可点。遵循 DESIGN.md §14.5「聊天正文的可点性信号」:用文字颜色 + 显式按钮文案 + hover 下划线作为可点信号,不引入新的装饰底色或图标背景(图标 PanelRight size=12 与 workflow 卡头部同款,复用既有 token)。
    • 不涉及新的间距/栅格/圆角 token,卡片内外边距与背景完全沿用展开区 mt-2 border-l-2 pl-3 容器。
    • 无深色模式专门调整:--text-link 已是双模式 token。
    • 其余 4 个 commit 都是 main 进程逻辑,不涉及 UI。

怎么验证的

自动验证

pnpm --filter desktop typecheck                       # pass
pnpm --filter desktop exec vitest related --run       # pass(包含 5 个 commit 相关套件)
pnpm test:unit:related                                # pass(maker-host 1948+ / maker-ipc 1725+ / renderer 344+)
pnpm check:i18n-glossary                              # pass(Subagent 已裁决;4 处 lead proposed 为存量告警,非本次引入)
pnpm check:dco                                        # 5/5 Signed-off-by

新增/修改测试:

手工验证

不涉及(纯 main 进程路由与状态机逻辑,决策级单测覆盖;原始事故的网关层 curl 复现记录见 #3210)。

未执行的验证

未跑 e2e / renderer 套件(改动中 main 进程逻辑由 maker-host / maker-ipc 全目录覆盖;#3154 渲染层改动由 chat/right-sidebar 组件测试覆盖)。

风险

风险分类

影响与回滚

@yuaiccc
yuaiccc requested a review from a team as a code owner August 22, 2026 08:17
@yuaiccc

yuaiccc commented Aug 22, 2026

Copy link
Copy Markdown
Contributor Author

@codex review

@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: 0d9dd52e3a

ℹ️ 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-host/provider-route.ts Outdated
Comment thread apps/desktop/src/main/maker-ipc/orcaTeamService.ts Outdated
@greptile-apps

greptile-apps Bot commented Aug 22, 2026

Copy link
Copy Markdown

Greptile Summary

本 PR 修复 Orca worker 终态收口、Pi 会话 rehydrate 恢复、Claude Code 隐式 provider 路由,以及普通 Subagent 详情入口。

  • 为 Orca done 确认增加 terminal 边界的有界补收口,并保护新任务和排队输入
  • 在 Pi Orca rehydrate 前从数据库恢复 resume session 信息
  • 隐式 bridge 路由按模型及启停状态过滤候选,处理多来源歧义、缺省 wire 和 requestPath
  • 未绑定 Claude Code 会话可按模型选择唯一可用的 Anthropic-compatible bridge
  • AgentTaskCard 展开区新增复用既有右栏能力的详情入口

Confidence Score: 5/5

当前代码已解决此前报告的路由过滤、停用状态和 Orca 终态问题,未发现阻塞合并的故障。

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

Important Files Changed

Filename Overview
apps/desktop/src/main/maker-host/provider-route.ts 隐式 bridge 候选现在按模型可用性和启停状态严格过滤,并保留歧义结果供调用方 fail closed。
apps/desktop/src/main/maker-host/anthropic-compat-proxy-host.ts Claude Code 未绑定会话增加隐式 bridge 路由,同时避免覆盖任何已显式绑定的 provider。
apps/desktop/src/main/maker-ipc/makerSendTransaction.ts Pi Orca rehydrate 在关闭和重新 bootstrap 前先从数据库对账恢复 resumeSessionId。
apps/desktop/src/renderer/features/cc-agent/hooks/useOrcaWorkerSelection.ts Orca worker 选择状态配合 terminal 收口逻辑更新,相关状态转换有回归测试覆盖。
apps/desktop/src/renderer/components/chat/AgentTaskCard.tsx 普通 Subagent 卡片展开区新增复用既有右栏能力的详情入口。

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
  A[Claude Code 首包] --> B{会话已绑定 Provider?}
  B -->|是| C[按会话 Provider 路由]
  B -->|否| D[按 agent、模型和启停状态过滤来源]
  D --> E{候选数量}
  E -->|0| F[回落默认路由]
  E -->|1| G[应用 wire、requestPath 与凭证]
  E -->|多个| H[拒绝歧义路由]
Loading

Reviews (10): Last reviewed commit: "fix(maker-host): respect explicit and di..." | Re-trigger Greptile

Comment thread apps/desktop/src/main/maker-host/provider-route.ts Outdated
Comment thread apps/desktop/src/main/maker-ipc/orcaTeamService.ts Outdated
@MagicLizi

Copy link
Copy Markdown
Contributor

这条 PR 需要维护者确认后才能合并。

当前在拦的是 product:新增了用户看得见的「查看 Subagent 详情」入口;同时带有 CC 隐式路由等架构改动。

请维护者在本 PR 上 Approve 放行;若要改,请 Request Changes。确认方式以 GitHub review 为准,评论或摘标签不算通过。

讨论 issue:#3239

@MagicLizi MagicLizi added awaiting-discussion 等待维护者讨论(review-pr) touches:core 改动碰到架构核心路径(review-pr 自动维护,仅展示) touches:product-ui 改动碰到产品 / UI 面(review-pr 自动维护,仅展示) labels Aug 22, 2026
@MagicLizi

Copy link
Copy Markdown
Contributor

命中 UI 路径(AgentTaskCard.tsx)但 description 未附界面效果证据。这条新增了「查看 Subagent 详情」入口,请补一张改动后的截图/录屏,或改动后界面的 HTML,方便对照 DESIGN.md。

本条不阻断维护者确认,也不单独打回。

@yuaiccc
yuaiccc force-pushed the fix/orca-pi-routing-subagent-issues branch from 0d9dd52 to 86cedc5 Compare August 22, 2026 09:15
@yuaiccc

yuaiccc commented Aug 22, 2026

Copy link
Copy Markdown
Contributor Author

@codex 已处理两条 review,新提交:

P1 (provider-route.ts:861 filter implicit bridge candidates by model): 273babb0connectedBridgeCandidates 过滤里加了 model 存在性检查 —— 只把真的列出 catalogModelId 的已连接 provider 视为候选,避免断连迁移场景下把首包转发到无关 BYOM。补回归测试 does not treat an unrelated connected user provider as a bridge candidate for a model it does not list

P2 (orcaTeamService.ts:902 preserve errored worker status): 5fa431f3 把 main 侧 done→idle 自动收口收窄为只对 status: 'done' 触发,error 保持持久错误状态(红色徽标 / 隐藏 worker 错误提示需要它),runtime 释放交给 idle watcher 兜底。settleTerminalWorkerToIdle 内也同步只接受 done。补回归测试 does not auto-settle an errored worker to idle, preserving the red error badge

测试 / typecheck / DCO 均已重新通过,请再评审一次。

@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: 86cedc506d

ℹ️ 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/orcaTeamService.ts Outdated
Comment thread apps/desktop/src/main/maker-host/anthropic-compat-proxy-host.ts Outdated
@yuaiccc
yuaiccc force-pushed the fix/orca-pi-routing-subagent-issues branch from 86cedc5 to 31913ea Compare August 22, 2026 09:36
@yuaiccc

yuaiccc commented Aug 22, 2026

Copy link
Copy Markdown
Contributor Author

@codex 第二轮两条 P2 也已修:

P2 (orcaTeamService.ts:921 auto-bridge 回报被收口吞掉) · 8a6bbc86:settle 前新增 hasPendingAutoBridgeDelivery 检查——若 auto-bridge 仍 pending 或 retryAfterRejectedDelivery=true(Lead 忙/投递被拒后等下一次 terminal 重试),本轮收口跳过,下次定时器再试,最多 5 次仍未完成则记日志交给 idle watcher。补回归测试 defers done→idle settle while an auto-bridge delivery is still pending/retrying

P2 (anthropic-compat-proxy-host.ts:470 requestPath 丢失) · 1276fd2e:cc 代理 ①.5 段在 buildRouteDecision 后追加 pathOverride: bridgeRoute.routing.requestPath,与会话绑定后的 resolveSessionRouteDecision 行为一致,多租户网关首包不再 404。补独立单测 claudeProxyImplicitPathOverride.test.ts

force-push 已更新 PR(31913ea2),design-basis workflow 已通过,测试/typecheck/DCO 全绿。

@chatgpt-codex-connector

Copy link
Copy Markdown

To use Codex here, create an environment for this repo.

@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: 31913ea251

ℹ️ 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/renderer/i18n/locales/ja/common.json Outdated
@yuaiccc
yuaiccc force-pushed the fix/orca-pi-routing-subagent-issues branch from 31913ea to f746a5f Compare August 22, 2026 09:49
@yuaiccc

yuaiccc commented Aug 22, 2026

Copy link
Copy Markdown
Contributor Author

第三轮(含 Greptile P1)也已处理,force-push f746a5f0:

  • i18n P1(ja/ko 术语):f746a5f0viewSubagentDetails 的日文改为「サブエージェントの詳細を表示」、韩文改为「하위 에이전트 세부 정보 보기」,与右栏 subagents 导航标签一致(GLOSSARY 已裁决)。
  • Greptile P1(provider-route model 过滤):第一轮 codex P1 修的同一段已包含 provider.models[agent].some(m => m.id === catalogModelId) 检查,补了对应单测 does not treat an unrelated connected user provider as a bridge candidate
  • Greptile P1(Error 终态被恢复成 done):P2-1 已把 main 侧自动收口收窄为只对 status: 'done' 触发,错误态保持 error(红色徽标/错误提示需要它),restoreWorkerDoneIfIdle 回滚分支也只在 done 路径可达,该问题在最新 sha 上已不存在。补了 does not auto-settle an errored worker to idle 锁定。

之前 codex 的两条 P2(auto-bridge pending 不收口、requestPath 透传)以及第一轮 P1(model 过滤)都已在 8a6bbc86 / 1276fd2e 处理并有对应回归测试。

@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: f746a5f0c8

ℹ️ 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/orcaTeamService.ts Outdated
@MagicLizi

Copy link
Copy Markdown
Contributor

@yuaiccc 👋 这个 PR 还有 6 条 review conversation 没 resolve(apps/desktop/src/main/maker-host/provider-route.ts / apps/desktop/src/main/maker-ipc/orcaTeamService.ts / apps/desktop/src/main/maker-host/anthropic-compat-proxy-host.ts / apps/desktop/src/renderer/i18n/locales/ja/common.json),auto-review 因此暂时跳过、没法继续审查 / 合并。

如果你已经按评论改完或回应了,请到对应 thread 上点 Resolve conversation;全部 resolve 后,下一轮 auto-review 会自动重新审查这个 PR。

@MagicLizi

Copy link
Copy Markdown
Contributor

@yuaiccc 👋 这个 PR 还有 5 条 review conversation 没 resolve(apps/desktop/src/main/maker-host/provider-route.ts / apps/desktop/src/main/maker-ipc/orcaTeamService.ts / apps/desktop/src/main/maker-host/anthropic-compat-proxy-host.ts),auto-review 因此暂时跳过、没法继续审查 / 合并。

如果你已经按评论改完或回应了,请到对应 thread 上点 Resolve conversation;全部 resolve 后,下一轮 auto-review 会自动重新审查这个 PR。

@yuaiccc
yuaiccc force-pushed the fix/orca-pi-routing-subagent-issues branch from f746a5f to 7614fe3 Compare August 22, 2026 14:18
@yuaiccc

yuaiccc commented Aug 22, 2026

Copy link
Copy Markdown
Contributor Author

第四轮修复(force-push 7614fe39):

P1(done 持久化 / attention 语义):采纳 Greptile 与 codex 的意见,完全回退 main 侧自动 done→idle 收口。原因:useOrcaWorkerAttentionWatcher 依赖 done 状态在 late mount / reload 后恢复未读 attention,250ms 后自动改 idle 会让完成徽标消失;error 态也需保留用于红色错误徽标。

改为在 renderer acknowledge 路径做有界重试(useOrcaWorkerSelection.ts):

  • WORKER_STATE_CHANGED 时,只对 has an active turn / has a send in progress 两种瞬态消息安排 250ms 后重试,最多 8 次(≈ 2s,覆盖 translator 清 turnInFlight 的窗口)。
  • 其它(有排队输入、CAS 输给新派活、device-link 拒绝)立即放弃,attention 保持 done,等下一次用户查看该 worker 时由 effect 重入。
  • 不依赖定时器跨 reload 持久化;idle watcher 继续负责 runtime hibernation。

补 renderer 单测:首次撞 active turn 后重试成功并清 attention。

之前 codex 的两条 P2(auto-bridge pending 不收口、requestPath 透传)与 Greptile 的 P1(model 过滤)、i18n P1(ja/ko 术语)都已在前几个 commit 中保留修复。

design-basis / DCO / 全量 related tests 均通过。

@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: 7614fe395b

ℹ️ 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-host/provider-route.ts Outdated
Comment thread apps/desktop/src/renderer/components/chat/AgentTaskCard.tsx
@yuaiccc
yuaiccc force-pushed the fix/orca-pi-routing-subagent-issues branch from 7614fe3 to a1a8333 Compare August 22, 2026 14:38
@yuaiccc

yuaiccc commented Aug 22, 2026

Copy link
Copy Markdown
Contributor Author

第五轮修复(force-push a1a83331),处理两条新 P1:

P1(provider-route.ts:859 排除 suspended 来源):候选过滤与 actualSourceIdForModel 兜底分支都加了 suspended 检查——ProviderView.connected 在用户停用后仍为 true(凭证保留),只有 suspended 标志表示该来源不可用于新路由,必须排除,否则停用的供应商仍会收到未绑定会话的首包。补回归测试 does not select a suspended user provider even when it is the sole connected bridge

P1(AgentTaskCard.tsx:365 history reload 后入口消失):详情入口的 focusId 从 update?.taskId 改为 subagentPanelFocusId = update?.taskId ?? toolCall?.toolUseId。history reload 后 agent_task_update 不持久化、update 为空,但 toolCall.toolUseId 已作为 sidebar alias 持久化(detail 查询接受 runIdOrAlias),Pi durable 路径也用它兜底,这样历史会话里完成的 Subagent 仍可点进右栏。补组件测试 AgentTaskCardSubagentHistory.test.tsx 验证无 update 时按钮仍能以 toolUseId 调 openSubagentsTab

之前四轮的所有修复(P1 model 过滤、P2 error 状态保留、P2 auto-bridge pending、P2 requestPath、i18n ja/ko 术语、renderer acknowledge 重试)均保留。

design-basis / DCO / 全量 related tests 均通过。

@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: a1a83331eb

ℹ️ 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-host/provider-route.ts Outdated
Comment thread apps/desktop/src/main/maker-host/provider-route.ts Outdated
@yuaiccc
yuaiccc force-pushed the fix/orca-pi-routing-subagent-issues branch from a1a8333 to a8942f8 Compare August 22, 2026 14:49
@yuaiccc

yuaiccc commented Aug 22, 2026

Copy link
Copy Markdown
Contributor Author

第六轮修复(force-push a8942f8f):

P1(provider-route.ts:871 排除逐模型 disabled 条目):候选过滤的 model 检查从 model.id === catalogModelId 收紧为 model.id === catalogModelId && !model.disabled,并在 actualSourceIdForModel 兜底分支前同样过滤掉目标 model 被 disabled: true 的来源。用户逐模型停用后,该来源不会再被选作未绑定会话首包的隐式上游。补回归测试 does not select a provider whose matching model entry is individually disabled

本轮单独验证:132 个相关测试文件 / 2165 测试全过(forks pool,绕开该机器 threads pool 的偶发 SIGSEGV)。design-basis / DCO 通过。

@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: a8942f8fea

ℹ️ 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-host/anthropic-compat-proxy-host.ts Outdated
Comment thread apps/desktop/src/renderer/components/chat/AgentTaskCard.tsx Outdated
@yuaiccc
yuaiccc force-pushed the fix/orca-pi-routing-subagent-issues branch from a8942f8 to a9299e4 Compare August 22, 2026 15:06
@yuaiccc

yuaiccc commented Aug 22, 2026

Copy link
Copy Markdown
Contributor Author

第七轮修复(force-push a9299e46):

P1(anthropic-compat-proxy-host.ts:455 不覆盖已绑定 XD):①.5 隐式段的前置条件从 !explicitCustomProvider 收紧为 !selectedProviderId——只要会话已显式绑定任何供应商(含内置 XD/anthropic,不只用户自定义),①.5 就不介入,改由 ② 段处理。这样已选 XD 在 gateway key 清除后仍走 ② 段的 XD passthrough/网关 key 决策(记 gateway 账),不会被用户 bridge 抢走。补测试 does not override an explicit XD session with the implicit user bridge

P2(AgentTaskCard.tsx:363 仅对真正 spawn 卡显示入口):详情入口判据从 !isWorkflow && !isBash 收紧为 isSubagentSpawnToolName(toolName),即只在 Task/Agent/subagent/collab:spawn/collab:spawnAgent 这些真正启动子代理的工具卡显示。collab:wait/sendInput/resumeAgent/closeAgent 等控制调用不再显示「查看 Subagent 详情」(它们的 toolUseId 在右栏定位不到 run)。补测试遍历这四个控制卡断言无入口。

155 个相关测试文件 / 2409 测试全过(forks pool)。

@yuaiccc

yuaiccc commented Aug 22, 2026

Copy link
Copy Markdown
Contributor Author

CI: Windows unit tests (1/2) 日志中所有包均 PASS、无断言失败(Linux 同 sha 全绿、Windows 2/2 也绿),疑为 runner flaky(threads pool 子进程退出码异常,与本地偶发 SIGSEGV 同源)。暂时关闭以重新触发 CI。

@yuaiccc yuaiccc closed this Aug 22, 2026
@yuaiccc yuaiccc reopened this Aug 22, 2026
@MagicLizi

Copy link
Copy Markdown
Contributor

@yuaiccc 👋 这个 PR 还有 10 条 review conversation 没 resolve(apps/desktop/src/main/maker-host/provider-route.ts / apps/desktop/src/main/maker-ipc/orcaTeamService.ts / apps/desktop/src/main/maker-host/anthropic-compat-proxy-host.ts / apps/desktop/src/renderer/components/chat/AgentTaskCard.tsx),auto-review 因此暂时跳过、没法继续审查 / 合并。

如果你已经按评论改完或回应了,请到对应 thread 上点 Resolve conversation;全部 resolve 后,下一轮 auto-review 会自动重新审查这个 PR。

@yuaiccc

yuaiccc commented Aug 22, 2026

Copy link
Copy Markdown
Contributor Author

关于 Windows unit tests (1/2) 的失败:这是与本 PR 无关的 pre-existing CI flaky。证据:

  • 两次独立 run(初次 + close/reopen 重跑)失败模式完全一致:日志中所有 workspace 均 PASS、无任何断言失败或 FAIL 包,仅在最后 5 个 notApplicable SKIP 后报 ELIFECYCLE exit code 1,并出现 "Cleaning up orphan processes" —— 是 vitest --pool=threads --maxWorkers=1 --shard=1/2 在 Windows runner 上的子进程残留问题(本地 macOS 上 threads pool 也偶发 SIGSEGV,forks pool 则 2409 测试全过)。
  • 同一时刻最新 main(69d417d,"pin sidebar browser",run 32581768463)的 Windows unit tests (1/2) 同样 failure,其余 job 全 success,而该 commit 不涉及本 PR 任何文件。
  • 同 PR 的 Linux unit tests (1/2 + 2/2)Windows unit tests (2/2) 均 pass。

请 maintainer 重跑该 job 或直接合并。代码侧 Greptile Review 已 pass(0 comments),7 轮 codex/Greptile review 的所有 P1/P2 意见均已修复并附回归测试。

@MagicLizi

Copy link
Copy Markdown
Contributor

@yuaiccc 👋 这个 PR 目前与 main 有合并冲突,auto-review 因此暂时跳过、没法继续审查 / 合并。

请在本地 merge 最新的 origin/main 解决冲突后推送;冲突解除后,下一轮 auto-review 会自动重新处理这个 PR。

yuaiccc and others added 6 commits August 25, 2026 00:23
…3153)

worker 终态事件抵达时底层 agent 的 turn 可能尚未 settle(isTurnRunning
仍 true),renderer 的 idleWorker acknowledge 撞 WORKER_STATE_CHANGED/has
an active turn 后立即放弃,worker 长期停在 done、runtime 不释放,表现为
"回报接上了但协同卡住"。

在 renderer acknowledge 路径加有界重试(250ms × 8 ≈ 2s,覆盖 translator
清 turnInFlight 的窗口),只对 "has an active turn" / "has a send in
progress" 两种瞬态情形重试;其它(有排队输入、CAS 输给新派活、device-link
拒绝)立即放弃,attention 保持 done 等下一次用户查看时 effect 重入。

不在 main 侧自动改 done→idle:
- useOrcaWorkerAttentionWatcher 依赖 done 持久化在 late mount / reload 后
  恢复未读 attention,250ms 后清掉会让完成徽标消失(codex/Greptile P1)。
- error 态 UI 故意保留用于红色错误徽标。
- runtime hibernation 由 idle watcher 独立兜底。

补 renderer 单测:首次撞 active turn 后重试成功并清 attention;非瞬态状态
变化(dispatch in progress)仍立即放弃。

Signed-off-by: yuaiccc <yuaiccc@aliyun.com>
…indy#2882)

rehydrate 路径 close/bootstrap 前没从 DB 回填 resumeSessionId,Pi 据此开新
JSONL 丢掉旧 history。在 rehydrateActiveOrcaSession 的 close 之前调
reconcileCreateOptsWithDb,DB 是唯一真源,与 lazy-create 同一条 resume 口径。

补测试断言 bootstrap 收到旧 sdkSessionId、且对账发生在 bootstrap 之前。

Signed-off-by: yuaiccc <yuaiccc@aliyun.com>
…ver)

resolveImplicitLocalBridgeRoute 新增两道防护:

1. 多个已连接的用户自定义 bridge 来源暴露同一裸 catalog id 时不猜测。
   会话启动/切模竞态下 getSessionProvider 可能暂时为 null,按默认规则猜
   来源会把首批提示词发往用户未为该会话选择的供应商(数据外发 + 错计费);
   这种场景下返回 null 回落默认路由,首包可能 400 但 provider 绑定完成后
   重试即恢复,绝不把首包发往歧义来源。内置来源(anthropic/xd/openai/xai)
   的既定默认优先级(XD 优先)不受影响。

2. 引入 implicitBridgeWireProtocol helper,把 user-provider 的 wire 缺省
   (claude-code=anthropic-messages, codex=openai-responses,见 model-providers
   的 defaultWireProtocol)纳入判定。用户 Anthropic 兼容上游(如智谱)在目录
   里省略 wireProtocol 时仍能被识别为 bridge 候选——这是 makecindy#3210 事故根因
   链的最后一环。

补两条回归测试:多自定义 provider 暴露同 id 返回 null、单源 user provider
正确解析。

Signed-off-by: yuaiccc <yuaiccc@aliyun.com>
对齐 codex-proxy-host 既有 ①.5 段语义。cc 会话未反解出 / 未绑定供应商时,
按模型解析已连接的 anthropic-messages bridge 来源。用户 Anthropic 兼容
上游(如智谱 GLM-5.3)的裸 catalog id 不是默认网关(LiteLLM)注册的命名
空间 id,抢在 session↔provider 绑定前到达会被网关模型校验层拒,表现为
偶发 API Error 400、重试恢复。

刻意排除:PI(自带 per-model 路由)、显式自定义供应商会话(① 段已裁决)、
anthropic wire 模型(保持 makecindy#886 默认路径)、xd 来源(默认网关即其上游,②
段带计费记账,这里接管会漏记)。歧义保护由 resolveImplicitLocalBridgeRoute
兜底:多候选时回落默认路由而非发往歧义供应商。

注:本变更调整未绑定会话的 cc 默认路由契约,属于维护者架构确认门
范围(讨论见 makecindy#3221),需维护者 Approve 后合并。

既有测试同步:受异步解析影响的默认路由断言改为 await;provider-route mock
补 resolveImplicitLocalBridgeRoute / buildRouteDecision stub。

Signed-off-by: yuaiccc <yuaiccc@aliyun.com>
Codex 自定义 API 下用户报告看不到子代理进度。右栏「子代理」面板(activity、
用量、返回结果)实际已存在但不易发现:卡片就地只展开摘要,点击不进面板。
曾有意撤回的「首次创建自动弹出右栏」行为不恢复(侵入式),改为用户主动
入口。

新增按钮在普通 Subagent 卡展开区底部(workflow / bash 卡不显示——前者
整卡点击已打开后台任务面板,后者非子代理)。通过既有 openSubagentsTab
打开右栏并用 taskId(= 逻辑子代理 id,detail 查询接受 alias)+ provider 定位。
panelReachable 守卫避免在 worker 面板 / 窄 rail 内嵌宿主里出现假入口。

完整 transcript 仍属独立功能(makecindy#2574),本次只做可发现性入口。

i18n:五语统一保留 Subagent 英文原词(术语表已裁决)。
Signed-off-by: yuaiccc <yuaiccc@aliyun.com>
Signed-off-by: yuaiccc <yuaiccc@aliaun.com>
@yuaiccc
yuaiccc force-pushed the fix/orca-pi-routing-subagent-issues branch from a9299e4 to 90e849b Compare August 24, 2026 16:23
@yuaiccc

yuaiccc commented Aug 24, 2026

Copy link
Copy Markdown
Contributor Author

已处理全部 10 条 Codex review:隐式 bridge 仅选择真实可路由模型,排除 suspended/disabled provider 与 model;保留 requestPath;错误/完成/auto-bridge 状态按可观察生命周期保留;历史 Subagent 详情可恢复且仅真正 spawn 工具展示;显式 XD 会话不被隐式 bridge 覆盖。已 rebase 最新 main,相关测试与 desktop typecheck 已完成;10 个 Codex thread 已 resolve,@codex review。

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. What shall we delve into next?

Reviewed commit: 90e849b609

ℹ️ 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".

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:product-ui 改动碰到产品 / UI 面(review-pr 自动维护,仅展示)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] Orca worker 完成回报卡滞:acknowledge-done 报 WORKER_STATE_CHANGED,lead 会话停住需手动恢复

2 participants