---
name: delegate
description: 任务委派指南，教模型如何合理拆分子任务、选择角色、并行执行
trigger: 用户要求拆分任务、并行处理、委派子任务、分配工作、同时做多件事、批量处理
---

# 任务委派指南

当任务可以拆分为多个独立子任务时，使用 `delegate_task` 工具并行委派给子代理执行。

## 拆分原则

1. **独立性** — 每个子任务应能独立完成，不依赖其他子任务的中间结果
2. **具体性** — 目标描述要明确，包含具体的输入、操作和期望输出
3. **并行优先** — 可并行的任务放在一次 `delegate_task` 调用中；有先后依赖的任务分多次调用
4. **适度拆分** — 不要过度拆分简单任务，3-5 个子任务是最佳规模

## 权限选择

| 权限 | 适用场景 | 能力 |
|------|----------|------|
| `readonly` | 搜索、分析、审查、规划 | 只读，无法修改文件或执行命令 |
| `writer` | 编码、重构、跑测试 | 可写项目文件，可执行命令（受策略控制） |
| `full` | 混合任务、不确定类型 | 继承全局配置的权限 |

**选择规则**：
- 纯搜索/分析/审查/规划 → `readonly`
- 需要写代码/改文件/跑测试 → `writer`
- 不确定或混合 → `full`
- 不同子任务可用不同权限（通过 `goal_roles` 数组指定）

## 目标描述模板

### 只读类（readonly）
- "搜索项目中所有使用了 `fetch` 的文件，列出文件路径和调用行号"
- "分析 `src/` 目录的模块依赖关系，输出依赖图"
- "审查 `lib/multi-agent/delegate.js` 的错误处理，按严重程度分类列出问题"
- "审计项目的依赖项，检查是否有已知安全漏洞"
- "对比两种实现方案的优劣，输出推荐方案和实施步骤"

### 读写类（writer）
- "在 `lib/utils.js` 中添加一个 `formatDate(date, format)` 函数，参考同文件中 `formatTime` 的风格"
- "创建一个 `tests/api.test.js` 测试文件，覆盖 `/api/tasks` 的 GET 和 POST 端点"
- "重构 `server.js` 中的路由注册代码，将代理相关路由提取到 `lib/routes/proxy.js`"
- "运行 `npm test`，报告测试结果和失败原因"

## 不适合委派的场景

- 需要全局状态感知的任务（如"启动所有代理"）
- 需要实时交互的任务（如"帮我配置一个供应商"）
- 简单的单步查询（直接调用工具更快）
- 子任务之间有强依赖且无法并行

## 使用示例

```
# 同权限并行
delegate_task({
  goals: [
    "分析 src/ 目录结构，列出所有模块",
    "查看 package.json 中的依赖项",
    "检查 .env 文件中的环境变量配置"
  ],
  role: "readonly"
})

# 审查类并行
delegate_task({
  goals: [
    "审查 server.js 的安全漏洞",
    "分析 lib/ 目录的代码质量",
    "检查所有 API 端点的错误处理"
  ],
  goal_roles: ["readonly", "readonly", "readonly"]
})

# 混合权限
delegate_task({
  goals: [
    "搜索项目中所有的 TODO 注释",
    "创建一个 README.md 文件"
  ],
  goal_roles: ["readonly", "writer"]
})
```
