Skip to content

长时执行、探索与纠偏的衔接

English

长时任务既需要连续推进,也需要在合适时机改变方向。有效的集成让 Host 连续完成有意义的工作片段,把新证据送回既有 LoopX 决策边界,再验证后续工作, 避免每个工具结果都引发一次完整规划。

本文是实现地图与集成指南,基于 LoopX 源码 3dd3c550afecfa0c525a34e8744a3cf06774ac94;2026-10-14 从首轮实现比较的 b77f63495f2619237380755178c0780ae10a0f26 刷新。外部源码仍固定到 2026-10-13 核验的版本,不代表各项目最新分支。 它衔接现有 RFC,不创建新策略、schema、调度器、默认行为或执行授权。 源码存在、安装后的行为、模型采用和实测收益分别成立。

复核周期文案另与 main 3300dfdd29fe6e53e1aa4a0282ca3952db6e9e8f 对齐: 启用 Goal 策略时继承实时复核周期,仅显式 Goal 周期覆盖会固定它。下文中的实现 候选与上述已合并源码快照分开记录。

比较方法与证据范围

对每个仓库追问同一组问题:谁准入工作,什么驱动模型/工具循环继续,纠正何时进入 输入,谁决定调查或完成,哪些状态能跨中断保留,下一次决策实际读取什么。 功能名和 README 描述不足以证明这些连接;下面从实际 caller 追到状态 owner, 再检查已有失败用例。源码行为、解释与拟借鉴方案分别说明。

来源 固定版本 阅读范围
LoopX 3dd3c550afecfa0c525a34e8744a3cf06774ac94 quota/replan、monitor、Explore 回写、Turn 恢复、工作区 steering、managed ZCode native Goal 与 direction M1 builder
Grok Build 2bdd1d6a6369de0e8c68132ea4539e9abd9e14a8 公开 Rust CLI/runtime 的 Goal controller、插入消息与快照恢复
Codex 9167a0b2d4a74d44a4d388057d304682e47313c6 公开 Rust turn loop、Goal extension、压缩与 Agent 通信
OpenCode be674e3158abb5f1b0c16b2bdeb3a9ba2b072774 Session 准入/inbox、执行协调、重启和子任务结果投递
Pi e6220e1316f86af818a0ccbfe1c09d7e918b41cf Agent core 与 coding-agent 队列、上下文刷新、会话持久化和扩展

引用的外部测试只读了源码,本轮没有运行;文档改动实际执行的 LoopX 验证在 PR 中 披露。没有真实模型或同条件成本实验。Provider 模型调用、Host 回合和 LoopX 的 accountable Turn 是不同单位,不能直接拿次数横向比较。

主干刷新改变实现地图,不改变外部比较,也不证明部署就绪。新增的具体能力包括 native Goal provider 和 Explore 页来源重放;direction M1 builder 也已存在,但 没有生产 consumer 或回执 writer。版本化验收和显式 result-use 已有版本检查, 后续应验证真实路径如何使用这些 owner,而非重新实现。

现有归属与已连接的路径

整体路线图保留优先级:S3 规划与协作、 S4 Host、S6 证据、S7 调度与成本,以及 S10–S11 可靠性与评测。 各项决策继续由以下文档负责:

边界 现有归属 集成要回答的问题
工具反馈、交付结算、权限变化 分层步幅 §5–7 遇到重要反馈或权限边界之前,可以连续完成多大的有意义工作?
长任务结果与唤醒 Stride §7.5;既有 Host/provider 与 monitor 哪个确切结果版本值得再次判断,丢失通知后怎样恢复?
探索与路线选择 研究探索 §11.5–11.6;Explore 哪个未知可能改变下一步,什么证据能区分候选方案?
原始要求与来源变化 共享 Goal 对齐 §3.3、§3.7–3.8 新路径是否保留当前要求、证据范围及其他 Agent 的工作?
纠正、交接与原会话返回 协调员运行契约 §10;团队工作区 §9 纠正是否被接收、采用、执行、独立检查,并返回原入口?
恢复与性能 故障控制;优化指南 哪个原操作可以继续,实际成本发生在哪里?

源码中的控制链如下。分支按条件进入,不要求额外模型调用依次走完全部步骤:

Goal 身份、意图与适用验收合同
  → Agent Vision / 保留要求 / 路线
  → Todo / 显式依赖 / 当前工作边界
  → Core quota、claim、lease 与动作准入
  → 可记账 LoopX Turn 或经资格验证的 native Goal 集成
  → 所选 Host session / native target / 工具批次
  → 原操作 journal、效果与产物
  → 当前 source-use 检查、独立验证与应做结算
       → 合格的接续工作:继续推进
       → 相关未知或反证:探索后重新判断
       → 已准入复核:履行既有来源绑定义务
       → 候选完成:执行所属验收检查
       → 等待 / 中断 / 停止:沿既有生命周期处理
  → 被接受的决定与之后工作进入下一次复盘

这是职责地图,不声称每个 Host 都经过相同事务。Goal 可跨会话,会话可承载多个 Turn;native Goal 完成先是 Host 观察,不能代替适用的 LoopX 验收。 分别回答当前在执行什么、为什么允许继续、新输入何时消费、证据是否仍可用、 谁有权关闭 Goal,不能用一个 ready 或 complete 回答五个问题。

LoopX:从发现缺口到选择下一段工作

目的:改变无效路线,同时保留原 Turn 的结算和其他 Agent 的工作。真实 caller 链为:

规范 run/Todo 事实
  → projectReplanHistory 与 Goal-frontier 规则
  → build_replan_context → projectReplanContext
  → build_replan_action_packet → CLI / heartbeat / TurnEnvelope
  → Agent 回写 path / progress / successor
  → replan_semantics 验证 → 持久 Vision/ACK
  → 原 Turn 结算
  → 新 quota:确切后继 + 当前执行资格
  → evaluateDeliveryRoute → 下一次获准 Host 执行

replan_history.ts 按 Agent 限定历史,在本 Agent 已接受的 ACK 处截断,并对计数的 Turn 身份去重。 periodicTrigger 计合格的已结算工作;monitor 存活记录只有实质变化才算工作。 progressTrigger 根据重复 typed observation 触发;futureBlockingMonitor 复用已有 resume planner,避免把合法外部等待判成停滞。这些是检测规则,不是模型 对科学效用的估计。

Goal frontier caller 实际构造 context,quota 生成 action packet 和精确命令,TurnEnvelope 保留结构化复核及其义务。回写时,replan_semantics 检查该来源允许的 outcome;stride_policy.ts 中的 strideReviewMismatch 拒绝漏掉已投递的上一决定复核、引用其他证据或不兼容 Explore 依据。它验证声明的来源与结构,不认证 Agent 解释为真。

新 quota 从 canonical Todo 读取 ACK 的确切后继,核对当前 actionability/capability, 再调用 evaluateDeliveryRoute。 prefersReplanSuccessor 要求同一 Agent、已接受 ACK、精确 origin obligation 和当前 合法交付边界。它能改变下一项 primary task,但不授予 lease,也不在旧 Turn 内执行。 后继重入测试 通过真实 File/SQLite CLI 覆盖结算、新 Turn 选择和后继失效;选对任务仍不等于采用方法。

LoopX:从探索结果到后续判断

目的:保留可复用发现,同时不让技能报告变成第二份权威,也不因关联失败重复已完成工作。

普通获准工作 + 显式 Explore 附件
  → 主回写前验证范围和输入
  → 已提交记录 → deliver_result_attachment
  → 幂等 graph event → canonical Todo 证据关联
  → explore_turn_context / 已开启 replan 的 Explore 读取
  → 带证据的 explore_review 和下一段任务决策

deliver_result_attachment 消费已提交主记录与纯 post-writeback intent。图投递或 Todo 关联失败时,仍保留 primary_committed 并返回可重试的投递结果。精确重放补齐缺失关联;已成功投递只回读, 未完成投递仍受 claim/lease 约束。关联捕获测试 使用当前 canonical scope,拒绝相信过期共享投影,并在主提交前拒绝非法附件。 结果回写测试还描述部分关联失败 的重放,以及较新正面观测出现时保留相关反证;这些仍不同于模型使用证据。

explore_turn_context先验证完整证据日志, 再返回有界相关详情和版本绑定的下钻入口;replan 可经 explore_review 绑定这些发现。 另外,decisionFollowthrough 用合格的追加顺序连接最近 accepted decision 与随后进度,保留省略数量和 execution_and_goal_gain=unknown。三轮 CLI 测试 执行复盘、由测试驱动的合成工作、再次复盘,并拒绝缺少 previous_review 的回写。 它证明传输和结算链已连接,不能证明真实模型选择或执行了更好的实验。

LoopX:纠正投递、恢复与可见证据

工作区 steering 已在发送前保留精确 Session/Turn/文本/请求身份。 retainSteeringRequest 检查持久回读;输入框 在保存失败时不发送,响应未知的重试即使原 Turn 已结束也保留原身份;已确认未投递则 走不同恢复路径。存储测试 覆盖重载、静默丢写和另一会话未保存草稿。这关闭了投递身份缺口,不证明模型改变了计划。

recoveryDecision检查 journal 一致性, 返回保留的终态,区分显式失败重试与阶段恢复。相关 Host Session binding 仍须合格, 未知 prepared effect 沿原回读路径处理。continuation_adoption.ts 把上下文采用与 lease 转移、依赖执行资格分开;恢复上下文不授权重复未知外部效果。

团队纠偏视图 沿显式 revises、responds_to 和下游 uses 关系,按需核验产物版本并展示缺失采用。 它是实际配套入口,但没有把每个 stride_decision 都变成通用因果时间线。 源码接线、投递资格、真实模型采用、独立验收和可读的产品返回仍是不同层次。

Goal Vision/replan 契约 定义启用方式与当前结算规则。evidence_conditioned_v1 可选且默认关闭,关闭时仍有 普通复核。此基线已要求启用策略的周期复核在每个合法结算出口都留下当前 stride_decision,绑定原义务与投递 context。进展、后继、blocker 和终止结果保留 各自证据规则,其他 replan 来源保留原出口。这项机器约束不证明实际采用;优化不能 绕过它、quota 结算、权限、lease 或版本检查。

LoopX:已有原生 Goal provider 及恢复边界

Managed ZCode provider是 LoopX 内部的 具体接入示例,不是第五个上游运行时的独立审计。当前调用链区分绑定、启动与恢复:

CLI / Goal drawer → bridge 验证 canonical Goal/Agent/project
  bind  → 创建/恢复 native session → 确认暂停 → 持久 binding
  start → 当前 Core heartbeat 正文 → validation/quota/validation 准入
        → 记录 start intent → native setGoal → 持久观察到的 target
  resume → 按需恢复同一 session/target → 当前准入
         → native resume,不再 setGoal
  monitor/status → 观察 native 状态与所需 Core 检查
                 → 拒绝/权威不可用:pause 并确认 drain
  cold recovery → 对账原 intent/target → 确认暂停
  native completed → 仅观察,不自动写 Core 完成或额度扣减

zcode_goal_operation在 bind/start 生成新的规范 heartbeat 正文;NativeGoalController 串行执行操作,resume 保留原 native session/target,准入为 validation→quota→validation。 setGoal 回执丢失时,仅有持久获准 start intent 与匹配 objective hash 才能恢复; 冷恢复先暂停原 target,不自动续跑。Controller 测试 用受控 Host double 覆盖拒绝、身份替换、持久化失败、精确恢复和原生完成不写 Core。 Bridge 测试覆盖另一层 Core/CLI 边界;测试代码 或模型清单都不证明真实付费 provider 就绪。

保留 target 只证明执行容器连续,不证明 resume 后消费了变化的 criterion。 反过来,没有再次 setGoal 也不证明模型使用旧标准:保留的 heartbeat 正文可能要求 Agent 读取当前 Core 状态。待补组合验收应保持同一 Goal instance,仅改变 criterion 或显式来源适用性,观察第一项新受保护动作。它须使用现有 owner 的当前 revision; 无法支持该刷新边界时保持 pending/paused。不能用整段 prompt hash 代替这项证据, 也不能改写旧回执。

Broker在一次串行检查结束后约两秒再安排下次 monitor,每个准入子进程有十秒 timeout。在线 status 可以重查 quota 并暂停 target, 不是对 Host 完全只读。Pause/stop 同样与串行队列竞争。每次执行的一小时安全期限 既不是整个 Goal 的 token 预算,也不是硬实时停机保证;native 用量仍未知。 这些是可测的成本/延迟边界,不是已确认瓶颈。合并观察前先测检查、子进程/IO、停止 排队和实际 drain;原生失败或未验证结果既不能冒充已验收,也不免除 Core 应做结算。

LoopX:版本化合同验收与显式结果使用已经存在

Acceptance adapter读取当前 owner 标准、执行 validator,再核对依据;acceptance_authority.ts 将验证绑定 contract revision/digest、work basis 和 provider CAS。 projectGoalAcceptance 区分 partial、accepted scope、stale 和 held。只验证一个 Todo,不因该项测试通过就 变成全合同 accepted;selected_work 合同的全量验证也只覆盖所选范围,不能代表 更大 Goal 的所有要求。

同样,qualifyDelegationResultUse 已检查显式 uses 祖先、精确产物版本、accepted 来源、输入可用性、循环与有界收集。 A→B→C 中,即使 C 输出仍通过自身 validator,当前使用也可能不可用,历史 accepted/done 继续保留。Result-use 集成测试 已有版本绑定重放、重连和传递失效且不重新 dispatch 原任务的用例。应组合这些机制, 而不是把它们当成缺失的 adoption/dependency 账本。

全 Goal 收口仍要证明当前合同覆盖已声明的必要要求,跨 Agent 必需工作已有合法处置, 相关 amendment 不会推翻结论。可选研究分支无需全部做完;持续型 Goal 的等待/终止 条件来自声明合同,一次观察成功不是永久完成。范围内验收、原回执、当前来源资格 和全局收口分别成立。

LoopX:方向观察与渐进证据的接入程度不同

buildGoalDirectionBaseline 是对传入声明、资料 metadata 和同 Agent 使用回执的可选 M1 纯 builder。 未声明时保持投影缺席;digest 描述声明的资料依据,不是 canonical Goal-intent revision 或动作授权。Direction RFC 仍将入口/回执 writer/consumer 的资格标为未完成;调用方给出格式合法回执,不能 认证真实资料使用。

Explore 已接入实际生产读取/回写路径:

turn-context 返回有界 findings + 版本绑定 next_command
  → Agent 补读被省略结果页
  → stride_decision.explore_review 携带有界页坐标
  → state_refresh 获取当前 Explore 来源
  → projectExploreTurnContext 重放所声明切片
  → strideReviewMismatch 核对当前引用成员
  → 同依据补充引用保持准入身份 → 所属语义回写

explore_result_page.ts 限制描述符,explore_turn_context.ts 重放来源页,不相信调用方自报 finding 列表。 stride_explore_pagination.test.ts 覆盖陈旧/伪造/其他 consumer 页及来源可用性区别。它验证引用,不证明理解或采用。 Page 与 bounded basis revision 范围不同;来源变化后须在原 Turn 重读,可更新 context/basis,但不替换原 obligation/settlement 身份。当前仍构造完整来源/result rows,有界输出及较少单项 hash 不证明源 IO 为常数。测长历史时保留遗漏读取和有范围 反证;来源缺失不是反证,适用范围改变必须使对应旧依据失效。

借鉴机制及其限制

以下是实现参考,不是性能对比结论;固定源码版本不代表安装版本。 借鉴职责、触发条件与失败场景,再适配现有归属。

公开源码快照 值得借鉴的机制 LoopX 落点与限制
Grok Build 2bdd1d6a:Goal 循环、策略顾问 Host-owned Goal 路径在工作轮结束后评估,候选完成时复核,反复未达成时进行建议性的策略调查 沿已有 owner 区分继续、验收与方法调查;不照搬固定评审人数,也不假设额外模型调用改善质量或成本
Codex 9167a0b2:工具与输入循环、Goal 接续 工具结果和待处理输入驱动当前回合,生命周期扩展在空闲时启动合格 Goal 工作 复用 Host 执行与上下文维护;明确接续责任,避免原生 Goal 与外部 heartbeat 分别启动同一 attempt
OpenCode be674e31:inbox、执行协调器、子任务返回 当前工作纠正与排队任务分离;pending-wake 合并通知,覆盖 drain 到 idle 的竞态;子任务完成成为输入 扩展既有 inbox/session/Turn 投递;进程内单执行者不能替代跨主机 claim、lease 与采用证据
Pi e6220e13:Agent 循环、skills、subagent 扩展示例 内层处理工具/steering,外层处理 follow-up;技能与复杂流程按需加载 普通工作不必依赖完整研究流程;扩展示例不等于默认产品支持、安全隔离或跨 Host 验收

Grok Build:继续工作、候选评审与方法调查分开触发

沿源码追的问题: worker 看似完成或反复失败时,什么实际让它继续、接受批判或换方法?

handle_turn_input_inner 完成一轮工作
  → 可执行的用户输入优先
  → run_goal_round_end → evaluate_goal_round
       continue           → 下一步指令 → worker 继续
       blocked            → 稳定 blocker key → 重复阻塞策略
       candidate_complete → verify_goal_candidate
           Achieved       → 本地 Goal 完成
           NotAchieved    → 保留具体 gaps → worker 继续
               达到策略调查节奏 → 建议性的 strategist
           评审基础设施不可用 → 新路径暂停

工作轮 caller 在普通模型/工具工作之后调用它,不在每次工具之前完整规划。 evaluator 接收有界 transcript、目标和 plan,不带工具,必须返回依据与下一步;稳定 key 用于 区分反复存在的外部阻塞和 worker 可以继续调查的普通错误。这仍是一次模型判断, 不是廉价的确定性完成判据。

只有候选完成才进入 verifier。classifier 默认三个 skeptic 角色,但首个明确反驳可以让其余角色不启动;冷评审的投票规则也不让 恢复过的 gap reviewer 成为决定性赞成票。角色数不等于 API 调用数,每个角色仍可多轮 调用模型和工具。verifier 指令 主要审查实现者提交的证据并允许抽查,不独立证明每项业务后置条件。

strategist_should_fire 根据累计未达成触发,不逐步运行。 策略指令 要求依据 trace、diff 和测试提出结构性改法;PlanGuard 恢复被改写的 plan 字节, 避免方法调查悄悄降低验收。这是有界保护,不是通用权限系统。

还要追失败路径。 纠偏在 Host 安全点由 RestoreOnCancel 保护着取出;上下文 提交前取消会恢复原队列顺序。最后接收点之后到达的纠偏有保留 plan gate 的 fallback prompt。插入消息实现 及 actor 测试 覆盖取消中的 drain 和晚到消息。LoopX 可以借鉴这些竞态测试,但 exact-Turn steer 不能自动继承 Grok 的后续投递策略。

压缩后重新注入当前 Goal,不增加有效工作轮。进程重启则不同: GoalTracker::from_snapshot 清除 in-flight child 状态,把原 active Goal 恢复为 user-paused。 快照持久化 经异步通知到达;原子写一个快照文件,不等于全部 Goal 记账和外部效果组成已确认事务。

对比结论: 借鉴分级介入和当前 Goal 重建,保留 LoopX 的验收、原操作恢复和 配置复核义务。评审人数、计数重置、重启后暂停策略都须按 Host/profile 另行验证。 所读源码默认选择新 workflow 分支,但受配置和远端 kill switch 影响; 配置定义 不能证明安装行为。压缩测试 与快照测试 提供可复用反例,不是本轮运行通过的证据。

Codex:响应完成、回合终结、Goal 续跑是不同边界

问题: 如何持续工作而不让每个工具结果都成为 Goal 规划事件,纠正与续跑竞争时怎么办?

输入获准 → run_turn → sampling request
  → 模型输出 + 工具 → 等待并记录工具结果
  → 模型还需后续处理,或者存在待处理输入?
       是 → 准备当前上下文 → 下一次采样
       否 → stop hooks → 终结回合或有界继续
  → Goal lifecycle 为完成回合记账
  → on_thread_idle → continue_if_idle
       持有 Goal-state permit,读持久 active Goal
       → start_turn_if_idle 再做 Core 准入

同一 step context 用于请求、公开工具清单和实际工具执行;待处理输入在规定边界消费。 因此看似最终答复的文本、一次采样完成和整个回合终结并不是同一事件。 Core 输入准入 还将 steering 绑定到预期的活动 Turn。

原生 Goal 有两层保护:Goal-state permit 覆盖读取到启动的窗口,Core 再独立预留空闲 回合。待触发消息、Plan mode、draining 或正在运行的回合都能拒绝自动工作,拒绝后不 暗中转成队列或新 Turn 的 steering。输入提交测试 覆盖 Plan mode 拒绝的原子性;Goal lifecycle 测试 覆盖恢复记账与禁止的状态变更。update_goal 工具 写入允许的完成状态和用量,这次写入并不是对业务要求的独立测试。

压缩中还有另一种竞态。 准备好的摘要在安装时可能已过期。 可选异步压缩路径 受 feature/provider 条件约束,绑定历史、模型和认证版本。 replace_compacted_history 在实际修改时校验捕获依据,保留实时 suffix 以及前台压缩快照之后接受的 Goal 编辑。 Rollout 重建 同时恢复历史、归属和 settings metadata,不随便用一个仍可读的旧摘要代替。 预计算结果即使最终丢弃,也可能已经产生费用。

技能使用有预算的 metadata 目录 与显式资源读取。 探索可移到 child context,但返回边界有限:所读 V2 的 completion routing 是 trigger_turn=false 的 best-effort mailbox 投递,wait_agent 报告等待活动, 不表示研究内容已经被采用。多 Agent 测试 明确区分完成正文、等待和中断。

对比结论: LoopX 复用 Host 内循环,并在自己的当前权威边界重新验证准备好的接续。 原生 Goal 状态、准备好的摘要或已入队子结果不能替代 LoopX acceptance、lease fence 和采用事实。这里得到的是职责分工,不是轻量 Host 已解决完整跨 Agent 生命周期的结论。

OpenCode:持久工作与合并唤醒各司其职

问题: 工作在 busy→idle 边界到达时,怎样保留它,同时避免重复 runner 和模型轮询?

Session.prompt:核对原身份 → prepare → admit
  → durable inbox → SessionExecution.wake
  → 每 Session coordinator → drain
  → runner advanceToStep → 提升输入 → runStep
       模型/工具 attempt → 持久 tool/step terminal events
       → retry / compact / continue / complete
  → pendingWake?再 drain:结束 execution

Session.prompt 先准入输入再唤醒。runner 进入工作时允许 queued input,继续当前工作时只提升 steering;provider retry 在同一 logical step 内刷新上下文,不反复消费更多 inbox 输入。内存 pendingWake 封住最后 资格检查到 idle 的竞态,合并的是唤醒意图,实际工作仍在 durable inbox。 coordinator 测试 使用受控调度覆盖 active、finalizing 与 cleanup 交错。

持久性不只来自内存 map:execution 将 execution-start event 与 durable claim 一起提交,正常终结/取消释放它,shutdown 保留恢复依据。restart 扫描 claim 并持久记录有界 resume 次数;它声明的是 managed-server 交接假设下的 at-least-once。工具可能已改变外部世界但结果尚未入库,claim 不能消除这个未知。 执行测试 覆盖 claim 清理、取消和持久恢复次数上限。

后台探索通过 SubagentJob 返回:child/job generation 绑定 completion observer,由它向父会话既有 inbox/wake 投递 stable-ID synthetic input。Observer 寿命超过局部视图; 生命周期测试 先移走/驱逐视图再完成子任务,核对结果通知。它验证预期路由和恢复边界,不证明真实父 模型使用了发现;技能也仍经权限检查后按需读取。

对比结论: 借鉴持久工作和低成本唤醒信号的区别。LoopX Goal Chat 已有有范围的 accepted-result wake,应先验证其最后检查、重启和停止竞态,再推广到 provider checkpoint。OpenCode 的进程/服务接任假设不能替代 LoopX claim、lease 和未知效果恢复。

Pi:整批工具边界的 steering,与独立上下文刷新

问题: 纠正何时进入正在运行的工具流程,怎样避免上下文维护让它再晚一次模型请求?

AgentSession prompt / steer / followUp
  → Agent pending queues → runLoop
  → prepareNextTurn → 补取准备期间到达的 steering
  → prepareRequest → 模型响应 → 执行整批工具
  → finishTurn → 下一次工具/steering 循环
  → 内循环准备停止时,才消费 follow-up
  → event listener 将完成消息追加到 session history

finishTurn 还是一个控制扩展点,不只是通知:

finishTurn → end?→ agent_end
  否则 → 有自然工具/steering 工作?→ 继续这项工作
       → 有 follow-up?→ 带该输入继续
       → 显式 continue?→ 一次 context-only turn
       → 否则 agent_end

自然接续会消费显式继续请求,不额外重复;再做一次 context-only turn 需要新的 continuation 决定。它支持可选的长任务 controller,但不把持久业务 Goal、独立 验收或跨进程恢复自动加到基础循环。

此版本在整批工具调用结束后消费 steering。Sequential mode 也先完成 batch; parallel 可以乱序完成,但结果按调用顺序进入上下文。Steering 不会终止已提交工具, follow-up 则等内层工具/steering 循环准备停下时才消费。 循环测试 明确断言两个工具结果都在 queued steering 前。承诺长工具任务的纠偏延迟时必须考虑 这个粒度。

AgentSession 把上下文刷新接入 prepareNextTurn。大工具结果可能在下一次采样前要求压缩;准备结束 后 runLoop 补查新 steering,但 one-at-a-time 时不多取第二条。 压缩测试 阻塞 compaction hook、入队纠正、再核对下一请求包含它。Faux provider 响应证明时序, 不证明模型服从。

SessionManager 维护带 parent ID 的 append-only JSONL tree。Compaction 追加摘要和保留历史边界, 重建模型投影不抹掉原历史。它能恢复上下文,但摘要或追加日志都不建立任务验收或外部 效果幂等。

Coding-agent 的 plan/subagent 流程是可选扩展,链接的 subagent 实现是示例而非必经 默认层。技能 formatter 先提供 metadata 和读取入口;可执行扩展能改生命周期并拥有进程权限,技能文本只是 指导选定工作。LoopX 的适配是按条件付出这些成本,并明确 Host 实际消费边界, 同时保留自身 required reads、独立验收和接续权威。

Grok Build 新旧 Goal 路径的失败语义不同,旧路径包含基础设施失败时放行完成的行为, 不应作为 LoopX 验收的候选方案。不同项目相似的 Goal/turn 流程也不是独立实验验证: Grok 的第三方声明 明确有来自 Codex/OpenCode 的工具移植,但不能据此认定 Goal 循环同源。 这些客户端源码不能证明所有托管服务的实现,也不能保证任意外部操作恰好执行一次。

对比如何落实为现有 RFC 修订

审校按以下过程展开,不把外部项目的功能直接当作 LoopX 缺失能力:

  1. 从外部 caller 追到实际循环、状态写入和返回路径,区分 Pi 工具批次、Grok 工作轮 与 LoopX settled Turn,避免用同一种干预次数描述不同单位。
  2. 阅读取消、晚到输入和重启测试。OpenCode 的持久恢复、Grok 的暂停恢复说明它们 并非无状态循环,但也都不证明外部作用恰好一次。
  3. 找到 LoopX 对应 caller 和参考契约。Steering receipt、accepted-result wake 和 Explore capture 已有实现,应组合和验收,不换名字重做。
  4. 区分源码连接与模型行为。上次决定投影和 CLI 链已存在,投递结果不证明下一动作更好。
  5. 逐条对照 RFC,将过时的下一步与含糊义务修回所属章节,再补能区分新旧解释的失败场景。
所属章节 含糊或过时定义 修订与决定性验收
Stride §6.4、§7.5–7.7、§11–12 事件驱动可能被读成跳过周期义务;已有反馈投影仍列为下一实现 保留配置义务,分开候选评审和验收;下一片段改为真实结果→采用工作→再次复核,包含上下文恢复与完整成本
Research Exploration §5.1、§11.5 通用捕获与未来科学决策/采用合同区分不足;有界输出暗示不读全来源 复用附件/重放,只识别仍缺的有效性/采用事实,测源 IO,分开验收捕获、使用和结果
Agent Session §1、§4–5、§10–11 笼统“无自动恢复”和统一 successor-wake 缺口掩盖已有接续;相同原生身份可能暗示语义已更新 记录 managed ZCode 路径,保持单接续 owner;逐 Host 验同实例 resume 后当前标准/来源消费,以及终结和重连
Manager A23、§10 “steer 或 queue”可能静默改投纠正;投递 ACK 可能暗示后续采用 保留原 ingress/Turn 和已允许 fallback;queued、delivered、consumed、adopted、verified 各由所属事实证明
Shared Goal Alignment §3.7–3.8 来源可读、局部 accepted、note 采用、journal 可继续可能被当成整个 Goal 就绪 保留 accepted 范围和必要要求覆盖,新工作前重接当前标准/显式来源;Direction M1 只作候选观察,原操作恢复保持不变

这些修改细化验收并澄清既有权威,不安装 evaluator、不改变当前周期,也不创造协议词表。 额外机器约束仍需所属实现、兼容和关闭态验证。

所核验 LoopX 版本的实现程度

范围 已有证据 仍待闭合的边界
Replan 投递与后继选择 实际 caller、typed 来源检查、跨 Turn CLI 测试 自然模型的方法采用与有效结果
结构化 stride 策略 可选提案结构、previous/Explore review、精确证据绑定,以及开启的周期复核所有出口必须记录决定的约束 声明合法不等于真实,实际方法采用和收益仍需证据
Explore 捕获与显式 M3 composition 普通附件和 File/SQLite composition gate,见 Research §5 §11.5 单实验结果/采用门、完整远端/安装验收与科学效用
纠正与 accepted-result wake 浏览器重试身份、exact-Turn ingress、有界 Goal Chat wake 逐 Host/channel 的实际消费和采用,通用作业结果集成
恢复与 required reads typed 原操作恢复、当前 Todo/acceptance/lease 检查和来源读取 跨压缩/交接的完整 Goal 要求覆盖,不推断全局就绪
Managed native Goal 可选 ZCode bind/start/pause/resume/stop、精确 native 身份、冷恢复暂停和 Core 准入 同实例恢复后消费当前标准、真实用量/成本与全部 Host 资格
Acceptance 与 result-use 版本化合同验证/CAS,以及当前显式依赖祖先检查 Accepted 合同范围不等于任意 Goal 意图完整覆盖,不推断全局依赖图
Direction 与省略的 Explore 证据 纯 direction M1 builder,生产路径来源重放结果页 Direction 生产回执/consumer 未资格化;引用合法不证明模型采用或常数读取成本
产品过程解释 显式产物/复核/修订/采用视图 通用 stride 决定→产物过程,以及完整 Explore 附件/重试操作
运行效率 明确 owner 与可测成本候选 同负载、模型、历史规模的受控测量;代码量或测试通过不证明延迟

协调已有实现候选

源码地图不能把候选 PR 已有的工作写成需要重新实现的缺口。下列 PR 接入同一流程 的不同部分,各自当前提交的评审和验收证据仍决定其就绪程度:

已有提案 在流程中的职责 交接要求与边界
请求纠正与 Goal 效果 #6357 原会话 → 请求修订 → 效果预留 → 真实 Goal 终局回执 → 原路返回 发送前持久保存并回读精确重试身份;已提交历史、当前请求版本与接收方采用分开。保留 Goal 变更不代表工作已完成。
材料读取与方向恢复 #6338 Owner 声明 → 真实有界来源读取 → 同 Agent 确认 → 当前依据与恢复 即使历史满额,当前读取失败也须撤下旧有效状态;保留历史及有界 owner 恢复。读取确认不证明模型理解、工作改变或验收。
备份隔离检查 #6279 归档/清单验证 → 隔离 owner 读取 → 可读历史证据 检查保留原容量和 owner 决策门;激活、新权限、按当前要求继续及独立验收的新工作,仍归恢复 RFC 后续阶段。

每个 PR 都能交付自身有界结果;连贯旅程还须观察消费者实际使用上游结果,不能以 词语一致或三个 PR 均合并代替。按当前 main 协调重叠 caller,再从结果源码重新生成 派生 manifest。验收留在原 PR/RFC owner,不另建依赖账本,也不要求普通纠正先完成 无关的灾难恢复激活。

将探索接回执行,避免每项任务都变成研究

初始未知、新机会、用户方向或反例都可以触发探索。重复失败只是信号之一,不是前提, 也不自动要求换方法。选择技能或并行工作前,先说明调查可能改变什么决定。

未知 合适的工作 有用的返回
现有实现及约束 定向源码阅读技能 已证实行为、可复用边界与限制
替代方法或外部依据 研究/搜索技能 候选、一手来源、适用条件与反证
候选是否适配项目 源码与研究结合的分析,或有界实验 能区分方案的结果、集成成本与采用条件

这些是工作方法分类,不是必装技能包或新路由 enum。选择能回答问题的最小方法。 子 Agent 在假设或信息来源不同时才有明确分工价值,摘要保留来源引用和未决问题。 研究报告本身可以完成研究任务,不必制造代码工作。

用 Explore 现有 evidence 模式保留发现,多候选分支确需只读选择支持时再用 planning。 模式不授予 claim、spawn 或执行权限。验证后可复用的发现通过既有 explore_result 附件或 --explore-result-json 随普通任务回写,包含测试输入版本、适用范围、观察、 解释和证据。兼容的 path_delta 可复用已有附件形式,避免重复同一叙述。 普通工作没有新发现时不需要填空 finding。

下一轮 context 和 explore_review 让 Agent 说明哪个发现支持换路、继续原路或合理复验。 反证限定在已测试条件内,保留当前最有依据的成果。输入不可读或测量未得出结论,都不 构成反驳。实际任务步骤、产物版本和独立验证才能支持采用声明,只有来源绑定还不够。

控制常态开销

先沿优化证据指南 测真实消费者,再选择抽象:

  • 分开测重复调用、历史读取、序列化/跨语言成本、provider IO 和模型工作。 返回短文本仍可能扫描完整来源;Explore 的有界 turn context 不承诺历史 IO 有界。
  • 只在已证明的快照边界内复用事实,在所属准入/写入边界重新检查权限和版本。 缓存不能成为另一个 writer;先消除已测到的重复读取/复制,再考虑缓存服务。
  • 默认上下文保留决策所需事实与详情入口,相关时再读技能指令、完整证据和诊断。 精简文案仍须保留顺序、来源、验收及停止义务。
  • 暂态传输重试、上下文压缩、方法调整由各自 owner 处理。 耗时或新标识不能证明进展;恢复沿原操作,未知效果先查询再重试。
  • 总成本包含探索、评估、评审、压缩与 observer CPU/IO。 可见响应更快不一定意味着总成本更低。

对受支持的长任务 profile,Stride §7.5 提议先进行无推理调用的观察,再由确切、 经过验证的结果推进现有 monitor generation,观察期限负责发现丢失事件。 不支持的 Host 保留当前路径并说明限制;本文不隐式抑制模型准入或修改 heartbeat 默认。

一次连贯的验收场景

选择一个受支持的 Host/profile 和隔离仓库任务:改进实现,同时保留约定命令和兼容合同。 整个场景保持原验收不变:

  1. 开始有效工作,然后纠正实现方法但不弱化原要求;分别确认收到纠正和实际应用。
  2. 调查一个相关未知,结果随普通回写返回。下一段已准入工作采用候选,或解释保留原方案 的理由;检查实际产物与结果。
  3. 将确切后台结果交给现有 monitor/resume owner。注入重复、乱序通知,以及消费者即将 空闲时到达的通知。
  4. 在结果已提交但尚未确认时中断,恢复原操作与当前 Goal 依据。覆盖来源版本变化、 证据缺失及用户停止;旧结果不得重新启动已停止工作。
  5. 独立验收后返回原会话。打包前端与 CLI 分开显示 queued、delivered、adopted、validated 事实,缺失或陈旧证据不能保留成功标记。

现有纠偏证据视图 可以核验显式产物/复核/修订/采用关系,不是所有 stride decision 的通用可视历史。 缺少前端附件提交/重试或决定到产物的连接时,仍是所属交付片段的配套工作;只有 CLI 的前置实现应说明为部分交付。

恢复与负向场景矩阵

下表把已有回归接缝组合成待验收的连贯场景,不是全部用例已通过的报告。 测试链接提供可复用起点;实际执行的测试、后端和跳过项在 PR 单独披露。 沿原操作与当前来源版本连接证据,不新建账本。

注入或变体 应观察到的结果 已有接缝与剩余验证
暂停后保持 Goal instance,更新标准/来源范围再 resume;restore 期间再加入 amendment 保留原生身份和原回执;第一项新受保护动作消费当前适用标准/来源,不支持的边界保持待处理 原生控制器测试 覆盖身份/恢复以及依据门:acceptance/source revision 依据变化、不可读或 journal 从未记录依据时,拒绝直接 resume 并保持目标暂停,直到 stop/start 记录当前依据;跨 owner 恢复到真实模型行为仍待验
显式 A → B → C 的祖先失效,但 C 自身 validator 仍通过 保留历史 accepted/done;祖先不合格时拒绝当前使用,不重新派发原任务 Result-use 集成测试 已由受控 worker 覆盖;再接所选 Host 入口
Native completed 而验收失败;selected-work 合同通过但仍有必要 Goal 工作 保留 provider 完成与局部 accepted,不升级为整个 Goal achieved;完成应做结算;仅可选研究未完成不必阻塞收口 验收 authority 测试 和原生完成测试覆盖独立 owner;最终组合回读仍待验
最后 drain 与 idle 之间提交结果;重复通知、停止后旧 wake,再加入新获准输入 持久工作可发现;旧 wake 不复活已停执行;新输入由原接续 owner 按当前准入处理 复用已验收结果 wake 和 Host 接续路径;同时验证不重复启动与不丢工作,不能只验证锁
工具、上下文准备或终结期间投递/重试 exact-Turn steer 文本、ingress、目标不变;如实显示 pending/consumed/refused 和许可 fallback;steering 不等于工具取消 Steering 测试 加每个 Host 的声明消费边界,不推广为全部 Host 通过
Native set 已发生但回执丢失;重放旧操作后再准入新恢复工作 只恢复匹配持久 start intent 的 target;冷恢复暂停;旧重放幂等,新 accountable Turn 仍履行结算 复用原生控制器和 Turn recovery,分别检查原操作与新 Turn 回执
Validation/quota 变慢时请求停止;到单次 deadline 后多次显式恢复 分别测请求排队、原生取消与确认 drain;跨计时器保留配置的累计预算及 unknown 用量 ZCode runtime/broker 是测量候选,不是已证明的停止 SLO 或 token 用量限制
经合法/伪造/陈旧/跨消费者页引用省略结果;新增与旧反证条件不同的正 finding 当前来源重放;反证保留适用范围及读取入口;坏页与来源不可用分开。同依据页保留准入身份,源漂移可在原 Turn 更新 basis 分页测试 与 Stride §7.6 已有合同;仍须验证实际采用省略证据
主工作提交后丢失 Explore 附件/关联确认 主工作仍成功;原操作下补回附件,不重复工作、不宣称已采用 Explore 回写测试 提供恢复接缝,验证产品重试与回读
遍历启用策略的周期复核出口,再关闭策略或不声明 direction Progress/successor/blocker/terminal 保留现有义务;关闭保留普通行为/历史;未声明 Direction M1 不加投影或权限 Stride 测试 与 direction 测试;压缩、轮询、UI 刷新不能解除工作义务
分别给判别性结果、不可用来源、不适用 finding,以及支持保留原方案的结果 检查实际下一工作、产物和独立结果;有依据不换路合法。复述 finding 或单独声明 used 不足 Research §11.5 与既有捕获/result-use owner;真实模型采用是独立 M3 验收,对比收益还需匹配证据
保持渲染上下文上限并扩大历史 省略反证仍可恢复;分测扫描/排序/hash/序列化/上下文成本,保留适用范围版本 当前源码处理完整来源;先测冷/热负载,再宣称 IO 可扩展或净节约

首行是对上述“验收不变”主场景的显式授权改要求变体,不允许 Agent 在普通优化时 自行弱化验收。先在既有 owner 跑故障用例,再组合受支持产品旅程;仅为需要的结论 追加真实模型或匹配实验。

交付与收益验收

交付片段 既有归属与决定性证据
移除一处实测开销 S2/S7/S10 与优化指南:同负载 base/head 比较,保留要求的语义、重放与真实后端检查
一次探索影响后续工作 Explore 与 Stride §7.6:真实模型判断、当前证据、可归因产物和独立结果,也允许明确不换路
恢复一条 provider 结果/唤醒路径 Stride §7.5、Host 与 monitor:受支持产品入口覆盖重复/丢失/迟到事件、重启、停止、来源变化及原操作回读

这些片段沿用现有路线图和 RFC 里程碑,不创建新任务账本,也不要求先完成无关迁移。 实现前核对相关当前工作:周期继承与复核约束、纠正重试身份、已有 codec/Explore 性能修复可能已覆盖部分范围。

测量验收质量、遗漏要求、总时间/tokens/成本、纠正到行动的延迟、恢复损失、重复效果 和用户注意力。固定源码、Host/model、任务/输入、权限、验收器和预算;保留失败及 未完成样本,区分冷/热路径和历史规模。评价候选前确定阈值。合成 fixture 验证机械链, 真实采用和对比收益需要各自证据;开销下降但验收或恢复变差,不算优化成功。

保持行为的常规性能修复可沿现有合同推进。改变默认准入、复核、保留、权限或结算, 则在所属 RFC/契约中说明兼容和回滚。可选策略在完成资格验证前保持有界;关闭策略 保留历史证据,不取消已准入工作,也不抹除恢复义务。