Repository navigation
fix(agents): distinguish native child tools from bound delegation - #8197
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.
Reviewer: model_agent | gpt-6.1-sol | OpenAI | runtime_reported | reasoning_effort=max
P2 · 有效绑定配置会丢失整个规划贡献。
动机 / Motivation
协调 Agent 需要在规划时知道哪些子任务可以由宿主直接启动,哪些必须按已授权的 LoopX 绑定委派,并据此安排独立工作。
旧指导要求按绑定入口执行所选路线,容易让宿主原生子工具也被当成绑定委派。 新措辞把两条路线分开。实际 CLI 中,一组此前有效的配置会丢失整个规划贡献,协调 Agent 看不到指导、模型偏好和已投影的绑定路线。
本次改动范围是协调 Agent 三个阶段收到的指导及内容标识测试,执行权限继续由现有入口管理。
改动思路 / Approach
保留能力提供者组合协调指导、共享投影限制字节的分工。 修复边界是当前能力的 before_plan 输出组合和对应回归用例。 v7 允许有权限的宿主原生工具直接工作,仅对绑定委派要求使用绑定入口并复核运行时、执行配置和预算。返回阶段按实际使用的路线对账,同时保留独立的父级验收与容量停止条件。 编排规格 绑定委派规格
具体改动 / Changes
两文件增加 39 行、删除 9 行。预变更规范为基线 8eb707d47a4d5529e316bcc30e042840cca3ad80 的 docs/integrations/codex-subagent-orchestration.md。生产改动集中于既有指导的三个阶段和版本。测试补充了指导与事实分别参与内容标识的断言。规格中的 ROUTE_AUTHORITY 由普通绑定预检读回验证。RESULT_EVIDENCE 的容量停止由类型化失败读回验证。 阶段指导 标识断言
P2 · 有效绑定配置会丢失整个规划贡献
PLAN_CONTEXT 在临界配置下未达成。同一临时 Goal 固定 gpt-6.1-terra,配置三条 requester 授权的 Codex CLI 绑定,合成绑定 ID 各 95 字符。相邻的 94 字符对照恰为 2,048 字节。 实际 CLI 在基线返回 1,994 字节和两条绑定路线。当前候选达到 2,050 字节,CLI 仍返回 ok=true,但只留下 context_provider_failed,指导和事实全部缺失。 两个版本用相同的真实 registry、绑定读取及 TypeScript 投影逻辑运行,无需启动子任务。 变更行 贡献上限
在现有能力 owner 内修复 before_plan 的输出预算,保留两条路线的授权与预检区分、用户模型偏好及关键停止条件,再用原生 CLI 的临界配置验证完整贡献。 用同一 Goal 和真实 CLI 运行 94/95 字符绑定 ID 对照,断言有效 v7 规划贡献、绑定路线和模型偏好一起返回。
对主干的风险 / Risks
两版 TypeScript 套件分别 27 和 28 项通过,Python 上下文、宿主、模型策略及委派套件各 60 项通过。当前 TypeScript typecheck 通过。独立 CLI 也验证了默认关闭、普通绑定预检和容量耗尽时 retry_same_turn=false。这些场景不能覆盖有效配置在上限附近的整段丢失。签名和公开边界检查通过。quick premerge 的 4 个直接检查和 2 个选中检查通过。
全量必需 Ruff 在两版都仅报同一处 F841,位于未改动的 tests/control_plane/test_goal_create_completion.py:184。严格质量回执 cqr_8efa28a66afc5b4caca8 为 fail。 质量回执也包含本次可复现的规划贡献回归。按当前策略未查询托管 CI。
我的整体评价 / Verdict
当前提交 c0355894b4ecdf2eec63c00f02925542a3824b86 对两种执行路线的措辞更准确。请修复大配置下的规划贡献交付后复审。实际读取了源码 CLI 的规划、预检、容量耗尽和默认关闭输出。改动无渲染页面,视觉审阅不适用。 未执行真实宿主子任务、付费模型、已安装宿主采用或完整长程成本验证。
English verdict: REQUEST_CHANGES — Valid bound configurations that fit on the base lose the entire coordinator planning contribution at the unchanged 2 KiB cap.
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
huangruiteng
left a comment
There was a problem hiding this comment.
Reviewer: model_agent | gpt-6-astra | OpenAI | runtime_reported | reasoning_effort=xhigh
动机 / Motivation
协调 Agent 在规划、委派和回收子任务时读取能力上下文。
同一组三条已授权绑定下,旧提案因超出 2048 字节而丢弃整段指导;新版本保留两条路由、完整模型偏好及停止条件。
真实 CLI 在临界配置返回完整贡献,绑定委派仍需预检,原生子工具仍须已有授权。
本 PR 不启动子任务、不改变调度权限,也不宣称模型采用或 benchmark 得分提升。
本次复审核对完整提交 e70a9ccdcca1e216b0482612395c3da1f481b816,并重新检查原评审的 P2 整段丢失问题。该问题在当前提交已解决;没有发现新的阻塞项。
改动思路 / Approach
在现有能力提供者内压缩重复指导,并复用已经验证的容量事实;共享上限和执行权限保持不变。
当前 PR 只交付协调上下文的可用性和路线语义修复,不扩展调度或宿主执行。
我比较了不改动、提高共享上限、删掉路由或模型字段三种替代方案。原提案在合法配置下确定性丢失内容;提高所有能力共享的上限扩大影响面;删去用户偏好或可执行路线会损害调度判断。当前修复保留既有能力 owner,缩短相同阶段的重复描述,适合这个问题。
具体改动 / Changes
规范依据为 docs/integrations/codex-subagent-orchestration.md,固定到预变更提交 2659e5f70c8a8ba6c23f7588151ea5c06576ef69。本次沿用原评审的三个验收点:PLAN_CONTEXT 要求在既有 2048/3072 字节预算内返回有用指导;ROUTE_AUTHORITY 区分原生工具授权、绑定发现与实际预检;RESULT_EVIDENCE 保留容量停止、原件核验和父级验收。三项均在当前代码与真实 CLI 观察中达成。
关键代码讲解
subagentContextProvider将三个阶段的指导升为 v8。规划阶段保留独立结果、子任务方法选择和父任务并行工作;委派阶段明确只有绑定路线要求对应入口及 runtime/profile/budget 预检,禁止悄悄替换模型。boundedNativeCapacityObservation继续验证 schema、operation 和 outcome。只有合法耗尽事实已携带retry_same_turn=false与延期/继续父任务的恢复动作时,结果阶段才省掉重复段落;没有该事实时仍明确条件式停止指导。缺失或拒绝回执不能证明完成、意见不能充当独立证据,均保留文字表达。projectAgentContext的能力启用判断、内容标识和硬上限没有变化。新增测试证明指导或事实变化仍改变 context ID,历史 packet 不会被重写。
独立运行同一隔离 registry 的源码 CLI 比较:main 基线 2659e5f70c8a8ba6c23f7588151ea5c06576ef69 的 95 字符绑定、160 字符模型规划贡献为 2141 字节,整段被拒;当前为 2014 字节,并保留两条授权路由和完整模型。普通固定模型的同一配置由 1994 降到 1867 字节。当前预委派/返回阶段分别为 2008/1439 字节。原 v7 评审中的 2050 字节失败有保留的反例与回归用例,不将它改写成成功。
对主干的风险 / Risks
最需要防止的是“体积达标,却删掉关键义务”。我逐条核对了原件核验、缺失回执、父验收、权限、停止条件、用户模型偏好和恢复动作。这里只合并同一 typed capacity fact 已完整表达的重复信息;其余义务继续可见。默认关闭、配置不可用、非授权 requester 和未知运行态都不会被解释为新的执行权。
PASS:根 reviewer 独立运行 18 项 Python CLI 测试、29 项 TypeScript 上下文测试和 typecheck;同一 CLI harness 在 base/head 各运行 12 个配置/阶段组合,registry 内容不变。精确 head 的 quick premerge 回执为 5 个直接检查、2 个选中检查通过,含双语规则与语义词表。实际检查的是源码 CLI 和 typed projector,未启动真实子模型。按 Goal 策略未查询 CI。
更宽的作者验证中,usage-ping fixture 缺失与 native closeout fixture 缺 quota decision 均在固定 base 重现;本 PR 不修改其失败路径。这些外围失败仍保留为诊断,不把它们宣称为已修复。任意未来配置组合的总预算仍由共享 projector 控制,本次没有放宽上限。
我的整体评价 / Verdict
长程层面,此修复消除了可复现的规划上下文整段丢失,并保留原生容量耗尽后的停止与继续父任务路径。用户体验层面,已有模型偏好和已授权路由无需人工重新提供。只变更 agent-context CLI 指导及其测试,没有渲染页面改动。未验证真实模型是否采用指导或改善任务分数。
当前 head 的完整 PR 可批准;这不授予合并权限,也不代替合并前 readiness。语义复用既有能力与 typed capacity vocabulary,无新增状态权威或并行调度器。旧 P2 应按当前源码和反例回读进行关闭,保留原讨论与失败证据。
English verdict: APPROVE — e70a9ccdcca1e216b0482612395c3da1f481b816 preserves authorized routes, model preference, evidence and capacity-stop semantics within existing context limits. Source CLI and typed projection validation passed; model adoption and benchmark gains remain unmeasured.
Motivation
The coordinator needs distinct instructions for authorized host-native tools and bound delegation. The first revision corrected that distinction, but the combined planning contribution reached 2,050 bytes with three requester-authorized Codex CLI bindings and a fixed model. The 2,048-byte limit then rejected the entire contribution while the CLI still reported
ok=true.Repair
Version v8 gives each phase shorter guidance alongside the full model preference and the existing bounded route directory or receipt facts. Authorized host-native tools can be used directly. Bound delegation requires its entrypoint and runtime, profile and budget preflight.
At result time the typed exhaustion observation carries the stop and recovery actions. Without that observation the guidance still spells out when to stop same-Turn spawn and followup retries. It calls for fresh receipts from the route used and separate native results and parent review. Missing or rejected receipts cannot prove completion, and opinions cannot serve as independent evidence.
Source CLI validation
The same isolated registry and three requester-authorized bindings exercise the public
agent-contextcommand at both revisions. Bytes measure the full UTF-8 JSON contribution, including its content ID.gpt-6.1-terragpt-6.1-terraThe largest packet in this comparison is 2,261 B within the 3,072-byte cap. Both selected route identities and the model configuration survive. The result phase carries the operation summary and the observed capacity stop with
retry_same_turn=false. The CLI regression yields two failures on the prior head and passes all three configurations ate70a9ccdcca1e216b0482612395c3da1f481b816.2659e5f70c8a8ba6c23f7588151ea5c06576ef69and the candidate. A separate native child closeout case fails at fixture admission on both revisions with a missing quota decision.These checks exercise the source CLI, TypeScript projector and host fixtures. Model adoption and benchmark impact remain unmeasured. Original independent finding