Ouroboros
评估

评估

上一章运行时把东西做出来了。评估回答一个问题:这个结果满足 Seed 里写的验收标准吗?便宜的检查先跑,贵的后跑,前面挂了就不往后送。

1. 跑起来

ooo evaluate <session_id>

预期结果:每一层的通过情况,以及对验收标准的最终判定。一次运行结束之后,在正式评估之前它可能仍然处于未验证状态,所以评估没有自动跟上的话,自己跑一次。

2. 三层

做什么过关条件
1. Mechanical自动识别项目类型,跑 lint、build、test、静态分析和覆盖率。不用 LLM。各项命令正常退出;覆盖率默认阈值 0.7
2. SemanticLLM 拿结果对着验收标准打分。标准判定为满足,且分数 ≥ 0.8
3. Consensus多个模型各自独立投票。只在特定条件下才跑。2/3 多数通过(至少 3 个模型)

3. 三层齐跑,只在这一条路径上成立

这一节是这一页最容易被误读的地方,所以单独拎出来说。

配置里三层的默认值都是开启的,直接跑 ooo evaluate 走的就是三层。但演化循环里不是这样:第一层默认关着(要靠环境变量打开),第三层在那条路径上是写死关掉的。也就是说,演化循环里实际只有 Semantic 一层在判。

把「三阶段评估」和「演化循环」并排写,读起来就像循环里也跑三层。它不跑。

4. 什么时候会触发第三层

第二层过了之后,按优先级依次检查下面这些条件,第一个命中的触发 Consensus。一个都不中就直接批准。

  1. Seed 被修改
  2. 本体(数据结构)发生演化
  3. 目标被重新解释
  4. Drift 分数超过 0.3
  5. 第二层的不确定度超过 0.3
  6. 采用了侧向思考给出的替代方案

另外,你直接要求 Consensus 的话,它优先于上面这六条。

Drift 是 0 到 1 的值,表示结果离原本 Seed 的意图跑偏了多少。低不代表功能做对了,只代表方向没走岔。

5. 独立性是被记录下来的,不是被假设的

合议庭里同一家 vendor 的票会被排除。每次运行都会打上一个标签:independentsame_vendorunavailableunverified

限制要说在前面:判定是按 vendor 家族做的。如果你只配了一家 vendor 的后端,这个机制就是空转——这时候标签会写 same_vendor,而不是假装独立。把限制记成标签,比把它藏起来有用。

6. 没过怎么办

被评估拒绝的结果会进入有预算上限的演化循环,而且只有没通过的验收标准会进下一代,已经通过的直接冻结。演化那一章目前在英文版한국어版里。

这一页的每个数字都对着当前源码核过:覆盖率 0.7(evaluation/languages.py)、语义分 0.8(evaluation/models.py)、2/3 多数与至少 3 个模型(evaluation/consensus.py)、drift 与不确定度阈值 0.3(evaluation/trigger.py)、四个独立性标签(evaluation/reviewer_independence.py)。第 3 节那条路径差异,英文版和韩文版目前都没写。有对不上的地方,欢迎到 GitHub Issues 说一声。