# Dingtalk Workflow Multi Agent Dev

> 多编程代理协同 — 支持竞赛模式、分工模式、流水线模式三种工作模式，通过钉钉追踪任务和结果

- Skill: `liangdabiao/dingtalk-workflow-multi-agent-dev` (Agent Skill)
- Install (CLI): `npx skillmds@latest add liangdabiao/dingtalk-workflow-multi-agent-dev`
- Raw SKILL.md: https://api.skillmd.com/api/skills/liangdabiao/dingtalk-workflow-multi-agent-dev/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: liangdabiao (https://skillmd.com/u/liangdabiao)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/liangdabiao/dingtalk-workflow-multi-agent-dev

---


# 多编程代理协同 (dingtalk-workflow-multi-agent-dev)

> 支持竞赛模式、分工模式、流水线模式三种工作模式，通过钉钉追踪任务和结果。
> 此 Skill 主要编排 Claude Code Agent Tool 的多代理能力，钉钉作为任务管理和通知层。

## 触发方式

```
"并行开发"  "多代理"  "竞赛模式"  "分工模式"  "流水线协作"  "代码对比"  "多Agent开发"
```

## 三种工作模式

| 模式 | 适用场景 | 代理数量 | 执行方式 | 类比 |
|------|---------|---------|---------|------|
| 竞赛 | 需要最优方案 | 2-3个 | 同一任务，各自完成，AI对比选优 | 奥运会 |
| 分工 | 多个独立任务 | 按任务数 | 不同任务，并行完成 | 车间流水线 |
| 流水线 | 复杂功能，需质量保障 | 2-3个 | 代码→审查→测试，顺序协作 | 代码审查链 |

## 数据初始化

首次使用时，自动创建 aitable 数据表：

```bash
# 创建 Base
dws aitable base create --name "多代理开发" --yes -f json
# 返回 baseId，记为 <mad-base-id>

# 创建 2 张表
dws aitable table create --base-id <mad-base-id> --name "开发任务" --yes -f json
# 返回 tableId，记为 <tasks-table-id>

dws aitable table create --base-id <mad-base-id> --name "竞赛记录" --yes -f json
# 返回 tableId，记为 <competition-table-id>

# 添加业务字段（表创建后自动带一个"标题"primaryDoc字段，需额外添加业务字段）
dws aitable field create --base-id <mad-base-id> --table-id <tasks-table-id> --fields '[{"fieldName":"任务描述","type":"text"},{"fieldName":"工作模式","type":"text"},{"fieldName":"分配代理","type":"text"},{"fieldName":"状态","type":"text"},{"fieldName":"结果摘要","type":"text"},{"fieldName":"推荐方案","type":"text"},{"fieldName":"耗时","type":"number"},{"fieldName":"创建时间","type":"date"},{"fieldName":"完成时间","type":"date"}]' --yes -f json

dws aitable field create --base-id <mad-base-id> --table-id <competition-table-id> --fields '[{"fieldName":"关联任务","type":"text"},{"fieldName":"代理名称","type":"text"},{"fieldName":"评分","type":"number"},{"fieldName":"优点","type":"text"},{"fieldName":"缺点","type":"text"},{"fieldName":"是否推荐","type":"text"},{"fieldName":"代码路径","type":"text"}]' --yes -f json
```

**表1: 开发任务 (dev_tasks)**

| 字段名 | 类型 | 说明 |
|--------|------|------|
| 任务描述 | 文本 | 任务详情 |
| 工作模式 | 文本 | 竞赛/分工/流水线 |
| 分配代理 | 文本 | Opus/Sonnet/Haiku（逗号分隔） |
| 状态 | 文本 | 待执行/进行中/已完成/失败 |
| 结果摘要 | 文本 | 输出概要 |
| 推荐方案 | 文本 | 竞赛模式下的推荐方案 |
| 耗时 | 数字 | 执行时间(秒) |
| 创建时间 | 日期 | 任务创建时间 |
| 完成时间 | 日期 | 任务完成时间 |

**表2: 竞赛记录 (competition_records)**

| 字段名 | 类型 | 说明 |
|--------|------|------|
| 关联任务 | 文本 | 关联的开发任务描述 |
| 代理名称 | 文本 | 参赛代理（Opus/Sonnet/Haiku） |
| 评分 | 数字 | AI 评分（0-10） |
| 优点 | 文本 | 该方案优点 |
| 缺点 | 文本 | 该方案缺点 |
| 是否推荐 | 文本 | 是/否 |
| 代码路径 | 文本 | 代码文件路径 |

## 工作模式

### 模式 1: 竞赛模式

**触发：** "用竞赛模式帮我实现用户登录模块" / "两个代理各写一份"

**工作流：**

```
Step 1: 解析任务描述

Step 2: 使用 Agent Tool 启动 2-3 个子代理并行执行
├── Agent 1 (Opus): 执行任务...
├── Agent 2 (Sonnet): 执行任务...
└── Agent 3 (Haiku): 执行任务...（可选）

Step 3: 收集所有代理结果

Step 4: AI 对比评估
├── 代码质量（完整性、规范性）
├── 功能实现（是否满足需求）
├── 性能考虑
├── 安全性
└── 综合评分

Step 5: 选择推荐方案

Step 6: 保存记录
├── dws aitable record create → 开发任务
├── dws aitable record create → 各代理竞赛记录（批量）
└── dws todo task create → 如需要后续工作

Step 7: 发送结果通知
└── dws chat message send-by-bot → 竞赛结果汇报
```

**输出格式：**

```markdown
## 竞赛结果：用户登录模块

### 方案 A（Claude Opus 4.6）
- 方案：JWT + Refresh Token
- 优点：完整性好，含密码强度校验
- 缺点：代码量较大
- 评分：8.5/10

### 方案 B（Claude Sonnet 4.6）
- 方案：Session-based 认证
- 优点：简洁清晰，易于理解
- 缺点：缺少密码强度校验
- 评分：7.0/10

### 推荐：方案 A（Opus）
JWT 方案更符合现代最佳实践。

总耗时：120s
```

### 模式 2: 分工模式

**触发：** "我有3个任务要并行做：修bug #123、写登录页面、优化SQL查询" / "分工模式"

**工作流：**

```
Step 1: 解析任务列表

Step 2: 为每个任务分配代理（AI 自动分配或用户指定）
├── 任务1 → Agent 1
├── 任务2 → Agent 2
└── 任务3 → Agent 3

Step 3: 使用 Agent Tool 并行启动所有代理

Step 4: 收集结果

Step 5: 保存记录
├── dws aitable record create → 批量保存开发任务
└── dws todo task create → 如有后续待办

Step 6: 发送结果汇报
└── dws chat message send-by-bot
```

**输出格式：**

```markdown
## 分工任务完成

| 任务 | 代理 | 状态 | 耗时 |
|------|------|------|------|
| 修 bug #123 | Agent1 (Sonnet) | 完成 ✓ | 45s |
| 写登录页面 | Agent2 (Opus) | 完成 ✓ | 120s |
| 优化SQL查询 | Agent3 (Haiku) | 完成 ✓ | 60s |

总耗时 120s（串行需 225s，加速 1.9x）
```

### 模式 3: 流水线模式

**触发：** "用流水线模式重构这个模块" / "代码→审查→测试"

**工作流：**

```
Step 1: 解析任务

Step 2: 按流水线阶段分配代理
├── 阶段1: 代码编写 → Opus（最强代码能力）
├── 阶段2: 代码审查 → Sonnet（平衡效率和质量）
└── 阶段3: 补充测试 → Haiku（快速执行）

Step 3: 顺序执行
├── Agent 1 (Opus): 编写/重构代码 → 输出代码
├── Agent 2 (Sonnet): 审查代码 → 输出审查意见和改进建议
└── Agent 3 (Haiku): 根据审查结果补充测试 → 输出测试代码

Step 4: 汇总结果
├── 代码文件路径
├── 审查发现的问题和改进
└── 测试覆盖情况

Step 5: 保存记录并通知
```

**输出格式：**

```markdown
## 流水线结果：模块重构

### 阶段 1（Opus）：重构代码 ✓
- 重构了 3 个文件，优化了数据流
- 耗时：90s

### 阶段 2（Sonnet）：代码审查 ✓
- 发现 3 个改进建议：
  1. 错误处理不完整
  2. 缺少输入验证
  3. 建议提取公共方法
- 耗时：60s

### 阶段 3（Haiku）：补充测试 ✓
- 新增 12 个测试用例，全部通过
- 覆盖率提升到 85%
- 耗时：45s

总耗时：195s
```

### 模式 4: 任务历史回顾

**触发：** "之前的开发任务有哪些" / "竞赛历史" / "开发记录"

**工作流：**

```
Step 1: 查询任务记录
└── dws aitable record query --base-id <mad-base-id> --table-id <tasks-table-id> --limit 50 --yes -f json

Step 2: 格式化输出历史
```

## dws CLI 命令参考

### 创建多代理开发

```bash
dws aitable base create --name "多代理开发" --yes -f json
dws aitable table create --base-id <mad-base-id> --name "开发任务" --yes -f json
dws aitable table create --base-id <mad-base-id> --name "竞赛记录" --yes -f json
```

### 保存开发任务

```bash
dws aitable record create --base-id <mad-base-id> --table-id <tasks-table-id> --records '[{"cells":{"标题":"实现用户登录模块","任务描述":"实现用户登录模块","工作模式":"竞赛","分配代理":"Opus,Sonnet","状态":"已完成","结果摘要":"JWT方案胜出","推荐方案":"方案A(Opus)","耗时":120,"创建时间":"2026-04-06","完成时间":"2026-04-06"}}]' --yes -f json
```

### 保存竞赛记录

```bash
dws aitable record create --base-id <mad-base-id> --table-id <competition-table-id> --records '[{"cells":{"标题":"用户登录模块-Opus方案","关联任务":"用户登录模块","代理名称":"Opus","评分":8.5,"优点":"完整性好","缺点":"代码量大","是否推荐":"是"}},{"cells":{"标题":"用户登录模块-Sonnet方案","关联任务":"用户登录模块","代理名称":"Sonnet","评分":7.0,"优点":"简洁清晰","缺点":"缺密码校验","是否推荐":"否"}}]' --yes -f json
```

### 查询历史

```bash
dws aitable record query --base-id <mad-base-id> --table-id <tasks-table-id> --limit 50 --yes -f json
dws aitable record query --base-id <mad-base-id> --table-id <competition-table-id> --limit 100 --yes -f json
```

### 创建后续待办

> **注意：** `dws todo task create` 服务端偶发 NPE（errorCode 999），失败时需重试一次。仍失败则仅保存在 aitable 中。

```bash
dws todo task create --title "根据竞赛结果整合最优代码" --priority "20" --yes -f json
# 失败时重试：仍失败则将待办信息存入 aitable 开发任务表的结果摘要中
```

### 发送通知

```bash
dws chat message send-by-bot --robot-code "bot_code" --group "openConversationId" --title "开发任务完成" --text "竞赛结果：方案A(Opus)胜出，评分8.5/10" --yes
```

## 联动 Skill

| 联动 Skill | 数据交互 | 说明 |
|-----------|---------|------|
| content-pipeline | 内容创作任务 | 多代理并行创作内容 |
| morning-brief | 提供开发进度 | 晨间简报展示进行中的开发任务 |

## 注意事项

1. 所有 `dws` 命令必须加 `--yes` 标志
2. 多代理执行依赖 Agent Tool（子代理），需要足够的计算资源
3. 竞赛模式建议 2-3 个代理，过多会增加对比成本
4. 流水线模式每个阶段的输出是下一阶段的输入，必须顺序执行
5. 代理推荐分配策略：Opus 处理复杂逻辑，Sonnet 处理中等任务，Haiku 处理简单任务
6. 所有开发任务和竞赛记录存入 aitable，便于回顾和学习
7. 此 Skill 与钉钉平台关联最小，主要编排 Claude Code Agent Tool
8. `dws todo task create` 服务端偶发 NullPointerException，失败时重试，仍失败则仅保存在 aitable 中

## 已知问题

- **`dws todo task create` 偶发服务端 NPE（errorCode 999）**：需重试一次。若重试仍失败，将待办信息保存到 aitable 开发任务表的结果摘要字段中，确保不丢失后续工作项。

