dingtalk-workflow-multi-agent-dev
Installation
SKILL.md
多编程代理协同 (dingtalk-workflow-multi-agent-dev)
支持竞赛模式、分工模式、流水线模式三种工作模式,通过钉钉追踪任务和结果。 此 Skill 主要编排 Claude Code Agent Tool 的多代理能力,钉钉作为任务管理和通知层。
触发方式
"并行开发" "多代理" "竞赛模式" "分工模式" "流水线协作" "代码对比" "多Agent开发"
三种工作模式
| 模式 | 适用场景 | 代理数量 | 执行方式 | 类比 |
|---|---|---|---|---|
| 竞赛 | 需要最优方案 | 2-3个 | 同一任务,各自完成,AI对比选优 | 奥运会 |
| 分工 | 多个独立任务 | 按任务数 | 不同任务,并行完成 | 车间流水线 |
| 流水线 | 复杂功能,需质量保障 | 2-3个 | 代码→审查→测试,顺序协作 | 代码审查链 |
数据初始化
首次使用时,自动创建 aitable 数据表:
# 创建 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 → 竞赛结果汇报
输出格式:
## 竞赛结果:用户登录模块
### 方案 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
输出格式:
## 分工任务完成
| 任务 | 代理 | 状态 | 耗时 |
|------|------|------|------|
| 修 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: 保存记录并通知
输出格式:
## 流水线结果:模块重构
### 阶段 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 命令参考
创建多代理开发
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
保存开发任务
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
保存竞赛记录
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
查询历史
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 中。
dws todo task create --title "根据竞赛结果整合最优代码" --priority "20" --yes -f json
# 失败时重试:仍失败则将待办信息存入 aitable 开发任务表的结果摘要中
发送通知
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 | 提供开发进度 | 晨间简报展示进行中的开发任务 |
注意事项
- 所有
dws命令必须加--yes标志 - 多代理执行依赖 Agent Tool(子代理),需要足够的计算资源
- 竞赛模式建议 2-3 个代理,过多会增加对比成本
- 流水线模式每个阶段的输出是下一阶段的输入,必须顺序执行
- 代理推荐分配策略:Opus 处理复杂逻辑,Sonnet 处理中等任务,Haiku 处理简单任务
- 所有开发任务和竞赛记录存入 aitable,便于回顾和学习
- 此 Skill 与钉钉平台关联最小,主要编排 Claude Code Agent Tool
dws todo task create服务端偶发 NullPointerException,失败时重试,仍失败则仅保存在 aitable 中
已知问题
dws todo task create偶发服务端 NPE(errorCode 999):需重试一次。若重试仍失败,将待办信息保存到 aitable 开发任务表的结果摘要字段中,确保不丢失后续工作项。
Weekly Installs
1
Repository
liangdabiao/din…workflowGitHub Stars
7
First Seen
Apr 14, 2026
Security Audits