跳转到内容

共识

runConsensus 在单次提示之上加了一个提议者→裁判的验证循环:一个提议者智能体给出答案,然后一组裁判智能体在至多 maxRounds 轮内尝试反驳它。一旦达到 quorum 数量的裁判接受,循环就提前退出。

const result = await orchestrator.runConsensus(team, 'Is this proof correct?', {
proposer: { name: 'solver', model: 'claude-opus-4-6' },
judges: [
{ name: 'judge-a', model: 'claude-opus-4-6' },
{ name: 'judge-b', model: 'claude-sonnet-4-6' },
],
mode: 'refute', // identical skeptic framing for every judge
quorum: 2, // default: ceil(judges.length / 2)
maxRounds: 2, // default: 2
onDissent: 'revise', // default: feed dissent back to the proposer
})
result.answer // the (possibly revised) answer
result.verdict // 'accepted' | 'rejected'
result.dissent // critiques recorded across all rounds
result.rounds // judging rounds executed
result.tokenUsage // proposer + judges + revisions
选项默认值含义
proposer一个智能体,或一个数组(N-best——所有候选都展示给裁判)。
judges验证者名单。裁判顺序运行,这样 quorum 和预算能让其余裁判停下。
mode'refute''refute':每个裁判都得到相同的怀疑者设定。'lens':每个裁判得到一个不同的视角(正确性、完整性、边界情况……)。
quorumceil(judges.length / 2)达成共识所需的接受裁判数。
maxRounds2提议者↔裁判轮数的上限。
verdictSchema可选的 Zod schema,对每个裁判解析出的裁决做校验;校验失败计为异议。
onDissent'revise''revise':把异议反馈给提议者再来一轮。'reject':停止,裁决为 rejected'keep':停止但保留答案,裁决为 accepted
judgePrompt内置覆盖验证者提示——对所有裁判用一个 string,或用一个 (judge) => string 函数做逐裁判的设定。

每个裁判提示都会在被提议的答案旁附上原始问题,这样裁判(包括 lens 模式的)会对照真正问的内容来评判答案。一个裁判以 {"accept": boolean, "critique": string} 回复。

runTasks 流水线中的任何任务都可以选择对自己的结果启用共识验证——该任务的 assignee 就是提议者,因此你提供 proposer 之外的一切:

await orchestrator.runTasks(team, [
{
title: 'derive-bound',
description: 'Prove the O(n log n) bound.',
assignee: 'mathematician',
verify: { judges: [judgeA, judgeB], mode: 'refute', maxRounds: 2 },
},
])

任务完成后,其结果被送入同一个共识循环。如果共识修订了答案,被修订的结果会替换任务输出供下游消费者使用。没有 verify 的任务照常运行、不付出任何代价——这个钩子是完全需显式开启的。

共识的 token 用量像委派一样计入父预算。提议者、裁判和修订的用量全都累加进运行总量,并对照 OrchestratorConfig.maxTokenBudget 检查。一旦累计总量越过预算,共识就停止发起更多的裁判调用——没有单独的预算旋钮,没有逃生口。对于逐任务的 verify 钩子,裁判用量并入与流水线其余部分相同的运行级预算,并触发同一道闸。

每个裁判裁决都通过 onTrace 作为一个 consensus 追踪事件发出(其中 accepted 设为该裁判的决定,dissent 在它反对时携带相应批评),这样你能审计每一轮。提出异议的批评还会被额外写入共享内存(在该裁判的命名空间下,键为 consensus:round:N:dissent)。