consilium

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Consilium — Approach Board

Consilium — 方案评审委员会

Purpose

目标

Examine a problem, or an approach someone already picked, from several angles and several scopes at once. The board answers four questions: what are we actually deciding, what approaches exist, what does the one on the table foreclose, and what would a different framing buy.
It is not a review skill. Defects appear here only as evidence that an approach is wrong — a bug that is fixable inside a candidate is not this board's output. A diff goes to
changes-review
.
Autonomous: run every step without asking the user, and present the report when done. Consilium reads and reasons; it never modifies the thing it examines.
从多个角度和范围同时审视一个问题,或某人已选定的方案。评审委员会需回答四个问题:我们实际要做什么决策有哪些可行方案当前提出的方案排除了哪些可能性,以及换一种框架能带来什么价值
这并非评审类技能。缺陷仅作为「某方案不可行的证据」在此呈现——候选方案内部可修复的Bug不属于本委员会的输出内容。代码差异评审请使用
changes-review
全程自主运行:无需用户介入即可完成所有步骤,最终提交评审报告。Consilium仅负责读取和推理,绝不会修改所评审的对象。

When to Use

使用场景

  • "how should we approach X", "what are the options", "what's the best way to", "explore approaches"
  • "is this the right approach", "stress-test this plan", "think hard", "ultrathink"
  • Before committing to a decision that is expensive to reverse — a data model, a public contract, a dependency, an architectural direction
  • /consilium
    ,
    /consilium <focus>
Not this skill:
You haveReach for
A diff, and you want it attacked for bugs and requirement gaps
review:changes-review
Comment noise, naming, convention drift in changed code
review:code-cleanup
One quick outside opinion, no board and no synthesis
assist:outsider
A back-and-forth about a design, not a verdict
assist:discuss
Cost. This is the most expensive skill in the collection. Auto-selection keeps the board itself at four or five seats, and verification adds three more dispatches on the largest payload of the run — so a typical run is seven or eight agents and a full board is nine. On a board of four or fewer seats, run the
bite
lens alone: with one critic there is nothing to corroborate, and
bite
is the lens that changes outcomes. Spend this skill on decisions that are expensive to reverse, not on questions one seat could answer.
  • 场景示例:「我们该如何处理X」「有哪些可选方案」「最佳方式是什么」「探索可行方案」
  • 场景示例:「这个方案是否正确」「对该计划进行压力测试」「深入思考」「极致分析」
  • 适用于在做出难以逆转的决策前——如数据模型设计、公共契约制定、依赖选择、架构方向确定
  • 调用方式:
    /consilium
    /consilium <聚焦方向>
不适用场景:
你的需求应使用的技能
针对代码差异,排查Bug和需求缺口
review:changes-review
修正代码中的注释冗余、命名问题、规范偏差
review:code-cleanup
获取单一外部意见,无需评审委员会和综合分析
assist:outsider
针对设计进行双向讨论,无需最终结论
assist:discuss
成本说明:这是技能集合中成本最高的技能。自动选择机制会将评审委员会的角色数量控制在4-5个,验证环节还会额外增加3次调度,处理本次运行的最大负载——因此典型运行会涉及7-8个Agent,完整评审委员会则为9个。若评审委员会仅有4个或更少角色,则仅运行
bite
校验:单一评审角色无法形成佐证,而
bite
是能改变结果的校验维度。请将该技能用于难以逆转的决策,而非单一角色即可回答的问题。

Focus Areas (optional
$ARGUMENTS
)

聚焦方向(可选参数
$ARGUMENTS

FocusBoardUse case
(default)Core + auto-selectedLet the board select its own optional seats
all
All sixEvery angle, highest cost
prior-art
Core + LibrariusLikely already solved somewhere
scope
Core + ScrutatorBlast radius and what the choice forecloses
cost
Core + CensorSuspect overbuilding, or a simpler option skipped
wide
Core + Scrutator + CensorBig decision, no prior-art question
聚焦方向评审委员会组成使用场景
(默认)核心角色 + 自动选择的可选角色由评审委员会自行选择可选角色
all
全部6个角色覆盖所有分析角度,成本最高
prior-art
核心角色 + Librarius问题可能已在别处得到解决
scope
核心角色 + Scrutator分析影响范围及决策排除的可能性
cost
核心角色 + Censor怀疑方案过度设计,或遗漏了更简单的选项
wide
核心角色 + Scrutator + Censor重大决策,无需考虑已有解决方案

The Seats

角色设置

Three generate, three critique. The generators never see each other's output; the critics see the assembled candidate set and nothing about who produced which candidate.
3个生成类角色,3个批判类角色。生成类角色无法看到彼此的输出;批判类角色仅能看到汇总后的候选方案集合,无法得知各方案的提出者。

Core (always)

核心角色(必选)

SeatJobPhase
NovatorProposes fundamentally different candidate approaches, each concrete enough to startDiverge
PeregrinusAn agent outside this process, with none of this conversation's context — frames the problem coldDiverge
SenecaAttacks the framing and the load-bearing assumptions; checks the candidates are genuinely distinctConverge
角色职责阶段
Novator提出本质上不同的候选方案,每个方案具体到可落地执行发散阶段
Peregrinus完全独立于本流程的Agent,无任何对话上下文——从零开始构建问题框架发散阶段
Seneca批判问题框架和核心假设;检查候选方案是否真的具备差异性收敛阶段

Optional (auto-selected)

可选角色(自动选择)

SeatJobLaunch whenSkip when
LibrariusPrior art — has this been solved, what do comparable systems and libraries already doThe problem sounds general, names a library or ecosystem, or looks like a well-trodden shapeGenuinely internal, domain-specific, or no external surface
ScrutatorScope and blast radius — what each candidate touches, forecloses, and locks in; second-order effectsWide reach, migrations, public contracts, data models, irreversible choicesLocal, cheap to undo, contained in one module
CensorProportionality — cost to build and operate against the size of the problem; is a simpler candidate being skippedNew abstractions, multi-part machinery, anything that smells larger than the problemAlready minimal, or the cost is the point
Selection happens twice, because the evidence arrives twice. Librarius is a generator, and its trigger is a property of the frame, so decide it in Phase 1. Scrutator and Censor judge candidates that do not exist until Phase 3 — deciding them from the frame is guessing, so decide them in Phase 3 against the assembled set. State each include/skip decision with a one-line reason at the point you make it.
A board whose only critic is Seneca is a defective board. Seneca attacks the framing; nobody is then looking at reach or at cost. If the assembled set contains any candidate that touches a contract outside this codebase, reshapes stored data, or is expensive to leave, Scrutator runs. If any candidate is materially larger than another that survives, Censor runs. Reaching Phase 4 with one critic is allowed only when the candidates are genuinely small and cheap to undo, and the report must say the board had one critic.
Minimum 3 (core only). Maximum 6. Typical 4–5 seats, plus verification.
角色职责启用场景跳过场景
Librarius已有解决方案调研——该问题是否已被解决,同类系统和库已有哪些实践问题具有通用性、涉及特定库或生态,或属于常见问题类型完全内部化、领域专属,或无外部公开案例
Scrutator范围与影响分析——每个候选方案涉及的范围、排除的可能性、锁定的内容,以及二阶影响影响范围广、涉及迁移、公共契约、数据模型、不可逆决策局部性问题、易回滚、仅涉及单个模块
Censor合理性分析——方案构建与运维成本是否匹配问题规模;是否遗漏了更简单的候选方案涉及新抽象、多组件机制、任何看似规模超过问题本身的方案方案已极简,或成本本身就是核心目标
角色选择分两次进行,因为证据分两次获取。Librarius是生成类角色,其触发条件基于问题框架,因此在阶段1确定是否启用。Scrutator和Censor需要评审尚未生成的候选方案——基于框架猜测选择并不准确,因此在阶段3根据汇总后的候选方案集合确定是否启用。需在做出选择时附上一行理由说明。
仅包含Seneca作为批判角色的评审委员会是不完整的。Seneca仅批判框架,无人分析影响范围或成本。若汇总后的候选方案中包含任何涉及代码库外契约、重构存储数据或退出成本高昂的方案,则必须启用Scrutator。若存在某候选方案规模远大于其他留存方案,则必须启用Censor。仅当候选方案确实规模小且易回滚时,才允许在阶段4仅保留一个批判角色,且报告中需说明评审委员会仅有一个批判角色。
最少3个角色(仅核心角色),最多6个角色。典型配置为4-5个角色,外加验证环节。

Choosing Models and Depth

模型与深度选择

Stated as intent, since the roster changes and each host names its own models:
  • Give each seat the most capable model the host offers. If that is the model running this skill, take the next tier down — a seat on the orchestrator's own model shares whatever the orchestrator already believes about this problem.
  • Where the host lets you pick a model per seat, give each a different one. Same-model seats differ only by sampling; same-role seats only by phrasing. Where it does not, run the default and say so in the report: role diversity survives that, model diversity does not.
  • Give each seat a depth budget rather than a turn count: shallow for Censor, standard for Seneca and Librarius, exhaustive for Novator and Scrutator. A host with a turn or step limit maps these onto it; a host without one just needs the seat to stop when its own output contract is met.
The report says which kind of diversity the run actually got.
以下为原则性要求,因Agent列表会变化且各宿主平台有自有模型命名规则:
  • 为每个角色分配宿主平台提供的最强大模型。若该模型与运行本技能的模型相同,则选择次一级模型——使用编排器自身模型的角色会受编排器对该问题已有认知的影响。
  • 若宿主平台允许为每个角色单独选择模型,则为每个角色分配不同模型。相同模型的角色仅在采样上有差异;相同职责的角色仅在表述上有差异。若平台不支持,则使用默认模型并在报告中说明:职责多样性得以保留,但模型多样性无法实现。
  • 为每个角色分配深度预算而非轮次限制:Censor为「浅层」,Seneca和Librarius为「标准」,Novator和Scrutator为「全面」。有轮次或步骤限制的宿主平台需将其映射为对应限制;无限制的宿主平台仅需角色在完成自身输出要求后停止即可。
报告中需说明本次运行实际实现的多样性类型。

Phase 1: Frame

阶段1:确定框架

No agents yet. Establish, in the orchestrator's own words:
  1. The decision — one sentence naming what is actually being chosen. Not the symptom, the choice.
  2. Candidate A, if an approach is already on the table. A finished plan is not the subject of an audit here; it enters the board as one candidate, ranked against the others on the same terms.
  3. Constraints — what genuinely limits the solution space: existing architecture, compatibility, effort available, things that must keep working.
  4. Non-goals — what is out of scope, so seats do not solve a larger problem than the one asked.
Where a constraint is a claim about the existing system, check it in the repo rather than asserting it. A frame built on a constraint that is not actually true wastes every seat on the board, and this is the only phase where it is cheap to catch.
If the decision cannot be stated in one sentence, say so and stop — the board cannot rank candidates against a question nobody has written down.
Announce the frame in a few lines. Every seat receives this identical frame; nothing else about the conversation reaches them.
暂不调用Agent。用编排器自身的语言明确以下内容:
  1. 决策内容——用一句话明确实际要做出的选择。需聚焦选择本身,而非问题表象。
  2. 候选方案A(若已有方案提出)。已完成的计划并非审计对象,而是作为候选方案之一,与其他方案按同一标准排序。
  3. 约束条件——真正限制解决方案空间的因素:现有架构、兼容性要求、可用资源、必须保持正常运行的内容。
  4. 非目标——超出范围的内容,避免角色解决超出需求的问题。
若约束条件涉及对现有系统的断言,需在代码库中验证而非直接断言。基于错误约束构建的框架会浪费所有角色的资源,而本阶段是低成本发现此类问题的唯一时机。
若决策无法用一句话表述,则需说明并终止流程——评审委员会无法针对未明确的问题对候选方案进行排序。
用简短的几段文字公布框架。所有角色都会收到完全相同的框架,不会收到任何对话上下文内容。

Phase 2: Diverge

阶段2:发散

Dispatch all generators at once so they run concurrently. They must not see each other's output. Do not hint at which candidate you favour, and do not pass the conversation's reasoning about it.
The two native seats read their prompt from
references/
with
{{FRAME}}
replaced by the Phase 1 frame. Dispatch a subagent per seat that returns candidates in the shape its prompt specifies; on a host with no subagent facility, run the same prompt inline.
  • Novator
    references/novator-prompt.md
  • Librarius (if selected) —
    references/librarius-prompt.md
    . This seat needs web search or a documentation lookup facility; without one it reports what it could not verify rather than guessing.
Peregrinus runs through the collection's external-agent skill,
/outsider
, in ask mode. Invoke it by name rather than reproducing its procedure here — it owns temp-file resolution, run ids, and the rule that the question is written with a file-write tool and never a shell heredoc. Follow its ask-mode steps, and pass it four things:
  • --host <the agent you are>
    , so it does not select the host and answer its own question
  • --preamble <skill-dir>/references/peregrinus-prompt.md
    — this skill's seat brief, which replaces outsider's default prompt entirely. It is a preamble, not a template: it carries no
    {{FRAME}}
    placeholder because the frame is appended after it as the question
  • the Phase 1 frame, and nothing else, as the question
  • a timeout of
    540
    , with the surrounding command timeout set to its maximum. This seat produces three sections and up to three fully specified candidates; outsider's 300s ask-mode default is not enough for that, and a timeout here costs the whole leg
Check the preamble path resolved before you dispatch. Consilium is reachable through several generated symlink trees, so
<skill-dir>
has to be the directory this
SKILL.md
was actually loaded from. Outsider refuses to run with an unresolvable
--preamble
and says so — if you see that message, fix the path rather than dropping the seat, because the alternative is a seat that answers with no brief at all.
Peregrinus is the one seat with no output contract you control, and the one that saw nothing but the frame. Name the agent that actually answered
outsider
prints it on the first line; a candidate from a board member you cannot identify is not interpretable. Map its Section 2 onto the candidate shape the others use, and carry its Section 3 — what looks off about the problem as stated — into Phase 5 as cross-cutting material. That section is the most valuable thing a cold seat produces and it is not a candidate, so nothing else in the flow would pick it up.
The leg is droppable: with no external agent CLI installed, or with
outsider
itself not installed, the run continues without it. Say so in the report, and say how many generators actually ran — with Librarius unselected that is one, and a single-generator board cannot show the design space was explored. Prefer selecting Librarius in that case even if its trigger is weak.
同时调度所有生成类角色以实现并发运行。角色之间无法看到彼此的输出。不得暗示偏好的候选方案,不得传递对话中关于该方案的推理过程。
两个原生角色从
references/
读取提示词,其中
{{FRAME}}
会替换为阶段1确定的框架。为每个角色调度一个子Agent,使其按提示词指定的格式返回候选方案;若宿主平台无子Agent功能,则直接运行提示词。
  • Novator ——
    references/novator-prompt.md
  • Librarius(若启用)——
    references/librarius-prompt.md
    。该角色需要网页搜索或文档查询功能;若无此功能,则报告无法验证的内容,而非猜测。
Peregrinus通过集合中的外部Agent技能
/outsider
询问模式运行。直接调用该技能名称,而非在此重复其流程——该技能负责临时文件解析、运行ID管理,以及「问题需通过文件写入工具而非Shell heredoc编写」的规则。需遵循其询问模式步骤,并传递以下四项内容:
  • --host <当前运行的Agent>
    ,避免其选择当前宿主并自问自答
  • --preamble <skill-dir>/references/peregrinus-prompt.md
    ——本技能的角色说明,将完全替换outsider的默认提示词。这是前置说明而非模板:无需
    {{FRAME}}
    占位符,框架将作为问题附加在其后
  • 阶段1确定的框架,且仅传递框架作为问题
  • 超时时间设置为
    540
    ,并将周围命令的超时时间设为最大值。该角色需生成三个部分及最多三个完整指定的候选方案;outsider默认的300秒询问模式超时时间不足以完成此任务,超时将导致整个环节失败
调度前需检查前置说明路径是否解析成功。Consilium可通过多个生成的符号链接树访问,因此
<skill-dir>
必须是实际加载本
SKILL.md
文件的目录。Outsider会拒绝运行路径无法解析的
--preamble
并给出提示——若收到该提示,需修复路径而非跳过该角色,否则该角色将在无任何说明的情况下回答问题。
Peregrinus是唯一不受你控制输出契约的角色,也是唯一仅看到框架的角色。需注明实际回答的Agent名称——
outsider
会在第一行打印该名称;无法识别来源的候选方案不具备可解释性。将其第二部分映射为其他角色使用的候选方案格式,并将第三部分(对问题表述的质疑)作为跨领域内容带入阶段5。这是无上下文角色产生的最有价值内容,且不属于候选方案,因此流程中其他环节无法捕获该内容。
该角色可跳过:若未安装外部Agent CLI,或未安装
outsider
本身,则运行流程将跳过该角色。需在报告中说明,并注明实际运行的生成类角色数量——若未启用Librarius,则仅1个生成类角色,单一生成类角色的评审委员会无法证明已探索了设计空间。在此情况下,即使触发条件较弱,也建议启用Librarius。

Phase 3: Assemble the Candidate Set

阶段3:汇总候选方案集合

Before the critics run, merge the generators' output into one numbered set. This is the orchestrator's job and it is not clerical:
  1. Include candidate A from the frame, described on the same terms as the rest.
  2. Merge near-duplicates. Two candidates that differ only in naming or file layout are one candidate. Keep the clearer description and note both origins.
  3. Kill the non-candidates. "Use something better" is not a candidate. Anything not concrete enough to start on is dropped, and the drop is reported.
  4. Strip attribution, by rewriting rather than by omitting. Critics must not know which seat proposed what, or which one was already on the table — that is the bias the board exists to remove. Deleting seat names is not enough: prior-art candidates announce themselves ("adopt
    <library>
    "), and an existing plan reads in the house voice. Restate every candidate in one common voice at the same level of detail, and order them so the pre-existing approach is not first. You will still know which is which; the critics must not.
Announce the set as one line per candidate.
在批判类角色运行前,将生成类角色的输出合并为一个编号集合。这是编排器的职责,并非单纯的文书工作:
  1. 纳入框架中的候选方案A,按与其他方案相同的格式描述。
  2. 合并近似重复项。仅在命名或文件布局上有差异的两个方案视为一个方案。保留表述更清晰的版本,并注明两个来源。
  3. 剔除非候选方案。「使用更好的方案」不属于候选方案。任何不够具体、无法落地执行的内容都将被剔除,并在报告中说明。
  4. 去除归属信息,通过重写而非省略实现。批判类角色不得知晓各方案的提出者,或哪个方案是已有的——这正是评审委员会旨在消除的偏见。仅删除角色名称不足以实现:已有解决方案的候选方案会自行暴露(如「采用
    <library>
    」),而已有计划会带有内部表述风格。需用统一的表述风格和详细程度重写每个候选方案,并调整顺序,避免已有方案排在首位。你仍可区分各方案,但批判类角色无法区分。
用每行一个候选方案的格式公布集合。

Phase 4: Converge

阶段4:收敛

Dispatch all critics at once. Each receives the frame and the full assembled candidate set, and attacks it comparatively — this board ranks candidates, so an objection that hits every candidate equally changes nothing about the ranking and must be labelled cross-cutting.
Prompts, with
{{FRAME}}
and
{{CANDIDATES}}
replaced:
  • Seneca
    references/seneca-prompt.md
  • Scrutator (if selected) —
    references/scrutator-prompt.md
  • Censor (if selected) —
    references/censor-prompt.md
On a host with no subagents, run each prompt in turn and never show one critic another's output. Say in the report that they were not isolated — a sequential run leaks earlier objections into later ones.
同时调度所有批判类角色。每个角色都会收到框架和完整的候选方案集合,并进行对比式批判——本评审委员会需对候选方案排序,因此对所有候选方案同等适用的异议不会改变排序,需标记为跨领域异议。
提示词中的
{{FRAME}}
{{CANDIDATES}}
会被替换为对应内容:
  • Seneca ——
    references/seneca-prompt.md
  • Scrutator(若启用)——
    references/scrutator-prompt.md
  • Censor(若启用)——
    references/censor-prompt.md
若宿主平台无子Agent功能,则依次运行每个提示词,且不得让一个批判类角色看到其他角色的输出。需在报告中说明角色未被隔离——顺序运行会导致早期异议泄露给后续角色。

The Objection Contract

异议契约

Every objection names four things, or it is not an objection:
  • Candidate — which one it hits, or
    cross-cutting
  • Condition — the circumstance under which it actually bites
  • Bearer — who pays, named from this closed list and no other:
    end user
    ,
    operator
    ,
    external consumer
    ,
    implementer
    ,
    maintainer
    . Dedupe and ranking both key on this field, so free-text bearers make both unstable
  • Severity
    Blocking
    (rules the candidate out; cannot work, or the cost is unrecoverable),
    Material
    (candidate survives, trade-off gets worse),
    Minor
    (worth knowing, does not move the ranking)
An objection missing both a condition and a bearer is a preference: reported in its own section, ranking nothing. Missing one of the two is an incomplete objection, not a preference — supply the missing half if the candidate text supports it, and drop it if it does not.
Blocking
requires a named bearer. A
Blocking
objection without one becomes
Material
, because an unrecoverable cost nobody bears is not a reason to rule a candidate out.
每个异议必须包含以下四项内容,否则不视为有效异议:
  • 候选方案——异议针对的方案,或标记为
    cross-cutting
    (跨领域)
  • 触发条件——异议实际生效的场景
  • 影响对象——承担代价的主体,必须从以下封闭列表中选择:
    end user
    (终端用户)、
    operator
    (运维人员)、
    external consumer
    (外部消费者)、
    implementer
    (实现人员)、
    maintainer
    (维护人员)。去重和排序均依赖该字段,因此自由文本的影响对象会导致两者不稳定
  • 严重程度——
    Blocking
    (阻断:直接排除该方案;方案不可行,或代价无法挽回)、
    Material
    (重大:方案留存,但取舍平衡恶化)、
    Minor
    (轻微:值得关注,但不影响排序)
既无触发条件也无影响对象的异议属于偏好:需放在单独章节中报告,不影响排序。仅缺失其中一项的属于不完整异议,而非偏好——若候选方案内容支持,则补充缺失项;否则剔除该异议。
Blocking
级异议必须指定影响对象。无影响对象的
Blocking
级异议将降级为
Material
,因为无人承担的不可挽回代价不足以成为排除方案的理由。

Phase 5: Consolidate and Verify

阶段5:整合与验证

Critics over-report, over-rate, and file one insight three times. Cut that down first, then verify — a board of six with nothing between an opinion and the report is six unchecked opinions.
Consolidate:
  1. Kill non-objections. No named condition and no named bearer is a preference, not an objection — move it. An objection whose evidence quotes nothing from the frame or the candidate is an impression; drop it.
  2. Kill unproven halves. An objection pairing a demonstrated claim with one nobody could demonstrate ships as the demonstrated claim alone. The weakest claim sets the credibility of the whole objection.
  3. Dedupe. Two critics hitting the same candidate with the same objection is one objection at the higher severity. Independent corroboration is a strong signal — say so, and never let it look like two problems.
  4. Cluster. If one change to a candidate answers several objections, report the root and nest the rest beneath it.
  5. Separate cross-cutting from discriminating. Cross-cutting objections belong in the framing section — they say something about the problem, not about the choice. Peregrinus's Section 3 observations join them here.
  6. Keep what you killed. Pass the drops from steps 1 and 2 into verification marked
    dropped
    . Verification rules on them too, and a confirmed drop is worth more than an assumed one — the lenses sometimes find the stated reason for dropping was wrong.
Verify: dispatch the lenses from
references/verification-prompt.md
, all at once, one per lens. Replace
{{LENS}}
with the lens name,
{{FRAME}}
with the Phase 1 frame,
{{CANDIDATES}}
with the assembled set, and
{{OBJECTIONS}}
with the consolidated objections plus the drops — a lens told to quote the candidate and judge against the frame's constraints needs all three in its prompt. Every lens defaults to refuting what it cannot demonstrate, and each rules only within its own verdict vocabulary.
LensQuestion
premise
Is this objection about what the candidate actually proposes, or an invented version of it? Quote the candidate.
bite
Under what condition does it bite, and who pays? No condition and no bearer means it is a preference.
escapability
Can the candidate absorb this cheaply? An objection with a cheap fix is a design note, not a reason to rule a candidate out.
Merge rule. An objection dies when
premise
shows it attacks something the candidate does not propose, or when
bite
can establish neither a reachable condition nor an exposed bearer. Those two lenses are the only ones that refute.
escapability
never kills an objection. It demotes one to a design note on its candidate, along with the specific adjustment that answers it. A design note does not rank, which means escapability is the one lens that can keep a
Blocking
objection from ruling a candidate out — so it must state the adjustment, and the report must carry it. An adjusted candidate is ranked as adjusted, and the adjustment is named.
Verification is not a downgrade pass. An objection that arrives reasoned and leaves demonstrated should come out sharper. A verify phase whose ratings only ever fall is miscalibrated. Verify the reasoned ones hardest, and anything a critic rated confidently without evidence.
批判类角色会过度报告、高估严重程度,并将同一见解重复提交三次。首先需精简内容,然后进行验证——由6个角色组成的评审委员会若直接将意见作为报告,只是6个未经验证的观点。
整合步骤:
  1. 剔除非异议内容。既无触发条件也无影响对象的属于偏好,而非异议——需移至对应章节。未引用框架或候选方案内容作为证据的异议属于主观印象——予以剔除。
  2. 剔除未证实的内容。若异议包含已证实的主张和无法证实的主张,则仅保留已证实的部分。最弱的主张决定了整个异议的可信度。
  3. 去重。两个批判类角色针对同一候选方案提出相同异议的,视为一个异议,并取较高的严重程度。独立佐证是强烈信号——需在报告中说明,切勿让其看起来是两个问题。
  4. 聚类。若修改一个候选方案即可解决多个异议,则报告根本原因,并将其他异议嵌套在其下。
  5. 区分跨领域与差异化异议。跨领域异议属于框架章节——它们针对的是问题本身,而非选择。Peregrinus第三部分的观察结果也需纳入此处。
  6. 保留剔除的内容。将步骤1和2中剔除的内容标记为
    dropped
    后带入验证环节。验证环节也会对其进行判断,已确认的剔除内容比假设的剔除内容更有价值——校验维度有时会发现剔除理由并不正确。
验证步骤:
references/verification-prompt.md
调度校验维度,同时运行,每个维度对应一个校验任务。将
{{LENS}}
替换为校验维度名称,
{{FRAME}}
替换为阶段1的框架,
{{CANDIDATES}}
替换为汇总后的候选方案集合,
{{OBJECTIONS}}
替换为整合后的异议加上剔除的内容——要求引用候选方案并对照框架约束进行判断的校验维度需要这三部分内容。每个校验维度默认反驳无法证实的内容,且仅在自身的结论词汇范围内做出判断。
校验维度核心问题
premise
该异议针对的是候选方案实际提出的内容,还是被臆造的版本?请引用候选方案内容。
bite
异议在什么条件下生效,影响对象是谁?既无触发条件也无影响对象的属于偏好。
escapability
候选方案能否低成本地解决该异议?可低成本修复的异议属于设计说明,而非排除方案的理由。
合并规则。若
premise
显示异议针对的是候选方案未提出的内容,或
bite
无法确定可触发的条件或受影响的对象,则该异议无效。只有这两个校验维度可反驳异议。
escapability
永远不会剔除异议。它会将异议降级为对应候选方案的设计说明,并附上解决该异议的具体调整方案。设计说明不影响排序,这意味着
escapability
是唯一可阻止
Blocking
级异议排除候选方案的校验维度——因此必须说明调整方案,且报告中需包含该内容。调整后的候选方案将按调整后的版本排序,并注明调整内容。
验证环节并非降级环节。经过推理提出的异议在验证后应变得更清晰。若验证环节仅降低严重程度,则说明校准有误。需重点验证推理充分的异议,以及批判类角色自信提出但无证据支持的任何内容。

Phase 6: Synthesize

阶段6:综合分析

Read
references/synthesis-guide.md
and follow it. It covers ranking the candidates, choosing the recommendation, when to override the board, and the report format.
Before presenting, judge the board against your own broader context: dismiss what is wrong or irrelevant, demote what is correct but insignificant, promote what matches a concern you already had, and note the reasoning for any override. You have context no seat had — use it, and say when you did.
阅读
references/synthesis-guide.md
并遵循其指导。该文档涵盖候选方案排序、推荐方案选择、何时推翻评审委员会结论,以及报告格式。
提交报告前,需结合自身更广泛的背景判断评审委员会的结论:剔除错误或无关内容,降级正确但无关紧要的内容,升级符合已有关注点的内容,并注明任何推翻结论的理由。你拥有所有角色都不具备的上下文——请利用该上下文,并说明何时使用了该上下文。

Edge Cases

边缘情况处理

  • No external agent installed — Peregrinus is skipped, the report says so. Never retry.
  • outsider
    itself not installed
    — a different failure with the same symptom, and a real one: consilium ships in the review bundle while
    outsider
    ships in the assist bundle, so a host with only one of them installed has a core seat that cannot exist. Say which is missing, name the other bundle, and run the board without that seat.
  • Peregrinus times out — note it and move on. If it timed out at 300s, the timeout was not passed.
  • Peregrinus ran unbriefed — if its answer has none of the sections its prompt asks for, the preamble did not reach it. Discard the output rather than mapping it; an unbriefed answer looks like a candidate and is not one.
  • A seat fails — note it in the report header and continue with what returned.
  • Only one candidate survives Phase 3 — valid, and worth saying plainly: report it as a decision with no live alternative, and say what was rejected and why.
  • All candidates carry a Blocking objection — the honest report. Say the frame may be wrong and hand back the cross-cutting objections rather than picking a least-bad candidate.
  • The problem cannot be stated as a decision — stop and say so. Do not invent a decision.
  • No objections survive verification — a valid outcome. Report the ranking on trade-offs alone and say the board found nothing disqualifying.
  • A finished plan with no open question — it becomes candidate A and the board still generates alternatives. If it wins, that is the useful answer.
  • A diff was passed instead of a decision — say what this skill is for, point at
    changes-review
    , and stop.
  • Every candidate came from one generator — say so in the header. A single-generator run cannot show the design space was explored. Prefer selecting Librarius to avoid it, and re-run with a different frame if the candidates still feel narrow.
  • Only one critic ran — allowed only for small, cheap-to-undo candidates, and the report says the board had one critic. Otherwise select Scrutator or Censor in Phase 3 and dispatch it.
  • 未安装外部Agent——跳过Peregrinus,报告中需说明。无需重试。
  • 未安装
    outsider
    本身
    ——这是另一种故障,且属于真实问题:consilium包含在评审工具包中,而
    outsider
    包含在辅助工具包中,因此仅安装其中一个工具包的宿主平台会出现核心角色无法运行的情况。需说明缺失的工具包名称,并在无该角色的情况下运行评审委员会。
  • Peregrinus超时——注明该情况并继续。若超时发生在300秒,则说明未传递超时参数。
  • Peregrinus无说明运行——若其回答未包含提示词要求的任何部分,则说明前置说明未传递成功。需丢弃输出而非映射为候选方案;无说明的回答看似候选方案,但实际并非有效方案。
  • 某角色运行失败——在报告头部注明该情况,并继续使用已返回的内容。
  • 仅一个候选方案留存至阶段3——有效场景,需明确说明:报告为无替代方案的决策,并说明被剔除的方案及原因。
  • 所有候选方案均带有Blocking级异议——如实报告。说明框架可能存在问题,并返回跨领域异议,而非选择最不坏的方案。
  • 问题无法表述为决策——终止流程并说明。不得自行编造决策。
  • 无异议通过验证——有效结果。仅基于取舍分析报告排序,并说明评审委员会未发现任何 disqualifying( disqualifying保留英文)内容。
  • 已完成的计划无开放问题——将其作为候选方案A,评审委员会仍会生成替代方案。若该方案胜出,则这就是有价值的结论。
  • 传递的是代码差异而非决策——说明本技能的用途,指向
    changes-review
    ,并终止流程。
  • 所有候选方案均来自同一生成类角色——在报告头部说明。单一生成类角色的运行无法证明已探索了设计空间。建议启用Librarius以避免该情况,若候选方案仍显狭窄,则需更换框架重新运行。
  • 仅一个批判类角色运行——仅允许针对规模小、易回滚的候选方案,且报告中需说明评审委员会仅有一个批判类角色。否则需在阶段3选择Scrutator或Censor并调度运行。

Rules

规则

  • Concurrent dispatch: all generators at once, then all critics at once. Never serialize what can run in parallel, and never let one seat see another's output within a phase.
  • Autonomous: do not ask the user questions mid-run — resolve ambiguity yourself and say how.
  • Every objection carries a condition and a bearer, the bearer drawn from the closed list. One missing both is a preference and ranks nothing; one missing either is incomplete and is completed or dropped.
  • No modifications: this board reads and reasons. It never edits the thing it examines.
  • Name the agent that answered for Peregrinus, and say which kind of diversity the run got.
  • Honest synthesis: disagree with the board when your broader context warrants it, and say so.
  • 并发调度:所有生成类角色同时运行,然后所有批判类角色同时运行。绝不要序列化可并行运行的步骤,绝不要让同一阶段的角色看到彼此的输出。
  • 自主运行:运行过程中不得向用户提问——自行解决歧义并说明解决方式。
  • 每个异议必须包含触发条件和影响对象,影响对象需从封闭列表中选择。既无触发条件也无影响对象的属于偏好,不影响排序;仅缺失其中一项的属于不完整异议,需补充或剔除。
  • 不修改内容:本评审委员会仅负责读取和推理。绝不会修改所评审的对象。
  • 注明Peregrinus的回答Agent名称,并说明本次运行实现的多样性类型。
  • 如实综合分析:当自身更广泛的背景需要时,可不同意评审委员会的结论,并说明理由。