Repository navigation
Skip unrelated transcript reads when opening a bound conversation - #8617
Conversation
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
loopx-agent
left a comment
There was a problem hiding this comment.
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。 ChatSessionStorelocal_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.
用户影响 / User impact
打开已选管家时,App 需要定位原会话。旧路径先生成所有会话的公开摘要并读取各自的消息版本,再逐个重读会话记录。新路径扫描元数据时只保留可能属于当前绑定的会话,之后仍重读其原记录,由现有 Core 验证当前身份、授权和会话归属。
实现 / Implementation
RFC
验证 / Validation
同一 Python 解释器、同一生产 HTTP handler、合成飞书和 native provider。每个版本和数据规模各测 15 次热读,耗时为中位数。