名称: 编排模式 描述: 用于长期运行任务的代理编排模式。实现证据交付和西蒙·威利森的代理循环。适用于管理多步骤工作、协调子代理或编排PR工作流。
编排模式技能
目的
编撰基于证据的交付和迭代代理循环,用于编排复杂、长期运行的任务。这些模式确保可验证的进展和智能升级。
适用场景
在以下情况下调用此技能:
- 编排多步骤实施任务
- 跨多个子代理管理工作
- 运行需要检查点的长期会话
- 准备PR合并(强制QAS门控)
- 协调团队交接
西蒙·威利森的代理循环
核心哲学: “迭代直到成功或阻塞,然后升级。”
┌─────────────────────────────────────────────────────────┐
│ 代理循环(针对每个任务) │
├─────────────────────────────────────────────────────────┤
│ │
│ 1. 目标定义 │
│ └─ 清晰的验收标准(来自BSA/工单) │
│ │
│ 2. 模式发现 │
│ └─ 搜索代码库、文档、先前会话 │
│ └─ 使用:模式发现技能(自动调用) │
│ └─ 或:使用/search-pattern进行显式代码搜索 │
│ │
│ 3. 迭代执行循环: │
│ ┌─────────────────────────────────────────────┐ │
│ │ 实施方法 │ │
│ │ ↓ │ │
│ │ 运行验证(yarn ci:validate) │ │
│ │ ↓ │ │
│ │ 如果通过 → 继续到证据 │ │
│ │ 如果失败 → 分析错误、调整、重复 │ │
│ │ 如果阻塞 → 升级到TDM并附上上下文 │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ 4. 证据附加 │
│ └─ 将证明附加到Linear(见下方模板) │
│ │
│ 5. QAS门控(合并前强制) │
│ └─ 调用QAS子代理进行独立审查 │
│ │
└─────────────────────────────────────────────────────────┘
基于证据的交付
核心原则: “所有工作需要可验证的证据 - 不’相信我,它有效’”
证据类型
| 类型 | 证明内容 | 示例 |
|---|---|---|
| 测试结果 | 代码按预期工作 | yarn ci:validate 输出 |
| 截图 | UI变更正确 | 前后对比图 |
| 命令输出 | 操作完成 | 构建日志、迁移日志 |
| QAS报告 | 独立验证 | QA验证标记文档 |
| 会话ID | 完整审计跟踪可用 | Claude代码会话引用 |
阶段证据要求
| 阶段 | 所需证据 | Linear模板 |
|---|---|---|
| 开发 | 测试结果、命令输出 | 开发证据模板 |
| 暂存 | UAT验证或N/A + 原因 | 暂存模板 |
| 完成 | QAS报告、合并确认 | 完成证据模板 |
QAS预合并门控
强制: 合并任何PR前,调用QAS进行独立审查。
QAS门控重要性
- 职责分离: QAS验证但不编写产品代码
- 独立验证: 捕获实施者遗漏的内容
- 偏见预防: 新视角审查提交消息、模式
- Linear中的证据: QAS发布最终证据 + 裁决到Linear(记录系统)
QAS调用模式
# 实施完成后,合并前:
工具任务: QAS子代理
提示: "审查PR #XXX,用于{{TICKET_PREFIX}}-YYY。验证:
- 提交消息格式(主题行中的工单)
- 代码模式(RLS、命名、结构)
- CI状态(所有检查通过)
- Linear中的证据附加
生成验证报告到docs/agent-outputs/qa-validations/"
QAS输出位置
所有QAS报告放到:docs/agent-outputs/qa-validations/{{TICKET_PREFIX}}-{number}-qa-validation.md
升级模式
何时升级
| 条件 | 升级到 | 包含内容 |
|---|---|---|
| 阻塞超过4小时 | TDM | 完整上下文、尝试记录 |
| 架构模糊性 | 架构师 | 选项、权衡 |
| 跨团队依赖 | TDM | 哪些团队、阻塞内容 |
| 安全问题 | SecEng | 具体风险、证据 |
升级模板
**需要升级**
**阻塞于**: [具体阻塞点]
**已尝试**:
1. [尝试内容]
2. [尝试内容]
**上下文**:
- 工单: {{TICKET_PREFIX}}-XXX
- 会话ID: [如可用]
- 阻塞时间: X小时
**请求**: [具体需求 - 需要什么?]
长期运行任务检查点
对于跨多个工具调用或会话的任务:
检查点模式
每10-15个工具调用:
1. 更新待办列表,记录当前进展
2. 如果接近上下文限制,总结状态
3. 如果需要交接,提供继续上下文
在会话边界:
1. 总结已完成工作
2. 列出剩余项目
3. 记录任何阻塞
4. 将证据附加到Linear
状态保存
**会话检查点**
**已完成**:
- [x] 任务1
- [x] 任务2
**进行中**:
- [ ] 任务3(在步骤X)
**剩余**:
- [ ] 任务4
- [ ] 任务5
**阻塞**: [如有]
**下一步行动**: [具体下一步]
编排工作流示例
# 功能实施的完整工作流:
1. /start-work {{TICKET_PREFIX}}-XXX
└─ 同步到开发,创建分支,设置上下文
2. 模式发现(技能自动调用或使用/search-pattern)
└─ 实施前查找相关模式
3. [使用代理循环实施]
├─ 实施
├─ 验证(yarn ci:validate)
├─ 根据需要调整
└─ 重复直到通过
4. /pre-pr
└─ 完整验证检查清单
5. 创建带有证据的PR
6. [QAS门控 - 强制]
└─ 调用QAS子代理进行审查
└─ 修复任何阻塞问题
└─ 提交QAS报告
7. 合并(仅QAS批准后)
8. /end-work
└─ 更新Linear,清理
权威参考
- {{PROJECT_REPO}}: 核心代理原则
- AGENT_WORKFLOW_SOP.md: 完整代理工作流文档
- CONTRIBUTING.md: 工作流要求
- linear-sop技能: Linear证据模板
需避免的反模式
| 反模式 | 为何不好 | 应做事项 |
|---|---|---|
| 跳过QAS审查 | 错过提交消息问题 | 合并前始终调用QAS |
| Linear中无证据 | 无审计跟踪 | 每个阶段附加证据 |
| 忽略CI失败 | 错误代码进入开发 | 在代理循环中修复,不跳过 |
| 无检查强制推送 | 可能丢失队友更改 | 使用–force-with-lease |
| 阻塞时继续 | 浪费时间,无进展 | 带上下文升级 |