关于 seed
Ouroboros 的 Seed 生成技能,可根据访谈或已确定的需求生成经过验证的规格。它执行一次建议性 QA,并要求用户明确同意后才能进行后续修订。
主要功能
- 01根据访谈状态生成 Seed
- 02无需访谈,依据已确定需求生成
- 03单次建议性 QA
- 04可选修订流程
- 05修订决策审计记录
适用场景
- 01将已完成的访谈转为 Seed 规格
- 02根据已确定需求创建 Seed
- 03检查 Seed 的一致性与可测试性
- 04应用用户批准的 Seed 修订
MCP 相关
在 MCP 模式下调用 Ouroboros 工具生成 Seed 并执行 QA;可使用访谈会话,也可输入已确定的需求。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ q00/ ouroboros --skill seed安装后在 Claude Code 中输入/seed确认已加载。
详细介绍
/ouroboros:seed
从访谈或本次对话中已经确定的需求生成经过验证的 Seed 规范。
必需的技能能力
ask_user(当前运行时的用户提问界面)、inspect_code、call_mcp、orchestrate_subagents(横向角色负载)、run_shell(审计跟踪和偏好写入)、refine_answer(确认自由格式决策)、maintain_ledger(QA 评分、候选决策、被拒方案)。
用法
ooo seed [session_id]
/ouroboros:seed [session_id]
说明
Python 运行时(必需)
运行下面的任何 shell 代码片段之前,都要在同一个 shell 中定义此解析器,并为 ouroboros_python 的每个参数加上引号。它仅接受 Python 3.12 或更高版本,并会回退到 uv。
ouroboros_python() {
if command -v python3 >/dev/null 2>&1 &&
(unset PYTHONHOME PYTHONPATH PYTHONPLATLIBDIR PYTHONEXECUTABLE __PYVENV_LAUNCHER__; command python3 -c 'import sys; raise SystemExit(sys.version_info < (3, 12))') >/dev/null 2>&1
then
(unset PYTHONHOME PYTHONPATH PYTHONPLATLIBDIR PYTHONEXECUTABLE __PYVENV_LAUNCHER__; command python3 "$@")
return
fi
if command -v python >/dev/null 2>&1 &&
(unset PYTHONHOME PYTHONPATH PYTHONPLATLIBDIR PYTHONEXECUTABLE __PYVENV_LAUNCHER__; command python -c 'import sys; raise SystemExit(sys.version_info < (3, 12))') >/dev/null 2>&1
then
(unset PYTHONHOME PYTHONPATH PYTHONPLATLIBDIR PYTHONEXECUTABLE __PYVENV_LAUNCHER__; command python "$@")
return
fi
if command -v uv >/dev/null 2>&1; then
(unset PYTHONHOME PYTHONPATH PYTHONPLATLIBDIR PYTHONEXECUTABLE __PYVENV_LAUNCHER__; command uv run --no-project --quiet --python '>=3.12' python "$@")
return
fi
printf '%s\n' 'Ouroboros skills require Python >= 3.12 or uv on PATH.' >&2
return 127
}
加载 MCP 工具(延迟加载架构防护)
Ouroboros 工具可能延迟加载,某一轮加载的架构可能在下一轮卸载。每次调用 ouroboros_* 之前,都要立即使用当前运行时的工具发现能力加载对应工具:调用 ouroboros_generate_seed 时使用 "+ouroboros seed";调用 ouroboros_qa 时使用 "+ouroboros qa";调用 ouroboros_lateral_think 时使用 "+ouroboros lateral"。如果工具已可调用,发现操作不会执行任何操作,预期结果为空。仅当工具确实不存在时,才使用回退方案。
选择路径之前,先加载 ouroboros_generate_seed:如果它可调用,则使用 路径 A;只有在该工具确实不存在(没有 Ouroboros MCP 服务)时,才使用 路径 B。
委派响应不是产物。 如果以下任一工具返回 status: "delegated_to_subagent"(带有 dispatch_mode: "plugin",并且可能包含 _subagents 数组),请保留返回的会话 ID,等待插件管理的子 Agent 返回结果,并从这些结果中解析产物(Seed YAML、QA 判定或角色文本),绝不要从响应封装或提示词中解析。
路径 A:MCP 模式(首选)
-
选择入口:
- 如果提供了
session_id,或对话中有最近的ouroboros_interview会话 ID:使用访谈会话(第 2 步)。 - 如果没有访谈,但本次对话已经确定了目标、约束和可验证的成功标准(横向决策、棕地扫描或已达成共识的普通讨论):使用无访谈路径。不要让用户使用
ooo interview重复已经提供的信息。 - 否则,询问用户要基于哪次访谈或哪些需求生成 Seed。
无访谈路径(
session_context):Tool: ouroboros_generate_seed Arguments: session_context: goal: <the user's own settled wording, verbatim, never your paraphrase> acceptance_criteria: [<verifiable checks: a command, a visible behaviour, a measurable state>] constraints: [<optional>] decisions: [<optional; each becomes a constraint>] project_type: greenfield | brownfield每个值都会原样写入 Seed,因此 AC 中允许使用 shell 命令链(
ruff check && pytest)。如果响应的status为"gap_questions_required",则按原样向用户询问列出的所有问题,将答案合并到session_context,然后再次调用;这就是完整的访谈流程。 - 如果提供了
-
访谈会话:
Tool: ouroboros_generate_seed Arguments: session_id: <interview session ID>该工具会从持久化的访谈状态中提取需求,对模糊度进行评分(必须 <= 0.2),并返回 Seed YAML。
-
如果没有生成 Seed YAML,请停止并要求用户继续生成或提供产物。绝不要伪造 Seed。
-
执行下方的 Advisory QA Check,然后转到“Seed 生成之后”。
路径 B:没有 MCP 服务
-
阅读
seed-architect提示词并采用该角色:如果设置了该覆盖项,则使用$OUROBOROS_AGENTS_DIR/seed-architect.md;否则使用已安装软件包中的副本,通过run_shell打印:uvx --isolated --python '>=3.12' --from ouroboros-ai python -c "import importlib.resources as r, sys; print(r.files('ouroboros.agents').joinpath(sys.argv[1]).read_text(encoding='utf-8'))" seed-architect.md否则使用源码检出中的
src/ouroboros/agents/seed-architect.md。本技能中提到的每个 Agent 提示词都用相同方式解析,并替换为对应的文件名。 -
起草前还原需求;绝不臆造缺失的上下文:
- 如果有
session_id,仅在当前线程中的问答和更正属于该会话时使用它们;如果信息不完整,则使用inspect_code/run_shell查找该 ID 对应的持久化或导出产物(例如~/.ouroboros/data/下的内容)。将持久化转录作为证据保留,但明确的同线程更正优先于它。 - 如果没有
session_id,仅当当前线程中的问答构成一次连贯的访谈时才使用它们。 - 否则,请用户提供转录或需求摘要,或者建议使用
ooo interview。绝不要基于缺失或不匹配的转录生成 Seed。
- 如果有
-
生成 Seed YAML,运行 Advisory QA Check,然后转到“Seed 生成后”。
Advisory QA Check(单次执行,不阻塞)
对生成的 Seed 恰好运行一次 QA。判定结果仅供参考,绝不会阻塞:无论得分如何,Seed 都会作为最终结果呈现,并且不会循环执行 QA 直到通过。
生成过程(路径 A 工具或路径 B 角色)恰好运行一次,并固定 Seed 的本体。之后的任何修订都由你直接编辑 YAML;绝不要再次调用 ouroboros_generate_seed(它不接受修订提示,并会丢弃本体)。
MCP QA 模式:
Tool: ouroboros_qa
Arguments:
artifact: <the seed YAML>
quality_bar: "Seed must be internally consistent, acceptance_criteria must be measurable and testable, constraints must be concrete (no vague terms), ontology_schema must cover all entities referenced in goal/criteria, and there must be no contradictions between fields. acceptance_criteria must also be parsimonious in the ontological sense: a criterion names a state of the finished work a user can see is true, while an implementation step names a means of reaching it, and only the first belongs in the list. Read each criterion beside its siblings — one intelligible only as a move toward a sibling is that sibling's means and belongs merged into the outcome it serves, and flagging that is as important as flagging a missing piece, since it commits the seed to an unverified path. How many criteria a goal has follows from that judgment, so weigh each criterion against its siblings."
artifact_type: "document"
pass_threshold: 0.90
seed_content: <the seed YAML>
qa_session_id: <reuse across passes>
iteration_history: <accumulated across passes>
0.90 的门槛(比默认的 0.80 更严格)用于标记判定结果;不用于任何门控。
回退 QA 模式(QA 工具不可用时):阅读 qa-judge 提示词(按路径 B 第 1 步中的方式解析),采用该角色,并使用相同的质量标准和阈值评估 Seed。它返回包含小写 verdict(pass/revise/fail)、score、dimensions、differences、suggestions、reasoning 的 JSON;仅在展示时将判定结果改为大写,不要添加架构规定之外的字段。这里没有 qa_session_id;请在审计块中保留通过记录。
始终按以下顺序呈现:
QA advisory: <PASS|REVISE|FAIL>, score X.XX (bar 0.90).- 低于门槛时:将排名前 2–3 的建议作为简短的参考性项目符号列出(描述发现,而非任务)。不要自动应用任何建议。
- 将完整的 Seed YAML 放在带
yaml标记的围栏代码块中。 - 对于 REVISE 或 FAIL,提供一行可选语句,例如
Want a refinement pass on these findings? Otherwise the seed stands as-is.。对于 FAIL(< 0.40),还要提及ooo interview(重新审视需求)或ooo unstuck(质疑假设)。然后继续转到“Seed 生成后”;除非用户选择继续,否则 Seed 即为最终结果。
仅当用户明确选择继续时,才运行一次修订流程(如下所述),再运行一次 QA 并更新参考性判定行,然后呈现修订后的 YAML。之后每次修订都需要用户再次明确选择继续;绝不要连续执行修订。每次之后的 QA 调用前,都要将上一次的判定结果以及已应用/已拒绝的决策追加到 iteration_history。
优化轮次:Wonder → Reflect → Refine → Restate(可选启用)
从彼此独立的来源收集不同观点,展开讨论,让用户决定,然后再应用。默认不接受任何候选项,而且绝不会自行应用修订(用户采纳关卡)。
Wonder:收集提案。
- QA:判定结果中的
suggestions(YAML 的结构性缺漏;QA 无法查看访谈内容)。 - 苏格拉底视角(按路径 B 步骤 1 解析的
socratic-interviewer提示词):根据访谈证据(优先使用已持久化的会话状态,其次使用当前对话)检查 Seed,找出 2-4 项:用户约束被遗漏或弱化、已拒绝的范围重新混入、细微差别被抹平、未经同意的假设。若没有证据,则记录no Socratic proposal: dialectic context unavailable;绝不臆造用户偏好。QA 与苏格拉底视角发生冲突时,交由 Reflect 处理;任何一方都不会自动胜出。 - 横向思考角色(仅当
ouroboros_lateral_think可调用时):
从每个角色的文字中最多提取 1-2 项具体、彼此独立的修订,并舍弃抽象建议。如果响应带有 `` 哨兵,且运行时能够分派隔离的子 Agent,则对其解码,并通过Tool: ouroboros_lateral_think Arguments: problem_context: | User opted into a refinement pass (QA advisory score X.XX, bar 0.90). Current seed YAML: <YAML> QA suggestions: - <suggestion 1> Original user goal from interview: <recall> current_approach: "The seed as currently drafted (above)." persona: "all" failed_attempts: - <candidates rejected in earlier passes>orchestrate_subagents发送每个payload.prompt+payload.context;否则读取可见的角色分段(根据分段标题拆分,而不是根据单独的---)。如果工具不可用,则记录no lateral proposals: MCP lateral tool unavailable,且不要模拟这些角色。
Reflect:梳理讨论。 为每个候选项标注其支持来源和类型(expand、sharpen、remove、resolve_conflict):趋同(两个或更多来源意见一致,强)、分歧(来源之间存在冲突;由用户决定)、单一来源(较弱)。显示类似 Balance: 4 expand / 2 sharpen / 1 remove 的平衡情况,仅作信息展示,不是警告。
Refine:用户关卡。 仅使用单选 ask_user 问题,并按以下顺序处理:先处理冲突——每个冲突组提一个问题(每种解决方案各一个选项,另加“保持不变”);然后处理强修订(“全部应用、逐项审核或跳过”);最后处理单一来源项(“逐项审核或全部跳过”)。每批都提供“保留当前 Seed”选项。对于自由形式的回答,使用 refine_answer 进行确认。后续横向思考调用中,将已拒绝的候选项作为 failed_attempts 传入。
Restate:仅应用已接受的项目。 直接修改现有 YAML,保留原本正确的字段,不要重新生成。如果所有项目都被跳过,则 Seed 保持不变。
审计记录。 每轮结束后,将以下内容追加到 ~/.ouroboros/seed-revisions/<revision_key>.md(如有必要则创建目录):轮次编号、QA 评分、每个候选项及其来源标签和接受/拒绝决定,以及与上一版 YAML 的差异。revision_key 为 session_id;如果没有,则使用 <slugified-goal>-YYYYMMDDTHHMMSSZ,并只生成一次,后续每轮复用。如果写入失败,则在响应中包含审计内容。
Seed 生成后
宣布 你的 Seed 已凝练完成!
然后读取 ~/.ouroboros/prefs.json。如果 star_asked 不是 true,使用 ask_user 提出一个单选问题:“如果 Ouroboros 帮助你理清了思路,在 GitHub 上点个 Star 就能支持项目持续开发。”选项如下:
- ⭐ Star:运行
gh api -X PUT /user/starred/Q00/ouroboros,然后记录star_asked。 - 暂不:记录
star_asked。
仅当此 Seed 来自路径 B(没有 Ouroboros MCP 服务)时,才提供设置选项:说明 ooo setup 可启用 ooo run 和评估,并将页脚指向它。路径 A 已可使用 MCP:切勿建议 ooo setup;页脚应指向 ooo run。
使用以下代码片段记录 star_asked,同时保留 welcomeShown、welcomeCompleted 和 welcomeVersion 等已有键:
ouroboros_python - <<'PY'
import json, os
path = os.path.expanduser('~/.ouroboros/prefs.json')
os.makedirs(os.path.dirname(path), exist_ok=True)
try:
with open(path, encoding='utf-8') as f:
prefs = json.load(f)
if not isinstance(prefs, dict):
prefs = {}
except Exception:
prefs = {}
prefs['star_asked'] = True
with open(path, 'w', encoding='utf-8') as f:
json.dump(prefs, f, indent=2)
f.write('\n')
PY
如果 star_asked 已经是 true,则跳过此问题。
RFC #1392 状态面包屑页脚
最终回复必须以且仅以一行 ◆ <current state> → next: <recommended action> 结尾。尽可能通过 ouroboros_session_status 从实时会话状态推导状态,否则根据此技能的实际结果推导。切勿使用线性的 Step N of M 页脚;如果下一步确实有多个选择,请列出 2-3 个选项。