
关于
通过 Claude DevFleet 编排多代理编码任务——项目规划、在隔离工作树中调度并行代理、监控进度和读取结构化报告。
name: claude-devfleet description: 通过 Claude DevFleet 编排多代理编码任务——规划项目、在隔离工作树中调度并行代理、监控进度并读取结构化报告。 origin: community
Claude DevFleet 多代理编排
何时使用
当需要调度多个 Claude Code 代理并行处理编码任务时使用本技能。每个代理在隔离的 git 工作树中运行,具有完整工具链。
需要通过 MCP 连接运行中的 Claude DevFleet 实例:
claude mcp add devfleet --transport http http://localhost:18801/mcp
工作原理
用户 → "构建带认证和测试的 REST API"
↓
plan_project(prompt) → project_id + 任务 DAG
↓
向用户展示计划 → 获取批准
↓
dispatch_mission(M1) → 代理 1 在工作树中启动
↓
M1 完成 → 自动合并 → 自动调度 M2(依赖 M1)
↓
M2 完成 → 自动合并
↓
get_report(M2) → 更改的文件、完成内容、错误、后续步骤
↓
向用户报告
工具
| 工具 | 用途 |
|------|---------|
| plan_project(prompt) | AI 将描述分解为包含链式任务的项目 |
| create_project(name, path?, description?) | 手动创建项目,返回 project_id |
| create_mission(project_id, title, prompt, depends_on?, auto_dispatch?) | 添加任务。depends_on 是任务 ID 字符串列表(如 ["abc-123"])。设置 auto_dispatch=true 在依赖满足时自动启动。 |
| dispatch_mission(mission_id, model?, max_turns?) | 在任务上启动代理 |
| cancel_mission(mission_id) | 停止运行中的代理 |
| wait_for_mission(mission_id, timeout_seconds?) | 阻塞直到任务完成(见下方注意事项) |
| get_mission_status(mission_id) | 非阻塞检查任务进度 |
| get_report(mission_id) | 读取结构化报告(更改的文件、已测试、错误、后续步骤) |
| get_dashboard() | 系统概览:运行中的代理、统计、最近活动 |
| list_projects() | 浏览所有项目 |
| list_missions(project_id, status?) | 列出项目中的任务 |
关于
wait_for_mission的注意事项: 这会阻塞对话最多timeout_seconds(默认 600)。对于长时间运行的任务,建议每 30-60 秒用get_mission_status轮询,这样用户能看到进度更新。
工作流:规划 → 调度 → 监控 → 报告
- 规划:调用
plan_project(prompt="...")→ 返回project_id+ 带有depends_on链和auto_dispatch=true的任务列表。 - 展示计划:向用户展示任务标题、类型和依赖链。
- 调度:对根任务(空
depends_on)调用dispatch_mission(mission_id=<first_mission_id>)。其余任务在依赖完成时自动调度(因为plan_project对它们设置了auto_dispatch=true)。 - 监控:调用
get_mission_status(mission_id=...)或get_dashboard()检查进度。 - 报告:任务完成时调用
get_report(mission_id=...)。与用户分享要点。
并发
DevFleet 默认最多运行 3 个并发代理(可通过 DEVFLEET_MAX_AGENTS 配置)。当所有槽位满时,auto_dispatch=true 的任务在任务监视器中排队,槽位释放时自动调度。检查 get_dashboard() 了解当前槽位使用情况。
示例
全自动:规划并启动
plan_project(prompt="...")→ 展示带任务和依赖的计划。- 调度第一个任务(
depends_on为空的那个)。 - 其余任务在依赖解决时自动调度(它们有
auto_dispatch=true)。 - 用项目 ID 和任务数量向用户报告,让用户知道启动了什么。
- 定期用
get_mission_status或get_dashboard()轮询,直到所有任务达到终态(completed、failed或cancelled)。 - 对每个终态任务调用
get_report(mission_id=...)— 总结成功并指出失败的错误和后续步骤。
手动:逐步控制
create_project(name="My Project")→ 返回project_id。- 为第一个(根)任务调用
create_mission(project_id=project_id, title="...", prompt="...", auto_dispatch=true)→ 捕获root_mission_id。 为每个后续任务调用create_mission(project_id=project_id, title="...", prompt="...", auto_dispatch=true, depends_on=["<root_mission_id>"])。 - 对第一个任务调用
dispatch_mission(mission_id=...)启动链。 - 完成后调用
get_report(mission_id=...)。
带审查的顺序执行
create_project(name="...")→ 获取project_id。create_mission(project_id=project_id, title="实现功能", prompt="...")→ 获取impl_mission_id。dispatch_mission(mission_id=impl_mission_id),然后用get_mission_status轮询直到完成。get_report(mission_id=impl_mission_id)审查结果。create_mission(project_id=project_id, title="审查", prompt="...", depends_on=[impl_mission_id], auto_dispatch=true)— 由于依赖已满足自动启动。
