Skip to content

fix(manager): keep short delivery histories inline - #8048

Merged
huangruiteng merged 1 commit into
mainfrom
codex/manager-inline-when-smaller-1104
Nov 5, 2026
Merged

huangruiteng merged 1 commit into
mainfrom
codex/manager-inline-when-smaller-1104

Conversation

@loopx-agent

Copy link
Copy Markdown
Collaborator

A short manager delivery history grew when the native input replaced it with reader instructions, commands and a private snapshot. With a single synthetic delivery the real framed message grew from 687 to 2,626 bytes.

The native manager now keeps short histories inline. In mixed inputs it defers only rows whose replacement is smaller and publishes the reader only if the savings also cover the shared instructions and commands. Existing eligibility, private recovery, old opt-outs and the original authorized facts are preserved.

On the same workload the short message stays at 687 bytes and creates no capture. The long fixture still drops from 210,739 to 2,626 initial bytes and recovers the complete original. These are input bytes before any later detail read. All 19 native manager tests passed, including mixed histories, unsuccessful savings, private recovery and invalid/denied paths.

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

通过原生管家询问 Goal 状态、由已授权 Core 证据回答的用户与接收 Agent。同一条简短交付历史,旧适配器把706字节完整输入变为2693字节并新增私有快照/读取命令;此 head 保持706字节原样内联且不建快照。长历史仍可缩短初始输入并完整恢复。短行与已有绑定保持原样,仅在真实 UTF-8 输入扣除每行替换和共享读取开销后仍变小时才发布渐进快照。不改变授权、当前 Goal/Todo 事实或原请求身份,不新增工具/设置,不将初始字节减少认作真实模型采用、总 token 或持续净收益。

本评审绑定 66814ba06508856789214591135f2d196e619c48,不可变基线 d29ec8bf2a105aac24629bcbf3dfb7c97aea51fe。未发现本差异的阻塞性代码问题;原有必需 mypy 失败和 CQR hold 保留,不计为通过。GitHub 登录与作者相同,故使用 COMMENTED 结论。

改动思路 / Approach

复用真实输入序列化与原不可变 reader,用局部可推导字节差决定投影,不建立持久状态、第二授权 owner 或压缩协议。当前切片是已授权 native manager 输入的大小选择与完整恢复;不改变接收范围、原 Turn、工具权限或模型执行。整体收益要覆盖每条历史替换成引用的成本,也要覆盖只出现一次的读取说明、恢复和索引命令;单看移除了多少历史字符会漏掉小输入膨胀。现有 manager_turn_input 使用 UTF-8、ensure_ascii=False 的真实 framing,所以复用这一口径。先作固定成本快速拒绝,随后逐行只保留正收益,最后整体扣除共享开销;失败候选只删除自己新建的目录,原完整 context 仍可用。

既有带 read_reference 的行保留原绑定。没有新增状态、协议、配置或 decoder;原 Chat source/Turn/retry 与 reader 完整性 owner 继续拥有各自边界。

具体改动 / Changes

关键代码讲解

  • _evidence_bytes 测量真实 evidence JSON 编码字节;它是临时可推导计数,不是权限或 token 估计。
  • native_manager_context 保留 trusted_owner、readonly、配置、已有顶层 context_read 等原 gate,仅对已读 supporting history 选择表示。第96行跳过已有绑定,第110行不足以摊销全部开销便退回原对象。
  • 未修改的 framing 只在实际给出完整 context_read 时插入原读取说明;Chat coordination 的真实调用和 retry_binding 保持不变。选中片段及完整恢复仍由现成 CLI 校验 SHA/分页。

没有发现专门写定这个大小选择修复的已接受书面规格;以原完整 source/请求/framing/读取合同及独立复现作为判据。先读的 Manager context 文档用于核对受众、权限与返回边界,不将其改写成虚构的大小条款。

同一七组合成输入、真实 adapter→framer→私有文件→原样发出的读取 CLI 对照如下;每组原输入 SHA 相同,没有为字节数归一化路径或字段。这些是初始输入字节,不含后来按需读取的成本。

输入 原始字节 基线适配后 此 head 适配后
short 706 2693 706
medium 1881 2697 1881
long 210758 2689 2689
mixed long/short 211128 3411 3063

head 的短、中与 all-prebound 输入不留新 capture,mixed 的便宜行逐字段不变;带旧绑定的行完整保留。Unicode/引号/换行案例通过。所有实际 deferred 片段与完整恢复都逐对象等于 original,当前 Goal/Todo、STOP、尾部约束、unknown metadata、coverage/warnings 与原用户文本/来源均保留。

完整三个 native context/adapter/interrupted 模块:base184/head185 passed;新增 case 没有替换原断言。另四组合格关闭路径(environment off、restricted、read-only、other host)的实际完整输入 wire SHA 两端一致且零 capture;原11类禁用/非法/IO拒绝/平台反例仍通过。Ruff PASS。standard premerge实际 6 direct+2 selected 的命令均通过,独立 base/head ratchet 也全过;preview 的旧 inherited hint 不当作当前失败。

对主干的风险 / Risks

最强风险是为了变小丢掉真实要求、在关闭路径泄漏读取指令,或清理掉旧快照。完整 current/unknown 字段、按页真实恢复、off whole-wire 对照和只删新 candidate 的路径分别覆盖这些风险。已有 reader 说明文字逐字未改;它的读前义务仅在真的 deferred 时出现,短输入已完整内联,不再让模型无谓绕路。拒绝读取仍是 unknown,不赋予执行、重发或放宽权限。

必需 python -m mypy --no-incremental 在此不可变基线和 head 都因未改 task_orchestration_admission.py:110 报同一 no-any-return,完整208字节 stdout 相同,17 sources/1 error;因果源码、pyproject 和生成环境锁一致。独立当前不变量通过支持代码结论,但 CQR 实际仍 FAIL,整体 premerge 仍因质量 receipt hold 未通过,没有豁免。未查询或等待 CI。

首次验证把一个不存在的额外测试模块写入命令,pytest exit4且未运行测试;原失败保留,随后按实际文件执行上述完整三模块。一次 GitHub只读 view 遇 EOF,保留后按同目标恢复成功。真实输入数据是合成 fixture、native HTTP 是测试替身;没有启动真实 provider/model 或认证安装宿主。

我的整体评价 / Verdict

同意这一完整有界修复。复用真实输入序列化与原不可变 reader,用局部可推导字节差决定投影,不建立持久状态、第二授权 owner 或压缩协议。当前切片是已授权 native manager 输入的大小选择与完整恢复;不改变接收范围、原 Turn、工具权限或模型执行。它以实际输入而非删除字段数证明局部收益,同时守住原 source、恢复和禁用路径。

已检查完整差异及实际 ChatRuntime→chat.coordination.prepare_turn_context→native_manager_context→manager_turn_input; existing native host send lies after this boundary.;没有 rendered page、布局、设置或新调用者能力变化,视觉评审不适用。未验证范围:未验证安装 Host/model、跨平台与长期完整成本;未测实际模型对内联/按需输入的理解和后续完整读成本。原任务额外必需交互轮数为零;当前资格不等于真实模型采用或完整成本收益。合并权限与必需质量门分别保留,本结论不授予 merge。

English verdict: APPROVE — 66814ba06508856789214591135f2d196e619c48 fixes reproduced short-input inflation while retaining complete original recovery and off-path byte parity;185 native cases and paired real framing probes pass. Required pre-existing mypy/CQR failure remains held; live adoption and total-cost benefit are unverified. COMMENTED author-account conclusion only.

@huangruiteng
huangruiteng merged commit 5fc048d into main Nov 5, 2026
31 of 39 checks passed
@huangruiteng
huangruiteng deleted the codex/manager-inline-when-smaller-1104 branch November 5, 2026 03:22
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