lark-workflow-multi-agent-dev
Installation
SKILL.md
多编程代理协同工作流
CRITICAL — 开始前 MUST 先用 Read 工具读取 ../lark-shared/SKILL.md,其中包含认证、权限处理
适用场景
- "帮我用多代理做这个任务" / "并行开发"
- "同一个任务让多个 AI 各写一份" / "竞赛模式"
- "这几件事分别交给不同的 AI" / "分工模式"
- "一个写代码、一个做审查、一个写测试" / "流水线模式"
- "对比一下哪个方案更好" / "代码对比"
- "看看当前的开发任务" / "任务列表"
前置条件
仅支持 user 身份。执行前确保已授权:
lark-cli auth login --domain im,base,task
工作流总览
任务输入:
用户描述任务 ──► AI 解析任务复杂度和可拆分性
模式选择:
├── 竞赛模式 ──► 同一任务 × N 代理 → 对比选优
├── 分工模式 ──► N 个子任务 × 各代理 → 并行完成
└── 流水线模式 ──► 代码 → 审查 → 测试 → 顺序协作
执行:
Agent Tool ──► 启动子代理并行执行
追踪:
base +record-upsert ──► 记录任务和结果
通知:
im +messages-send ──► 完成通知 + 结果摘要
数据初始化
Base 表结构
表 1:开发任务 (dev_tasks)
| 字段名 | 类型 | 说明 |
|---|---|---|
| 任务描述 | 文本 | 任务内容的简要描述 |
| 工作模式 | 单选 | 竞赛/分工/流水线 |
| 分配代理 | 文本 | 分配给的代理名称 |
| 代理数量 | 数字 | 参与的代理数量 |
| 状态 | 单选 | 待分配/执行中/已完成/已取消 |
| 结果摘要 | 文本 | 执行结果的简要描述 |
| 结果详情 | 文本 | 详细结果(如代码diff链接) |
| 代码仓库 | URL | 关联的代码仓库 |
| 分支名 | 文本 | 创建的分支名 |
| 开始时间 | 日期 | 任务开始时间 |
| 完成时间 | 日期 | 任务完成时间 |
| 耗时(秒) | 数字 | 任务执行耗时 |
表 2:竞赛记录 (competition_log)
| 字段名 | 类型 | 说明 |
|---|---|---|
| 任务描述 | 文本 | 竞赛任务描述 |
| 代理A名称 | 文本 | 如 "Claude Opus 4.6" |
| 代理A结果 | 文本 | 代理 A 的执行结果摘要 |
| 代理B名称 | 文本 | 如 "Claude Sonnet 4.6" |
| 代理B结果 | 文本 | 代理 B 的执行结果摘要 |
| 代理C名称 | 文本 | 可选第三个代理 |
| 代理C结果 | 文本 | |
| 优胜者 | 文本 | AI 评估后的推荐方案 |
| 评估理由 | 文本 | 为什么选择该方案 |
| 评估日期 | 日期 | 评估时间 |
初始化命令
# 注意:+table-create 可能部分成功,需捕获错误后用 +field-create 补字段
# 注意:连续创建字段会触发限流(错误码 800004135),每次调用间隔至少 1 秒
lark-cli base +table-create --name "开发任务" --fields '[
{"name":"任务描述","type":"text"},
{"name":"工作模式","type":"select","multiple":false,"options":[{"name":"竞赛"},{"name":"分工"},{"name":"流水线"}]},
{"name":"分配代理","type":"text"},
{"name":"代理数量","type":"number"},
{"name":"状态","type":"select","multiple":false,"options":[{"name":"待分配"},{"name":"执行中"},{"name":"已完成"},{"name":"已取消"}]},
{"name":"结果摘要","type":"text"},
{"name":"结果详情","type":"text"},
{"name":"代码仓库","type":"link"},
{"name":"分支名","type":"text"},
{"name":"开始时间","type":"datetime"},
{"name":"完成时间","type":"datetime"},
{"name":"耗时(秒)","type":"number"}
]'
lark-cli base +table-create --name "竞赛记录" --fields '[
{"name":"任务描述","type":"text"},
{"name":"代理A名称","type":"text"},
{"name":"代理A结果","type":"text"},
{"name":"代理B名称","type":"text"},
{"name":"代理B结果","type":"text"},
{"name":"代理C名称","type":"text"},
{"name":"代理C结果","type":"text"},
{"name":"优胜者","type":"text"},
{"name":"评估理由","type":"text"},
{"name":"评估日期","type":"datetime"}
]'
限流处理:如果 +table-create 因限流部分失败,表仍会创建成功。此时:
- 用
base +table-list获取 table_id- 用
base +field-create --table-id <id> --json '{"name":"字段名","type":"text"}'逐个补字段,每次间隔 1-2 秒
模式一:竞赛模式
适用场景
- 需要找到最优实现方案
- 同一个需求有多种实现思路
- 对代码质量要求较高的核心功能
工作流
用户描述任务
│
▼
AI 解析任务,确保描述清晰无歧义
│
├──► Agent 1(如 Claude Opus 4.6)──► 结果 A
├──► Agent 2(如 Claude Sonnet 4.6)──► 结果 B
└──► Agent 3(如 Claude Haiku 4.5)──► 结果 C
│
▼
AI 对比评估
│
▼
选出最优方案
│
▼
飞书消息通知
执行步骤
- 解析任务:AI 确保任务描述完整、无歧义,必要时追问用户补充细节
- 启动代理:使用 Claude Code 的 Agent Tool 并行启动多个子代理(建议 2-3 个)
Agent Tool 调用示例(竞赛模式):
在一条消息中同时发起多个 Agent Tool 调用即可实现并行:
Agent(subagent_type="general-purpose", model="opus", description="竞赛方案A", prompt="在仓库 {repo_path} 中完成任务:{任务描述}。要求:写出完整的实现代码。")
Agent(subagent_type="general-purpose", model="sonnet", description="竞赛方案B", prompt="在仓库 {repo_path} 中完成任务:{任务描述}。要求:写出完整的实现代码。")
Agent(subagent_type="general-purpose", model="haiku", description="竞赛方案C", prompt="在仓库 {repo_path} 中完成任务:{任务描述}。要求:写出完整的实现代码。")
说明:Agent Tool 是 Claude Code 的内置能力(非 lark-cli 命令)。
subagent_type:使用general-purpose处理代码任务model:可选opus(复杂逻辑)、sonnet(代码审查/文档)、haiku(测试/简单修改)isolation: "worktree":如需各代理独立工作互不干扰,可启用 worktree 隔离- 多个 Agent Tool 在同一消息中并行调用即可同时执行
- 收集结果:等待所有代理完成
- 对比评估:AI 从以下维度对比:
- 功能完整性
- 代码质量(可读性、可维护性)
- 性能表现
- 边界情况处理
- 安全性
- 记录结果:保存到多维表格
- 通知用户:发送飞书消息
评估输出格式
## 竞赛结果:{任务描述}
### 方案 A({代理名称})
- 优点:{列表}
- 缺点:{列表}
- 评分:{分}/10
### 方案 B({代理名称})
- 优点:{列表}
- 缺点:{列表}
- 评分:{分}/10
### 推荐:方案 {X}
理由:{详细理由}
模式二:分工模式
适用场景
- 有多个独立的任务需要并行处理
- 任务之间没有依赖关系
- 需要快速完成多个小任务
工作流
用户描述多个任务
│
▼
AI 解析并拆分任务列表
│
├──► Agent 1 ──► 任务 A(修 bug)
├──► Agent 2 ──► 任务 B(写新页面)
└──► Agent 3 ──► 任务 C(优化查询)
│
▼
全部完成后汇总
│
▼
飞书消息通知
执行步骤
- 拆分任务:AI 分析用户描述,拆分为独立的子任务
- 分配代理:每个子任务分配一个代理
- 并行执行:使用 Agent Tool 同时启动所有子代理
Agent Tool 调用示例(分工模式):
Agent(subagent_type="general-purpose", description="修bug", prompt="修复 {repo_path} 中 src/api/login.ts 的登录超时问题")
Agent(subagent_type="general-purpose", description="写新页面", prompt="在 {repo_path} 中创建 src/pages/dashboard.tsx 仪表盘页面")
Agent(subagent_type="general-purpose", description="优化查询", prompt="优化 {repo_path} 中 src/db/queries.ts 的数据库查询性能")
- 收集汇总:等待所有代理完成
- 记录和通知
任务拆分原则
- 任务之间无数据依赖
- 每个任务可独立验证
- 任务粒度适中(预计 5-30 分钟完成)
模式三:流水线模式
适用场景
- 复杂功能需要多阶段处理
- 需要代码审查和质量保障
- 标准化的开发流程
标准流水线
阶段 1: 编写代码(Claude Opus 4.6)
│ - 编写功能实现
│ - 编写基础测试
│
▼
阶段 2: 代码审查(Claude Sonnet 4.6)
│ - 审查代码质量
│ - 检查潜在 bug
│ - 提出改进建议
│
▼
阶段 3: 编写测试 + 集成(Claude Haiku 4.5)
│ - 补充测试用例
│ - 运行测试验证
│ - 修复发现的问题
│
▼
汇总报告
自定义流水线
用户可以自定义流水线的阶段和代理分配:
- "第一阶段用 Opus 写前端,第二阶段用 Sonnet 做 UI 审查"
执行步骤
- 定义流水线:确定阶段、每个阶段的代理、阶段间的输入输出
- 顺序执行:每个阶段完成后,将结果传递给下一个阶段
Agent Tool 调用示例(流水线模式):
# 阶段1: 编写代码(Opus)
Agent(subagent_type="general-purpose", model="opus", description="阶段1-编写代码", prompt="在 {repo_path} 中实现功能:{任务描述}。编写功能代码和基础测试。")
# 阶段2: 代码审查(Sonnet)— 等阶段1完成后执行
Agent(subagent_type="code-reviewer", model="sonnet", description="阶段2-代码审查", prompt="审查 {repo_path} 中刚刚实现的代码。检查代码质量、潜在 bug、改进建议。")
# 阶段3: 补充测试(Haiku)— 等阶段2完成后执行
Agent(subagent_type="general-purpose", model="haiku", description="阶段3-测试集成", prompt="在 {repo_path} 中为已审查通过的代码补充测试用例并运行测试。")
关键:流水线模式下,Agent 必须按顺序执行(后一阶段的 prompt 中需包含前一阶段的结果)。
- 质量门控:每个阶段可以"通过"或"打回"(前一阶段需要修改)
- 如果代码审查发现严重问题 → 将审查意见传回阶段 1 的代理重新修改
- 打回最多 2 轮,超过 2 轮直接向用户报告,由用户决定如何处理
- 最终汇总:所有阶段完成后生成汇总报告
任务管理
查看任务列表
lark-cli base +record-list --table-id "<tasks_table_id>" --filter '...状态 != "已完成" AND 状态 != "已取消"'
更新任务状态
lark-cli base +record-upsert --table-id "<tasks_table_id>" --json '{
"任务描述": "...",
"状态": "已完成",
"结果摘要": "...",
"完成时间": "..."
}'
创建飞书任务追踪
对于重要的开发任务,同时创建飞书任务:
lark-cli task +create --summary "[多代理] {任务描述}" --description "工作模式:{模式}\n分配代理:{代理列表}"
通知
任务完成通知
lark-cli im +messages-send --chat-id "<chat_id>" --markdown "..."
通知格式:
竞赛模式:
竞赛完成!
任务:{任务描述}
参与代理:{N} 个
总耗时:{X} 秒
推荐方案:{代理名称}(评分 {分}/10)
理由:{一句话}
查看详细对比:{多维表格链接}
分工模式:
分工任务全部完成!
总任务数:{N} 个
总耗时:{X} 秒(并行加速 {倍数}x)
| 任务 | 代理 | 状态 | 耗时 |
|------|------|------|------|
| 任务A | Agent1 | 完成 | {X}s |
| 任务B | Agent2 | 完成 | {Y}s |
| 任务C | Agent3 | 完成 | {Z}s |
流水线模式:
流水线执行完成!
任务:{任务描述}
总耗时:{X} 秒
| 阶段 | 代理 | 状态 | 备注 |
|------|------|------|------|
| 编写代码 | Opus 4.6 | 通过 | — |
| 代码审查 | Sonnet 4.6 | 通过 | 3个改进建议 |
| 测试集成 | Haiku 4.5 | 通过 | 12个测试通过 |
查看完整报告:{多维表格链接}
GitHub 仓库集成
本 Skill 的代理默认在当前工作目录下操作代码。如需操作 GitHub 仓库:
指定仓库路径
在 Agent Tool 的 prompt 中明确指定仓库路径:
Agent(description="修复bug", prompt="在 D:/projects/my-app 仓库中修复...")
Git 操作
Agent Tool 的子代理可以使用 git 命令进行版本控制:
# 创建分支(各代理独立分支,避免冲突)
git checkout -b agent/contest-a
# 提交代码
git add src/
git commit -m "feat: 实现XX功能(竞赛方案A)"
# 推送到远程
git push -u origin agent/contest-a
创建 Pull Request
代理完成代码后,可通过 gh CLI 创建 PR:
# 创建 PR
gh pr create --title "feat: XX功能实现" --body "$(cat <<'EOF'
## 方案说明
{代理生成的方案描述}
## 变更内容
- {变更列表}
EOF
)"
注意:推送到远程仓库和创建 PR 会影响共享状态,需征得用户确认后再执行。
Worktree 隔离模式
使用 isolation: "worktree" 让各代理在独立 git worktree 中工作,互不干扰:
Agent(subagent_type="general-purpose", isolation="worktree", description="竞赛方案A", prompt="...")
Agent(subagent_type="general-purpose", isolation="worktree", description="竞赛方案B", prompt="...")
完成对比后,保留优胜方案的 worktree,删除其他方案。
使用建议
- 简单任务(单一功能、明确需求)→ 竞赛模式,2 个代理即可
- 批量任务(多个独立 bug、多个小功能)→ 分工模式,按任务数量分配代理
- 复杂功能(新模块、核心功能)→ 流水线模式,确保质量
- 代理选择建议:
- 复杂逻辑、架构设计 → Opus
- 代码审查、文档 → Sonnet
- 测试、简单修改 → Haiku
权限表
| 命令 | 所需 scope |
|---|---|
base +table-create |
bitable:app |
base +record-list |
bitable:app:read |
base +record-upsert |
bitable:app:write |
im +messages-send |
im:message:send_as_bot |
task +create |
task:task:write |
参考
lark-shared— 认证、权限(必读)lark-base—+table-create、+record-list、+record-upsert详细用法lark-im—+messages-send详细用法lark-task—+create详细用法
Weekly Installs
2
Repository
liangdabiao/lar…ishu-cliGitHub Stars
20
First Seen
Apr 13, 2026
Security Audits