mcpField
S
seed

seed

github.com/q00Agent 工作流6.3k78 次安装今天更新
代码仓库

关于 seed

Ouroboros 的 Seed 生成技能,可根据访谈或已确定的需求生成经过验证的规格。它执行一次建议性 QA,并要求用户明确同意后才能进行后续修订。

主要功能

  1. 01根据访谈状态生成 Seed
  2. 02无需访谈,依据已确定需求生成
  3. 03单次建议性 QA
  4. 04可选修订流程
  5. 05修订决策审计记录

适用场景

  1. 01将已完成的访谈转为 Seed 规格
  2. 02根据已确定需求创建 Seed
  3. 03检查 Seed 的一致性与可测试性
  4. 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 模式(首选)
  1. 选择入口:

    • 如果提供了 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,然后再次调用;这就是完整的访谈流程。

  2. 访谈会话:

    Tool: ouroboros_generate_seed
    Arguments:
      session_id: <interview session ID>
    

    该工具会从持久化的访谈状态中提取需求,对模糊度进行评分(必须 <= 0.2),并返回 Seed YAML。

  3. 如果没有生成 Seed YAML,请停止并要求用户继续生成或提供产物。绝不要伪造 Seed。

  4. 执行下方的 Advisory QA Check,然后转到“Seed 生成之后”。

路径 B:没有 MCP 服务
  1. 阅读 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 提示词都用相同方式解析,并替换为对应的文件名。

  2. 起草前还原需求;绝不臆造缺失的上下文:

    • 如果有 session_id,仅在当前线程中的问答和更正属于该会话时使用它们;如果信息不完整,则使用 inspect_code / run_shell 查找该 ID 对应的持久化或导出产物(例如 ~/.ouroboros/data/ 下的内容)。将持久化转录作为证据保留,但明确的同线程更正优先于它。
    • 如果没有 session_id,仅当当前线程中的问答构成一次连贯的访谈时才使用它们。
    • 否则,请用户提供转录或需求摘要,或者建议使用 ooo interview。绝不要基于缺失或不匹配的转录生成 Seed。
  3. 生成 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;请在审计块中保留通过记录。

始终按以下顺序呈现:

  1. QA advisory: <PASS|REVISE|FAIL>, score X.XX (bar 0.90).
  2. 低于门槛时:将排名前 2–3 的建议作为简短的参考性项目符号列出(描述发现,而非任务)。不要自动应用任何建议。
  3. 将完整的 Seed YAML 放在带 yaml 标记的围栏代码块中。
  4. 对于 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 可调用时):
    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>
    
    从每个角色的文字中最多提取 1-2 项具体、彼此独立的修订,并舍弃抽象建议。如果响应带有 `` 哨兵,且运行时能够分派隔离的子 Agent,则对其解码,并通过 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 个选项。

评论

支持 Markdown