بنقرة واحدة
workflow-runner
十步循环轻量编排器,协调 Phase Skills 执行,支持灵活组合。 使用场景:"执行 quick-fix 工作流"、"运行 [Phase B, Phase C]"、自定义 Phase 组合
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
十步循环轻量编排器,协调 Phase Skills 执行,支持灵活组合。 使用场景:"执行 quick-fix 工作流"、"运行 [Phase B, Phase C]"、自定义 Phase 组合
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Aria 项目级配置加载器(内部基础设施)。 查找、解析、验证 .aria/config.json 并合并默认值。 此 Skill 不直接触发,由其他 Skills 引用以读取项目配置。
项目状态扫描与智能工作流推荐,十步循环的统一入口。 收集项目状态、分析变更、推荐最佳工作流、引导用户确认执行。 使用场景:"查看项目当前状态"、"我要提交代码"、"开发新功能"
会话收尾 —— 在任意对话(含未走完十步循环的探索/调试/讨论 session)把"未交接成果" 固化为 handoff。**与十步循环正交平级的会话仪式**(非周期收尾): AI 先内省本对话出 未完成线程 + 待固化经验, 再用机械 autofill 交叉核验补漏, 写 docs/handoff/。leaf — 终结于写交接, 不拖入十步循环。 使用场景: "对话收尾" / "执行对话收尾" / "会话收尾" / "session closeout" / "收尾这次对话" / "写交接" / "写 handoff" / "收工" / "结束本次对话" / context 快满时主动收尾。 不适用 (用 phase-d-closer): "Phase D" / "周期收尾" / "归档 Spec" / "更新 cycle 进度" —— 那是开发周期收尾, 不是会话收尾。
Git 多远程 parity 检测与 push 验证的共享基础设施。 内部工具, 仅供其他 skills 引用。提供标准化 Bash/Python 执行脚本段 + 输出 JSON schema 契约。
任务到 Agent 的智能路由器,根据任务类型、文件路径自动选择最合适的 Agent。 使用场景:subagent-driver 需要为任务选择 Agent、不确定应该使用哪个 Agent
向 Aria 维护团队报告 Bug 或提交功能建议。自动收集环境信息, 自动路由到 Forgejo(内部用户)或 GitHub(外部用户)。 使用场景:"报告 bug"、"report an issue"、"提交功能建议"、 "aria 有个问题想反馈"、"feature request"、"提 issue"、 "反馈问题"、"report bug to aria"
| name | workflow-runner |
| description | 十步循环轻量编排器,协调 Phase Skills 执行,支持灵活组合。 使用场景:"执行 quick-fix 工作流"、"运行 [Phase B, Phase C]"、自定义 Phase 组合 |
| argument-hint | [workflow-name] |
| disable-model-invocation | true |
| user-invocable | true |
| allowed-tools | Task, Read, Write, Glob, Grep |
版本: 2.3.0 | 架构: Phase-Based 更新: 2026-05-10 —
wait_recoverable错误类型 +gate_stateworkflow-state 扩展 (#60 D2) 类型: 编排器 (调用 Phase Skills) 更新: 2026-02-05 - 添加 A.0.5 头脑风暴步骤集成
使用场景:
不使用场景:
用户任务
│
├─ 需要状态感知/推荐? ──Yes──▶ state-scanner ──▶ workflow-runner
│
└─ 已知要执行的工作流? ──Yes──▶ workflow-runner (直接)
执行前读取 .aria/config.json,缺失则使用默认值。参见 config-loader。
| 字段 | 默认值 | 说明 |
|---|---|---|
workflow.auto_proceed | false | Phase 间自动推进 (需用户在 config 中显式启用) |
| 特性 | v1.0 | v2.0 |
|---|---|---|
| 执行单元 | 单步骤 (A.1, B.2...) | Phase (A, B, C, D) |
| 跳过逻辑 | 集中在 workflow-runner | 委托给各 Phase Skill |
| 上下文 | 手动传递 | 自动传递 context_for_next |
| 组合方式 | 步骤列表 | Phase 组合 |
| 复杂度 | 高 (管理10步) | 低 (管理4个Phase) |
workflow-runner (编排器)
│
├──▶ A.0.5 brainstorm (可选) ← 新增
│ └── problem/requirements/technical 模式
│
├──▶ phase-a-planner (A.1-A.3)
│ └── spec-drafter (内置 brainstorm), task-planner
│
├──▶ phase-b-developer (B.1-B.3)
│ └── branch-manager, test-verifier, arch-update
│
├──▶ phase-c-integrator (C.1-C.2)
│ └── commit-msg-generator, branch-manager
│
└──▶ phase-d-closer (D.1-D.2)
└── progress-updater, openspec:archive
| 工作流 | Phases | 适用场景 |
|---|---|---|
quick-fix | B → C | 简单 Bug 修复 |
feature-dev | A → B → C | 功能开发 |
doc-update | B.3 → C | 文档更新 |
full-cycle | A → B → C → D | 完整开发周期 |
commit-only | C.1 | 仅提交 |
详见 WORKFLOWS.md
# 预置工作流
workflow: quick-fix
# 或 Phase 组合
phases: [B, C]
# 或自定义步骤
steps: [B.2, C.1]
# 可选配置
config:
dry_run: false
context:
module: "mobile"
spec_id: "add-auth-feature"
1. 解析工作流:
- 预置模板 → 转换为 Phase 列表
- Phase 组合 → 直接使用
- 步骤列表 → 映射到 Phase
2. 上下文准备:
- 接收 state-scanner 传递的上下文
- 或读取当前项目状态
3. A.0.5 头脑风暴检查 (v2.2.0 新增):
- 检测工作流包含 Phase A
- 检查 state-scanner 推荐中是否包含 brainstorm 模式
- 如果推荐 → 在 Phase A 前执行 brainstorm
- 传递决策记录到 spec-drafter
4. Pre-Hook 检查 (v2.1.0):
- 检测是否包含 Phase B
- 如果包含 → 启用 TDD 主会话 Hook (方案 B)
- 记录 tdd_session_id
5. Phase 顺序执行:
- 调用对应 Phase Skill
- 传递 context_for_next 到下一 Phase
- 收集执行结果
- 每个 Phase 完成后更新 workflow state (见 Workflow State Persistence)
- 如启用 auto-proceed 模式,Phase 完成后自动推进到下一 Phase (Gate 暂停除外)。详见 [references/auto-proceed.md](./references/auto-proceed.md)
6. Post-Hook 清理 (v2.1.0):
- 检测 Phase B 完成
- 可选: 保持或关闭 TDD Hook
7. 结果汇总:
- 生成执行报告
- 返回最终状态
Phase A 输出:
context_for_next:
spec_id: "add-auth-feature"
task_list: [TASK-001, ...]
assigned_agents: {...}
│
▼
Phase B 接收 + 输出:
context_for_next:
branch_name: "feature/add-auth"
test_results: { passed: true, coverage: 87.5 }
│
▼
Phase C 接收 + 输出:
context_for_next:
commit_sha: "abc1234"
pr_url: "https://..."
│
▼
Phase D 接收:
# 使用所有上下文完成收尾
context_merge:
strategy: deep_merge
priority: later_wins # 后续 Phase 输出覆盖前面的
工作流执行期间,通过 .aria/workflow-state.json 跟踪状态,支持中断恢复和进度可视化。
Schema 详见 references/workflow-state-schema.md
工作流启动时,创建初始状态文件:
.aria/ 目录存在 (mkdir -p .aria)session_id (格式: sess-YYYYMMDD-XXXXXX,X 为随机十六进制)session.workflow_name: 当前工作流名称session.phases: 计划执行的 Phase 列表session.status: "running"git_context.branch, git_context.start_commit: 当前分支和 HEAD SHA.aria/workflow-state.json.tmp,再 rename 覆盖正式文件每个 Phase 完成后立即更新:
execution.current_phase / current_step: 推进到下一 Phaseexecution.phase_results.<phase>: 记录该 Phase 输出 (status, context_for_next)session.last_active_at: 更新为当前时间戳integrity.state_hash: 重新计算 (SHA-256 of content without integrity block)通过质量门时记录:
gates.gate1_spec_approved: truegates.gate2_merge_main: trueGate 强制执行逻辑、手动/自动模式切换、失败恢复详见 references/gate-enforcement.md
新增于 v2.3.0 — 支持
wait_recoverable错误类型 (#60 phase-c-integrator C.2.4 pre-merge gate)。
gate_state 顶级 block 跟踪当前活跃的 pre-action gate (currently only pre_merge,但 schema 通用化为未来 pre_release / pre_deploy 预留扩展):
{
"gate_state": {
"name": "pre_merge",
"status": "waiting | green | fail",
"started_at": "ISO 8601",
"retry_count": 0,
"next_check_at": "ISO 8601",
"in_flight_runs": [
{"run_id": 3161, "branch": "main", "started_at": "ISO 8601", "elapsed_seconds": 459}
],
"primitive_used": "aether-ci-cli",
"raw_message": ""
}
}
完整 schema 见 references/workflow-state-schema.md §1.1.gate_state。Schema migration format_version 1.0 → 1.1 见 §8.3 默认 gate_state: null。
Defensive access: 所有读 gate_state 的代码必须用 state.get("gate_state") or {} 而非 state["gate_state"],防 v1.0 state 文件 KeyError。
工作流结束时的清理策略:
| 场景 | 动作 |
|---|---|
| 正常完成 | 删除 .aria/workflow-state.json |
| 用户放弃 | 删除 .aria/workflow-state.json |
| 执行失败 | 保留文件,设置 session.status: "failed" (供恢复使用) |
on_phase_error:
action: stop # stop | continue | rollback
report: true
suggestion: "查看 Phase X 错误详情"
recovery:
Phase_B_failed:
- 保留已创建的分支
- 报告测试失败详情
- 建议: "修复测试后从 Phase B 重新开始"
Phase_C_failed:
- 回滚 git commit (如果已执行)
- 建议: "检查提交消息或 hook 错误"
wait_recoverable 错误类型 (v2.3.0+)新增于 v2.3.0 — 修复 Forgejo Issue #60 phase-c-integrator C.2.4 pre-merge gate。 "等待外部 CI 完成" 是协作正常态,不应当作 fatal error 处理。
触发场景:
verdict=wait (main 分支有 in-flight CI 或 PR CI pending)配置:
on_phase_error:
wait_recoverable:
triggered_by:
- source: "phase-c-integrator"
sub_step: "C.2.4"
verdict: "wait"
behavior:
- log: "main 分支有 in-flight CI,等待 X 完成"
- persist: workflow-state.json 写 gate_state block
- sleep: wait_check_intervals[retry_count] (默认指数退避)
- re-invoke: phase-c-integrator C.2.4 重新检查
Exit conditions (优先级 first-match-wins, R2 patch CR-4):
session.status: suspended,允许 resume) [最高]实施步骤:
当 phase-c-integrator C.2.4 返回 verdict=wait:
1. 读 .aria/config.json 加载 phase_c_integrator.pre_merge_gate.* 配置
2. 写入 workflow-state.json gate_state block (atomic write 协议见 schema §4)
- status: "waiting"
- started_at / retry_count / next_check_at / in_flight_runs[] 全部填充
3. 进入 polling loop:
a. 计算本轮 sleep 时长: wait_check_intervals[min(retry_count, len-1)]
b. polling sleep chunk 模式 (CR-5): sleep 拆分 5s 块
- 每块结束 check `.aria/.workflow-interrupt` flag file
- flag 存在 → 立即 break,转 suspended
c. sleep 结束 → 重新调 phase-c-integrator C.2.4 gate
d. 处理 verdict 按 exit conditions 优先级
4. 退出 polling 后:
- verdict=green → 调 branch-manager merge,清理 gate_state
- verdict=fail → workflow-state.session.status=failed,保留 gate_state 给 audit trail
- timeout → user prompt;continue → reset retry_count + 继续;abort → stop
- Ctrl-C → workflow-state.session.status=suspended,保留 gate_state 给 resume
CR-5 R2 patch — workflow-runner 现无 signal handler 设计,采用 polling sleep chunk 模式
Flag-file lifecycle (R2-CR-B inline patch):
.aria/.workflow-interrupt (open-O_CREAT-O_EXCL + tmp+rename)os.path.exists(.aria/.workflow-interrupt)Chunk 大小 trade-off: phase_c_integrator.pre_merge_gate.poll_chunk_seconds 默认 5s;过小耗 CPU,过大 Ctrl-C 响应慢。
CR-6 + BA-5 R2 patch — workflow 中断后 resume 时正确处理 gate_state
workflow-state.json 含 gate_state.status == waiting AND phase_results.C.2.action.pr_number != null (PR 已创建) 时:
rm -f .aria/.workflow-interrupt (R2-CR-B,resume 是新意图)next_check_at 持久化为 ISO 8601 wall clock (跨进程可读)time.monotonic() 防 DST/系统时钟漂移now >= next_check_at) → 立即重新调 C.2.4 gatenext_check_at 后再调green → 跳过 C.2 push/create-PR (已完成,PR_NUMBER 已持久化),直接调 branch-manager merge call (idempotent — 若 PR 已 merged 则 branch-manager 报告 success 不重复操作)wait → 增量更新 gate_state.retry_count + next_check_at,继续 pollingfail → workflow report 含 PR_NUMBER + 失败 verdict,转 stop执行报告示例:
╔══════════════════════════════════════════════════════════════╗
║ WORKFLOW EXECUTION REPORT ║
╚══════════════════════════════════════════════════════════════╝
Workflow: feature-dev
Duration: 2m 15s
Status: SUCCESS
───────────────────────────────────────────────────────────────
PHASE RESULTS:
Phase A (规划) - 45s
spec_id: add-auth-feature
tasks: 5
Phase B (开发) - 60s
branch: feature/add-auth
tests: 15/15 passed (87.5% coverage)
Phase C (集成) - 30s
commit: abc1234
pr: #123
───────────────────────────────────────────────────────────────
完整输出格式(含执行计划、使用示例等)详见 references/output-formats.md
Phase B 执行时应用 TDD pre-hook 策略,在工作流级别自动启用 TDD 双保险机制:
state-scanner
│
│ 收集状态 + 分析 + 推荐
│
▼
recommendation:
workflow: quick-fix
context:
phase_cycle: "Phase4-Cycle9"
module: "mobile"
changed_files: [...]
│
│ 用户确认
│
▼
workflow-runner
│
│ 执行工作流
│
▼
result
# state-scanner 传递
context:
phase_cycle: "Phase4-Cycle9"
module: "mobile"
changed_files: [...]
# workflow-runner 使用
→ 传递给 Phase A/B/C/D
→ 用于生成提交消息
→ 更新 UPM 进度
最后更新: 2026-03-16 Skill版本: 2.3.0