OpenClaw:让一个 Agent 带着一群 Agent 干活

2 阅读4分钟

背景

当前各 Agent 的协作是用户驱动的:用户手动 @PM 写 PRD → 手动 @Architect 做架构 → 手动 @Backend 开发… 用户充当了“项目经理”角色。

用户期望: 提一个需求给一个 Agent,它自动分解任务、分派给其他 Agent、定时反馈进度。


方案:编排者 Agent + 心跳自动领任务

核心思路

1. 创建 lumin_lead/(技术负责人 Agent)— 充当编排者

  • 接收用户需求 → 创建项目 → 拆解阶段 → 触发 PM 开始工作
  • 通过 HEARTBEAT 定时轮询 STATUS.yaml → 检测阶段完成 → 通知下游 Agent → 向用户反馈进度

2. 每个 Agent 的 HEARTBEAT.md 增加自动领任务逻辑

心跳时检查 projects/*/STATUS.yaml

发现自己负责的阶段已解除阻塞(上游 completed)→ 自动开始工作

这样即使编排者没发消息,Agent 也能自驱动


工作流

用户 → @Lead "做一个用户认证系统"
   │
   Lead:
   ├── 创建 projects/user-auth/ + STATUS.yaml
   ├── 设置 prd.status: pending
   └── 发消息给飞书群: "@PM 请为 user-auth 项目写 PRD"
   │
   PM(收到消息 或 心跳发现任务):
   ├── 写 PRD → projects/user-auth/01-prd/PRD.md
   └── 更新 STATUS.yaml: prd.status: completed
   │
   Lead(心跳检测到 prd completed):
   ├── 发消息: "@Architect 请为 user-auth 设计架构"
   └── 向用户反馈: "PRD 已完成,架构师已开始工作"
   │
   Architect(收到消息 或 心跳发现任务):
   ├── 读 PRD → 写架构文档
   └── 更新 STATUS.yaml: architecture.status: completed
   │
   Lead(心跳检测到 architecture completed):
   ├── 发消息: "@Backend @Frontend 请开始开发"
   └── 向用户反馈: "架构已完成,前后端已开始并行开发"
   │
   ... 以此类推直到 QA → Review → Done

进度反馈

Lead 的 HEARTBEAT.md 每次心跳执行:

  • 扫描 projects/*/STATUS.yaml
  • 汇总各项目各阶段状态
  • 如有阶段完成 → 通知下游 Agent(发飞书消息)
  • 向用户反馈进度摘要

需要创建/修改的文件

新建:lumin_lead/ 完整 Agent(9 个文件 + symlink)

文件内容
SOUL.md技术负责人,负责任务拆解和团队协调
USER.md输出格式:进度看板、阶段汇报
AGENTS.md与所有 Agent 的协作关系(编排者视角)
SKILL.md需求拆解、任务分派、进度跟踪
WORKFLOW.md接收需求 → 创建项目 → 分派 → 监控 → 反馈
HEARTBEAT.md核心:定时扫描 STATUS.yaml,检测阶段完成,通知下游,反馈进度
IDENTITY.md身份信息
TOOLS.md本地配置
MEMORY.md长期记忆
projects../projects symlink

修改:每个 Agent 的 HEARTBEAT.md(增加自动领任务)

PM / Architect / Backend / Frontend / QAHEARTBEAT.md 中增加:

自动领任务

检查 projects/*/STATUS.yaml

  1. 找到 owner 是我、status 是 pending、blocked_by 的上游已 completed 的阶段
  2. 如果找到 → 按 WORKFLOW.md 开始工作
  3. 如果没找到 → HEARTBEAT_OK

修改:COORDINATION.md

增加“自动化编排”章节,说明 Lead 角色和心跳自动领任务机制。

修改:CLAUDE.md

Agent 列表增加 lumin_lead/


验证方式

  • 确认 Lead 的 HEARTBEAT.md 包含完整的扫描和通知逻辑
  • 确认每个 Agent 的 HEARTBEAT.md 包含自动领任务逻辑
  • 用已有的 projects/dl-experiment-panel/ 模拟:Lead 心跳应检测到 prd: completed,应通知 Architect

总结

核心机制:编排者 Agent + 心跳自动领任务 两层驱动,互为保障

用户 → @Lead "做一个用户认证系统"

  Lead:创建 projects/user-auth/ → 发消息 @PM
    ↓
  PM:写 PRD → 更新 STATUS(prd: completed)
    ↓
  Lead 心跳:检测到 prd 完成 → 发消息 @Architect → 反馈用户"PRD已完成"
    ↓
  Architect:写架构 → 更新 STATUS(architecture: completed)
    ↓
  Lead 心跳:检测到架构完成 → 发消息 @Backend @Frontend →
  反馈"前后端已开始并行开发"
    ↓
  Backend + Frontend 并行开发 → 各自更新 STATUS
    ↓
  Lead 心跳:两个都 completed → 发消息 @QA → 反馈"进入测试阶段"
    ↓
  QA:测试 → 更新 STATUS
    ↓
  Lead 心跳:反馈用户"项目完成"

第一层:Lead 主动分派(快)

Lead 通过 HEARTBEAT 定时扫描所有 projects/*/STATUS.yaml

  • 检测到某阶段刚完成 → 立刻给下游 Agent 发飞书消息
  • 同时向用户汇报进度

第二层:各 Agent 心跳自领(兜底)

每个 Agent 的 HEARTBEAT.md 增加自动领任务逻辑:

心跳时检查 STATUS.yaml,发现自己负责的阶段已解除阻塞 → 自动开始工作

即使 Lead 的消息没到,Agent 也能自驱动


完整流程示例

用户 → @Lead "做一个用户认证系统"

  Lead:创建 projects/user-auth/ → 发消息 @PM
    ↓
  PM:写 PRD → 更新 STATUS(prd: completed)
    ↓
  Lead 心跳:检测到 prd 完成 → 发消息 @Architect → 反馈用户"PRD已完成"
    ↓
  Architect:写架构 → 更新 STATUS(architecture: completed)
    ↓
  Lead 心跳:检测到架构完成 → 发消息 @Backend @Frontend →
  反馈"前后端已开始并行开发"
    ↓
  Backend + Frontend 并行开发 → 各自更新 STATUS
    ↓
  Lead 心跳:两个都 completed → 发消息 @QA → 反馈"进入测试阶段"
    ↓
  QA:测试 → 更新 STATUS
    ↓
  Lead 心跳:反馈用户"项目完成"