Skip to content

fix(chat): retain workspace readers across steward navigation - #7393

Merged
huangruiteng merged 2 commits into
mainfrom
codex/chat-history-reading-20261026
Oct 26, 2026
Merged

huangruiteng merged 2 commits into
mainfrom
codex/chat-history-reading-20261026

Conversation

@loopx-agent

@loopx-agent loopx-agent commented Oct 26, 2026 •

Copy link
Copy Markdown
Collaborator

Moving from steward Chat to a Goal changed the component tree and unmounted the stateful workspace. Its background reader then forgot earlier Sessions, so new results stopped refreshing until the conversation was reopened.

Keep the workspace in one stable React position and share the existing App steward source resolver with it. Pending or failed discovery still gates queue access; explicit original-Session routes remain pinned. This changes component lifetime, with no new configuration, source authority, message transformation or model execution.

The existing packaged, real HTTP/store regression failed on main at c6462f902a1c6a519eb4752b62637580f0e9cd35 and passes here: 451 original rows, full long text, interrupted-page recovery, quiet reads, background revisions across navigation, links, draft retention and no Turn creation. The paired RFC checkpoint records the newly qualified continuation path while retaining the earlier timeout and native/live-provider limits. The missing-only recovery smoke now compares Session paths instead of freezing the pre-pagination query string; its one-read and identity assertions remain. Additional validation covers the actual isolated HTTP/Core/SQLite original/peer selection, source denial/retry, empty default address parameters and draft preservation; native protocol requests remain 12→12 and there are no Turn POSTs.

Chat build/TypeScript, chat-route contracts, startup refusal, history recovery, the whole research-history journey and the populated workspace showcase passed. Premerge: four direct and sixteen selected automatic checks passed; three image holds were separately inspected, including pixels and PNG metadata. No CI qualification, merge or installed App adoption is claimed.

Visual evidence

Tested UI: 1122853ec804a2fba60dc025ac06a49024bd90e1, packaged source build with disposable real HTTP/SQLite and synthetic provider/messages. Captured at 61133fc0fe08b1bf5db74c582f5d2938a2b47652; the reviewed head adds only the paired RFC checkpoint, and its UI files are byte-identical. The composition is unchanged; these captures qualify retained content and recovery, not a visual redesign. The request-inventory failure shown in the synthetic header is outside this fixture's conversation source and remains visible. There is no persistent preview.

Original conversation, desktop Long original record, 390px Source denied, 390px
Original conversation and retained draft Complete long original content and draft Source unavailable with retry and settings

Broader installed-App interaction, real input-method behavior, cross-conversation scroll restoration and the complete cross-channel journey retain their existing qualification boundaries.

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Reviewer: model_agent · gpt-6.1-sol · OpenAI · runtime_reported · effort=max

Approval conclusion (author-owned PR; GitHub blocks formal self-approval)

动机

在管家对话与Goal之间切换、等待旧会话结果的工作台用户。先打开长管家历史,再切到Goal;旧版停止读取较早会话的新结果,修复后后台读回修订,失败恢复后回到原对话仍保留草稿和完整结果。切页后原会话后台修订继续更新,草稿与原结果身份保留;来源不可用仍阻止普通队列准入。不新增配置、模型调用、会话、消息改写或来源权限,也不宣称原生App和完整Lark旅程验收。原生App采用、真实IME、Lark双端和完整研究工作台的其余验收仍沿既有任务继续。

改动思路

保留稳定React子树并复用现有来源读回即可修复丢失的读取状态,无须新增缓存、调度器或权限分支;源码中的既有准入guard继续独立于可见性生效。
当前PR只恢复工作台切页时的会话读取生命周期,并同步已有RFC的中英文验收记录;不扩大完整原生或跨端验收。

旧路径在普通管家对话外直接渲染工作区,进入对话后又包一层入口组件。React因此销毁原工作区,较早会话的后台观察也一起丢失。新路径始终保留同一组件位置,把入口已经核验的来源结果传给原消费者。来源失败时保留组件状态,同时由既有准入条件停止普通历史、连接和发送;只隐藏界面并不能代替权限判断。提高重试频率或另建全局缓存都没有修到这个生命周期根因。这里用文字说明路径,无未验证的流程图。

具体改动

验收依据是变更前的 docs/architecture/rfcs/app-conversation-and-async-inbox-v0.md,版本 c6462f902a1c6a519eb4752b62637580f0e9cd35;本次修改的是已有验收记录,不能拿改过的文字反过来证明实现正确。

条目 此head的处理与证据
original-history-recovery 已实现:原读取器跨导航保留;完整默认HTTP/store场景覆盖451条、第二页失败恢复、后台修订、原链接及草稿。
exact-source-and-no-replay 已实现:原来源与Session继续由既有owner核验;真实隔离后端验证原会话/peer分离、拒绝/重试及空可选地址参数,3个Session、12次原生协议请求保持,零Turn投递。
native-live-qualification 保留缺口:原生App、真实输入法与完整双端旅程继续原产品任务,本PR不借打包结果关闭它们。

关键代码讲解

  • AppStewardEntry:复用原hook,按当前入口范围读取;同一工作区子组件始终挂载,阻塞时只改变呈现,原错误和恢复入口仍明确可见。
  • PersonalGoalHome:接收同一来源读回,删除重复hook,保留现有历史、原会话绑定和发送guard,不建立新的会话权威。
  • DashboardPage入口组合:保持React位置稳定,只有当前本机默认对话才截获入口;显式绑定、Goal及其它来源沿原路径。空workspace/workSession值仍按默认范围核验,不绕过来源发现。
  • 默认回传回归:原有完整场景已能在切页后等到旧会话修订;补充草稿保留断言。另一现有smoke只把源路径比较与分页query解耦,仍要求一次读取且只访问缺失Session。中英文RFC保留历史超时,记录当前有界资格。

对主干的风险

最强反例是:组件虽然隐藏,仍可能在原来源未核验时连接普通队列。因此核对了同一读回如何进入history、admission和send的现有guard,并通过真实Core/HTTP/SQLite来源拒绝、重试、peer切换和固定原Session测试挑战它;原生协议请求12→12,未创建Turn。新增peer连接后默认入口仍选择原绑定;拒绝的管家来源也没有阻塞同工作区另一Goal的阅读,且没有额外默认来源查询。这里Goal状态是合成投影,不把页面可读当成该Goal的执行授权。另一个反例是分页检查全绿但后台观察仍被卸载,基线的完整默认场景确实超时,新版同一路径通过。

完整Chat构建、路由及历史owner回归、启动拒绝、36.894秒历史恢复、181.259秒研究整页和填充工作区均通过。最后一提交仅改配对RFC,实际UI源码与已验证版本逐字一致。最终premerge为4项直接与16项选中自动检查通过,零失败;3张图片的人工hold仍与自动检查分开记录,像素与PNG元数据已逐张检查。按当前策略没有读取或等待CI,不把自评审当正式批准、合并资格或安装证据。

语义与 CI 对齐

复用原Session/来源与回传语义;enabled/intercept只是当前路由的局部投影,不新增协议词汇或持久化状态。RFC把已复现的旧超时保留为历史事实,再记录当前完整默认场景的通过;原生及live-provider边界没有缩小。纯分页路径、完整默认路径、模型采用和真实跨端交付保持不同资格。

我的整体评价

这是可独立回退的有效增量:long_horizon与user_experience在当前接续路径上判定为improved,不代表长期模型效果提升。保留稳定React子树并复用现有来源读回即可修复丢失的读取状态,无须新增缓存、调度器或权限分支;源码中的既有准入guard继续独立于可见性生效。当前PR只恢复工作台切页时的会话读取生命周期,并同步已有RFC的中英文验收记录;不扩大完整原生或跨端验收。

逐张检查了默认桌面原会话、390px长原文及来源拒绝页面:会话身份、原文和草稿可读,来源失败保留重试/设置;布局没有重设计。该修复改善切页后的持续读取,不据截图宣称理解效率或全站可读性已完成。 本次没有折叠/详情布局变更,长原文沿既有默认阅读器展开呈现;未以界面隐藏替代来源准入。
正式原生App采用、真实输入法、跨会话滚动位置恢复、真实Lark投递及全前端验收仍未覆盖。

三张公开图均来自隔离合成数据和真实HTTP/store;默认布局未重设计,未证明阅读理解收益。完整长历史与稀疏/失败状态实际走查,字段存在、折叠和无溢出断言只是补充,不替代像素判断。未发现阻断此有界修复的问题,结论APPROVE;原生采用、正式reviewDecision与merge/install授权保持独立。

English verdict: APPROVE — 1122853ec804a2fba60dc025ac06a49024bd90e1 retains the existing workspace/read owner across steward/Goal navigation and preserves exact-source denial and no-replay behavior. The full real HTTP/store baseline fails and the reviewed UI passes; current checks, original/peer/failure recovery and populated narrow views are qualified. Native App, live Lark/model behavior, cross-conversation scroll restoration and merge authority remain separate.

@huangruiteng
huangruiteng merged commit cdbdc14 into main Oct 26, 2026
26 of 32 checks passed
@huangruiteng
huangruiteng deleted the codex/chat-history-reading-20261026 branch October 26, 2026 13:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants