用途
Socrates 用于把一条模糊的请求逐步澄清为一个封闭的 Seed。它编排四个子技能:wonder、reflect、refine、restate,按顺序调用它们,并检查 Seed 是否已经闭合。它本身不重写这些子技能的内部实现,只负责调用与判定。
主要能力
- 按顺序编排 wonder、reflect、refine、restate 四个子技能。
- 通过循环(Ralph 式循环)累积澄清过程,直到 Seed 闭合。
- 维护一个规范的 Seed,包含 goal、constraints、acceptance_criteria 三个槽位。
- 通过 Seed Gate 检查每个循环后三个槽位是否已填写。
- 当槽位为空时,把下一轮 Wonder 的问题收窄到缺失的槽位。
- 在可能的情况下,把收窄后的问题以多选题形式提出,提供 3 个合理选项和一个“Other / edit in your own words”选项。
- 设有安全阀:最多 5 个循环,超过后仍缺失的槽位写为 empty 并停止。
使用方式
使用 .symposium/scratch/socrates.md 作为 Scratch Contract。循环会累积记录,格式包括:## User Input 下的原始请求,以及各 Cycle 中的 Wonder、Reflect、Refine(shared meaning)、Restate(goal)。
规范的 Seed 始终是一个顶层 section,格式为:
## Seed
> Source: /socrates Cycle N
```yaml
goal: ...
constraints:
- ...
acceptance_criteria:
- ...
每次 Seed 闭合时替换顶层的 ## Seed section,不要追加多个规范 Seed。
Seed Gate 在每个循环后检查:
- goal:当前循环的 ### Restate 中有一个 goal。
- constraints:至少存在一条用户陈述的约束或边界。
- acceptance_criteria:至少存在一条可验证的标准。
如果三个槽位都已填写,且用户表示当前 goal 与上一循环的 goal 没有实质差异,则停止。
如果某个槽位为空,把下一轮 Wonder 的问题收窄到该槽位:
- 缺少 goal:“What result do you actually want from this request?”
- 缺少 constraints:“What must not happen, or what boundary must not be crossed?”
- 缺少 acceptance criteria:“How will you know this result is good enough?”
收窄后的问题尽可能以多选题形式提出,提供 3 个合理选项和一个“Other / edit in your own words”选项。这些选项只是脚手架;除非用户选择、确认或自行写出内容,否则不要填充 Seed 槽位。不要通过猜测来填充空槽位。
安全阀:最多 5 个循环。如果 5 个循环后某个槽位仍然缺失,为该槽位写 empty 并停止。
最终输出是顶层的 ## Seed YAML 块。
适用场景
适用于需要把一条含糊、不完整的请求澄清为明确目标、约束与验收标准的场景,尤其是希望在澄清过程中保留可追溯的循环记录、并最终得到一个规范 Seed 的情况。
限制
- 不重写 wonder、reflect、refine、restate 的内部逻辑,只做编排与检查。
- 不通过猜测填充空槽位。
- 最多 5 个循环,超过后缺失槽位写 empty 并停止。
- 其他功能、收费、价格、平台、效果或使用步骤暂未提供。