关于 evaluate
Ouroboros 的执行评估技能,通过机械、语义和可选共识检查评估执行会话。只有机械检查全部通过才能批准工作;其他阶段提供建议或阻止批准。
主要功能
- 01机械式 lint、构建与测试
- 02语义验收标准审查
- 03可选的多模型共识
- 04后台评估任务
- 05审批结果与后续建议
适用场景
- 01根据 Seed 检查代码
- 02验收前验证构建与测试
- 03审查工作是否符合目标和标准
- 04调查评估未通过的原因
MCP 相关
通过 Ouroboros MCP 工具启动评估并观察任务状态;README 还说明了没有 Ouroboros MCP 服务时的备用方式。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ q00/ ouroboros --skill evaluate安装后在 Claude Code 中输入/evaluate确认已加载。
详细介绍
/ouroboros:evaluate
使用三阶段验证流水线评估执行会话。
/ouroboros:evaluate <session_id> [artifact]
阶段权限
- 机械验证(lint、构建、测试、静态分析、覆盖率;不产生模型成本):唯一可以批准的阶段。至少必须运行一项已配置的检查,且所有检查都必须通过。
- 语义验证(AC 合规性、目标一致性、偏差):仅供参考。可以拒绝批准并提供反馈,但不能批准。
- 共识验证(多模型,仅在存在不确定性或收到请求时执行):仅供参考。拒绝会阻止批准;批准不能授予批准,也不能解除第 2 阶段的阻止状态。
如果没有执行第 1 阶段的检查,结果将为 acceptance_state: unverified(未批准),并附上模型审查作为反馈。
说明
加载 MCP 工具(延迟加载 schema 防护)
Ouroboros 工具可能会延迟加载,而某一轮加载的 schema 可能在下一轮卸载。每次调用 ouroboros_* 前,立即使用当前运行时的工具发现功能加载相应工具:"+ouroboros evaluate" 用于 ouroboros_start_evaluate;"+ouroboros job" 用于 ouroboros_job_wait、ouroboros_job_status 和 ouroboros_job_result。如果未加载 schema,调用会失败并显示 "Invalid tool parameters"。如果工具已经可以调用,工具发现操作不会执行任何操作,并且预期会返回空结果。只有在工具确实不存在时才使用备用方案。
步骤
- 会话:使用给定的
session_id;否则使用对话中最近一次执行的会话 ID。 - 产物:用户指定的文件(使用活动运行时的
inspect_code功能读取);否则使用最近的执行输出;如果不明确,则通过ask_user询问。 2.5. 行为验证(涉及行为的工作):Stage 1 已经运行构建/测试,因此在运行时可以执行操作时应进一步验证。运行结果并观察实际效果(使用run_shell查看命令输出、端点响应或渲染后的 UI),而不是只根据差异进行推断;理想情况下,在一个验证子代理中通过orchestrate_subagents执行,或在无法生成子代理时内联执行。根据观察到的行为验证 AC,并检查对抗性类别(misleading_output、hung_command、stale_state、dirty_worktree等)。将捕获的证据(命令、输出、产物路径)放入artifact。如果运行时无法执行操作,则说明未观察到行为。 - 启动后台评估,使被拒绝的判定可以继续进入配置的 Ralph 链:
Tool: ouroboros_start_evaluate Arguments: session_id: <session ID> artifact: <the code/output to evaluate, plus observed-behaviour evidence from 2.5> seed_content: <original seed YAML, if available> acceptance_criterion: <specific AC to check, optional> artifact_type: "code" (or "docs", "config") working_dir: <absolute project root, recommended> trigger_consensus: false (true if user requests Stage 3) auto_evolve: <optional override; omit to use execution.auto_evolve>working_dir同时设置 Stage 1 命令执行和 Stage 2 源码可见性的工作目录;只要知道绝对项目根目录,就应传入该目录。 - 观察任务:启动结果会在
response.meta.job_observer中以及末尾的 `` 内容哨兵中提供观察者约定。如果缺少结构化元数据,则从哨兵中恢复约定,并采取失败关闭策略,除非满足以下所有条件:文本末尾恰好有一个哨兵;其有界载荷解码为仅包含job_observer这一个键的对象;该约定通过规范 v1 验证(逐字段等于服务器根据自身的job_id、cursor、session_id、execution_id和follow_result_job_keys构建的 v1 约定);其任务标识与可见的启动回执一致;且与任何结构化约定都不存在差异;绝不要根据可见 ID 重新构建约定。约定有效时,将其原样交给恰好一个只读观察者子代理;其指令已经会通过follow_result_job_keys跟踪chained_ralph_job_id,主会话不得轮询同一任务。没有子会话时,应在下一轮或收到明确的状态请求时,通过ouroboros_job_status/ouroboros_job_result追踪任务;只有用户要求观看时,才使用ouroboros_job_wait实时等待。只有在任何后续 Ralph 任务都已终止后,才呈现收敛结果。chained_ralph_skipped: seed_unavailable表示没有可用的 Seed:保留被拒绝的判定,并说明已安全跳过后续流程。在 OpenCode 插件模式且自动演进已禁用时,插件子任务是终止界面,且job_id为None。 - 呈现各阶段结果、最终批准决定;如果被拒绝,还要说明原因并提供建议的修复方案。根据结果选择下一步操作:
- 已批准:接受,或使用
ooo evolve继续改进 - Stage 1 被拒绝且
code_changes_detected: true:修复构建/测试失败,然后运行ooo evaluate,或运行ooo ralph开启自动修复循环 - Stage 1 被拒绝且
code_changes_detected: false:先运行ooo run生成代码 - Stage 2 被拒绝:根据修复方案运行
ooo run,或运行ooo evolve - Stage 3 被拒绝:运行
ooo interview重新审查需求,或运行ooo unstuck acceptance_state: unverified:向.ouroboros/mechanical.toml添加可执行检查(或运行ouroboros detect),然后运行ooo evaluate;语义审查仅提供反馈,不作判定
- 已批准:接受,或使用
回退方案(无 Ouroboros MCP 服务)
使用 MCP 服务采用的提示词,自行担任 evaluator 角色:如果设置了 $OUROBOROS_AGENTS_DIR 覆盖项,则使用 $OUROBOROS_AGENTS_DIR/evaluator.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'))" evaluator.md
否则,在源码检出目录中使用 src/ouroboros/agents/evaluator.md。
根据 Seed 给出定性、咨询性的评估(不进行数值评分;没有 Python 核心时不具备批准权限)。
RFC #1392 状态面包屑页脚
最终回复必须以且仅以一行 ◆ <current state> → next: <recommended action> 结尾。尽可能通过 ouroboros_session_status 从实时会话状态推导状态,否则根据此技能的实际结果推导。切勿使用线性的 Step N of M 页脚;如果下一步确实有多个选择,请列出 2-3 个选项。