Claude Skill

eo-loop

eo 流程总控:按用户意图圈一段(入口节点 → 出口节点 → 收敛标准),把 eo-change / eo-implement / eo-archive 及可选闸门(eo-change-review / eo-test / eo-review)派发到可插拔执行基底上推进至收敛,窗口化汇报进度。触发:eo-loop / 串起来跑 / 循环推进到收敛 / 总控调度 / /eo-loop。 NOT FOR: 单点动作(直接调对应 eo-* skill);派出去不再监督的完全交接(orca-cli full handoff);bug 口喷(/eo-fix)。

LLM Mart · 0 points · 8 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download SimpleEve-eo-skills-eo-loop-4293fec.zip · 19 KB
Part of simpleeve/eo-skills — 16 skills

Install

skills CLI npx skills add https://github.com/SimpleEve/eo-skills/tree/main/eo-loop
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install simpleeve-eo-skills@llmmart
Git git clone https://github.com/SimpleEve/eo-skills.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole simpleeve/eo-skills collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

eo-loop — eo 流程总控

总控只做五件事:识别、派发、路由、循环、汇报。三不做:不亲自写代码、不改 change 实质内容、不复述下游流程(节点内部怎么做由各 eo-* skill 自治)。

总控无状态:流程真相只在 change.md frontmatter 与报告文件里。会话断了,任何 agent 重读 frontmatter 即可从当前节点继续。

总控在哪:用户在哪个会话喊 /eo-loop,哪个会话就是总控。

前置条件

  • 必须能找到 .eo-project.json。同目录存在 .eo-project.local.json 时顶层字段覆盖合并(local 优先)。找不到 → 报错退出,提示运行 /eo-project-init
  • 线段涉及已有 change 时,定位其 eo-doc/changes/<NN>-<slug>/(口头引用按 ../eo-shared/conventions.md §2 经 INDEX 解析)

调度哲学(四步闭环)

① 圈线段:从用户话语确定三要素——入口节点、出口节点、收敛标准。v3 默认线段很短:

默认主路:change → implement → archive
信号命中:主路对应位置插入闸门(change 确认后插 change-review;implement 后插 test / review)

地图是 ../eo-shared/conventions.md §3 的状态机。三要素判不出的,先查偏好文件补缺省(见「经验沉淀」);仍缺 → 按封闭选择协议(../eo-shared/questioning.md §4)问一次,不追问第二轮。

入口是已确认的 change 序列(带「依赖 #N」标注,如 brainstorming 捕获出口确认后的产物)时:按依赖序串行推进(无标注 = 串行),逐个 change 走完对应 eo-* 节点(默认主路,信号命中照常插闸门);节点边界 = 观测点,按「可观测性」节口径汇报。

随手小改先过 trivial 闸:总控会话里用户随手提的修改,先按 ../eo-shared/granularity.md §2 判定——trivial → 总控直改(需起环境验证才派原 impl worker),commit 前缀按 conventions §2.5,不进状态机、不产工件;改动使活跃 change 的 AC / 文本与实际不符时,顺手就地精化文本。四判据任一不满足 → 回到正常圈段。

举例措辞判据:用户意图含「比如 / 之类 / 例如」= 形态未定稿——先安排探针对齐(change 确认)把形态钉下来再派实施节点,不得让例子直接当定稿进派发 prompt。

条件式 Execution Guard:圈段后若命中任一条件——长程(跨多轮或跨节点)、并行、无人值守、高风险(安全 / 权限 / 数据 / 不可逆动作)、存在开放未知——本线段启用 ../eo-shared/goal-contract.md,总控在每个节点派发前从现有真相源即时编译控制包。来源限于当前 change.md、报告、Git 基线与用户本轮授权;本轮授权只能收紧运行边界,若与已冻结的 Why / 范围 / AC 冲突,必须先走用户裁决与 change 回炉。控制包只存在于本轮派发上下文,不落盘、不造第二信源。未命中条件则沿用普通调度。

控制包只投影六项,不创造新要求:意图与出口 / 证据门(每项结论由哪个角色基于什么工件证明)/ 运行边界 / 取舍顺序(引 goal-contract)/ 未知权限(引 goal-contract Unknown 分流)/ 路由事实。

Unknown 的运行时动作(分类语义以 goal-contract 为唯一来源):

  • A 类:核对确在权限包络内 → 允许 worker 先做后报
  • B 类:worker 变更前发求裁决信号并暂停受影响分支;总控把同窗 B 类合并成一次封闭选择交用户
  • C 类:worker 变更前立即停下,总控立即上交用户
  • 证据未知:只允许一次有界探测(写清问题、预算、停止条件);仍拿不到 → fail-closed,结论只能「未验证 / 阻塞」,不得用 worker 自述补证

② 选基底:对线段上每个节点确定执行者与模型,三级优先:本次用户显式指定 > 偏好文件 > 探测缺省。偏好层与探测缺省均不静默生效:命中偏好条目或探测选定后,开跑前列出「节点 → 基底/模型」与依据问一次「按此跑?」;确认后收口照常回写偏好。运行时 ls 本 skill references/substrates/*.md 得到基底清单,读候选文件按其「探测」节确认可用。

③ 派发、路由与风险升级:按基底文件「派发」节把节点交出去。worker 完成后,默认只读取决定下一步所需的路由事实:frontmatter 当前状态、预期工件指针、报告结论、未决清单。这是路由职责,不是对 worker 内容再做一轮核查;正常路径不打开完整 diff、不重跑节点命令。

无风险即推进:路由事实齐备且不冲突 → 直接进下一节点。交付来自其他 agent、worker 首次参与、换基底、普通节点交接,均不是风险信号;不得因此抽查或信任分层。

只有出现下列可指认的风险信号才升级核查;主观不信任不构成信号:

  • frontmatter、预期工件、报告结论、worker 完成声明互相冲突
  • 推进所必需的工件或字段缺失、不可解析,或存在未提交交付改动
  • 已有可观察证据显示节点越过角色权限或约定文件边界
  • AC、安全、权限、数据或不可逆动作发生本轮计划外变化
  • worker 主动上报 Unknown B / C、证据未知、阻塞或决策门
  • 同一交付被打回后仍重复出现同类异常

升级后只处理触发信号对应的范围:状态/工件缺陷打回原 worker;需要实质判断时派对应有权节点;产品/架构分歧、范围变更、AC 豁免、熔断等超总控权限事项停下上交用户。同一节点打回 2 次仍不合格 → 升级为卡点问用户。总控不得亲自实施、改测试、兼任审查。

并行派发(判据与合流见 ../eo-shared/granularity.md §6):同一 change 的同层并行批(Batch 2a/2b)。纪律:

  • 派发前先做文件集机械校验(两两不相交;不过 → 降级串行并一句话报告)
  • 一并行 worker 一独立 worktree;同层全部收口后指派其一执行合并与合流 checkpoint
  • 并行派发 >2 个 worker 前先报数量与预算,等用户点头

④ 收敛判定:对照收敛标准——出口节点达成 + 所有已产报告无未决阻塞项。未收敛走反馈回路:

  • 报告有未决 P0/P1 或测试失败 → 原 impl worker 走 /eo-fix 循环内分支修复 → 回原复审方核销(增量,不重开全文)
  • acceptance 打回 → implement 修复 → 有 review 闸门的回原 reviewer 核销
  • 方案需实质修订 → eo-change 回炉

收敛即交付汇报:出口节点达成时,总控向用户发完整交付汇报——回复契约四条(../eo-shared/reply-contract.md)+ 证据面渲染(引 change 目录 evidence.md 与 frontmatter brief,引用不重建、不转述 worker 速报);出口是 archive 时,归档确认提问按 eo-archive 第一层口径与该汇报同条发出。线段收尾不得只有三行归档速报。

打地鼠信号与裁决门:同一 change 修复轮次 ≥2 且各轮失败触发位置互不相同(凭报告未决清单的位置列机械可判),或修复轮次 ≥3 → 停下向用户发封闭选择四选一:

  1. 全链审查(链路类缺陷缺省推荐)——原 impl worker 走 /eo-fix 深挖链路变体:枚举链上全部可死点、逐点配恢复证明,按死点矩阵批量修复
  2. 继续逐点修复——缺陷相互独立、非链路形态时
  3. 卡点检查——方向存疑,新鲜上下文做根因分类(/eo-fix 子流程)
  4. 回炉——方案本身要改

总控不代答、不以任何形式默认继续逐点修复。

节点清单

节点 消费 产出 边界
eo-change 意图 / 回炉反馈 change.md(draft → confirmed 经用户确认) 含风险信号播报与回炉子流程
eo-change-review(可选闸门) draft/confirmed 的 change.md change-review.md 信号命中或点名才派
eo-implement confirmed 的 change.md 业务代码 + 测试 + AC 勾选(implementing) 反馈修复归 /eo-fix 循环内分支
eo-test(可选闸门) implementing 后的代码 测试补缺 + test.md 严禁改业务代码
eo-review(可选闸门) implementing 后的代码 review.md(通过 → reviewed) 代码级审查
eo-archive implementing / reviewed archived(不可逆) 四问核对门

执行基底(可插拔)

基底 = 「把一个节点交给谁执行」的载体。一基底一文件,放 references/substrates/,增减基底 = 加删文件。每个基底文件必须含五节(照 references/substrates/_template.md):探测 / 派发 / 等待与观测 / 回收 / 已知陷阱。「已知陷阱」节只放出厂陷阱——运行时新学到的坑记进偏好文件的「已知陷阱」节(~/.eo-skills/loop/preferences/,条目前缀 [<基底名>],跨项目写 _global.md),读基底文件时一并读。

初始三基底与优先倾向(被 ② 的三级优先覆盖):

调用形态 倾向基底
总控是 Claude Code,执行者也是 Claude claude-subagent
总控运行在 Codex 侧 codex-subagent
节点要跨 agent 运行 orca-orchestration

交互式硬约束(全基底通用):节点派发一律走交互式通道——总控会话内 subagent,或 orca 交互终端 + dispatch task。严禁 codex exec、claude -p 等一次性非交互式调用承载节点:纯黑盒、无会话复用、无求裁决通道。

派发 prompt 纪律:写目标、不写步骤——只给节点 skill 名、change 目录路径、本轮收敛标准、必要输入;命中 Execution Guard 时再附即时控制包;不复述下游流程;不要求 worker 中途回报进度。Unknown 上报:仅 A 类可先斩后奏随交付记录;B / C 类须变更前求裁决。

worker 复用纪律:一个 change 的 loop 内,worker 按角色一次创建、跨轮次复用——修复回原 impl worker,核销回原复审方(增量核销依赖其上下文)。三条边界:① 复用边界 = 单个 change——收敛组切换到下一 change 时按角色一律重建;上一 change 的 worker 上下文只属于该 change 的方案与代码真相,跨 change 续用即视为上下文污染;闸门结论(如 change-review)不可跨 change 继承,每个 change 独立过信号判定(granularity §5)。② 跨角色必须隔离(review / test 绝不复用 impl worker——独立性是审查的价值)。③ 同 change 内重建仅当换执行者/模型、上下文已污染、或 worker 不可达。

可观测性:窗口化等待 + 主动观测

进度是总控查出来的,不是 worker 报上来的:worker 除完成/求裁决信号外零回报义务。总控在窗口内主动读证据——终端输出、change.md 勾选、报告增量、git log——手段见各基底文件「等待与观测」节。

一切等待必须窗口化,单窗 ≤10 分钟。窗口到期或观测点(节点边界),无论有无进展,向用户发进度报告并追加到 tmp/eo/loop/<slug>/journal.md:

• <HH:MM> <本窗口事件标题>

<是否需要用户裁决——无则明说「没有需要你裁决的事项」;brief 级摘要:原样引用当前 change 的 brief,未写则明说「brief 未写」>

<实质摘要:按主题归组的要点,不是操作流水账>

- 派发:<task / dispatch 凭据或 worker 标识>
- owner:<基底 + 模型>
- 当前规则:<本轮循环策略一句>

下一次固定进度报告约 <HH:MM +10min>。

brief 级摘要取 change.md frontmatter 的 brief(写法与生产时机见 ../eo-shared/summary.md):总控只引用、不代写不改写;窗口中途 brief 无变化时一句带过。

journal 属 tmp/eo 命名空间(conventions §1):可丢弃、不作信源。

经验沉淀(调度偏好)

位置 ~/.eo-skills/loop/preferences/:_global.md(跨项目)+ <项目短名>.md(覆盖全局同名条目);格式见 references/preferences-format.md。

  • 读:② 选基底时第二优先级——列出命中条目请用户确认后生效;① 圈线段判不出时查「习惯线段」节
  • 写:收口时回写本次实际生效的「节点 → 基底/模型」映射,缺省写进 <项目短名>.md;用户明示跨项目或同一映射已在 ≥2 个项目文件出现时才写 _global.md。用户当场纠偏 → 立即写入
  • 性质:提示而非保证——按偏好调度失败 → 回退探测缺省,并把失败记进该文件陷阱节
  • 基底操作层的坑(注入被吞、handle 漂移这类)也记进偏好文件的「已知陷阱」节:条目前缀 [<基底名>],跨项目通用写 _global.md、项目特有写 <项目短名>.md;基底文件的「已知陷阱」节只放出厂内容,不写

事实说明

  • codex 的 skill 前缀是 $ 不是 /;模型与 effort 是启动参数,中途不可切换
  • worker 的完成声明 ≠ 状态推进;状态真相只在 frontmatter 与报告
  • 回退边(status 置回)由产出该结果的 skill 当场执行(conventions §3),总控不代写 status
  • review 结果不授权总控动手修——修复一律派回原 impl worker 走 /eo-fix 循环内分支
  • 并行派发 >2 个 worker 前,先报数量与预算,等用户点头

关键约束

约束 说明
三不做 总控不写码、不改 change 实质、不复述下游流程
严禁非交互派发 节点执行必须走交互式通道;一次性调用全面禁止
条件式控制包 仅长程 / 并行 / 无人值守 / 高风险 / 开放未知时即时编译;不落盘
Unknown 权限 仅 A 类可先做后报;B / C 类变更前进决策门;证据未知有界探测后 fail-closed
风险触发式核查 正常交付只消费路由事实并推进;仅有客观风险信号时针对异常范围升级
worker 按角色复用 同角色跨轮次复用;跨角色隔离;跨 change 必重建、闸门结论不继承;同 change 内换模型 / 污染 / 不可达才重建
无状态 不落自有状态文件;中断恢复 = 重读 frontmatter
熔断只消费 打地鼠/轮次到限即停、按协议问用户,绝不无限循环
汇报硬窗口 任何等待 ≤10 分钟必有一次进度报告;报告首要回答「需不需要你裁决」
收尾必发交付汇报 线段收敛 / 归档确认前,交付汇报(回复契约四条 + 证据面渲染)与确认提问同条发出,不得只有三行速报
worker 零回报 进度由总控主动观测;派发 prompt 不得附加中途回报要求
基底即文件 新基底照 _template.md 建文件即生效;禁止把基底细节写回本文件
一次一收敛组 缺省逐 change 收敛;带「依赖 #N」标注的 change 序列按依赖序串行推进
Files (eo-skills)
  • references
    • substrates
      • claude-subagent.md 3.1 KB
        ---
        substrate: claude-subagent
        适用: 总控是 Claude Code,节点执行者也是 Claude(自调自)
        updated: 2026-07-28
        ---
        
        ## 探测
        
        Claude Code 会话内 Agent 工具原生可用,恒成立。模型按偏好或用户指定通过 model 参数传入(不指定则继承会话模型)。
        
        ## 派发
        
        - 一**角色**一后台子 agent(起名如 `impl-<slug>` / `review-<slug>`,便于 SendMessage 寻址),跨轮次复用。首派 prompt 给四样:加载哪个 eo-* skill、change 目录路径、本轮收敛标准、必要输入(如 review 反馈路径);命中 SKILL.md 的条件式 Execution Guard 时再附其即时控制包,不落独立文件
        - 控制包要求 worker 仅把 A 类选择随交付记录;命中 B / C 类时在变更前停止受影响分支,通过 SendMessage 向总控发结构化求裁决信号(类别、分叉、影响、推荐),等总控回灌裁决后再续原 agent
        - **轮次复用 = SendMessage 发回原 agent**:修复轮、增量复审、打回重做、追问,一律续原上下文,不重开新 agent;重建时机见 SKILL.md 复用纪律
        - 相互独立的节点(如同一基线上的 test 与 review)才并行;并行 >2 个先报预算等点头
        - 并行组 worker(同层批 / 并行收敛组,SKILL.md ③):spawn 时启用 worktree 隔离(Agent 工具 `isolation: worktree`),一 worker 一现场;合流 checkpoint 按 granularity §6 指派执行
        
        ## 等待与观测
        
        后台子 agent 完成会自动唤醒总控(harness 级信号,无需 worker 配合),这是主信号。10 分钟兜底窗口:等待期挂起必须带超时(定时唤醒 / Monitor 均可)。窗口内观测**只读产物不打扰 worker**:change.md 勾选、review/test 台账增量、git log——不 SendMessage 问「进展如何」(打断即污染 worker 上下文)。到点发进度报告再续等。
        
        ## 回收
        
        完成通知只用于唤醒总控和定位产物。正常路径按 SKILL.md ③ 读取 frontmatter 当前状态、预期工件指针、当前基线与最新结构化处置后直接路由,不打开完整 diff、不抽查或复做节点内容。只有这些事实缺失 / 冲突、出现可观察越界、计划外判据变化、Unknown B / C 或证据探测失败等客观风险信号时,才针对对应异常升级;需要实质判断就派 eo-review / eo-test,不由总控补做节点工作。
        
        ## 已知陷阱
        
        > 本节只放出厂陷阱;运行时陷阱记在 `~/.eo-skills/loop/preferences/` 的「已知陷阱」节(前缀 `[claude-subagent]`),一并读。
        
        - (2026-07-19) 子 agent 上下文独立:prompt 里不给 change 路径它就会自己猜——路径必给
        - (2026-07-19) 用词锚定:prompt 写「看看 / 检查一下」会弱化执行强度——用节点本义动词(审查 / 实施 / 验证)
        - (2026-07-24) Agent 工具偶发 teammate pane 创建超时(「Timed out waiting for the Orca runtime / tmux split pane handle」,orca status 却显示 ready、CLI 建终端正常):重试 2 次仍失败即切换基底——orca 终端跑 `claude --model <id> --dangerously-skip-permissions`,走 orca-orchestration 的 task/dispatch 流程,模型钉住不变
        
      • codex-subagent.md 2.3 KB
        ---
        substrate: codex-subagent
        适用: 总控运行在 Codex CLI 侧(eo-loop 被 Codex 加载执行)
        updated: 2026-07-28
        ---
        
        ## 探测
        
        运行环境即 Codex(`$` 前缀 skill 可用)即成立。总控在 Claude 侧而节点要 codex 模型的**跨侧**场景不属本基底——走 orca-orchestration。
        
        ## 派发
        
        - skill 前缀是 **`$`**:`$eo-review <change 路径>`。任何时候不能写成 `/`
        - prompt 遵守 SKILL.md 的最小输入;仅命中条件式 Execution Guard 时附即时控制包,不将控制包写成 `PROGRESS.md` 或其他状态文件
        - 控制包要求仅 A 类随交付记录;命中 B / C 类时在变更前停止受影响工作,通过当前 Codex runtime 的 agent 消息能力发结构化求裁决信号;无可用消息能力则停止节点并以 `DECISION GATE` 结果返回,不得先采假设实施
        - 子 agent / spawn 能力按 Codex 当前版本探测使用;不可用则降级为本会话顺序执行节点
        - 模型与 effort 是启动参数、中途不可切——需要不同 effort 的节点分开派发
        - **同角色跨轮次复用同一子会话**续发下一轮;机制上续不了则同参数重开,prompt 附上一轮报告路径作上下文补偿
        - 并行组 worker(同层批 / 并行收敛组,SKILL.md ③):一 worker 一独立现场(`git worktree add`);无法隔离现场则不并行,降级串行
        
        ## 等待与观测
        
        Codex 侧无完成自动唤醒时,总控主动轮询**产物**(frontmatter、台账、git log),间隔 ≥5 分钟;不向 worker 发消息催报。单窗 ≤10 分钟,到点发进度报告再续等。
        
        ## 回收
        
        完成消息只用于唤醒总控和定位产物。正常路径按 SKILL.md ③ 读取 frontmatter 当前状态、预期工件指针、当前基线与最新结构化处置后直接路由,不打开完整 diff、不抽查或复做节点内容。只有这些事实缺失 / 冲突、出现可观察越界、计划外判据变化、Unknown B / C 或证据探测后仍未知等客观风险信号时,才针对对应异常升级;需要实质判断就派 eo-review / eo-test,总控不兼任实施、测试、审查。
        
        ## 已知陷阱
        
        > 本节只放出厂陷阱;运行时陷阱记在 `~/.eo-skills/loop/preferences/` 的「已知陷阱」节(前缀 `[codex-subagent]`),一并读。
        
        - `$` / `/` 前缀混写是派发高频错误,派发前自查一遍
        
      • orca-orchestration.md 8.4 KB
        ---
        substrate: orca-orchestration
        适用: 节点要跨 agent 运行(执行者与总控不是同一 agent/模型栈),且需要总控监督
        updated: 2026-07-28
        ---
        
        ## 探测
        
        1. **先加载 `orchestration` skill 本体**(Claude 侧用 Skill 工具调 `orchestration`,codex 侧 `$orchestration`),加载完成前不得敲任何 `orca orchestration` 命令。本文件不是命令手册,只是 eo-loop 场景的增补与陷阱清单——命令契约、生命周期语义(worker_done 自动完结、handle 解析、preamble 规则)一律以 skill 本体为准,两边冲突时信 skill 并回修本文件。
        2. `orca status --json` 显示 runtime 运行中,且 orchestration 实验特性已开启。失败 → 向用户提示启动 Orca 或换基底。
        
        ## 派发
        
        1. **总控身份钉桩**(每次派发前、每个等待窗开始时重做):按自己的 `$ORCA_PANE_KEY`(= `tabId:leafId`,跨 Orca 重启稳定)从 terminal list 解析自己 pane 的**当前** handle:
        
           ```sh
           COORD=$(orca terminal list --json | jq -r --arg pk "$ORCA_PANE_KEY" '.result.terminals[] | select((.tabId + ":" + .leafId) == $pk) | .handle')
           ```
        
           后续收发一律显式带 `$COORD`,**禁用隐式身份解析**(省略 `--from`/`--terminal` 时 CLI 按 `$ORCA_TERMINAL_HANDLE` 环境变量解析——那是会话启动时烙死的,Orca 重启后即过期,见陷阱节)
        2. `orca orchestration task-create --spec "<节点目标 + change 路径 + 收敛标准>"`;命中 SKILL.md 的条件式 Execution Guard 时,把即时控制包一并放进 spec,不额外落盘,并要求 worker 仅随交付记录 A 类、B / C 类在变更前发 `decision_gate` 后暂停
        3. 建 worker 终端:implement / test / review 依赖当前工作区状态,用 `orca terminal create --worktree active --command "<agent 启动命令>"`;自定义模型/effort 写进启动命令(如 `codex --dangerously-bypass-approvals-and-sandbox -m <model> -c model_reasoning_effort="high"`——codex 不带 bypass 会每步卡权限审批)
        4. `orca terminal wait --terminal <handle> --for tui-idle --timeout-ms 60000` 就绪后 `orca orchestration dispatch --task <id> --to <handle> --from $COORD --inject`
        5. **轮次复用**:`worker_done` 后 worker 停在 agent 提示符,正好接下一轮——同一 change 内的同角色新任务 `task-create` 后 `dispatch --to <同一 handle> --inject` 续用同一终端,不重建;收敛组切换到下一 change 时按 SKILL.md 复用纪律一律重建终端重派。模型/effort 是启动参数,复用即锁定该组合;要换模型才重建终端(handle 报 stale 时 `terminal list` 重解析后仍按原终端续用)
        6. **并行组 worker**(同层批 / 并行收敛组,SKILL.md ③):一 worker 一独立 Orca child worktree 起终端,**不得共用 active 工作区**;合流 checkpoint 按 granularity §6 指派其一执行合并
        
        ## 等待与观测
        
        每窗开始先重做「派发」第 1 步的身份钉桩(Orca 若重启过,handle 已漂移),然后 `orca orchestration check --wait --terminal $COORD --types worker_done,escalation,decision_gate --timeout-ms 600000`——只等**必要信号**(完成 / 升级 / 求裁决),**不要求 worker 发 heartbeat**(dispatch 注入的 preamble 之外不追加任何回报要求,worker 专注任务)。窗口超时不是 worker 失败:总控主动观测——`terminal read` 看输出、`tui-idle` 探活、读台账增量——活着就发进度报告进下一窗。禁止 sleep 轮询。收到 `decision_gate` / `ask` 用 `reply` 应答后继续等。
        
        ## 回收
        
        `worker_done` 只用于唤醒总控和定位产物。正常路径按 SKILL.md ③ 读取 frontmatter 当前状态、预期工件指针、当前基线与最新结构化处置后直接路由,不打开完整 diff、不抽查或复做节点内容。只有这些事实缺失 / 冲突、出现可观察越界、计划外判据变化、Unknown B / C 或证据探测失败等客观风险信号时,才针对对应异常升级;review-only 的 `worker_done` 不授权总控动手修,修复派回原 impl worker 走 /eo-fix 循环内分支,需要实质判断则按 owner 规则派 eo-review / eo-test。
        
        ## 已知陷阱
        
        > 本节只放出厂陷阱;运行时陷阱记在 `~/.eo-skills/loop/preferences/` 的「已知陷阱」节(前缀 `[orca-orchestration]`),一并读。
        
        - (2026-07-19) 终端有输出 ≠ 完成,不要据此杀 worker 重派;长任务 15-60 分钟是常态
        - (2026-07-19) terminal handle 重启后会变,报 `terminal_handle_stale` 时用 `terminal list` 重解析;绝不用 handle 对比判归属
        - (2026-07-19) 同一 task 连败 3 次会被 runtime 熔断置 failed——第 2 次失败就该停下向用户报卡点,别撞到熔断
        - (2026-07-25) **claude TUI worker 的注入/提交竞态**(codex 弹窗吞注入的姊妹陷阱):dispatch --inject 后立刻补回车会**跑在注入文本前面**——空回车先落、任务文本后到,文本干坐输入框永不执行;有时注入整体被吞(框内空无一物)。标准姿势:dispatch 后先 `terminal read` 验证任务文本**已在框内**再 `send --enter`;框内为空 = 注入被吞,用 task-list 取 spec 原文 `terminal send --text "<spec>" --enter` 补投(附 worker_done 上报命令)。另:claude worker 终端在完成一轮 worker_done 后常变 terminal_not_writable——轮次复用前先探测,不可写即重建终端重派
        - (2026-07-24) codex 终端刚创建即 dispatch --inject,注入会被启动期的目录信任弹窗吞掉(dispatch 状态仍显示成功):必须先 `terminal wait --for tui-idle` **满足**(satisfied:true)再 dispatch;已被吞时任务卡 dispatched 态无法重派,救法 = `terminal send --enter` 手动补投任务文本(附 worker_done 上报命令,--to 填总控终端 handle)
        - (2026-07-24) worker_done 未必自动完结任务:skill 本体口径是**有效** worker_done 会自动置 completed;总控收信身份脱节时(见下条)runtime 关联不上就不会。同终端派下一轮前先 `task-list` 核对上轮状态,仍卡 dispatched 才手动 `task-update --id <上轮task> --status completed` 兜底(合法状态枚举:pending/ready/dispatched/completed/failed/blocked,没有 done)
        - (2026-07-24) **隐式身份解析的真实机制与失效条件**(受控实验实证,修正本条早先「每次 Bash 调用都不可信」的错误结论):省略 `--from`/`--terminal` 时 CLI 按 `$ORCA_TERMINAL_HANDLE` 环境变量解析身份——该值会话启动时烙死、同会话所有 Bash 子进程恒定(解析是**确定性**的,不随调用漂移),Orca 重启后 pane 换发新 handle 而 env 不更新,即过期。runtime 对死 handle 的收发**静默成功**(check 返回空、send 照收,零报错),过期后自动解析 = 稳定守着死信箱瞎等。最危险的是**混用**:dispatch 按 terminal list 显式解析活 handle、check 靠 env 自动解析死 handle,收发指向两个信箱——worker 回包完好排队、任务正常自动完结,总控却永远收不到。pull 模型信件永久排队:身份钉对后迟到的 check 也能全量补收,「监听没在场所以错过」不成立、唯一致死因就是身份不对。防治即「派发」第 1 步身份钉桩;`inbox`(跨收件人非消费)兜底审计;task-list+git 工件为完成判据的持久真相。另:check 消费型语义,同一时刻只留一个监听,起新先杀旧。
        - (2026-08-07) **`reply --id` 对 `decision_gate` 类型消息回注可能不达**:codex worker 的 decision_gate 等待中,总控 `reply --id <gate_msg>` 返回 ok 但 worker 两轮超时未收到(最终 escalation)。可靠回注通道 = `send --to dispatch:<dispatch_id>`(worker 下次 check 必收)+ 并行 `reply`  escalation 线程留痕。低层 `dispatch --inject` 创建的 ctx_* dispatch 不被 `worker-show`/`worker-release` 识别(dispatch_not_found),清理用 `terminal close`。
        - (2026-08-08) **worker-start 的 receipt 不可信为注入凭证**:worker-start 返回 `stage: input_accepted` 但注入文本撞上 codex 启动期 MCP 引导刷屏(尤其 MCP 启动失败重试时)仍会被吞,输入框实际为空。dispatch/worker-start 后必须 `terminal read` 亲验任务文本在框内或已进入 transcript;被吞救法 = `terminal send --text "<spec 原文 + worker_done 上报命令(task-id/dispatch-id)>" --enter` 补投,补投后再次 read 验证
        
      • _template.md 1.7 KB
        ---
        substrate: <kebab-name>
        适用: <一句话:什么调用形态下选它>
        updated: <YYYY-MM-DD>
        ---
        
        ## 探测
        
        <确认本基底当前可用的命令或条件;不可用即跳过本基底,换下一候选。
        若本基底包装的是既有 skill(有独立 SKILL.md),探测第一步必须是**加载该 skill 本体**——基底文件只写 eo-loop 场景增补与陷阱,不复制命令契约,冲突时以 skill 本体为准>
        
        ## 派发
        
        <把一个 eo 节点交给它执行的具体方式:调用入口、模型/effort 如何指定、prompt 必备要素(遵守 SKILL.md 的「写目标不写步骤」纪律;命中条件式 Execution Guard 时附总控从既有 SoT 即时编译的控制包,不另行落盘;明确本基底怎样传递 Unknown 求裁决信号——仅 A 类可随交付记录,B / C 类必须在变更前停下并求裁决)>
        
        ## 等待与观测
        
        <如何窗口化等待(单窗 ≤10 分钟);总控如何**主动**观测进度与探活(读什么产物 / 终端 / 台账)——不得要求 worker 中途回报;窗口到期无完成信号时的动作>
        
        ## 回收
        
        <结果如何取回;正常路径从哪里读取推进所需的路由事实(frontmatter / 工件指针 / 基线 / 结构化处置),并明确不抽查、不复做节点内容。列出本基底能观察到的客观风险信号及针对性升级方式;命中 Unknown B / C、证据有界探测失败或路由事实缺失 / 冲突时只处理对应异常,不让总控兼任实施、测试或审查>
        
        ## 已知陷阱
        
        <(YYYY-MM-DD) 已验证的坑,一条一行。本节只放出厂陷阱;运行时新学到的坑记进 `~/.eo-skills/loop/preferences/` 的「已知陷阱」节(条目前缀 `[<基底名>]`),读本节时一并读>
        
    • preferences-format.md 1.8 KB
      # 调度偏好文件格式(经验沉淀)
      
      位置 `~/.eo-skills/loop/preferences/`(不在仓库内——个人习惯不随 skill 分发,重装 skill 不丢经验):
      
      - `_global.md` —— 跨项目习惯
      - `<项目短名>.md` —— 覆盖全局同名条目。项目短名取 `.eo-project.json` 的项目名,无则 git 仓库目录名
      
      ## 文件格式
      
      ```markdown
      ---
      scope: global | <项目短名>
      updated: YYYY-MM-DD
      ---
      
      ## 节点偏好
      - <节点> → <基底> <模型/effort>(YYYY-MM-DD 起;依据:连续 N 次采用 / 用户明示原话)
      
      ## 习惯线段
      - <入口 → 出口,收敛标准>(YYYY-MM-DD 起)
      
      ## 已知陷阱
      - (YYYY-MM-DD) [<基底名>] <坑的记录:调度偏好失败、基底操作坑(注入被吞 / handle 漂移等);什么组合在什么场景失败、回退到了什么>
      ```
      
      ## 读写纪律(与 web-access 站点经验同款)
      
      - **消费必确认**:偏好只用于填补用户本次未指定的空位,且开跑前必须列出命中条目请用户确认(封闭选择:按偏好跑 / 逐项调整),不静默套用;调整结果按纠偏规则回写项目文件
      - **回写缺省进 `<项目短名>.md`**(调度习惯首先是项目属性);`_global.md` 只收用户明示跨项目的条目,或已在 ≥2 个项目文件重复出现的映射(写入时注明来源项目)
      - 条目是**可能有效的提示,不是保证**:按偏好调度失败 → 回退探测缺省,并把失败记入陷阱节
      - 只写两类来源:用户明示(「以后 review 都用 codex」→ 立即写,附原话);隐式惯性(收口时发现连续 ≥2 次同一映射 → 写入并注明次数)。单次偶然不写
      - 每条带日期;更新同一条目刷日期、不新增重复行
      - 用户本次显式指定永远覆盖偏好,且不反写偏好(除非用户说「以后都这样」)
      
  • SKILL.md 15.7 KB
    ---
    name: eo-loop
    description: |
      eo 流程总控:按用户意图圈一段(入口节点 → 出口节点 → 收敛标准),把 eo-change / eo-implement / eo-archive 及可选闸门(eo-change-review / eo-test / eo-review)派发到可插拔执行基底上推进至收敛,窗口化汇报进度。触发:eo-loop / 串起来跑 / 循环推进到收敛 / 总控调度 / /eo-loop。
      NOT FOR: 单点动作(直接调对应 eo-* skill);派出去不再监督的完全交接(orca-cli full handoff);bug 口喷(/eo-fix)。
    ---
    
    # eo-loop — eo 流程总控
    
    总控只做五件事:**识别、派发、路由、循环、汇报**。三不做:不亲自写代码、不改 change 实质内容、不复述下游流程(节点内部怎么做由各 eo-* skill 自治)。
    
    **总控无状态**:流程真相只在 change.md frontmatter 与报告文件里。会话断了,任何 agent 重读 frontmatter 即可从当前节点继续。
    
    **总控在哪**:用户在哪个会话喊 /eo-loop,哪个会话就是总控。
    
    ## 前置条件
    
    - **必须能找到 `.eo-project.json`**。同目录存在 `.eo-project.local.json` 时顶层字段覆盖合并(local 优先)。找不到 → 报错退出,提示运行 `/eo-project-init`
    - 线段涉及已有 change 时,定位其 `eo-doc/changes/<NN>-<slug>/`(口头引用按 [../eo-shared/conventions.md](../eo-shared/conventions.md) §2 经 INDEX 解析)
    
    ## 调度哲学(四步闭环)
    
    **① 圈线段**:从用户话语确定三要素——**入口节点、出口节点、收敛标准**。v3 默认线段很短:
    
    ```
    默认主路:change → implement → archive
    信号命中:主路对应位置插入闸门(change 确认后插 change-review;implement 后插 test / review)
    ```
    
    地图是 [../eo-shared/conventions.md](../eo-shared/conventions.md) §3 的状态机。三要素判不出的,先查偏好文件补缺省(见「经验沉淀」);仍缺 → 按封闭选择协议([../eo-shared/questioning.md](../eo-shared/questioning.md) §4)问一次,不追问第二轮。
    
    **入口是已确认的 change 序列**(带「依赖 #N」标注,如 brainstorming 捕获出口确认后的产物)时:按依赖序串行推进(无标注 = 串行),逐个 change 走完对应 eo-* 节点(默认主路,信号命中照常插闸门);节点边界 = 观测点,按「可观测性」节口径汇报。
    
    **随手小改先过 trivial 闸**:总控会话里用户随手提的修改,先按 [../eo-shared/granularity.md](../eo-shared/granularity.md) §2 判定——trivial → 总控直改(需起环境验证才派原 impl worker),commit 前缀按 conventions §2.5,不进状态机、不产工件;改动使活跃 change 的 AC / 文本与实际不符时,顺手就地精化文本。四判据任一不满足 → 回到正常圈段。
    
    **举例措辞判据**:用户意图含「比如 / 之类 / 例如」= 形态未定稿——先安排探针对齐(change 确认)把形态钉下来再派实施节点,不得让例子直接当定稿进派发 prompt。
    
    **条件式 Execution Guard**:圈段后若命中任一条件——**长程**(跨多轮或跨节点)、**并行**、**无人值守**、**高风险**(安全 / 权限 / 数据 / 不可逆动作)、存在**开放未知**——本线段启用 [../eo-shared/goal-contract.md](../eo-shared/goal-contract.md),总控在**每个节点派发前**从现有真相源即时编译控制包。来源限于当前 change.md、报告、Git 基线与用户本轮授权;本轮授权只能收紧运行边界,若与已冻结的 Why / 范围 / AC 冲突,必须先走用户裁决与 change 回炉。控制包只存在于本轮派发上下文,不落盘、不造第二信源。未命中条件则沿用普通调度。
    
    控制包只投影六项,不创造新要求:**意图与出口 / 证据门(每项结论由哪个角色基于什么工件证明)/ 运行边界 / 取舍顺序(引 goal-contract)/ 未知权限(引 goal-contract Unknown 分流)/ 路由事实**。
    
    Unknown 的运行时动作(分类语义以 goal-contract 为唯一来源):
    
    - **A 类**:核对确在权限包络内 → 允许 worker 先做后报
    - **B 类**:worker 变更前发求裁决信号并暂停受影响分支;总控把同窗 B 类合并成一次封闭选择交用户
    - **C 类**:worker 变更前立即停下,总控立即上交用户
    - **证据未知**:只允许一次有界探测(写清问题、预算、停止条件);仍拿不到 → fail-closed,结论只能「未验证 / 阻塞」,不得用 worker 自述补证
    
    **② 选基底**:对线段上每个节点确定执行者与模型,三级优先:**本次用户显式指定 > 偏好文件 > 探测缺省**。偏好层与探测缺省均**不静默生效**:命中偏好条目或探测选定后,开跑前列出「节点 → 基底/模型」与依据问一次「按此跑?」;确认后收口照常回写偏好。运行时 `ls` 本 skill `references/substrates/*.md` 得到基底清单,读候选文件按其「探测」节确认可用。
    
    **③ 派发、路由与风险升级**:按基底文件「派发」节把节点交出去。worker 完成后,默认只读取决定下一步所需的**路由事实**:frontmatter 当前状态、预期工件指针、报告结论、未决清单。这是路由职责,不是对 worker 内容再做一轮核查;正常路径不打开完整 diff、不重跑节点命令。
    
    **无风险即推进**:路由事实齐备且不冲突 → 直接进下一节点。交付来自其他 agent、worker 首次参与、换基底、普通节点交接,均**不是风险信号**;不得因此抽查或信任分层。
    
    只有出现下列**可指认的风险信号**才升级核查;主观不信任不构成信号:
    
    - frontmatter、预期工件、报告结论、worker 完成声明互相冲突
    - 推进所必需的工件或字段缺失、不可解析,或存在未提交交付改动
    - 已有可观察证据显示节点越过角色权限或约定文件边界
    - AC、安全、权限、数据或不可逆动作发生本轮计划外变化
    - worker 主动上报 Unknown B / C、证据未知、阻塞或决策门
    - 同一交付被打回后仍重复出现同类异常
    
    升级后只处理触发信号对应的范围:状态/工件缺陷打回原 worker;需要实质判断时派对应有权节点;产品/架构分歧、范围变更、AC 豁免、熔断等超总控权限事项停下上交用户。同一节点打回 2 次仍不合格 → 升级为卡点问用户。总控不得亲自实施、改测试、兼任审查。
    
    **并行派发**(判据与合流见 [../eo-shared/granularity.md](../eo-shared/granularity.md) §6):同一 change 的同层并行批(Batch 2a/2b)。纪律:
    
    - 派发前先做**文件集机械校验**(两两不相交;不过 → 降级串行并一句话报告)
    - 一并行 worker 一**独立 worktree**;同层全部收口后指派其一执行合并与合流 checkpoint
    - 并行派发 >2 个 worker 前先报数量与预算,等用户点头
    
    **④ 收敛判定**:对照收敛标准——出口节点达成 + 所有已产报告无未决阻塞项。未收敛走反馈回路:
    
    - 报告有未决 P0/P1 或测试失败 → 原 impl worker 走 /eo-fix 循环内分支修复 → 回**原**复审方核销(增量,不重开全文)
    - acceptance 打回 → implement 修复 → 有 review 闸门的回原 reviewer 核销
    - 方案需实质修订 → eo-change 回炉
    
    **收敛即交付汇报**:出口节点达成时,总控向用户发**完整交付汇报**——回复契约四条([../eo-shared/reply-contract.md](../eo-shared/reply-contract.md))+ 证据面渲染(引 change 目录 `evidence.md` 与 frontmatter `brief`,引用不重建、不转述 worker 速报);出口是 archive 时,归档确认提问按 eo-archive 第一层口径与该汇报同条发出。线段收尾不得只有三行归档速报。
    
    **打地鼠信号与裁决门**:同一 change 修复轮次 ≥2 且各轮**失败触发位置互不相同**(凭报告未决清单的位置列机械可判),或修复轮次 ≥3 → 停下向用户发封闭选择四选一:
    
    a) **全链审查**(链路类缺陷缺省推荐)——原 impl worker 走 /eo-fix 深挖链路变体:枚举链上全部可死点、逐点配恢复证明,按死点矩阵批量修复
    b) **继续逐点修复**——缺陷相互独立、非链路形态时
    c) **卡点检查**——方向存疑,新鲜上下文做根因分类(/eo-fix 子流程)
    d) **回炉**——方案本身要改
    
    总控不代答、不以任何形式默认继续逐点修复。
    
    ## 节点清单
    
    | 节点 | 消费 | 产出 | 边界 |
    |------|------|------|------|
    | eo-change | 意图 / 回炉反馈 | change.md(draft → confirmed 经用户确认) | 含风险信号播报与回炉子流程 |
    | eo-change-review(可选闸门) | draft/confirmed 的 change.md | change-review.md | 信号命中或点名才派 |
    | eo-implement | confirmed 的 change.md | 业务代码 + 测试 + AC 勾选(implementing) | 反馈修复归 /eo-fix 循环内分支 |
    | eo-test(可选闸门) | implementing 后的代码 | 测试补缺 + test.md | 严禁改业务代码 |
    | eo-review(可选闸门) | implementing 后的代码 | review.md(通过 → reviewed) | 代码级审查 |
    | eo-archive | implementing / reviewed | archived(不可逆) | 四问核对门 |
    
    ## 执行基底(可插拔)
    
    基底 = 「把一个节点交给谁执行」的载体。一基底一文件,放 `references/substrates/`,增减基底 = 加删文件。每个基底文件必须含五节(照 `references/substrates/_template.md`):**探测 / 派发 / 等待与观测 / 回收 / 已知陷阱**。「已知陷阱」节只放出厂陷阱——运行时新学到的坑记进偏好文件的「已知陷阱」节(`~/.eo-skills/loop/preferences/`,条目前缀 `[<基底名>]`,跨项目写 `_global.md`),读基底文件时一并读。
    
    初始三基底与优先倾向(被 ② 的三级优先覆盖):
    
    | 调用形态 | 倾向基底 |
    |----------|----------|
    | 总控是 Claude Code,执行者也是 Claude | claude-subagent |
    | 总控运行在 Codex 侧 | codex-subagent |
    | 节点要跨 agent 运行 | orca-orchestration |
    
    **交互式硬约束(全基底通用)**:节点派发一律走**交互式通道**——总控会话内 subagent,或 orca 交互终端 + dispatch task。**严禁 `codex exec`、`claude -p` 等一次性非交互式调用**承载节点:纯黑盒、无会话复用、无求裁决通道。
    
    **派发 prompt 纪律**:写目标、不写步骤——只给节点 skill 名、change 目录路径、本轮收敛标准、必要输入;命中 Execution Guard 时再附即时控制包;不复述下游流程;不要求 worker 中途回报进度。**Unknown 上报**:仅 A 类可先斩后奏随交付记录;B / C 类须变更前求裁决。
    
    **worker 复用纪律**:一个 change 的 loop 内,worker 按**角色**一次创建、跨轮次复用——修复回原 impl worker,核销回原复审方(增量核销依赖其上下文)。三条边界:① **复用边界 = 单个 change**——收敛组切换到下一 change 时按角色一律重建;上一 change 的 worker 上下文只属于该 change 的方案与代码真相,跨 change 续用即视为上下文污染;闸门结论(如 change-review)不可跨 change 继承,每个 change 独立过信号判定(granularity §5)。② **跨角色必须隔离**(review / test 绝不复用 impl worker——独立性是审查的价值)。③ 同 change 内重建仅当换执行者/模型、上下文已污染、或 worker 不可达。
    
    ## 可观测性:窗口化等待 + 主动观测
    
    **进度是总控查出来的,不是 worker 报上来的**:worker 除完成/求裁决信号外零回报义务。总控在窗口内主动读证据——终端输出、change.md 勾选、报告增量、git log——手段见各基底文件「等待与观测」节。
    
    一切等待必须窗口化,单窗 ≤10 分钟。**窗口到期或观测点(节点边界),无论有无进展**,向用户发进度报告并追加到 `tmp/eo/loop/<slug>/journal.md`:
    
    ```
    • <HH:MM> <本窗口事件标题>
    
    <是否需要用户裁决——无则明说「没有需要你裁决的事项」;brief 级摘要:原样引用当前 change 的 brief,未写则明说「brief 未写」>
    
    <实质摘要:按主题归组的要点,不是操作流水账>
    
    - 派发:<task / dispatch 凭据或 worker 标识>
    - owner:<基底 + 模型>
    - 当前规则:<本轮循环策略一句>
    
    下一次固定进度报告约 <HH:MM +10min>。
    ```
    
    brief 级摘要取 change.md frontmatter 的 `brief`(写法与生产时机见 [../eo-shared/summary.md](../eo-shared/summary.md)):总控只引用、不代写不改写;窗口中途 brief 无变化时一句带过。
    
    journal 属 tmp/eo 命名空间(conventions §1):可丢弃、不作信源。
    
    ## 经验沉淀(调度偏好)
    
    位置 `~/.eo-skills/loop/preferences/`:`_global.md`(跨项目)+ `<项目短名>.md`(覆盖全局同名条目);格式见 [references/preferences-format.md](references/preferences-format.md)。
    
    - **读**:② 选基底时第二优先级——列出命中条目请用户确认后生效;① 圈线段判不出时查「习惯线段」节
    - **写**:收口时回写本次实际生效的「节点 → 基底/模型」映射,**缺省写进 `<项目短名>.md`**;用户明示跨项目或同一映射已在 ≥2 个项目文件出现时才写 `_global.md`。用户当场纠偏 → 立即写入
    - **性质**:提示而非保证——按偏好调度失败 → 回退探测缺省,并把失败记进该文件陷阱节
    - **基底操作层的坑**(注入被吞、handle 漂移这类)也记进偏好文件的「已知陷阱」节:条目前缀 `[<基底名>]`,跨项目通用写 `_global.md`、项目特有写 `<项目短名>.md`;基底文件的「已知陷阱」节只放出厂内容,不写
    
    ## 事实说明
    
    - codex 的 skill 前缀是 **`$` 不是 `/`**;模型与 effort 是启动参数,中途不可切换
    - worker 的完成声明 ≠ 状态推进;状态真相只在 frontmatter 与报告
    - 回退边(status 置回)由产出该结果的 skill 当场执行(conventions §3),总控不代写 status
    - review 结果不授权总控动手修——修复一律派回原 impl worker 走 /eo-fix 循环内分支
    - 并行派发 >2 个 worker 前,先报数量与预算,等用户点头
    
    ## 关键约束
    
    | 约束 | 说明 |
    |------|------|
    | 三不做 | 总控不写码、不改 change 实质、不复述下游流程 |
    | 严禁非交互派发 | 节点执行必须走交互式通道;一次性调用全面禁止 |
    | 条件式控制包 | 仅长程 / 并行 / 无人值守 / 高风险 / 开放未知时即时编译;不落盘 |
    | Unknown 权限 | 仅 A 类可先做后报;B / C 类变更前进决策门;证据未知有界探测后 fail-closed |
    | 风险触发式核查 | 正常交付只消费路由事实并推进;仅有客观风险信号时针对异常范围升级 |
    | worker 按角色复用 | 同角色跨轮次复用;跨角色隔离;跨 change 必重建、闸门结论不继承;同 change 内换模型 / 污染 / 不可达才重建 |
    | 无状态 | 不落自有状态文件;中断恢复 = 重读 frontmatter |
    | 熔断只消费 | 打地鼠/轮次到限即停、按协议问用户,绝不无限循环 |
    | 汇报硬窗口 | 任何等待 ≤10 分钟必有一次进度报告;报告首要回答「需不需要你裁决」 |
    | 收尾必发交付汇报 | 线段收敛 / 归档确认前,交付汇报(回复契约四条 + 证据面渲染)与确认提问同条发出,不得只有三行速报 |
    | worker 零回报 | 进度由总控主动观测;派发 prompt 不得附加中途回报要求 |
    | 基底即文件 | 新基底照 _template.md 建文件即生效;禁止把基底细节写回本文件 |
    | 一次一收敛组 | 缺省逐 change 收敛;带「依赖 #N」标注的 change 序列按依赖序串行推进 |
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related