Skip to content

Defer unrelated Goal status reads in ordinary steward chat - #8328

Merged
huangruiteng merged 1 commit into
mainfrom
codex/steward-pr-query-latency-20261108
Nov 8, 2026
Merged

huangruiteng merged 1 commit into
mainfrom
codex/steward-pr-query-latency-20261108

Conversation

@loopx-agent

Copy link
Copy Markdown
Collaborator

用户问题与交付边界

绑定管家的普通 Codex 对话在提交模型前逐一采集授权 Goal 状态。一个仅需要外部工具的普通问题也会等待这些无关读取。

本改动让这条普通输入路径先获取当前授权目录。需要 Goal 状态时,执行器通过已有 loopx_manager_read 的 portfolio 视图读取相关范围。操作者仍从原 Lark 或 App 会话直接提问。

实现

  • 复用现有 Goal portfolio 投影,增加内部状态采集开关。目录行明确标记 omitted、unknown 和 goal_not_read。
  • 在现有 Chat coordination 模块根据宿主持有的 Turn、Codex reader 和 TypeScript conversation scope 选择获取方式。源授权、Goal lifetime、前后范围校验和现有执行 catalog 仍参与准备。
  • 原生执行、观察型调用、prompt-only endpoint、其它会话类型继续使用既有采集方式。
  • 每次工具读取经过当前 grant 检查。状态证据按原 reader 返回,原 Session、Turn、队列、恢复和投递身份沿既有 owner 处理。
  • 给执行器的目录说明要求在依赖 Goal 状态或 attention 的结论前完成相关读取。

状态与权限继续由既有 TypeScript owner 管理。Python 改动位于现有 IO 与上下文适配层,没有新增持久状态或协议词表。相关重构把读取方式的选择留在已有 coordination 模块,避免继续扩张 Chat runtime。

验证

  • 新增原 Lark ingress → 原队列 → 实际 app-server 协议的回归。普通问题启动前采集 0 个 Goal,同一会话的后续工具请求仅采集指定 Goal,越权 Goal 被拒绝。主干先复现了普通问题的额外采集。
  • 新增真实 HTTP 入口的 File / SQLite 用例,验证 App 的 web 来源、授权目录和 deferred status。
  • 精确提交的相关测试组为 198 passed、2 failed。扩大回归为 328 passed、14 failed。14 个失败均已在未修改的目标 main df67371 上逐项复现。其中 12 个位于 native steward Turn host,另外 2 个是缺失原始投递回执时的既有错误码断言。完整回归结果仍保留为失败。
  • quick premerge 通过,包括同域结构限制、语义词表、公开边界、编译与 RFC 配对检查。Ruff 通过。
  • 构建并验证 Chat bundle 和 wheel。在独立 Python 3.12 环境从 wheel 导入产品,原 Lark 路径和 HTTP File / SQLite 路径三个场景通过。模型与 provider 为合成替身,Core、存储和 HTTP 为真实实现。

耗时与输入成本

在同一合成任务与注册数据上,对比目标 main 与本提交。每侧一个新 Session 和四个同 Session 暖轮,包含 17 个 Goal,其中 9 个已停止,部分来源使用实际 File / SQLite authority。

暖轮中位观测 main 本提交
启动前 Goal 状态读取 8 0
上下文采集 35.144 ms 3.017 ms
上下文准备至 native start 90.575 ms 29.230 ms
完整合成回放 506.149 ms 345.540 ms
native input JSON 字节 66,817 66,814

两侧补读均为 0。实验进程与数据隔离,样本期间存在其它负载。这些数字限定于合成回放,模型、真实 GitHub 工具耗时、p95、费用和正式部署的改善仍待各自验证。

剩余范围

独立评审、正式安装、打包浏览器及真实后续自然对话采用尚未完成。排队准备和上游流断开需要继续沿各自原始证据定位。本 PR 交付的是普通输入前置采集的修复。

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, reasoning_effort=max

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

动机 / Motivation

已绑定 Codex steward 会话的用户发起普通聊天。原来即使问题与 Goal 进展无关,启动模型前也会扫描全部获准 Goal 的 status;现在先交付带缺失标记的目录,只有查询需要实时状态时才通过现有 scoped reader 读取指定 Goal。实际 native tool exchange 和 HTTP File/SQLite 验证显示,普通轮次启动前读取次数从两个 Goal 降为零,明确请求单个 Goal 时才读取该 Goal;越权和授权变化均在读取前拒绝。本 PR 不证明真实模型主动采用 reader 的成功率、用户响应时间或长程收益,也不改变协作任务及原生执行的状态读取和权限。

改动思路 / Approach

保留现有事实和权限 owner,仅调整普通聊天初始读取时机;省掉无关 IO,同时用明确缺失状态与原有 reader 保住后续证据路径。本 PR 只交付普通已绑定 Codex 聊天的目录优先和按需查询,不改变执行/协作/观察路径,也不宣称真实模型采用率已获验证。最小修复应落在现有采集器和初始聊天调用之间:只删除 prompt 内容仍会做无关 IO,另建缓存则会增加陈旧事实和第二份状态。这里保留当前获准 Goal 的目录和已有动态读取工具,用一次调用的参数决定是否先读 Core;目录不再冒充状态快照。事实、范围和前后授权检查仍由现有 reader 负责,恢复后能在原会话的新轮次继续读取。

具体改动 / Changes

以已接受的 docs/reference/protocols/manager-evidence-and-continuity-v0.md 为规范,spec_revision 87a153d4d206fdc9e466ae2ed4bf1381006d235a。映射 §1:Chat 仍观察 Core,不持有第二份状态;§4:未读明确呈现为 omitted/unknown/coverage incomplete,而非没有工作;§6:读取沿用当前 audience/source 范围及前后授权检查。新增文档七行是默认行为披露,并未用新写的文字替代以上既有验收。

关键代码讲解

  1. prepare_turn_context 仅在 interactive Codex、已绑定 steward 且不是观察、native request/execution、peer 或 collaboration 时关闭初始状态采集。其他调用继续使用 eager 默认值。
  2. build_goal_portfolio 的 read_status=True 默认不变;关闭时保留 registry 和范围事实,明确给出 source gap,避免把没读解释成闲置。
  3. manager_index 在该目录下改为要求先读 scoped portfolio 再作状态或 attention 判断;保留质量、时间、覆盖和非授权声明。ManagerInspection.read 类与已审当前 main 的 AST 相同,仍在 IO 前后检查当前授权。
  4. chat_manager_context 只转发同一参数,并禁用未采集状态的 details;两组新增调用方回归覆盖 native 工具交换和 HTTP 的 File/SQLite,未加入另一套状态或读取规则。

全 diff 为 7 文件、+135/-7;产品逻辑 4 文件,测试 2 文件,协议披露 1 文件。现有 portfolio/inspection owner 足以承接,不需要新公开 schema、CLI、持久状态或用户确认。

对主干的风险 / Risks

主要风险是模型把目录当成进展。独立 HTTP 测试在 File/SQLite 均确认 attempted=0、complete=false、quality=omitted、progress=unknown、attention unavailable;读取指定 Goal 后取得当前 source,foreign Goal 和撤销授权都在额外 IO 前拒绝,恢复授权后原会话新轮次可再次读取。fixture 本身的进度仍有显式 source gap,因此这里证明 scoped 读取和恢复,没有把 unknown 包装成业务进度已验证。自编 HTTP probe 直接调用实际已注册 handler;真正 Codex tool protocol 由新增 native 回归单独验证。

PASS:新增 native 回归冻结在同一 reviewer harness 后,main 87a153d4d206fdc9e466ae2ed4bf1381006d235a 在启动前已读 alpha/beta,违反独立 no-eager-read oracle;head 上同一用例 1 passed。Manager/portfolio/inspection 现有测试 122 passed;configured mypy 17 文件和 Ruff 全通过。完整两组调用方测试 head 140 passed / 2 failed,main 137 passed / 2 failed。失败均是 test_http_web_handoff_reports_missing_provider_source_without_retargeting[file/sqlite]:预期 original_route_unavailable,实际 initial_delivery_receipt_unavailable;规范化完整失败详情相同,四个 return owner 文件在实际 PR base、main 和 head blob 相同,新读取不变量由独立通过的用例覆盖,故归为既有无关失败,不称整组全绿。

初版独立 probe 对两次新鲜 source 时间戳作了错误的整行相等断言,现保留原始失败并仅允许实际观察到的 /source/observed_at 差异,其他语义字段与 attention 相等;修正后 2 passed。一次缺 tests import path 的启动错误也已保留并用当前 checkout 路径纠正。premerge 6 direct + 4 selected mechanical checks 通过,但总体 merge gate 仍为 quality_receipt_missing。按当前策略未查询、轮询或等待 CI;未运行真实模型或安装版 UI。

语义与 CI 对齐

复用已有 SourceQuality.OMITTED、manager evidence directory 和只读工具词汇;局部 bool 是当前调用的读取策略,不是复制的共享生命周期。行为文字逐条保留 actor、质量/时间/覆盖、不能推断 idle/stopped、非行动授权等条件;仅普通未读目录的答复顺序有意改为先取相关证据。它是模型应遵守的指导,权限拒绝才是机器强制边界。没有将文本变成隐含工作义务。

我的整体评价 / Verdict

APPROVE,仅针对 78b91902cf344d6c08d14d3377e61d1e6723d268。long_horizon 为 preserved:原事实 owner 和新鲜证据路径保留;user_experience 为 accepted_tradeoff:初始目录不再附带进展,需通过既有工具读取相关状态,但无额外用户操作。保留现有事实和权限 owner,仅调整普通聊天初始读取时机;省掉无关 IO,同时用明确缺失状态与原有 reader 保住后续证据路径。本 PR 只交付普通已绑定 Codex 聊天的目录优先和按需查询,不改变执行/协作/观察路径,也不宣称真实模型采用率已获验证。有实际调用、负例和恢复,不是仅增加 serializer;现有 eager 调用和默认语义由回归保护。既有 phase 反馈从状态改为目录来对应实际 IO;未改变布局、viewport、折叠或页面密度,故 visual_review 不适用,安装版界面与真实模型采用仍未测试。真实模型采用率、响应时间和长程收益仍 UNVERIFIED,合并所需 CQR/仓库权限与审批另行判定。本审查不授权 merge。

English verdict: APPROVE at 78b9190; the ordinary bound-chat read policy is scoped and disclosed, with native counterfactual and File/SQLite recovery evidence. Two unchanged return-route failures and the separate merge-readiness hold remain disclosed.

@huangruiteng
huangruiteng merged commit 9436631 into main Nov 8, 2026
30 of 39 checks passed
@huangruiteng
huangruiteng deleted the codex/steward-pr-query-latency-20261108 branch November 8, 2026 05:13
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