---
name: a2a-task-decompose
description: |
  A2A 任务分解与分配指南。**仅在飞书群聊中使用，私聊时不适用。**

  **当以下情况时使用此 Skill**：
  (1) 用户提出复杂需求，需要多个 bot 协作完成
  (2) 需要将大任务拆解成子任务并分配给不同 bot
  (3) 用户说"群内协作"、"分配任务"等关键字
  (4) 需要规划多 bot 协作的执行顺序
alwaysActive: true
---

# A2A 任务分解与分配

## 核心原则：任务闭环

**所有通过 @ 分配出去的任务，子 Agent 完成后必须 @ 回你汇报结果。** 这是协作能运转的基础——你需要知道每个子任务的进展和结果，才能汇总回复用户。

## 分解流程

1. **理解需求** — 明确用户的最终目标和交付物
2. **识别子任务** — 按职能拆分，每个子任务对应一个 bot 的能力
3. **确定依赖** — 哪些可以并行，哪些必须串行
4. **逐个分配** — 每次回复只 @ 1 个 bot，串行发起
5. **等待回传** — 每个子 Agent 完成后会 @ 回你，收到后再进行下一步
6. **汇总交付** — 所有子任务完成后，整理结果回复用户

## 依赖关系模式

### 串行链（A → B → C）

适用于：后一步依赖前一步的输出

```
第 1 轮：@ 产品 → "请整理需求文档"
         等待产品 @ 回你，带上需求文档
第 2 轮：@ 后端 → "根据以下需求设计接口：{产品的输出}"
         等待后端 @ 回你，带上接口设计
第 3 轮：@ 前端 → "根据以下接口对接前端：{后端的输出}"
         等待前端 @ 回你，带上实现结果
第 4 轮：汇总所有结果，回复用户
```

### 并行扇出（A → B, A → C）

适用于：多个子任务互不依赖

```
第 1 轮：@ 后端 → "请设计用户模块的数据库方案"
         等待后端 @ 回你
第 2 轮：@ 前端 → "请设计用户模块的页面原型"
         等待前端 @ 回你
第 3 轮：汇总两方结果，回复用户
```

注意：因为每次只能 @ 1 个 bot，"并行"实际上是依次发起，但各子任务之间不互相依赖。

## 任务分配消息模板

```
<at user_id="ou_xxxx">bot名字</at>

**任务**：{一句话描述任务}

**背景**：{必要的上下文信息}

**预期输出**：{明确的交付物格式}

**注意事项**：{约束条件或特殊要求}

完成后请 @ 回我汇报结果。
```

### 示例

```
<at user_id="ou_xxxx">mac-后端</at>

**任务**：设计用户注册接口

**背景**：我们在做一个新的用户系统，需要支持手机号和邮箱两种注册方式

**预期输出**：接口文档，包含 URL、请求参数、响应格式、错误码

**注意事项**：需要考虑防刷和频率限制

完成后请 @ 回我汇报结果。
```

## 选择合适的 bot

根据可用机器人列表中的描述匹配：

| 任务类型 | 适合分配给 |
|---------|-----------|
| 需求分析、PRD 编写 | 产品类 bot |
| 接口设计、数据库方案 | 后端类 bot |
| 页面实现、交互设计 | 前端类 bot |
| 测试用例、质量检查 | 测试类 bot |
| 部署、CI/CD、监控 | 运维类 bot |

## 注意事项

- 分配任务前先确认该 bot 在可用列表中
- 任务描述要具体，避免模糊指令如"帮我看看"
- 如果子任务的输出是下一个 bot 的输入，在分配时附上前一步的结果
- 预估每个子任务的复杂度，复杂任务给充分的上下文
- **分配消息末尾加上"完成后请 @ 回我汇报结果"**，确保子 Agent 知道要回传
- **持续运行的服务**：如果子任务产出是需要持续运行的服务（API server、dev server 等），必须在分配时明确要求对方用 `pm2` 或 `nohup` 启动，确保服务在回复后仍然存活。回传结果时应附上服务地址和停止命令
