SuperAPI AI 工具集

relay

编程与开发

查看项目

更新于 10-16 02:18

技能介绍

用途

Relay 用于将 GitHub issue、sprint 条目、任务描述或自然语言交接内容,通过自主执行器派发来实现。它执行“计划 → 派发 → 评审”的完整循环,并区分两条交付路径:GitHub 交付在 ready_to_merge 处停止,除非用户明确要求合并;本地交付执行规范化恢复,并在终态 reviewed_result_ready 处停止。

主要能力

  • 源分类与重新锚定:在获取、forge 查询、worktree、run 目录或执行器生效之前,先对仓库进行分类。Relay 要求 Git,且不会替你运行 git init。
  • 预检:运行 route 阶段预检,执行只读源门禁,然后进行路由特定的在途检查(GitHub 上现有的重复 PR 防护,以及无远程的本地运行事实)。
  • 计划:始终构建 rubric,遵循 relay-plan 流程:读取任务、恢复 Done Criteria、构建 rubric、输出交接产物。
  • 派发:relay 负责生命周期编排,relay-dispatch 负责派发 CLI 语义。通过 --executor 和 --model 显式传入固定执行器或模型。
  • 恢复与推进:使用 relay-recover 进行规范化恢复,使用 relay-advance 作为重复 wait/recover 轮询的默认传送器。
  • 评审:强制步骤,不可跳过。在评审前验证,将每个声明的验证与保留的 worktree 进行核对。
  • 批量模式:当多个独立任务就绪时,准备 relay-fleet 批次,但保留 /relay 的 ready_to_merge 停止点,直到用户明确授权落地。

使用方式

输入包括:环境变量(可选 RELAY_SKILL_ROOT 默认为 skills;角色覆盖使用 RELAY_ORCHESTRATOR/RELAY_REVIEWER);文件(任务/issue 文本、可选 sprint 文件、/tmp/dispatch-<N>.md、/tmp/rubric-<N>.yaml);同级脚本(run-preflight.js、dispatch.js、review-runner.js)。

角色默认值:编排者、执行器、评审者默认均为 Codex,除非在派发时通过环境变量或参数覆盖。绑定不可变;review --reviewer 必须等于该绑定,且不是覆盖。

步骤 1:源与重新锚定。先运行 route 预检:

PREFLIGHT=$(node "${RELAY_SKILL_ROOT:-skills}/relay/scripts/run-preflight.js" \
  --stage route --repo . --issue-number "$ISSUE_NUMBER" --branch "$BRANCH" --json)

如果 source.route 为 local-reviewed-result,使用本地任务文本或用户描述,不运行 git fetch、gh issue view 或任何 PR 查询。如果 source.route 为 github,使用报告的 source.remote_name 进行现有的重新锚定获取,然后在需要 issue 文本时使用 gh issue view <N>。GitLab 和其他 forge 不受支持。

步骤 2:计划。始终构建 rubric,将派发提示和 rubric YAML 写入临时文件,如 /tmp/dispatch-<N>.md 和 /tmp/rubric-<N>.yaml。

步骤 3:派发。示例命令:

node "${RELAY_SKILL_ROOT:-skills}/relay-dispatch/scripts/dispatch.js" . \
  -b issue-<N> --prompt-file /tmp/dispatch-<N>.md --rubric-file /tmp/rubric-<N>.yaml \
  --done-criteria-file <done-criteria-path> --timeout 3600 --detach --json
# 要固定派发选择,追加:--executor <name> --model <provider/model>

--detach 返回 snake_case 启动回执,包含 status、run_id、run_dir、worktree、attempt_id、host_handle、dispatcher_pid 和 inspection。轮询只读检查:

node "${RELAY_SKILL_ROOT:-skills}/relay/scripts/relay-recover.js" inspect --repo . --run-id "$RUN_ID" --json
node "${RELAY_SKILL_ROOT:-skills}/relay/scripts/run-preflight.js" --stage review --repo . --run-id "$RUN_ID" --json

严格遵循 inspection.recommended_action:recover → 运行规范化 relay-recover recover;review → 进入步骤 4;redispatch → 使用不可变 run_id 调用 dispatch;wait → 继续轮询;operator_attention 或 none → 停止并解决阻塞。

步骤 4:评审(强制)。在调用 relay-review 之前,将每个声明的验证与保留的 worktree 进行核对并说明结果。仅在 inspection 建议 review 时调用:

node "${RELAY_SKILL_ROOT:-skills}/relay-review/scripts/review-runner.js" \
  --repo . --run-id "$RUN_ID" --json

步骤 5:完成所选路由。对于 source.route=github,LGTM 必须推导出 merge/ready_to_merge;在此停止,直到用户明确授权 relay-merge。对于 source.route=local-reviewed-result,LGTM 必须推导出 recover/reviewed_result_ready;运行该精确恢复操作,并仅在 inspection 报告终态 Reviewed Result 后停止。

适用场景

  • 将 GitHub issue 或 sprint 条目通过自主执行器派发实现。
  • 需要计划、派发、评审循环的开发工作流。
  • 支持 GitHub 路由和本地交付路由。
  • 批量处理多个独立任务(relay-fleet)。

限制

  • Relay 要求 Git,且不会替你运行 git init。
  • GitLab 和其他 forge 不受支持;需配置 GitHub、移除所有远程以进行本地交付,或使用直接委托。
  • GitHub 路由需要已认证的 GitHub 访问权限,以及所选执行器/评审者的常规环境 CLI 认证和网络可用性。
  • 评审步骤为强制,不可跳过。
  • 角色绑定不可变;review --reviewer 必须等于该绑定,且不是覆盖。
  • 关于收费、价格、平台支持范围等具体信息,资料中暂未提供。