Ouroboros
规约

规约(Seed)

访谈的答案被整理成一个 YAML 文件,叫 Seed。运行时照着它写代码,评估也照着它判分。开跑之前先读一遍,确认它写的是你想要的东西。

1. 它是什么

Seed 是一个 YAML 文件,装着目标、约束、验收标准和数据结构。一次运行开始之后,这次运行里的 Seed 不会再变。

2. 生成

在 Claude Code 会话里,用上一章拿到的 session_id

ooo seed <session_id>

预期结果:生成 Seed,存成 YAML 文件,默认落在 ~/.ouroboros/seeds/ 下面。装了 Codex CLI 或 OpenCode 插件(装插件)的话,同一条命令在那边的会话里一样能用。

3. 七个字段

Seed 的顶层字段就是下面这七个(core/seed.py):

字段装什么怎么检查
goal这次运行要产出什么看它说的是「用户能做到什么」。像「做得好看点」这种没法判的说法要改掉。
constraints必须守住的限制技术、环境、范围三类限制和你的回答对不对得上。
acceptance_criteria判断做完了的标准每一条都要能在屏幕上看到、或者能被测试直接验。评估那一章就是拿这些来比对。
ontology_schema要处理的数据结构字段名和类型跟功能对得上。
evaluation_principles评估时加权的原则看重点放对了没有。
exit_conditions什么时候算结束结束条件是不是可判定的。
metadata模糊度分数等元信息上一章那个分数会记在这里。

4. 判分用的东西不进 worker 的契约块

当一条验收标准定义了自己的验证命令期望输出时,那些值不会进执行 agent 拿到的契约块,也没有开关能把它放回去。原因很直接:断言一旦看得见,卡住的 agent 最省力的路就是去糊弄那个字符串,而不是把功能做出来。

两点要说清楚,免得你以为它比实际更严实:

另外,项目级的 lint 和 test 命令是故意给 agent 的。藏起来的是那条标准自己的答案,不是所有命令。

5. 进化的时候什么会变、什么不会

评估没过而进入演化循环时,验收标准不会被悄悄改松。代码里的做法是:只有散文描述会被重写,其余字段整份从父代继承过来evolution/acceptance_contracts.pyevolve_acceptance_contracts)。新的标准可以往后追加,已有的不能删、也不能重排。

这条设计是为了堵一个具体的漏洞:让 agent 自己出考题,它迟早会把题目改容易。

6. 下一步

确认 Seed 没问题之后,就可以进入执行。逐章指南的执行、评估、演化目前在英文版한국어版里,中文这几章在补。

这一页对着当前源码核过:七个字段来自 core/seed.py,存储路径来自 auto/adapters.py,继承规则来自 evolution/acceptance_contracts.py。有对不上的地方,欢迎到 GitHub Issues 说一声。