平行开发周期技能Skill parallel-dev-cycle

这个技能是一个多代理并行开发周期框架,用于自动化软件项目开发流程。它通过四个专门的工作代理(需求分析、探索规划、代码开发和验证)并行执行任务,内联编排管理开发阶段。支持迭代循环、Markdown文档维护和自动归档,旨在提高开发效率和质量。关键词包括:多代理、并行开发、需求分析、代码探索、DevOps、自动化、软件开发、迭代、项目管理。

DevOps 0 次安装 0 次浏览 更新于 3/16/2026

name: parallel-dev-cycle description: 使用需求分析、探索规划、代码开发和验证的多代理并行开发周期。编排内联在主流程中运行(无单独编排器代理)。支持带Markdown进度文档的持续迭代。触发条件为"parallel-dev-cycle"。 allowed-tools: spawn_agent, wait, send_input, close_agent, AskUserQuestion, Read, Write, Edit, Bash, Glob, Grep

平行开发周期

使用Codex子代理模式的多代理并行开发周期,包含四个专门工作代理:

  1. 需求分析与扩展 (RA) - 需求分析和自我增强
  2. 探索与规划 (EP) - 代码库探索和实现规划
  3. 代码开发 (CD) - 带调试策略支持的代码开发
  4. 验证与归档摘要 (VAS) - 验证和归档摘要

编排逻辑(阶段管理、状态更新、反馈协调)内联在主流程中运行 — 不产生单独编排器代理。只分配4个工作代理。

每个代理维护一个主文档如requirements.md、plan.json、implementation.md),每次迭代完全重写,以及辅助日志(changes.log、debug-log.ndjson),它们是仅追加的。

架构概述

┌─────────────────────────────────────────────────────────────┐
│                    用户输入(任务)                         │
└────────────────────────────┬────────────────────────────────┘
                             │
                             v
              ┌──────────────────────────────┐
              │  主流程(内联编排)           │
              │  阶段1 → 2 → 3 → 4              │
              └──────────────────────────────┘
                             │
        ┌────────────────────┼────────────────────┐
        │                    │                    │
        v                    v                    v
    ┌────────┐         ┌────────┐         ┌────────┐
    │  RA    │         │  EP    │         │  CD    │
    │代理    │         │代理    │         │代理    │
    └────────┘         └────────┘         └────────┘
        │                    │                    │
        └────────────────────┼────────────────────┘
                             │
                             v
                         ┌────────┐
                         │  VAS   │
                         │ 代理   │
                         └────────┘
                             │
                             v
              ┌──────────────────────────────┐
              │    摘要报告                  │
              │  和Markdown文档             │
              └──────────────────────────────┘

关键设计原则

  1. 主文档 + 辅助日志:每个代理维护一个主文档(每次迭代重写)和辅助日志(仅追加)
  2. 基于版本的重写:每次迭代完全重写主文档;日志仅追加
  3. 自动归档:旧主文档版本自动归档到history/目录
  4. 完整审计追踪:Changes.log (NDJSON) 保存所有变更历史
  5. 平行协调:同时启动四个代理;通过共享状态和内联主流程协调
  6. 文件引用:使用短文件路径而不是内容传递
  7. 自我增强:RA代理基于上下文主动扩展需求
  8. 共享发现板:所有代理通过discoveries.ndjson共享探索发现 — 启动时读取,发现时写入,消除冗余代码库探索

参数

参数 必需 描述
TASK TASK或–cycle-id之一 任务描述(用于新周期,与–cycle-id互斥)
–cycle-id TASK或–cycle-id之一 继续现有周期ID(来自API或先前会话)
–extend 扩展描述(仅与–cycle-id有效)
–auto 自动模式(顺序运行所有阶段,无需用户确认)
–parallel 并行代理数量(默认:4,最大:4)

自动模式

当使用--auto时:顺序运行所有阶段,无需用户确认迭代。对所有决策使用推荐默认值。自动继续迭代循环,直到测试通过或达到最大迭代次数。

预备包集成

prep-package.json存在于{projectRoot}/.workflow/.cycle/prep-package.json时,阶段1使用它以:

  • 使用精炼的任务描述代替原始TASK
  • 应用自动迭代配置(收敛标准、阶段门控)
  • 注入每迭代代理焦点指令(0→1 vs 1→100)

预备包由交互式提示/prompts:prep-cycle生成。参见phases/00-prep-checklist.md获取模式。

执行流程

输入解析:
   └─ 解析参数(TASK | --cycle-id + --extend)
   └─ 转换为结构化上下文(cycleId, state, progressDir)

阶段1:会话初始化
   └─ 参考:phases/01-session-init.md
      ├─ 创建新周期或恢复现有周期
      ├─ 初始化状态文件和目录结构
      └─ 输出:cycleId, state, progressDir

阶段2:代理执行(并行)
   └─ 参考:phases/02-agent-execution.md
      ├─ 附加任务:生成RA → 生成EP → 生成CD → 生成VAS → 等待所有
      ├─ 并行生成RA、EP、CD、VAS代理
      ├─ 等待所有代理,含超时处理
      └─ 输出:agentOutputs(4个代理结果)

阶段3:结果聚合与迭代
   └─ 参考:phases/03-result-aggregation.md
      ├─ 从每个代理解析PHASE_RESULT
      ├─ 检测问题(测试失败、阻塞)
      ├─ 决策:发现问题且迭代 < 最大迭代?
      │   ├─ 是 → 通过send_input发送反馈,循环回阶段2
      │   └─ 否 → 继续到阶段4
      └─ 输出:parsedResults, iteration status

阶段4:完成与摘要
   └─ 参考:phases/04-completion-summary.md
      ├─ 生成统一摘要报告
      ├─ 更新最终状态
      ├─ 关闭所有代理
      └─ 输出:最终周期报告,含继续说明

阶段参考文档(阶段执行时按需读取):

阶段 文档 目的
1 phases/01-session-init.md 会话创建/恢复和状态初始化
2 phases/02-agent-execution.md 并行代理生成和执行
3 phases/03-result-aggregation.md 结果解析、反馈生成、迭代处理
4 phases/04-completion-summary.md 最终摘要生成和清理

数据流

用户输入(TASK | --cycle-id + --extend)
    ↓
[解析参数]
    ↓ cycleId, state, progressDir

阶段1:会话初始化
    ↓ cycleId, state, progressDir(初始化/恢复)

阶段2:代理执行
    ├─ 所有代理启动时读取coordination/discoveries.ndjson
    ├─ 每个代理探索 → 写入新发现到发现板
    ├─ 后续完成代理受益于先前代理的发现
    ↓ agentOutputs {ra, ep, cd, vas} + 共享discoveries.ndjson

阶段3:结果聚合
    ↓ parsedResults, hasIssues, 迭代计数
    ↓ [如果发现问题且迭代 < 最大,循环回阶段2]
    ↓(discoveries.ndjson跨迭代传递)

阶段4:完成与摘要
    ↓ finalState, summaryReport

返回:cycle_id, iterations, final_state

会话结构

{projectRoot}/.workflow/.cycle/
├── {cycleId}.json                                 # 主状态文件
├── {cycleId}.progress/
    ├── ra/
    │   ├── requirements.md                        # 当前版本(完全重写)
    │   ├── changes.log                            # NDJSON完整历史(仅追加)
    │   └── history/                               # 归档快照
    ├── ep/
    │   ├── exploration.md                         # 代码库探索报告
    │   ├── architecture.md                        # 架构设计
    │   ├── plan.json                              # 结构化任务列表(当前版本)
    │   ├── changes.log                            # NDJSON完整历史
    │   └── history/
    ├── cd/
    │   ├── implementation.md                      # 当前版本
    │   ├── debug-log.ndjson                       # 调试假设追踪
    │   ├── changes.log                            # NDJSON完整历史
    │   └── history/
    ├── vas/
    │   ├── summary.md                             # 当前版本
    │   ├── changes.log                            # NDJSON完整历史
    │   └── history/
    └── coordination/
        ├── discoveries.ndjson                     # 共享发现板(所有代理追加)
        ├── timeline.md                            # 执行时间线
        └── decisions.log                          # 决策日志

状态管理

主状态文件:{projectRoot}/.workflow/.cycle/{cycleId}.json

{
  "cycle_id": "cycle-v1-20260122T100000-abc123",
  "title": "任务标题",
  "description": "完整任务描述",
  "status": "created | running | paused | completed | failed",
  "created_at": "ISO8601", "updated_at": "ISO8601",
  "max_iterations": 5, "current_iteration": 0,
  "agents": {
    "ra":  { "status": "idle | running | completed | failed", "output_files": [] },
    "ep":  { "status": "idle", "output_files": [] },
    "cd":  { "status": "idle", "output_files": [] },
    "vas": { "status": "idle", "output_files": [] }
  },
  "current_phase": "init | ra | ep | cd | vas | aggregation | complete",
  "completed_phases": [],
  "requirements": null, "plan": null, "changes": [], "test_results": null,
  "coordination": { "feedback_log": [], "blockers": [] }
}

恢复:如果状态损坏,从.progress/Markdown文件和changes.log重建。

TodoWrite模式

阶段级追踪(附加任务)

[
  {"content": "阶段1:会话初始化", "status": "completed"},
  {"content": "阶段2:代理执行", "status": "in_progress"},
  {"content": "  → 生成RA代理", "status": "completed"},
  {"content": "  → 生成EP代理", "status": "completed"},
  {"content": "  → 生成CD代理", "status": "in_progress"},
  {"content": "  → 生成VAS代理", "status": "pending"},
  {"content": "阶段3:结果聚合", "status": "pending"},
  {"content": "阶段4:完成与摘要", "status": "pending"}
]

阶段级追踪(折叠)

[
  {"content": "阶段1:会话初始化", "status": "completed"},
  {"content": "阶段2:代理执行(4个代理完成)", "status": "completed"},
  {"content": "阶段3:结果聚合", "status": "in_progress"},
  {"content": "阶段4:完成与摘要", "status": "pending"}
]

迭代循环追踪

[
  {"content": "阶段1:会话初始化", "status": "completed"},
  {"content": "迭代1:代理执行 + 聚合", "status": "completed"},
  {"content": "迭代2:反馈 → 重新执行 → 聚合", "status": "in_progress"},
  {"content": "阶段4:完成与摘要", "status": "pending"}
]

版本控制

  • 1.0.0:初始周期 → 1.x.0:每次迭代(次要版本提升)
  • 每次迭代:归档旧版 → 完全重写 → 追加changes.log
归档:复制requirements.md → history/requirements-v1.0.0.md
重写:用v1.1.0覆盖requirements.md(全新内容)
追加:  changes.log ← {"timestamp","version":"1.1.0","action":"update","description":"..."}
代理输出 重写(每次迭代) 仅追加
RA requirements.md changes.log
EP exploration.md, architecture.md, plan.json changes.log
CD implementation.md, issues.md changes.log, debug-log.ndjson
VAS summary.md, test-results.json changes.log

协调协议

执行顺序:RA → EP → CD → VAS(依赖链,所有并行生成但依赖阻塞)

共享发现板

所有代理共享实时发现板在coordination/discoveries.ndjson。每个代理启动时读取并在工作中追加发现。这消除冗余代码库探索。

生命周期

  • 由第一个写入发现的代理创建(文件可能初始不存在)
  • 跨迭代传递 — 永不清除或重新创建
  • 代理使用Bash echo '...' >> discoveries.ndjson 追加条目

格式:NDJSON,每行是自包含JSON,必需顶级字段tsagenttypedata

{"ts":"2026-01-22T10:00:00+08:00","agent":"ra","type":"tech_stack","data":{"language":"TypeScript","framework":"Express","test":"Jest","build":"tsup"}}

发现类型

type 去重键 写入者 读取者 必需 data 字段
tech_stack singleton RA EP, CD, VAS language, framework, test, build
project_config data.path RA EP, CD path, key_deps[], scripts{}
existing_feature data.name RA, EP CD name, files[], summary
architecture singleton EP CD, VAS pattern, layers[], entry
code_pattern data.name EP, CD CD, VAS name, description, example_file
integration_point data.file EP CD file, description, exports[]
similar_impl data.feature EP CD feature, files[], relevance
code_convention singleton CD VAS naming, imports, formatting
utility data.name CD VAS name, file, usage
test_command singleton CD, VAS VAS, CD unit, integration(opt), coverage(opt)
test_baseline singleton VAS CD total, passing, coverage_pct, framework, config
test_pattern singleton VAS CD style, naming, fixtures
blocker data.issue any all issue, severity, impact

协议规则

  1. 探索前读取发现板 → 跳过覆盖区域(如果文件不存在,跳过)
  2. 通过Bash echo >> 立即写入发现 → 不批处理
  3. 去重 — 检查现有条目;如果相同type + 去重键值已存在,跳过
  4. 仅追加 — 永不修改或删除现有行

代理 → 主流程通信

PHASE_RESULT:
- phase: ra | ep | cd | vas
- status: success | failed | partial
- files_written: [列表]
- summary: 一行摘要
- issues: []

主流程 → 代理通信

通过send_input反馈(文件引用 + 问题摘要,非完整内容):

## 来自 [来源] 的反馈
[文件:行引用的问题摘要]
## 参考
- 文件:.progress/vas/test-results.json (v1.0.0)
## 必需行动
1. [具体修复]

规则:只有主流程写入状态文件。代理读取状态,只写入自己的.progress/{agent}/目录。

核心规则

  1. 立即开始:第一动作是TodoWrite初始化,然后执行阶段1
  2. 渐进阶段加载:仅当阶段即将执行时读取阶段文档
  3. 解析所有输出:从每个代理提取PHASE_RESULT数据供下一阶段使用
  4. 自动继续:每个阶段后,自动执行下一待定阶段
  5. 追踪进度:使用附加/折叠模式动态更新TodoWrite
  6. 单写入者:只有主流程写入主状态文件;代理通过PHASE_RESULT报告
  7. 文件引用:在代理间传递文件路径,非内容
  8. 不要停止:连续执行,直到所有阶段完成或达到最大迭代

错误处理

错误类型 恢复
代理超时 send_input请求收敛,然后重试
状态损坏 从进度Markdown文件和changes.log重建
代理失败 用先前上下文重新生成代理
冲突结果 主流程发送协调请求
缺失文件 RA/EP代理识别并请求澄清
最大迭代达到 生成摘要,记录剩余问题

协调者清单(主流程)

每个阶段前

  • [ ] 读取阶段参考文档
  • [ ] 检查当前状态的依赖
  • [ ] 更新TodoWrite带阶段任务

每个阶段后

  • [ ] 解析代理输出(PHASE_RESULT)
  • [ ] 更新主状态文件
  • [ ] 折叠TodoWrite子任务
  • [ ] 决定下一步行动(继续 / 迭代 / 完成)

参考文档

文档 目的
roles/ 代理角色定义(RA, EP, CD, VAS)

使用

# 开始新周期
/parallel-dev-cycle TASK="实施实时通知"

# 继续周期
/parallel-dev-cycle --cycle-id=cycle-v1-20260122-abc123

# 带扩展的迭代
/parallel-dev-cycle --cycle-id=cycle-v1-20260122-abc123 --extend="也添加邮件通知"

# 自动模式
/parallel-dev-cycle --auto TASK="添加OAuth认证"