Skip to content

Skip unrelated transcript reads when opening a bound conversation - #8617

Merged
loopx-agent merged 1 commit into
mainfrom
codex/steward-bound-session-discovery-20261112
Nov 11, 2026
Merged

loopx-agent merged 1 commit into
mainfrom
codex/steward-bound-session-discovery-20261112

Conversation

@loopx-agent

Copy link
Copy Markdown
Collaborator

用户影响 / User impact

打开已选管家时,App 需要定位原会话。旧路径先生成所有会话的公开摘要并读取各自的消息版本,再逐个重读会话记录。新路径扫描元数据时只保留可能属于当前绑定的会话,之后仍重读其原记录,由现有 Core 验证当前身份、授权和会话归属。

实现 / Implementation

  • ChatSessionStore 在已有会话发现入口共享元数据扫描。普通会话列表继续生成原摘要和消息版本。
  • 绑定会话发现以元数据筛出候选,保留重复身份检查。声明同一 Session ID 的别名也交给 Core,歧义时仍拒绝。
  • App 继续进行一次飞书 App 和本人身份验证。现有绑定更新与撤权检查保留。依据固定版本的 App Steward 发现契约。
    RFC

验证 / Validation

同一 Python 解释器、同一生产 HTTP handler、合成飞书和 native provider。每个版本和数据规模各测 15 次热读,耗时为中位数。

会话数 入口耗时 元数据读取 无关会话消息版本读取
172 15.65 → 9.31 ms 344 → 173 171 → 0
1000 70.58 → 41.06 ms 2000 → 1001 999 → 0
  • 隔离打包版本的实际 HTTP 路径通过 200 → 409 → 200 → 409。身份恢复后回到原会话,原历史一致,关闭后拒绝。原普通会话未进入绑定列表。
  • 精确基线复现无关会话重复读取。精确头通过 20 项重点回归、685 项周边 Python、63 项 TypeScript,以及标准 canary 的 6 项直检与 2 项选中检查。周边 3 项失败在对应主干以相同签名复现。两侧严格类型检查有相同的 71 项诊断。
  • 线上采用与飞书端到端回复耗时需要后续验收。此前的 App 超时仍缺少原因证据。

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.

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

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

本次评审对应提交 f905c49860a76aa61dfb4bc831ddbc7c6579e0cd。

动机 / Motivation

影响从本地 App 打开已选 Steward 或读取原绑定会话列表的用户。原路径对所有会话生成公开摘要并逐个重读 canonical 记录,同时观察每个会话的 transcript revision。在 65 和 257 条会话、单一有效目标的本地 HTTP 对照中,选中的绑定与会话、原消息正文与顺序保持一致。257 条时 App 入口的 Session JSON 读取由 514 次降至 258 次,transcript revision 观察由 258 次降至 1 次。验证覆盖本地打包 App 数据层、实际 HTTP handler、File 存储和 TS Core。Lark 和 Codex 使用合成提供方。线上超时成因、真实 Lark 往返延迟、已安装桌面端体验与长期任务收益仍未验证。

改动思路 / Approach

本次成本发生在 File 读取与公开摘要投影之间,现有 TS Core 负责授权。复用原绑定与会话列表,没有新增状态表或可执行权限。 复用现有 File 枚举,按已存 binding_id 或文件目录与声明 ID 不一致的情况保留候选,再重读 canonical 记录。Core 对候选做既有权限和身份检查,之后才为通过的会话生成摘要。 验收覆盖显式选择 STEWARD-ENTRY 和原会话读回 ORIGINAL-HISTORY。 App conversation RFC

具体改动 / Changes

关键代码讲解

  • iter_session_metadata 保留 schema、Goal、Agent、channel 过滤与坏 UTF-8 跳过。普通列表在迭代后保留原投影和排序,对应 ORDINARY-LIST-PARITY。 ChatSessionStore
  • local_session_snapshot 保留目录名与声明 ID 不同的文件,再按声明 ID 重读。Core 看到重复的 canonical ID 时拒绝。Core 前后都复核配置,对应 AUTHORITY-AND-AMBIGUITY。 绑定发现
  • 测试中的别名自身没有选中绑定,读取时仍能指向同一 canonical Session。移除此分支的对照在实际 App GET 上由 409 变为 200。 回归用例

对主干的风险 / Risks

磁盘候选仍需经过同一 workspace、executor 和 Lark owner 检查。两版在所有者验证失败和别名重复时均拒绝两个发现入口,读取过程中清除选择时 App 返回 409。关闭原会话后 App 返回 409,绑定列表返回空。分页保留原正文和消息 ID,读请求没有产生新 Session、Codex 请求或 Lark 写入。

语义与 CI 对齐

基线 be0e0df02248aaf958164b9c9c7097253ac780f7 与当前提交使用相同的独立 HTTP/File 夹具验证 LOCAL-READ-COST。65 条时 metadata 读取 130→66、transcript revision 观察 66→1。绑定列表另有一次目标元数据读取。两种规模每次发现仍做一次 Lark 身份验证。两版 smoke:app-steward 通过,Python 定向用例分别通过 136 和 137 项,当前 79 项 TS 测试及本地 premerge 通过。Hosted CI 按当前评审配置未查询。

我的整体评价 / Verdict

同意当前提交。无关且文件名正常的会话只读一次 metadata。该结论覆盖 File 路径的 I/O 改善及原会话行为。界面渲染未改动。已安装桌面首屏未重测。

English verdict: APPROVE. The paired File/HTTP runs show fewer local reads while preserving explicit binding, original history, and fail-closed discovery.

@loopx-agent
loopx-agent merged commit b9111c3 into main Nov 11, 2026
31 of 45 checks passed
@loopx-agent
loopx-agent deleted the codex/steward-bound-session-discovery-20261112 branch November 11, 2026 22:30
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.

1 participant