用途
Coliseum Reconciliation 用于将 N 份并行返回结果组合成一个连贯的产物。这是“炼金术”步骤,而非拼接。把返回结果钉在一起是失败;用户明确禁止扁平化(grain 本身说“resist flattening”)。组合意味着结构整合、命名张力、解决分歧、不静默丢弃。
主要能力
该技能区分“组合”与“拼接”:组合将返回结果结构性地整合为一个具有自身架构的整体,命名并解决张力,统一重叠内容,每个返回都对最终形态有贡献,整体大于部分之和;拼接则依次追加返回结果,隐藏或平均化张力,重复重叠内容,将每个返回保留为独立章节,整体等于部分之和。如果本阶段的输出读起来像拼接,则本阶段失败。
使用方式
该技能按以下步骤执行:
-
清点:读取 phase-3-dispatch-log.md 枚举预期返回。对每个返回路径,检查返回产物是否存在;若缺失则记录为“missing”;若存在则读取整个产物;注意返回是否包含 BLOCKED 块。在组合前将清点部分写入工作笔记。
-
提取主张:对每个返回,提取其主张——即子代理产生的实质性输出。主张是任何如果只用一句话概括该返回并丢弃其余内容就会丢失的东西。捕获:产生的具体产物(文件路径、代码、模式条目、决策)、实质性建议、暴露的风险或未知项、与同伴返回的分歧。
-
识别张力:张力是两个返回产生不直接兼容输出的地方,例如:对同一实体命名不同、做出不兼容的结构选择、各自覆盖一个区域但对该区域接口的假设不同、各自提出以相同方式处理同一失败模式(重叠、冗余)。对每个张力,明确命名并决定如何在组合整体中解决:采纳一方(命名哪方胜出及原因)、综合(产生整合两者的第三选项,并注明该综合在组合整体中的位置)、提交用户(当张力是真正的设计决策而非技术调和时,在组合整体中标记为 PENDING-DECISION,并列出两个选项)。不要通过平均或含糊其辞来解决张力。要么选一个,要么综合出第三个,要么作为 PENDING-DECISION 提交。
-
识别缺口:缺口是以下情况:grain 暗示了覆盖但没有任何返回交付;返回中的 BLOCKED 块识别了无法完成的工作;出现了没有任何单一返回处理的横切关注点(最常见——正是因为维度在分派时是独立的)。对每个缺口:命名暗示但未处理的内容;决定它是否可在当前轮次内关闭(直接在组合整体中处理)还是需要另一次分配(记录为后续跟进)。
-
组合产物:写入 phase-4-composed-whole.md。结构适应 grain——没有一刀切的模板——但始终包含以下部分:
# Phase 4 — Composed whole
## Grain (verbatim)
> <quoted grain>
## What this composes
<one paragraph: what the coliseum produced as a unified output. Not "we dispatched N assignments" — what is the *thing* that resulted.>
## The composed output
<the actual integrated artifact. This is the bulk. Structure it as the grain required, not as the dispatch happened. The user reading this section should not be able to reverse-engineer which return contributed which sentence — that's the test of true composition.>
## Tensions resolved
| Tension | Returns involved | Resolution | Rationale |
|---|---|---|---|
| … | assignment-001, assignment-003 | adopt assignment-001's version | … |
| … | assignment-002, assignment-004 | synthesized — see <section above> | … |
## Pending decisions
<any tension surfaced to user as PENDING-DECISION, with both options spelled out>
## Gaps and follow-ups
<named gaps, with disposition: closed-here | follow-up-assignment-recommended>
## BLOCKED records
<any BLOCKED blocks from returns, surfaced verbatim, with disposition>
## Returns inventory
<the inventory from Step 1, for audit trail>
- 调和自检:在返回编排器之前,验证:每个返回都在组合整体中被引用(无静默丢弃);每个张力都被命名并处置(解决、综合或 PENDING-DECISION);每个缺口都被命名并处置(此处关闭、后续跟进或注明未处理);每个 BLOCKED 记录都被呈现;“组合输出”部分读起来像一个产物,而不是 N 个缝合的章节;组合整体处理了 grain——在阅读组合输出后重读 grain,确认覆盖。
6a. 机械组合门(强制):自检后,计算两个指标并记录在 phase-4-composed-whole.md 的 ## Composition metrics 部分:
- 压缩比:组合输出部分的
wc -w除以所有返回的wc -w之和。目标:≤ 0.50(组合整体至多是输入总质量的一半)。可接受:0.50 – 0.80(存在压缩但较弱;在指标部分注明原因)。STAPLED(失败):> 0.80。组合输出是拼接。返回前重新组合。 - PENDING-DECISION 数量:Pending-decisions 部分中的项目数。最低:在 N≥3 个返回中至少 1 个,或明确理由(“所有 N 个返回在每个承重选择上都一致——未检测到张力,因为……”)。零 PENDING-DECISION 且无理由是失败信号——三个或更多独立子代理返回几乎总在某处不一致;零计数通常意味着编排器没有查看。
指标部分是必需的。如果压缩比 > 0.80,不要返回产物——重新组合。如果 PENDING-DECISION 计数为 0 且无理由,在返回前将最可能的候选张力作为 PENDING-DECISION 提交。
## Composition metrics
- Returns total word count: <sum>
- Composed output word count: <count>
- Compression ratio: <ratio> (target ≤ 0.50, stapled if > 0.80)
- PENDING-DECISIONs surfaced: <count> (minimum 1 or explicit justification)
- Justification (if zero PENDING-DECISIONs): <text or N/A>
- 闭环:通知编排器(或直接调用时的用户)Phase 4 已完成。传递 phase-4-composed-whole.md 的路径。如果存在 PENDING-DECISION,明确呈现它们——这些是唯一合法地作为问题返回给用户的项目。
适用场景
该技能适用于多子代理并行执行后的结果汇总阶段,特别是当需要将多个独立返回整合为单一连贯产物时。它强调不静默丢弃任何返回内容,并确保最终产物具有自身架构而非暴露分派架构。
限制
该协议禁止 ping-pong——接收者在执行中途弹回。但本阶段在以下情况合法地将决策提交给用户:两个返回在真正的设计选择上不一致(非技术冲突);存在无法在没有用户授权的情况下解除的阻塞(例如访问系统、授权破坏性操作);grain 本身具有承重歧义,且分派揭示了歧义而非解决它。这些不是 ping-pong。它们是在系统已独自完成一切后,精确呈现系统真正需要用户的点。这是指挥原则:人类指导愿景;系统做其他一切。PENDING-DECISION 是必须指导愿景的地方。
常见失败需避免:组合作为目录。产生一个结构为“返回 1、返回 2、返回 3……”且无整合的产物。读者看到的是分派架构而非组合结果。用户不想读接缝;用户想要 coliseum。接缝属于分派日志,不属于组合整体。
参考材料
- references/assignment-anatomy.md — 每个返回体现的内容
- references/handoff-envelope-spec.md — 返回所依据的信封契约