mcpField
E
evaluate

evaluate

github.com/q00测试与质量6.3k71 次安装1 天前更新
代码仓库

关于 evaluate

Ouroboros 的执行评估技能,通过机械、语义和可选共识检查评估执行会话。只有机械检查全部通过才能批准工作;其他阶段提供建议或阻止批准。

主要功能

  1. 01机械式 lint、构建与测试
  2. 02语义验收标准审查
  3. 03可选的多模型共识
  4. 04后台评估任务
  5. 05审批结果与后续建议

适用场景

  1. 01根据 Seed 检查代码
  2. 02验收前验证构建与测试
  3. 03审查工作是否符合目标和标准
  4. 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]

阶段权限

  1. 机械验证(lint、构建、测试、静态分析、覆盖率;不产生模型成本):唯一可以批准的阶段。至少必须运行一项已配置的检查,且所有检查都必须通过。
  2. 语义验证(AC 合规性、目标一致性、偏差):仅供参考。可以拒绝批准并提供反馈,但不能批准。
  3. 共识验证(多模型,仅在存在不确定性或收到请求时执行):仅供参考。拒绝会阻止批准;批准不能授予批准,也不能解除第 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"。如果工具已经可以调用,工具发现操作不会执行任何操作,并且预期会返回空结果。只有在工具确实不存在时才使用备用方案。

步骤
  1. 会话:使用给定的 session_id;否则使用对话中最近一次执行的会话 ID。
  2. 产物:用户指定的文件(使用活动运行时的 inspect_code 功能读取);否则使用最近的执行输出;如果不明确,则通过 ask_user 询问。 2.5. 行为验证(涉及行为的工作):Stage 1 已经运行构建/测试,因此在运行时可以执行操作时应进一步验证。运行结果并观察实际效果(使用 run_shell 查看命令输出、端点响应或渲染后的 UI),而不是只根据差异进行推断;理想情况下,在一个验证子代理中通过 orchestrate_subagents 执行,或在无法生成子代理时内联执行。根据观察到的行为验证 AC,并检查对抗性类别(misleading_output、hung_command、stale_state、dirty_worktree 等)。将捕获的证据(命令、输出、产物路径)放入 artifact。如果运行时无法执行操作,则说明未观察到行为。
  3. 启动后台评估,使被拒绝的判定可以继续进入配置的 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 源码可见性的工作目录;只要知道绝对项目根目录,就应传入该目录。
  4. 观察任务:启动结果会在 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。
  5. 呈现各阶段结果、最终批准决定;如果被拒绝,还要说明原因并提供建议的修复方案。根据结果选择下一步操作:
    • 已批准:接受,或使用 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 个选项。

评论

支持 Markdown