Skip to content

fix(provider-group): 修复组内电脑剩余额度刷新不及时 - #6752

Open
guyong-zapo wants to merge 23 commits into
makecindy:mainfrom
guyong-zapo:fix/provider-group-quota-refresh
Open

guyong-zapo wants to merge 23 commits into
makecindy:mainfrom
guyong-zapo:fix/provider-group-quota-refresh

Conversation

@guyong-zapo

@guyong-zapo guyong-zapo commented Oct 22, 2026 •

Copy link
Copy Markdown
Collaborator

这次改了什么

摘要

供应商组展开某台电脑的剩余额度时,远程卡片只读额度镜像,没有像本机 OpenAI 详情那样主动查询原生额度,容易一直显示旧值。现在展开时直接查询目标电脑的 OpenAI 原生额度,并与本机详情卡共用通用额度桶的选择;页面在前台时每 15 秒刷新,回到前台或目标电脑重连后补读。

变更类型

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

范围

  • 关联 Issue / 需求:用户反馈,组里看到旧额度,需到对应电脑打开或刷新 OpenAI 后才更新。
  • 本 PR 包含:展开时主动查询原生额度;展开期间前台刷新与重连补读;离线成员按目标在线推送恢复查询,设备目录暂时重拉失败也不阻塞;定时查询走现有后台队列,保留首次打开与恢复查询的前台优先级;旧端镜像兜底与重连在途补读;原生补读失败时清理旧快照,防止漏掉账号切换推送后一直显示旧账号额度;按设备和供应商隔离缓存、共享在途查询,并防止查询产生的推送形成循环;本机 relay 停止后立即停掉远端额度读取,不回退到旧在线组状态;本机实时额度卡回前台时保留旧在途结果、结束后只补读一次,收起/隐藏后取消本卡的排队请求,即使其他页面仍订阅同一账号;普通消费者与手动/授权刷新保留原有新请求覆盖旧结果的行为;挂载时先用既有本地 getState() 确认 relay 状态,未知或读取失败期间不启用远端目标,新推送优先于迟到的初始回包,切换账号或卸载后丢弃旧回复;同步供应商组产品规则。
  • 明确不包含:路由修复、发送前强制额度核验、组策略或冷却规则调整;服务端、Mobile 原生配置与指纹变化。
  • 用户可见变化:展开即可刷新目标电脑额度;收起或页面隐藏后停止刷新,重新进入前台后补读。
  • 是否存在 breaking change:无。复用已有查询通道与回包,具名账号校验 providerId 回显;旧电脑不支持时沿用对应账号的额度镜像。

UI 变化

  • 引用的设计规范:docs/design-rules/DESIGN.md §4「Usage data graphics」与 §10「Light / Dark Dual-Mode Delivery Gate」。沿用现有 QuotaHoverCard、语义 token、排版与进度条,不增加控件或文案;Light、Dark 均已用真实组件和模拟宿主数据检查并查看截图。
  • 对照数据:旧镜像显示 5 小时剩余 50%、周额度剩余 80%;原生接口返回剩余 27%、70%。修复后优先显示原生结果;旧端不支持时仍显示镜像。
  • 以下图片来自独立 UI 场景,未连接真实账号或跨电脑链路。两条告警均为现有 sr-only 无障碍文字的裁剪提示,已目检可见内容。
  • 截图来源:单页验证 pnpm ui:check --entry tmp/provider-group-quota-refresh.tsx --case all --theme all --viewport 720x400 --compare HEAD,macOS · Electron 42.11.12(Chromium 148.0.7778.280,与 Cindy 同一渲染内核);真实组件与主题,场景数据,不是登录账号下的完整 Cindy
  • 版本:5e9cef3ff313(含未提交改动)
  • 结果:4/4 个场景通过,2 条警告
  • 页面 entry:light / dark · zh-CN · 720×400
    • native:native
    • legacy:legacy
    • 未覆盖:No page-specific assertions; only generic checks and screenshots
    • 改前/改后对照:HEAD,同一步骤左右并排

单页验证截图 1/1

怎么验证的

自动验证

2026-10-28 最新修订(630863b2bb07):修复 r4391955018 / r4391955043,7文件220增40删(3生产、4既有测试)。

  • 新online→offline组状态记录该时刻的目录快照,旧ready/online数组也不能直接启用provider/quota。目标fresh online presence或转换后的成功新目录才解除本次栅栏;恢复确认后保留后续无关loading/error期间的已确认状态。初始旧offline+ready恢复、owner/目标隔离与本机控制许可门禁保持。
  • 本机Codex账户镜像仅live卡新增pending观察:首次两卡共享普通消费者的warm-start,回前台/最后live离开后重开才排每卡token,保留旧在途成功73%及credits,结算后只补读一次;补读失败保留已有值。15秒轮询共享pending;收起、clear push、owner/provider切换取消队列。普通消费者无live参与时仍按原cancelled/revision规则;显式普通刷新仍为原nudge,原slot/桶选择、具名provider回显与owner校验保持。
  • Unit最小三项(旧ready目录presence/目录恢复各一,本机账户foreground恢复一)先红后绿;另补reopen/15秒共享、两live首次共享、普通消费者卸载后另一live仍拿到首笔、close/clear/owner/provider取消以及普通warm-start取消。原断言保留,无新测试文件/resetModules/真实等待。首轮related有一条精确mock参数期望缺新可选参数而失败,已补{},未放宽账号/设备/额度断言。
  • 最终18文件351项定向unit PASS(Vitest7.43秒);group33项墙钟3.12秒/Vitest1.83秒,card43项3.32/2.29秒,cache32项2.51/1.57秒,原provider card4项3.10/2.16秒。日志 artifacts/pr6752-r29-r30-{red,green-final,related-final,group-timing,card-timing,cache-timing,provider-card-timing}.log/.exit;red=1预期,related=1为已修的mock期望,related-final=0。本机仅定向unit,不称完整本机unit。
  • 测试最终调整后重新Desktop typecheck-final exit0;ESLint7文件、test-hygiene360、diffcheck、DCO21源签名+2merge豁免通过。日志 artifacts/pr6752-r29-r30-{typecheck-final,lint-final,hygiene-final,dco}.log/.exit。
  • 最终生产代码后UI pnpm ui:check --changed --theme all 126/126 PASS92.3秒,pr6752-r29-r30-ui.log/.exit=0;changed-L4NMgi/overview.png及overview-14.png已看Light/Dark。之后仅补测试,最终unit和类型检查覆盖最终测试。真实组件+模拟宿主,organization-quota替换useAccountUsage等额度hook不计验证;真实双机/上游额度/Windows实机未联调。
  • 故障半径仅当前成员额度读取准入与本机live账户展示缓存;不改共享目录/link/relay/transport恢复、权限边界、preload/wire、路由、发送前或服务端。

历史221e7cecee42修订(2026-10-28):修复 r4391647927。仅GroupMemberQuota及既有组件测试,2文件68增2删。

  • 当前owner/目标的组状态由online新变为offline时,在该次渲染立即使旧目录确认和旧presence失效,并在layout effect清除它们。loading/error保留旧online行、无关peer事件或数组变化不能恢复provider/额度读取;当前目标fresh online presence或成功目录仍可恢复。首次挂载已为offline的旧缓存不算新转换,保留原来的“旧offline+新ready目录”恢复;控制许可始终独立门禁,本机卡语义保持。
  • Unit经真实GroupMemberQuota新增loading/error两条最小回归,先红后绿。覆盖此前存在在线presence、从新offline渲染起没有远端读取、无关事件无效、presence/目录两种恢复及再次online→offline;第25条初始/恢复ready确认保持、原远端门禁与本机self映射回归均通过。原断言未放宽,无新文件/resetModules/真实等待。
  • 最终17文件308项定向unit通过(Vitest8.36秒),group31项单文件墙钟3.78秒(Vitest2.40秒)。日志 artifacts/pr6752-r28-{red,green,related,group-timing}.log/.exit,red=1预期,green/related=0。本机仅定向unit,不称完整本机unit。
  • Desktop类型检查exit0、ESLint2文件、test-hygiene360、diffcheck与DCO20源签名+2merge豁免通过,日志 artifacts/pr6752-r28-{typecheck,lint,hygiene,dco}.log/.exit。
  • 最终源代码后、提交前UI pnpm ui:check --changed --theme all 126/126通过91.7秒,pr6752-r28-ui.log/.exit=0;已查看changed-Ydox9V/overview.png与overview-14.png(Light/Dark)。其后未改源;真实组件+模拟宿主,organization-quota替换额度hook不计验证;未做真实双机/上游额度/Windows实机联调。
  • 故障半径只在当前成员额度读取准入;复用现有状态,不新增探测,不修改共享目录/link/relay/transport恢复、权限边界、preload/wire、路由、发送前或服务端。

历史70ad6ec05d66修订(2026-10-28):修复 r4391443314。仅GroupMemberQuota及既有组件测试,2文件33增2删。

  • 查看另一台电脑的只读组时,成员映射为本机local后,按当前本地供应商/账号读取额度;组所在电脑缓存的offline不再禁用本机卡。远端成员的relay、目录、presence与控制许可门禁保持,分享来源不显示额度的规则不变。
  • Unit经真实groupMemberQuotaTarget+GroupMemberQuota复现远端组中self成员被旧offline隐藏,修复前失败;修复后在目录null/error、relay connecting/stopped/online下仍显示正确本机卡,不查询owner或其他设备、不读远端初始状态。本机目标账号缺失时不借其他账号,账号恢复立即显示,无需等待owner组轮询。原断言保留,无新测试文件/resetModules/真实等待。
  • 最终17文件306项定向unit通过(Vitest9.98秒),group29项单文件墙钟3.919秒(Vitest2.20秒),组相关3文件67项先通过。日志 artifacts/pr6752-r27-{red,green,related,group-timing}.log/.exit,red=1预期,green/related=0。本机仅定向unit,不称完整本机unit。
  • 最终Desktop类型检查exit0、ESLint2文件、test-hygiene360、diffcheck与DCO19源提交签名+2merge豁免通过,日志 artifacts/pr6752-r27-{typecheck,lint,hygiene,dco,ui}.log/.exit。
  • 最终UI pnpm ui:check --changed --theme all 126/126通过92.3秒,pr6752-r27-ui.log/.exit=0,已查看changed-4OJUMz/overview.png及overview-14.png(Light/Dark)。最终源代码后、提交前执行,其后无源改动;真实组件+模拟宿主,organization-quota替换额度hook不计验证;真实双机/上游额度/Windows实机未联调。
  • 故障半径只在本机成员的额度展示准入;不新增远端读取、不改变共享目录/link/relay/transport恢复、权限边界、preload/wire、路由、发送前或服务端。

历史4df41c4d8070修订(2026-10-28):修复 r4391177398。仅remoteDeviceUsageMirror与既有卡片测试,2文件72增3删。

  • live卡的显式恢复(已有重连epoch、回前台或重开)重新探测旧负缓存的能力;普通15秒轮询仍受15分钟unsupportedUntil约束。已有旧请求pending时,仍有效的每卡live token也允许补读越过旧请求刚写入的“不支持”缓存;收起/隐藏/clear/owner清掉token后不启动该探测。默认消费者和native Codex原有能力恢复不变。
  • 三来源(Claude/xAI/旧Codex)真实卡hook/mirror+模拟宿主reader回归先复现已落定负缓存阻止重连;只修立即调用后,又分别复现pending旧请求在重连后才写TTL的失败,再修队列。最终每源覆盖settled/pending/cancel:普通消费者始终挂载、无关peer无效、恢复更新82%、仍不支持就再次退避、普通轮询不反复探测、收起取消旧队列、重新展开可重新确认能力。原断言保留,无新增测试文件/resetModules/真实等待。
  • 最终17文件305项定向unit通过(Vitest8.41秒),卡片41项单文件墙钟4.764秒(Vitest3.36秒)。日志 artifacts/pr6752-r26-{red,pending-red,green,related,card-timing}.log/.exit,red/pending-red均3失败为预期,green/related=0。本机只有定向unit,不称完整本机unit。
  • 最终Desktop类型检查exit0、ESLint2文件、test-hygiene360、diffcheck及DCO18源提交签名+2merge豁免通过。日志 artifacts/pr6752-r26-{typecheck,lint,hygiene,dco,ui}.log/.exit。
  • 最终UI pnpm ui:check --changed --theme all 126/126通过91.2秒,pr6752-r26-ui.log/.exit=0,已查看changed-m8bVd0/overview.png及overview-14.png(Light/Dark)。最终源代码后、提交前执行,其后无源改动;真实组件+模拟宿主,organization-quota替换额度hook不计验证;真实双机/上游额度/Windows实机未联调。
  • 故障半径仅当前目标/账号的live展示读取;复用既有重连通知,不增加远端探测通道,不修改共享目录/link/relay/transport恢复、权限边界、preload/wire、路由、发送前或服务端。

历史da51e1dcf4ae修订(2026-10-27):修复 r4390515501。仅GroupMemberQuota及既有组件测试,2文件82增3删。

  • 记录当前owner/目标/relay连接中由ready目录确认的在线证据。组缓存仍offline时,无关设备引起的目录loading/error及保留在线行不再卸载已确认额度卡;首次未确认的loading/error仍停读,初始/重连栅栏不变。
  • 目标自己的offline/关闭远控presence、目录移除/离线/关闭远控及relay中断清除确认;本机控制禁用始终阻止读取,重新允许可沿用仍有效的目标在线证据。owner/目标隔离,fresh presence和新ready目录仍可按既有规则恢复,不更改共享目录或连接恢复。
  • Unit经真实GroupMemberQuota验证首次ready与offline→新ready两条回归,修复前均在后续loading时卡片消失,修复后loading/error及无关设备数组更新仍展示并保持provider/quota目标。另断言目标offline后旧数组不能恢复、新ready可恢复、本机撤权/再允许、relay断开及新连接必须重新核验。原断言未放宽,无新测试文件/resetModules/真实等待。
  • 最终17文件302项定向unit通过(Vitest6.65秒),group28项单文件墙钟3.085秒(Vitest1.87秒)。日志 artifacts/pr6752-r25-{red,green,related-final,group-final-timing}.log/.exit,red=1预期,最终green/related=0。本机仅定向unit,不称完整本机unit。
  • 最终Desktop类型检查exit0、ESLint2文件、test-hygiene360、diffcheck及DCO17源提交签名+2merge豁免通过。首次typecheck发现新fixture误用了presence字段,已按真实类型补齐并重新验证302项,原类型失败不作通过证据。日志 artifacts/pr6752-r25-{typecheck-final,lint-final,hygiene,dco,ui}.log/.exit。
  • 最终UI pnpm ui:check --changed --theme all 126/126通过91.7秒,pr6752-r25-ui.log/.exit=0,已查看changed-aakJEb/overview.png及overview-14.png(Light/Dark)。最终生产代码后执行,之后只补测试presence字段;真实组件+模拟宿主,organization-quota替换额度hook不计验证;真实双机/上游额度/Windows实机未联调。
  • 故障半径仅目标额度卡读取准入;不新增远端探测,不改共享device-link/relay/transport恢复、权限边界、preload/wire、路由、发送前或服务端。

历史f28719002ac5修订(2026-10-27):修复 r4390277632。仅4文件79增29删(3个生产hook及既有卡片测试)。

  • 远端 Claude/xAI/旧 Codex 的 live 镜像接收既有重连 epoch,变化时复用同一个观察 effect 与每卡 token,取消旧的全局 refreshQueued 重连入口。关闭/隐藏卡片会取消该卡排队的重连补读,即使普通 spend/weekly 消费者始终订阅;另一张 live 卡仍打开时保留其补读并共享一次请求。
  • 首次展开继续共享在途读,回前台/重开和重连均前台补读;15秒定时读取不排额外在途请求。默认消费者忽略可选 epoch,普通60秒共享原生读取及组 native Codex 的单entry重连探测保持不变;本机卡不经过这条远端恢复路径。
  • Unit 回归经真实 useDeviceProviderSubscriptionCard/mirror 与模拟宿主 reader,三来源均先复现收起后仍多一次 RPC。最终覆盖 open/collapsed/hidden/another-live-card 四种结果:普通消费者一直挂载、旧请求pending、无关peer不触发、目标peer重开,仍打开立即更新82%,关闭/隐藏不再发读,另一张live卡保留一次补读。没有新增测试文件、模块重置、真实等待或弱化原断言。
  • 最终17文件300项定向unit通过(Vitest5.81秒),其中卡片38项单文件墙钟4.547秒(Vitest3.19秒);日志 artifacts/pr6752-r24-{red,green,related,card-timing}.log,red中三来源预期失败,其余exit0。本机仅定向unit,不称完整本机unit。
  • Desktop类型检查exit0、4文件ESLint、test-hygiene360、diffcheck与DCO16源提交签名+2merge豁免通过。日志 artifacts/pr6752-r24-{typecheck,lint,hygiene,dco}.log与.exit。
  • 最终UI pnpm ui:check --changed --theme all 126/126通过91.1秒,pr6752-r24-ui.log/.exit=0;已查看changed-mvfZW9/overview.png及overview-14.png(Light/Dark),最终生产代码后、提交前执行,其后无源改动;真实组件+模拟宿主,organization-quota替换额度hook不计验证,真实双机/上游额度/Windows实机未联调。
  • 故障半径只在目标设备/账号的展开额度卡补读:复用既有通知,不改device-link/relay/transport重试与恢复,不新增远端探测,不影响其他peer、普通消费者或任务请求;无权限边界、preload/wire、路由、发送前或服务端改动。

历史9342c50b70c4修订(2026-10-27):修复 r4389934292 / r4389934308。8文件170增25删,范围仅组成员额度查询/展示刷新。

  • 初始 relay online seed 或第一条 online 推送对应 loading/error 目录时,也建立恢复栅栏。保留的旧 online 行不能启用 provider/额度读取,当前目标的新 online presence 或随后成功发布的新 ready 目录才恢复;无关 peer 无效。正常 ready 初始目录和已确认连接后短暂重拉失败的行为保留,不改变共享设备目录/连接恢复。
  • 远端 Claude/xAI/旧 Codex 镜像增加组 live 卡独立观察模式。首次展开共享普通消费者的在途读;回前台或最后一张 live 卡收起后重开,才对恢复前已 pending 的读排一次即时补读,其他普通消费者仍挂载也有效。每卡 token cleanup 取消,clear push/owner 切换使旧队列失效。默认 mirror、普通 60 秒读取、native 重连能力探测与负缓存保持不变。
  • 两条初始目录回归及三种来源的恢复回归修复前均失败;真实卡 hook/mirror 配模拟宿主 reader 覆盖首次共享、回前台/重开后立即更新至82%、再次收起取消补读,另验证 clear/owner 失效。既有控制测试补上当前目标的新 presence,以独立验证授权;OwnRemoteProviders 两条精确期望补 live:false,设备/账号/额度断言未放宽。无新增测试文件、模块重置或真实等待。
  • 最终17文件297项定向unit通过(Vitest6.13秒)。单文件墙钟:group26项2.936秒(Vitest1.89)、card35项3.322秒(2.38)、mirror31项2.425秒(1.48)、OwnRemoteProviders13项3.358秒(2.41)。日志 artifacts/pr6752-r22-r23-{red,green,related-final,group-timing,card-timing,mirror-timing,own-timing}.log;green-first/最初related为旧fixture/精确可选参数尚未同步的中间失败,已修并重验,最终 related-final.exit=0。
  • Desktop typecheck exit0,8文件ESLint、test-hygiene360、diffcheck、DCO15源提交签名+2merge豁免通过。日志 artifacts/pr6752-r22-r23-{typecheck,lint,hygiene,dco}.log/.exit=0。
  • 最终UI pnpm ui:check --changed --theme all 126/126通过93.0秒,pr6752-r22-r23-ui.log/.exit=0;已查看 changed-2Pw2SD/overview.png及overview-14.png(Light/Dark)。最终生产代码后执行;之后仅修测试精确期望,生产代码未变。真实组件+模拟宿主,organization-quota替换额度hook不计验证;真实双机/上游额度/Windows实机未联调,本机仅定向unit,不称完整本机unit。
  • 故障半径仅该 live 卡的目标读取准入与单设备/账号镜像补读;不增加远端探测、不改共享link/relay/transport恢复、权限边界、preload/wire、路由、发送前或服务端。

历史 8364849 修订(2026-10-27):修复 r4389675729 / r4389675738。仅改 GroupMemberQuota 与既有组件测试(2文件107增11删)。

  • relay从connecting/stopped回online时,记录当时目录,要求当前目标的新online presence或本次连接之后成功发布的新ready目录,再恢复provider/quota读取。连接中已加载的旧目录、失败后保留的online行及无关peer推送不能恢复。新目录成功确认后,后续临时重拉失败仍保留已验证状态;下一次relay中断再核验。
  • 有效的本机完整disabledControlDeviceIds快照同时裁决允许/禁用,重新允许后不再被旧目录controlEnabled:false阻挡。既有getState也只在确实提供数组时作为本机真相;旧端缺字段沿用目录许可,不推断授予。匹配目录行/目标在线和远控能力/relay在线及owner、迟到seed栅栏保留,远端presence不能授本机控制。
  • 四项最小回归先红后绿:恢复证据presence/directory两分支、控制快照push/seed两分支。新目录确认后后续重拉失败不应再阻断的分支也先复现失败再修复。原relay恢复fixture补上新presence/新目录,保留原断言,并新增恢复前仍无卡的断言;无新增测试文件/模块重置/真实等待。
  • 17文件290项定向unit通过(Vitest7.65秒),group单文件24项墙钟3.885秒(Vitest2.56秒)。日志 artifacts/pr6752-r20-r21-{red,generation-red,green,related-final,group-final-timing}.log;green-first为新门禁下旧恢复fixture尚未补新证据的中间失败,不作通过证据,最终green/related均通过。
  • Desktop typecheck exit0、2文件ESLint、test-hygiene360、diffcheck、DCO14源提交签名+2merge豁免通过,日志 artifacts/pr6752-r20-r21-{typecheck,lint,hygiene,dco}.log/.exit=0。
  • 最终 UI pnpm ui:check --changed --theme all 126/126通过92.6秒,pr6752-r20-r21-ui.log/.exit=0;已查看 changed-dC0Xyh/overview.png及额度卡overview-14.png(Light/Dark)。最终生产代码后、提交前检查,其后未改源;真实组件+模拟宿主,organization-quota替换hook不计验证。真实双机/上游额度/Windows实机未联调;本机仅定向unit,不称完整本机unit。
  • 故障半径仅展开额度卡的目标查询准入:不新增远端探测,不改变共享设备目录、link/relay/transport恢复,不改权限边界、preload/wire、路由、发送前或服务端。

历史 0f01b74 修订(2026-10-27):修复 r4389409976 / r4389409994 / r4389410005。

  • 本机 Claude/xAI 的订阅缓存增加仅 live 卡启用的观察模式:首次展开共享在途查询;隐藏恢复/重新展开时保留旧请求结果,结束后补读一次,补读失败仍保留已成功的数据。队列随卡 cleanup 取消,clear push / owner 切换 / 显式新读作废旧结果;普通消费者与显式刷新继续最新请求优先。live 的15秒读取共享在途请求,xAI live 挂载不再与默认失效effect重复发请求;普通卡失效刷新不变。
  • 远端额度目标仅在 relayStatus===online 时启用,connecting/stopped 停止 provider/额度读取与轮询;初始 unknown 仍等待既有 getState,迟到presence不能恢复非在线relay。本机卡不受影响。
  • 保留既有 onControlTargetChanged 的本机 disabledControlDeviceIds,目录重拉失败或旧许可快照不能撤销它;目标新 online presence 也不能重新授予本机控制。初始控制状态复用原 getState,独立 revision 保证旧 seed 不能覆盖更新的撤权推送,owner/卸载栅栏与取消订阅保留。
  • 最小回归先红后绿:Claude/xAI 两条真实hook pending→隐藏→恢复、relay connecting、目录重拉失败时本机撤权共4失败。修复后通过,并在既有cache测试补 clear/unmount取消(另一普通消费者保持挂载)及默认并发新读优先;撤权用例还验证无关目标、迟到seed、旧目录/新presence均不恢复,明确重新允许后才恢复。既有断言未放宽;没有新增文件/模块重置/真实等待。
  • 17文件286项定向unit通过(Vitest8.71秒);改写测试单文件墙钟 group20项4.491秒(Vitest3.37秒)、card32项4.716秒(3.16秒)、cache27项2.869秒(1.74秒)。日志 artifacts/pr6752-r17-r19-{red,green-final,related,group-timing,card-timing,cache-timing}.log。card的Claude/xAI回归走真实hook/cache+模拟宿主reader,保留原账号/设备断言。
  • Desktop typecheck exit0,8文件ESLint、test-hygiene360、diffcheck与DCO13源提交签名+2merge豁免通过。日志 artifacts/pr6752-r17-r19-{typecheck,lint,hygiene,dco}.log/.exit=0。
  • 最终 UI pnpm ui:check --changed --theme all 126/126通过97.0秒;pr6752-r17-r19-ui.log/.exit=0,已查看 changed-mE96VI/overview.png与额度卡overview-14.png(Light/Dark)。最终源代码后、提交前检查,此后无源改动;真实组件+模拟宿主,organization-quota替换hook不计验证。真实双机/上游额度/Windows实机未联调;本机只有定向unit,不称完整本机unit。
  • 故障半径:只影响展开额度卡的本机单账号查询及目标设备的只读查询准入;恢复仅补读该账号,不重启或改变共享link/relay、transport重试、任务或其它peer。取消队列/默认读取优先级、目录失败/目标presence、relay/owner栅栏均由真实生产入口回归验证。无preload/wire/服务端、路由或发送前核验改动。

历史 c933263 修订(2026-10-27):修复 r4389193553 / r4389193568。

  • 目录请求 loading/error 时,组内离线标记优先于保留的旧 online 行;未观察到当前目标新 online presence 前,不启用 provider / 额度读取。匹配目录行与本机控制许可仍必需;新 ready 目录或目标在线推送可恢复读取,无关设备推送无效。复用已有目录请求状态,不改共享目录或连接恢复。
  • 本机原生 hook 的可选 live 观察模式区分首次展开与恢复:首次卡片共享普通消费者的在途 RPC,两张同时展开卡也不排补读;inactive→active 或最后 live 观察者离开后重新展开时,才在旧请求结束后补读一次。普通消费者、显式刷新保留原请求覆盖行为,clear/auth/manual 版本失效与卸载取消队列保留。
  • 先红后绿:error/loading 旧在线目录两项失败、首次共享查询的尾随 RPC 一项失败,修复后通过;另保留收起重开且普通消费者仍挂载时的补读分支。真实组件 / live hook 验证旧快照不显示、首次 91% 不额外读、重开更新96%,已有本机 pending 恢复73%、clear/unmount队列取消等回归继续通过。
  • 13 文件 229 项定向测试通过(Vitest6.82秒);两份修改测试单文件墙钟 GroupMemberQuota 3.459秒(18项/Vitest2.44秒)、useDeviceProviderSubscriptionCard 4.469秒(30项/Vitest3.30秒)。现有本机hook18项也通过,仅把可选参数改为 live,未放宽断言。没有新增测试文件、模块重置或真实等待。日志 artifacts/pr6752-r15-r16-{red,green,related-final,group-final-timing,card-timing}.log。
  • Desktop typecheck exit0,6文件ESLint、test-hygiene(360files)、diffcheck、DCO(12源提交签名+2merge豁免)通过。日志 artifacts/pr6752-r15-r16-{typecheck,lint,hygiene,dco}.log 与对应.exit。
  • UI pnpm ui:check --changed --theme all 126/126通过(93.3秒),pr6752-r15-r16-ui.log/.exit=0;已查看 changed-2I61nf/overview.png 与额度卡 overview-14.png(Light/Dark)。这是本次最终生产改动的真实组件+模拟宿主检查,organization-quota的替换hook不计验证;真实双机/上游额度/Windows实机未联调。本机只有定向unit,不称当前head完整本机unit。

历史 b66a996 修订(2026-10-27):修复 r4388718323 / r4388718335。只为组成员原生额度镜像开启共享条目级重连观察,每个设备/账号只有一份观察者;重连探测可越过旧“不支持”缓存,普通 15 秒轮询仍保留 15 分钟退避。旧请求在重连后才报不支持时,队列中的恢复探测同样有效;收起/隐藏后注销观察者,重开时重新确认能力。额度卡调用现有 UI 重连 epoch hook 时显式传入已知在线初值,首次普通在线 presence 不再误排第二读;其他调用保留默认语义,真实 relay、peer 与离线→在线恢复仍补读。未修改 device-link 传输重试、共享 relay、路由、发送前或服务端。

  • 原 3 项最小回归先红后绿,最终在既有卡片文件补 4 个时序分支:已落定的不支持、重连后迟到的不支持、无观察者期间升级后重开、首次普通在线 presence。两个卡片共同消费同一账号,并模拟桥接向不同订阅者克隆事件,断言仍只有一次原生探测;失败后普通定时读取继续退避,新连接再探测。初次在途成功 91% 不被重复失败回包清掉,真实 relay 与离线→在线仍更新至 96%。
  • 13 文件 225 项定向测试通过:卡片 28 项,另 12 文件 197 项,含既有默认 epoch、远端草稿与文件树回归。卡片单文件墙钟 4.007 秒(Vitest 2.79 秒);没有新增测试文件、重置模块或真实等待。日志 artifacts/pr6752-r13-r14-{red,green-final,final-check,card-final-timing,related}.log。
  • 最终 Desktop typecheck exit0(pr6752-r13-r14-typecheck-final.log/.exit=0)、5 文件 ESLint、test-hygiene(360 files)、diff check、DCO(11 个源提交签名、2 merge 豁免)通过。
  • 最终 pnpm ui:check --changed --theme all 126/126 通过(92.0 秒),pr6752-r13-r14-ui-final.log/.exit=0;已查看 changed-fgdIGY/overview.png 与额度卡 overview-14.png,含 Light / Dark。真实组件+模拟宿主,organization-quota 的替换 hook 不计验证;真实双机/上游额度/Windows 实机未联调。最终修订后重新执行,不用中间 UI / typecheck 替代最终结果。

历史 2c7782c 修订(2026-10-27):修复新复审 r4388475435 / r4388475446。远端成员必须有匹配的设备目录行且控制允许;目录初始失败、目标行缺失或移除时关闭 provider/额度读取,在线 presence 不能代替本机控制许可。实时额度卡同时观察既有 data-app-hidden 原生隐藏信号,在 visibilityState 仍为 visible 时也暂停,本机/远端初始隐藏不读、恢复后补读。未改共享可见性 hook、路由、发送前、wire 或服务端。

  • 两条问题的 3 项回归先红后绿;通过真实额度组件 / live hook + 既有原生隐藏闸门验证。原有目录恢复、relay 初始状态/迟到回复、owner 栅栏、本机 pending 补读与普通 60 秒读取断言均保留。既有 relay 测试提供有效目录行以继续独立验证 relay 栅栏;新回归专门覆盖 null、空目录、错误目标、移除与禁用许可。
  • 9 文件共 149 项定向测试通过(两份修订文件 16 + 24 项,另 7 文件 109 项);单文件命令墙钟 GroupMemberQuota 2.296 秒(Vitest 1.39 秒)、useDeviceProviderSubscriptionCard 3.871 秒(Vitest 2.71 秒)。日志 artifacts/pr6752-r11-r12-{red,green,related,group-final-timing,card-timing}.log;红灯 3 项均为预期回归失败,最终全通过。既有 Claude 镜像测试有 React act 提示,测试通过。
  • 最终 Desktop typecheck exit 0(artifacts/pr6752-r11-r12-typecheck-final.log/.exit=0);4 文件 ESLint、test-hygiene(360 files)、diff check 与 DCO(10 源提交签名、2 merge 豁免)通过。类型检查发现的新 fixture 字段与临时括号错误均已修正并重新验证,未通过弱化断言或类型制造通过。
  • 本轮 pnpm ui:check --changed --theme all 126/126 通过(92.7 秒),已查看 changed-QJ8evr/overview.png 与额度卡 overview-14.png;artifacts/pr6752-r11-r12-ui.log/.exit=0。真实组件、模拟宿主,含 Light / Dark;真实双机/上游额度/Windows 实机未联调。organization-quota 替换额度 hook,不计为 hook 验证。

2026-10-27:为解决主分支额度读取更新产生的 4 文件冲突,同步 upstream/main c593cd79157a,签名 merge commit 6f5744e23feb。保留主分支普通远端卡片/模型列表的 60 秒共享读取与原有断言;组成员卡片保留原生优先、旧端兜底、15 秒后台刷新、恢复去重与旧 pending 补读;本机恢复队列和 relay/owner 栅栏不变。未修改路由、发送前核验、协议或服务端。该合并提交的历史验证如下;本轮两条审阅修复后的最新验证见上段。

  • 两个冲突相关测试文件 51 项通过(Vitest 2.39s),包含上游新增与本 PR 既有回归,未删除用例或放宽断言。
  • Desktop typecheck exit 0;4 个冲突文件 ESLint、test-hygiene(360 files within baseline)、dev-docs(10 项)、相对新 upstream/main 的 diff check 全通过。DCO:9 个源提交签名、2 个 merge 豁免,merge 本身亦带 Signed-off-by。
  • pnpm ui:check --changed --theme all:当前合并提交 126/126 变体通过(127.1s);已查看 changed-LAHK8A/overview.png 与额度卡所在 overview-14.png,含 Light / Dark。真实组件与模拟宿主;真实双机、上游额度与 Windows 实机未联调。organization-quota 替换了额度 hook,不计为这些 hook 的验证。
  • pnpm test:unit:related 因同步主分支包含 package.json / 测试基座更新自动回退全量 unit,最终 exit 0;runner 609 passed / 2 既有 skips,所有有必需 unit 的工作区通过(Desktop 598.6s、Mobile 89.0s、maker-core 52.7s),7 个无适用 unit 的包按既有配置跳过。日志 artifacts/pr6752-main-sync-related.log 与 .exit=0。这轮仅 unit tier,不代表数据库、Git 集成或 Windows 实机已在本机验证。

以下为 46693c2d6f 的历史验证记录:

pnpm --filter desktop exec vitest run src/renderer/components/settings/__tests__/useDeviceProviderSubscriptionCard.test.ts src/renderer/features/provider-group/__tests__/GroupMemberQuota.test.tsx src/renderer/features/provider-group/__tests__/ProviderGroupSection.test.tsx src/renderer/features/provider-group/__tests__/RemoteProviderGroupMembers.test.tsx src/renderer/__tests__/useRemoteDeviceUsage.test.ts src/renderer/__tests__/useCodexRateLimits.test.ts src/renderer/__tests__/useRemoteClaudeSubscriptionUsage.test.ts src/renderer/__tests__/providerSubscriptionCard.test.tsx src/renderer/components/settings/__tests__/OwnRemoteProviders.test.tsx --maxWorkers=1
结果:9 文件、139 项通过,Vitest 27.71 秒;既有 Claude 镜像用例有 React act 提示,测试通过。

pnpm --filter desktop run --if-present typecheck
结果:通过。

pnpm --filter desktop exec eslint src/renderer/hooks/remoteDeviceUsageMirror.ts src/renderer/hooks/useRemoteDeviceUsage.ts src/renderer/hooks/useCodexRateLimits.ts src/renderer/components/settings/useProviderSubscriptionCard.ts src/renderer/features/provider-group/GroupMemberQuota.tsx src/renderer/__tests__/useRemoteDeviceUsage.test.ts src/renderer/components/settings/__tests__/useDeviceProviderSubscriptionCard.test.ts src/renderer/features/provider-group/__tests__/GroupMemberQuota.test.tsx src/renderer/components/settings/__tests__/OwnRemoteProviders.test.tsx
结果:此前整组检查通过,本轮再次检查 useCodexRateLimits.ts、useProviderSubscriptionCard.ts 及 3 个相关测试文件,通过。

pnpm check:test-hygiene
pnpm check:dev-docs
pnpm check:dco
git diff --check
结果:本轮 test-hygiene、DCO、diff 检查通过;dev-docs 此前通过,本轮无文档改动未重复运行。

pnpm ui:check --changed --theme all
结果:2026-10-24 本机恢复补读修订后重新执行,60/60 变体通过,已查看 overview.png 和包含额度卡的 overview-6.png(changed-kCvaSs);真实组件与模拟数据,包含 Light / Dark。

pnpm ui:check --page provider-share-insights --case all --theme all
结果:同步主分支后 30/30 变体通过,已查看 overview.png 与 overview-5.png。

pnpm ui:check --entry artifacts/provider-group-quota-refresh.tsx --case all --theme all --viewport 720x400
结果:同步主分支后 4/4 变体通过,真实订阅 hook / 额度卡,模拟原生与旧端回包,已目检 Light、Dark。

格式检查说明:整文件 Prettier 检查的 6 个文件在基线 HEAD 已不符合格式,本次未做无关的整文件重排;基线符合格式的 useRemoteDeviceUsage.ts 已格式化并通过检查。

合并期间的 UI 检查说明:未提交合并状态下的 --changed=upstream/main 按旧 merge-base 多选了主分支页面;整批 344 变体在 codex-reset 的测试浏览器关闭后连续报 Target page, context or browser has been closed,不计为通过。随后相关额度页面 30 场景与原生/旧端 4 场景独立重跑通过。最终合并提交后正常 --changed 选出本 PR 的 10 个文件、60 个变体,全部通过;未修改 UI 检查器或放宽断言。

新增测试价值:

  • useDeviceProviderSubscriptionCard.test.ts:从真实 useDeviceProviderSubscriptionCard 入口验证卡片优先显示原生额度,以及定时、隐藏、回前台、目标重连、卸载和本机刷新时序。依据是本次用户反馈及 provider-groups.md §10。原有覆盖仅验证账号位置;最小失败输入是镜像已用 50%、原生已用 73%,且没有原电脑面板或用量推送。另覆盖旧请求 pending 时的重连、回前台、成员恢复在线、收起后重开,原生与旧端镜像均须在旧请求失败后补读一次,不等定时器;以及收起/断链期间漏掉账号切换 clear、原生补读失败但新账号镜像已到达时,必须显示新账号 82% 已用而非旧原生 73%,原生恢复后重新优先使用原生值。审阅 r4355398578 新增两条真实 hook/镜像回归:恢复前没有旧请求在途,回前台或成员恢复在线时原生成功返回 91%,重复请求若失败不能把界面降回镜像 50%;须只读一次,已有旧请求的四种补读路径仍通过。审阅 r4355497194 新增实际请求调度器回归:同电脑 6 个账号的 12 路慢定时读取最多只启动 4 路,同时新展开的第 7 个账号立即显示原生额度。审阅 r4362108215 补齐本机真实 hook 回归:初始原生查询 pending 时隐藏再回前台,保留第一次成功的 73%,只排队一次补读,补读失败仍保留 73%;原用例只覆盖远端恢复与本机定时。新增回归先红后绿。tier 为 unit,使用内存宿主与假计时器;最新 16 项单文件命令墙钟 4.765 秒(Vitest 2.86 秒)。

  • useRemoteDeviceUsage.test.ts:从真实远程原生额度 hook 验证两个消费者共享查询、非同形用量推送不能覆盖原生结果或触发循环、clear 后迟到结果失效,以及旧端具名账号无回显时拒绝采用。依据是同一查询修复及账号隔离合同;原有镜像测试未覆盖 RPC 与推送形状不同。最小失败输入为两个卡片共享一个原生查询、查询完成前收到 clear;具名回包的既有用例扩展为先缓存有效值、再收到无回显/无效/null 回包,确认旧缓存同样失效。tier 为 unit;最新单文件命令墙钟 2.25 秒(Vitest 1.43 秒)。

  • GroupMemberQuota.test.tsx:通过真实展开组件验证审阅 r4344705878。原覆盖仅检查离线时停止读取,未覆盖恢复;最小失败输入是组状态仍缓存 offline、同账号设备列表已更新为在线且允许控制,应立即显示目标额度,实际离线或任一控制开关关闭仍停止读取。依据为 provider-groups.md §10;回归先红后绿,tier 为 unit,使用现有目录与卡片边界 fake,不推进 15 秒计时器;审阅 r4355497190 新增目录失败保留旧离线数组时的目标在线推送回归:立即显示目标额度,同时验证错误目标、双方控制开关、切换目标、relay 停止及 owner 切换不能误恢复,卸载清理订阅。先红后绿;审阅 r4356185973 再补最小回归:目录与组均旧在线,relay stopped 后立即显示离线、清空额度/provider 读取目标,目录随后清空为 null 或仍为旧在线数组、迟到 presence 都不能恢复;本机卡仍显示,relay online 后切回远端可恢复,卸载清理监听。先红后绿;审阅 r4356429402 补齐 5 条先红后绿回归:挂载前已 stopped、初始状态读取失败、两种迟到初始回复不能覆盖新推送、旧 owner 回复失效;旧测试只覆盖挂载后的 stopped 推送。最新 15 项单文件命令墙钟 2.36 秒(Vitest 1.39 秒)。

  • useCodexRateLimits.test.ts:真实本机原生 hook,新增 clear / unmount 两个队列取消分支。另一个普通消费者仍挂载时,收起实时卡也必须取消该卡补读;账号清空后不恢复旧结果。原 clear/unmount 测试没有排队请求;最小输入为两个消费者、一次 pending、实时卡隐藏/恢复后清空或收起。unit;收起仍有其他观察者的回归先红后绿;既有并行消费者较新请求优先、授权完成与旧回复隔离测试保持通过。最新 18 项单文件墙钟 2.955 秒(Vitest 1.95 秒)。设置卡原测试仅补齐可选参数的精确期望,保留 providerId 与套餐显示断言;该文件 4 项墙钟 4.671 秒(Vitest 3.07 秒)。

CI 结果(2026-10-28 01:54更新,head未变):当前 630863b2bb07432f5fb07912ab4fc55e7db5b993 的 client-ci run40552373178 attempt1仍在运行,已知两个失败,不能合并。DCO及提交后/正文更新后的两条设计依据40552373311、40552617237 SUCCESS;本次正文再更新后的最新设计依据须另看状态。当前head Codex复审于2026-10-27T17:47:18.573930Z完成,has_any_findings=false、has_unresolved_findings=false;实际30resolved/0unresolved。维护者尚无直接Approve。

  • verify-checks job122359261387 在Desktop typecheck失败:packages/maker-core/src/agents/pi/index.ts:4744/4749的harnessHooksEnabled与harnessHookBridge未声明(TS2304,exit2)。已从checkout日志核实CI合成快照805fcd2f7de8b49d0c416e539a46395e2b7d9f62(父为main fcd464bbd570866084a37d5ac3d5d485cd043da9和本PR head)。其PI源码blob与该main及当前upstream/main完全相同,只有这两处引用而无声明;本PR未修改PI。当前head本机typecheck0基于其原有主分支快照,不能替代该CI合成快照。
  • Linux第4分片 job122359262075 的packages/maker-core/src/agents/pi/tests/pi-startsession-cleanup.test.ts另有9项Subagent harness hook失败(回执未调用/一项超时)。同一CI快照的实现和该测试均与main fcd464bb完全相同,本PR未改这些路径;不直接视为偶发,不改断言或超时,不用本机旧PI结果代替。该分片Desktop部分成功。其他尚在运行的分片没有完整结束证据。
  • 定位证据:artifacts/pr6752-6308-{verify-checks-failure,linux4-failure}.log与verify-checks-analysis.json。仅fetch/read比较,未改源码、commit/push或重跑任何CI;上游当前仍fcd464bb且保留这些错误。后续跟进上游修复后再验证PR门禁,不扩大本次供应商组额度范围到PI。仍需完整CI和维护者直接Approve,不能以无新增审阅绕过保护。

历史221e7cecee42的client-ci run40548592267 attempt1本轮已核实完整SUCCESS:Linux/Windows各4分片、verify-checks/verify、Windows汇总、Windows runner/DB与Desktop Git integration全成功,DCO及两条设计依据SUCCESS。其自动复审于2026-10-27T17:25:07Z完成,提出本轮29/30;旧308项/完整CI不能代替新6308验证。

历史70ad6ec05d66的client-ci run40543861967 attempt1本轮已核实完整SUCCESS:Linux/Windows各4分片、verify-checks/verify、Windows汇总、Windows runner/DB与Desktop Git integration全成功,DCO与两条设计依据SUCCESS。其自动复审于2026-10-27T16:56:41Z完成,提出本轮第28条;306项/完整CI均为历史,不能代替新221e验证。

历史4df41c4d8070的client-ci40541096837 attempt1在本轮推送后仍in_progress:Linux四分片、verify-checks/verify、Windows runner/DB及Desktop Git integration已成功,Windows四分片仍执行中,不能称完整CI全绿,也不能替代新70ad head。DCO和两条设计依据成功。其自动复审于2026-10-27T16:38:42Z完成提出本轮第27条;旧305项为历史。
历史da51e1dcf4ae的client-ci run40532784329 attempt1已完整SUCCESS,Linux/Windows各4分片、verify-checks/verify、Windows汇总、Windows runner/DB与Desktop Git integration全成功,DCO及三次设计依据均SUCCESS。其自动复审15:51Z失败后一次手动重试于2026-10-27T16:14:45Z完成,提出本轮第26条;不能以旧302项/CI代替当前4df验证,不重复旧请求。
历史f28719002ac5的client-ci run40527635612 attempt1已完整SUCCESS:Linux/Windows各4分片、verify-checks/verify、Windows汇总、Windows runner/DB及Desktop Git integration全成功,DCO及两条设计依据SUCCESS。自动复审于2026-10-27T15:18:34Z完成,提出本轮第25条。其300项/完整CI均为历史,不能代替新da51验证。
历史9342c50b70c4的client-ci40524505896 attempt1在本次推送后仍in_progress:Linux四分片、verify-checks/verify、Windows3/4、Windows runner/数据库及Desktop Git integration成功,Windows1/2尚执行中;不能写为全绿,也不能代替新f287 head。两条设计依据SUCCESS。自动复审于2026-10-27T14:59:35Z完成,提出本轮第24条;其297项本机结果均历史。
历史8364849c41b2的client-ci run40520108271 attempt1已completed/SUCCESS,DCO及两条设计依据SUCCESS。自动复审于2026-10-27T14:31:18Z完成,提出本轮22/23两条;其290项本机验证与CI不能代替当前9342 head。
历史 0f01b74 的client-ci run40516586151 attempt1本轮已读到完整SUCCESS:Linux/Windows各4分片、verify-checks/verify、Windows汇总、Windows runner/数据库、Desktop Git integration全部成功。其自动复审2026-10-27T14:08:45Z完成提出本轮20/21两条;其成功CI及286项本机结果不能代替当前8364 head验证。

历史 c933263 的client-ci run40513230578 attempt1在本次新提交前仍执行中,不代表当前head验证。其自动复审于2026-10-27T13:45:02Z完成并提出本轮3条问题;对应修复和验证见本节最上段。

历史 b66a996 的 client-ci run40506834221 attempt1 于2026-10-27T13:09:30Z完整SUCCESS,Linux/Windows各4单测分片、verify-checks、verify、Windows汇总、Windows runner/数据库及Desktop Git integration全成功。其自动复审失败后只发起一次重试,重试于13:24:26Z完成并提出本轮两条问题。它和更早2c/6f的CI均仅为历史,不能替代当前c933 head验证。

CI 排查记录:5ba7d49a42 的 Linux 第 1 分片 在既有 cindySubagentRunner.test.ts 的孤儿进程退出用例出现一次失败。本 PR 未修改 packages/maker-core,前两轮同分片通过;本地 macOS 定向复跑通过。fc3712d82a 的首轮 Linux Desktop 分片 在既有 SQLite Worker 原生绑定测试遇到 5 秒超时,Windows 第 3 分片 的既有导入用例等待进度失败并伴随临时目录清理 ENOTEMPTY;已比对该 CI 合并快照 211e2fb81853,对应测试和实现与本地一致,本地分别 2 项、4 项定向测试通过。整轮结束后仅重跑失败分片和依赖的汇总门禁,第 2 次尝试全部通过;未修改这些实现、测试或 CI 配置。

pnpm --filter @cindy/maker-core exec vitest run src/agents/pi/__tests__/cindySubagentRunner.test.ts -t 'refuses a real signal receipt until the orphan child has exited' --maxWorkers=1
结果:选中的 1 项通过(其余 47 项未选中)。

pnpm --filter desktop exec vitest run src/main/cindy-brain/__tests__/libraryDbWorkerNative.test.ts --maxWorkers=1
结果:2 项通过,Vitest 472ms。

pnpm --filter desktop exec vitest run src/main/bot-import/__tests__/host.test.ts -t 'publishes command env/argv/stdin credentials safely|publishes masked skills and runs original scripts/resources through the existing bridge' --maxWorkers=1
结果:选中的 4 项通过(其余 101 项未选中),Vitest 3.06s。

CI 最新排查:7f57917ebb 的 run 39904867300 attempt 1 已结束,Linux 第 2 分片在既有 rewindNativeBoundarySqlite.test.ts 的首次动态导入 beforeEach 超过 10 秒,Windows 第 3 分片在既有 bot-import 两个桥接用例等待完成时失败并伴随 ENOTEMPTY。已获取 CI 合并快照 50262363ad2a,核对这些测试和直接实现与本地一致,本 PR 未修改它们。本地 bot-import 两项通过;SQLite 首次 setup 超时可重现,单独运行整文件仍为首项 setup 超时、后两项通过。未把该结果称为通过或直接认定偶发,未修改这些测试、超时、实现或 CI;本次额度修订推送后由新 head 的完整 CI 再验证。

本轮 CI 排查:e7ee1ae592 的 Linux 第 1 分片 job120537989566 在既有 cindySubagentRunner.test.ts 的 accepts steering while a child is backing off for automatic retry 中出现 resultReady 为 true 而期望 false。已读日志及实际 fixture,获取 CI 合并快照 2656f3d26bb7;本 PR 未修改 PI 路径。该快照的失败用例与 fixture、runner source 与本地一致,测试文件仅另一条退出确认用例有差异;但 PI 目录其他上游实现有变化,因此本地结果不能证明 CI 合并快照已通过。本地选中该用例通过(1 项,Vitest 1.93 秒,其余 47 项未选中)。未修改测试/超时或重跑旧 head;本次额度修复由新 head CI 验证。

手工验证

macOS 独立 Electron UI 场景,使用真实额度卡与主题、模拟设备接口,已目检 Light / Dark 下的原生查询与旧端回退及改前/改后对照。截图不代表真实双机联调。

未执行的验证

  • 未做真实双机、真实 OpenAI 上游或 Windows 实机联调。
  • 本次合并后的完整跨平台门禁以新 head CI 为准;不把历史 head 的成功当作新 head 验证。

风险

风险分类

  • 无已知风险
  • SQLite / migration
  • system prompt
  • 协议兼容
  • 权限 / 安全 / 用户数据
  • 存量插件兼容(批准状态 / 指纹 / manifest 校验 / 安装布局 / 包格式)
  • 原生层 / fingerprint / OTA
  • 跨平台差异
  • 其他:跨设备只读查询的频率、账号隔离与刷新时序。

影响与回滚

  • 影响范围:供应商组展开的额度卡,以及共享远程用量镜像在最后观察者卸载后重新订阅、旧请求仍在途时的补读。OpenAI 增加已有原生 RPC 的主动读取;订阅卡展开且页面可见期间定时重读。仅作用于目标账号查询;15 秒定时读取复用既有本地后台调度提示,每设备最多占用 4 个后台名额。首次打开和显式恢复仍为前台读取。新增的初始 getState() 为本地 IPC 状态读取,不请求远端或上游。不改变 wire contract、传输重试、断链恢复、共享 relay、权限白名单或路由决策。
  • 降级:原生查询失败、回包无效或旧端不支持时清掉旧原生缓存,使用同账号镜像;具名账号不借用旧端默认账号。用量推送只用于原生快照的权威 clear,避免查询与推送递归。
  • 回滚:回退本 PR 即可恢复原查询行为;无数据库、配置或用户数据迁移。

提交前检查

  • 已 review 完整 diff
  • 每个 commit 都带 DCO 签名(git commit -s,见 DCO)
  • UI 改动已在「UI 变化」注明引用的设计规范章节(不涉及 UI 则跳过)
  • 未提交凭证、令牌或授权文件
  • 已核对受影响的文档,行为变化涉及的旧结论已同步修订(不涉及则无需修改文档)
  • 已确认测试结果或说明未执行原因

Signed-off-by: guyong <guyong@xd.com>
@guyong-zapo
guyong-zapo requested a review from a team as a code owner October 22, 2026 04:49
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-27T17:47:18.573930Z 630863b New commits
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@greptile-apps

greptile-apps Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] 本次修改看起来可以合并,未发现需要阻止合并的问题。

Summary

本次修改让供应商组展开的 OpenAI 额度卡主动查询目标电脑,不再只依赖额度镜像。

  • Expanded provider-group OpenAI cards use native quota data first.
  • Open quota cards refresh while visible and after reconnects.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart TD
  A[展开成员额度] --> B{页面可见且成员可查询?}
  B -->|否| C[停止额度读取与定时刷新]
  B -->|是| D{是否为 OpenAI?}
  D -->|是| E[查询目标电脑原生额度]
  E --> F{原生结果可用?}
  F -->|是| G[按通用额度桶生成卡片]
  F -->|否| H[使用同账号额度镜像]
  D -->|否| I[读取对应订阅额度]
  G --> J[可见期间定时刷新]
  H --> J
  I --> J
Loading

Reviews (1) · Last reviewed commit: "fix(provider-group): refresh expanded ac..." · Reviewed by 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: 306ff9a5fb

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread apps/desktop/src/renderer/components/settings/useProviderSubscriptionCard.ts Outdated
Signed-off-by: guyong <guyong@xd.com>
@guyong-zapo

Copy link
Copy Markdown
Collaborator Author

@codex review

已在 50c6e053d0 修复两条重连刷新意见,并补充先红后绿的回归测试。108 项定向测试、Desktop 类型检查、ESLint、test-hygiene、DCO 与 38 个浅深色 UI 场景通过;PR 正文已同步验证证据。请复审当前提交。

@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: 50c6e053d0

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

@MagicLizi

Copy link
Copy Markdown
Contributor

本 PR 需要维护者确认:改动涉及产品 UI 额度卡的用户可见行为(展开时主动查询目标电脑原生额度、页面前台约每 15 秒刷新、回前台/重连补读、离线恢复读取),并修改了产品规则文档 docs/product-rules/provider-groups.md(审查判据自身变更,新增刷新节奏与查询行为规范)。已开维护者确认讨论:#6757

请维护者直接在本 PR 上 Approve 确认;如需作者修改,请在本 PR 上 Request Changes 并写明要求,作者修改后由维护者再 Approve。维护者确认前,自动流程不会审查或合并本 PR。

@MagicLizi MagicLizi added awaiting-discussion 等待维护者讨论(review-pr) touches:product-ui 改动碰到产品 / UI 面(review-pr 自动维护,仅展示) touches:rules 改动碰到规则 / 规范文档(review-pr 自动维护,仅展示) labels Oct 22, 2026

@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: 5ba7d49a42

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

@guyong-zapo

guyong-zapo commented Oct 22, 2026 •

Copy link
Copy Markdown
Collaborator Author

@makecindy/maintainers 已将自动审阅的 4 条意见全部修复、回复并 Resolve,当前 head 为 fc3712d82ab3a36e94385381be1f8c2e880378df。请按 #6757 对本 PR 的额度查询与刷新行为、provider-groups.md §10 修订进行确认;如认可,请直接在本 PR Approve,需调整的地方请 Request Changes。

当前可审阅结果:展开主动读取目标电脑 OpenAI 原生额度;前台约 15 秒刷新,后台暂停;重连、回前台、成员恢复在线及重新展开时,对跨观察间隔留下的在途查询补读一次;旧端镜像兜底;原生补读失败时丢弃旧账号快照。供应商组路由和发送前核验保持原行为。

本地 8 个测试文件共 113 项、Desktop 类型检查、ESLint、test-hygiene、DCO 和 38 个 Light/Dark UI 场景均通过,PR 正文已同步测试价值与截图。真实双机链路未联调,已在正文说明。

CI 已全部通过:fc3712d82a 的 client-ci 第 2 次尝试 已完成,Linux / Windows 各 4 个单测分片、verify、Windows unit tests 汇总及其余检查均为成功,DCO 和设计依据检查也已通过。首轮既有 SQLite Worker / bot-import 时序失败未在重跑中复现,未修改相关实现、测试或 CI 配置。当前仍等待本 head 的最终复审与维护者 Approve。

@guyong-zapo

Copy link
Copy Markdown
Collaborator Author

@codex review

请复审当前 head fc3712d82ab3a36e94385381be1f8c2e880378df。前 4 条意见均已修复、回复并 Resolve;当前 client-ci 第 2 次尝试、DCO、设计依据检查全部通过,本地 113 项定向测试及 Desktop 类型检查通过。

本 head 的自动复审摘要从 2026-10-22T05:40:40Z 起一直显示 running,超过 20 小时未更新,且没有该 head 的最终复审回执,因此补发本次复审请求。维护者确认 #6757 仍待在本 PR Approve,技术复审结果不替代该确认。

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

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread apps/desktop/src/renderer/components/settings/useProviderSubscriptionCard.ts Outdated
Signed-off-by: guyong <guyong@xd.com>

@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: 3946208de3

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread apps/desktop/src/renderer/features/provider-group/GroupMemberQuota.tsx Outdated
Comment thread apps/desktop/src/renderer/components/settings/useProviderSubscriptionCard.ts Outdated
@guyong-zapo

Copy link
Copy Markdown
Collaborator Author

@codex review

当前 head d80e7f820be0ca04528cd86e4b2e43fcae8ac114 的自动复审在 2026-10-23T03:19:55Z 显示 Failed,未产生新的审阅结果,按摘要提示重试一次。当前完整 client-ci、DCO 与设计依据检查均已通过,7 条既有意见已修复、回复并 Resolve。请复审当前提交。

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

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread apps/desktop/src/renderer/features/provider-group/GroupMemberQuota.tsx Outdated

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

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread apps/desktop/src/renderer/features/provider-group/GroupMemberQuota.tsx Outdated
Signed-off-by: guyong <guyong@xd.com>

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

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Signed-off-by: guyong <guyong@xd.com>
@MagicLizi MagicLizi added the touches:core 改动碰到架构核心路径(review-pr 自动维护,仅展示) label Oct 23, 2026

@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: 6f5744e23f

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread apps/desktop/src/renderer/features/provider-group/GroupMemberQuota.tsx Outdated
Comment thread apps/desktop/src/renderer/components/settings/useProviderSubscriptionCard.ts Outdated

@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: 2c7782c545

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread apps/desktop/src/renderer/components/settings/useProviderSubscriptionCard.ts Outdated
@guyong-zapo

Copy link
Copy Markdown
Collaborator 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: b66a996ddf

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread apps/desktop/src/renderer/features/provider-group/GroupMemberQuota.tsx Outdated
Comment thread apps/desktop/src/renderer/components/settings/useProviderSubscriptionCard.ts Outdated
Signed-off-by: guyong <guyong@xd.com>

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

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread apps/desktop/src/renderer/features/provider-group/GroupMemberQuota.tsx Outdated
Comment thread apps/desktop/src/renderer/features/provider-group/GroupMemberQuota.tsx Outdated
Signed-off-by: guyong <guyong@xd.com>

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

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread apps/desktop/src/renderer/features/provider-group/GroupMemberQuota.tsx Outdated

@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: 8364849c41

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread apps/desktop/src/renderer/features/provider-group/GroupMemberQuota.tsx Outdated
Comment thread apps/desktop/src/renderer/hooks/remoteDeviceUsageMirror.ts Outdated
Signed-off-by: guyong <guyong@xd.com>

@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: 9342c50b70

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread apps/desktop/src/renderer/components/settings/useProviderSubscriptionCard.ts Outdated
Signed-off-by: guyong <guyong@xd.com>

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

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread apps/desktop/src/renderer/features/provider-group/GroupMemberQuota.tsx Outdated
Signed-off-by: guyong <guyong@xd.com>
@guyong-zapo

Copy link
Copy Markdown
Collaborator 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: da51e1dcf4

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread apps/desktop/src/renderer/hooks/remoteDeviceUsageMirror.ts Outdated
Signed-off-by: guyong <guyong@xd.com>

@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: 4df41c4d80

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread apps/desktop/src/renderer/features/provider-group/GroupMemberQuota.tsx Outdated
Signed-off-by: guyong <guyong@xd.com>

@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: 70ad6ec05d

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

@MagicLizi MagicLizi added the touches:large-diff 改动量较大(review-pr 自动维护,仅展示) label Oct 27, 2026
Signed-off-by: guyong <guyong@xd.com>

@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: 221e7cecee

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@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:large-diff 改动量较大(review-pr 自动维护,仅展示) touches:product-ui 改动碰到产品 / UI 面(review-pr 自动维护,仅展示) touches:rules 改动碰到规则 / 规范文档(review-pr 自动维护,仅展示)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants