这不是又一篇讲 AI 帮你写代码的文章。写代码的事大家都做过了。这篇讲的是另一件事:给 AI Agent 分配真实的团队角色——产品经理、开发、测试、Scrum Master——让它们在飞书群里互相协作,跟人一起跑完一个 Sprint,从 Backlog 到发版。

大家不怎么提的断层
多数团队用 AI 的方式是这样的:开个对话窗口,让它写段代码或者跑个测试,复制粘贴结果。AI 不认识你的队友,不知道 PO 写了什么需求,也不知道 QA 测出了什么 Bug。跨角色协作一开始,AI 就退场了。
我们想改变这一点。
做法很直接:在 OpenClaw 上建五个 Agent,每个绑一个独立的飞书 Bot 账号,每个分配一个 Scrum 角色。五个 Bot 全拉进同一个飞书群。它们能看到彼此的消息,能质疑对方的产出,能通过共享文件协作——Sprint Board、Bug 列表、需求文档。
我是 AI灵感闪现,使用 OpenClaw 小龙虾 让 AI 自主管理工作和生活上的问题;使用 Claude Code + BMAD AI 驱动敏捷开发框架,让 AI 自主开发和交付软件来表达想法和灵感。是 MoneyMind 省钱思维 App 和 HeartPetBond 心宠纽带 App 开发者。正在实践和分享让 AI 自主解决健康、生活、投资和等方面的问题。我尽可能让 AI 自己完成从目标到交付以及演进的闭环,以最少的人为交互与监督,让 AI 自己跑流程。我只给 AI 想法或目标,全程不陪跑,让 AI 自主运行类似 Tesla FSD 自动驾驶。
架构
飞书群聊(研发协作频道) │ ├── @vs-po → OpenClaw Agent: vs-po (Product Owner) ├── @vs-dev → OpenClaw Agent: vs-dev (Developer) ├── @vs-qa → OpenClaw Agent: vs-qa (QA Engineer) ├── @vs-sm → OpenClaw Agent: vs-sm (Scrum Master) └── @project-a → OpenClaw Agent: project-a (Project / PM) │ └── 每个 Agent 拥有: ├── 独立 Workspace(私有上下文、任务状态) └── 共享 Workspace(需求文档、Sprint Backlog、Bug 列表)三个东西撑起这套体系:
• OpenClaw 是本地 AI 网关,管多个 Agent 和多个飞书 Bot 账号 • 飞书 是协作平台,通过企业自建应用接入 • Scrum 是框架,约束每个 Agent 能做什么、不能做什么
角色设计:制造对抗
对抗性角色
"对抗"不是坏事。这三个角色天生有目标张力,互相制衡才能出好结果。
| PO | vs-po | ||
| Dev | vs-dev | ||
| QA | vs-qa |
PO 要功能完整,Dev 要实现简洁,QA 要系统稳定。三个人天天互相怼,需求越来越清楚,代码越来越扎实。
协助性角色
| SM | vs-sm | ||
| PM | project-a |
工作区
每个 Agent 有自己的私有工作区,同时访问团队的共享工作区:
~/WorkSpaces/VS/.openclaw/├── workspace/│ ├── shared/ # 共享工作区│ │ ├── backlog.md # Product Backlog│ │ ├── sprint.md # 当前 Sprint Board│ │ ├── bugs.md # Bug 跟踪│ │ └── docs/ # 需求文档、技术方案│ ││ ├── vs-po/ # PO 私有│ ├── vs-dev/ # Dev 私有│ ├── vs-qa/ # QA 私有│ ├── vs-sm/ # SM 私有│ └── project-a/ # PM 私有共享工作区是整个团队的唯一事实来源。Agent 通过读写共享文件协作。人随时可以打开看,随时可以改。
OpenClaw 配置
飞书账号
~/.openclaw/openclaw.json 里这么写:
{"channels":{"feishu":{"enabled":true,"dmPolicy":"open","allowFrom":["*"],"requireMention":false,"accounts":{"vs-po":{"appId":"cli_xxx","appSecret":"..."},"vs-dev":{"appId":"cli_xxx","appSecret":"..."},"vs-qa":{"appId":"cli_xxx","appSecret":"..."},"vs-sm":{"appId":"cli_xxx","appSecret":"..."},"project-a":{"appId":"cli_xxx","appSecret":"..."}}}},"bindings":[{"match":{"channel":"feishu","accountId":"vs-po"},"agentId":"vs-po"},{"match":{"channel":"feishu","accountId":"vs-dev"},"agentId":"vs-dev"},{"match":{"channel":"feishu","accountId":"vs-qa"},"agentId":"vs-qa"},{"match":{"channel":"feishu","accountId":"vs-sm"},"agentId":"vs-sm"},{"match":{"channel":"feishu","accountId":"project-a"},"agentId":"project-a"}]}创建 Agent
for agent in vs-po vs-dev vs-qa vs-sm project-a; do openclaw agents add $agent \ --workspace ~/WorkSpaces/VS/.openclaw/workspace/$agent \ --agent-dir ~/WorkSpaces/VS/.openclaw/agent/$agentdone飞书群配置
1. 建飞书群 "研发协作 - Sprint #1" 2. 五个 Bot 全拉进群 3. 飞书开发者后台,每个应用开: • im:message.group_at_msg:readonly• im:message:send_as_bot4. 事件订阅 im.message.receive_v1,选长连接
实战:一个 User Story 从开始到结束
需求:给用户中心加"忘记密码"功能
Sprint Planning:PO 写 Story
人在群里 @ PO:
@vs-po 下个 Sprint 要做"忘记密码",帮写个完整的 User Story,带验收标准。PO 回复:
User Story作为一个忘记密码的用户,我希望通过邮箱验证码重置密码,以便在不联系客服的情况下恢复账户访问。验收标准:1. 输入注册邮箱,点"发送验证码",60 秒内收到 6 位数验证码2. 验证码有效 10 分钟,过期提示"验证码已过期,请重新获取"3. 连续输错 3 次验证码,锁定 30 分钟4. 新密码 8-20 位,含大小写字母和数字5. 重置成功后,除当前设备外的所有已登录 Session 失效6. 重置成功发送邮件确认已写入 shared/backlog.md,Story Points:5技术评审:Dev 提方案
Dev 看完 Story 后给出技术方案:
接口设计:- POST /api/auth/forgot-password { email }- POST /api/auth/verify-code { email, code }- POST /api/auth/reset-password { email, code, newPassword }实现:- 验证码存 Redis,key: reset:{email},TTL 600s- 错误计数:reset:attempts:{email},TTL 1800s- 密码 bcrypt 加密,cost factor 12风险:1. 邮件服务挂了要有降级方案2. AC#5 的 Session 失效——"其他设备"包不包含当前设备?@vs-po AC#5 的"其他设备"包含当前正在操作的设备吗?PO 回:
好问题。不包含。用户刚重置完不应该被踢出。AC#5 改为:"除当前操作设备外的所有已登录 Session 失效"Dev 问了一个真实的边界问题,PO 做了实际的业务澄清。这不是预设好的对话脚本,是两个 Agent 根据各自角色定义做出的反应。
QA 设计测试用例
QA 拿到 Story 和技术方案后:
测试用例正向流程: TC-01: 有效邮箱 → 发码 → 正确验证 → 重置成功 TC-02: 重置成功后用新密码登录边界: TC-03: 未注册邮箱 → 应返回通用提示(防枚举) TC-04: 验证码过期(10 分 01 秒后提交)→ 提示过期 TC-05: 连续错 3 次 → 第 4 次直接拒绝 TC-06: 锁定期间重新请求验证码 → 拒绝还是允许?安全: TC-07: 同一邮箱 60 秒内重复请求 → 限流 TC-08: 重置后旧 Session Token 是否失效 TC-09: 新密码与旧密码相同 → 允许还是拒绝?@vs-po TC-06 和 TC-09 需要确认业务策略QA 不仅设计了常规用例,还抛出两个 PO 没想到的边界问题。
SM 跑站会
每日站会 - Day 2@vs-dev 昨天:接口设计完成,Redis 方案已实现 今天:邮件发送 + 错误计数逻辑 阻塞:邮件服务商账号未开通,等 @project-a 协调@vs-qa 昨天:TC-01 ~ TC-06 用例设计完成 今天:等接口就绪后开始自动化测试 阻塞:TC-06、TC-09 待 PO 确认@vs-po 今天请确认:TC-06 和 TC-09Sprint 进度:3/8 Story Points按时交付QA 测出 Bug
Dev 完成后通知 QA 提测。QA 跑完测试:
测试报告通过:TC-01、TC-02、TC-04、TC-07失败:- TC-03:未注册邮箱返回了"邮箱不存在" 暴露用户注册状态,有枚举风险- TC-08:旧 Session 未失效 重置后用旧 Token 还能访问 /api/user/profile未测试:TC-05(锁定逻辑代码没找到)@vs-dev 请修这 2 个 Bug。TC-05 的锁定计数是实现了吗?QA 抓到了一个安全漏洞(邮箱枚举)和一个逻辑遗漏(Session 未失效)。这两个问题人类测试人员也会找到。Agent 找到了同样的东西。
Dev 修完回复:
确认:- TC-03:统一返回"如果邮箱已注册,您将收到验证码",不透露注册状态。已修。- TC-08:漏了 Session 失效逻辑,补了。- TC-05:锁定逻辑在 Redis 层,auth.service.ts:L87。可能是测试环境 Redis 配置问题,请重测。hotfix 已推送。PM 协调发版
Release Note - v2.4.1新功能:- 忘记密码:用户通过邮箱验证码自助重置密码安全增强:- 验证码 10 分钟有效期- 连续错误 3 次锁定 30 分钟- 重置成功后其他设备 Session 自动失效- 防枚举:统一返回模糊提示发布检查:[x] 功能测试通过(@vs-qa 确认)[x] 安全审查通过(TC-03、TC-08 修复并验证)[x] 邮件服务商已开通(@vs-dev 确认)[x] 监控告警配置(密码重置失败率 > 10% 触发告警)预计发布:明日 10:00发布负责人:@project-a回滚方案:feature flag 关闭协作模式一览
几个设计原则
角色边界不越线。 PO 不写代码,只管"做什么"。Dev 不定需求,只管"怎么做"。QA 不放过不达标的功能。每个 Agent 的 SOUL.md 和 AGENTS.md 里写明了角色定义和拒绝策略。
共享工作区是枢纽。 所有 Agent 通过 shared/ 目录协作。Sprint Board、Bug 列表、需求文档都在这里。人随时可以看、可以改。
人做最终决策。 Agent 提方案、暴露风险、执行任务,但关键决策要人来拍板——需求优先级变了、发版时间定了、安全策略该怎么处理。
SM 只管流程。 SM Agent 不碰具体业务,只干三件事:发现阻塞并上报、维持 Sprint 节奏、主持各种仪式。
为什么这套东西有用
不是替人。是放大人。
AI 处理信息整理、方案起草、用例设计、状态跟踪这些高频但判断量不大的工作。人专注于决策。Agent 不跳流程——需求必须有验收标准,测试必须有用例。凌晨两点提交的代码,QA Agent 马上就能给初步反馈。每个 Agent 的工作区累积上下文,不靠个人记忆。
接下来
• 给 SM 配定时心跳,自动发起每日站会 • 接 GitHub Webhook,PR 合并时自动触发 QA 验证 • 共享工作区和 Git 仓库同步,Sprint Board 版本化 • Sprint 结束时 SM 主持 Agent 团队复盘
OpenClaw 管 Agent。飞书管协作。Scrum 管行为边界。三样东西拼到一起,AI 不再是你一个人的私人助理,而是团队里一个真正在干活的成员。


全网首发?第一款 GLM 4.7 + Claude Code AI 自主开发的心宠纽带 App 首次通过 App Store 审核并上架发布
智谱 GLM 4.7 模型 AI 自主开发 HeartBetBond 心宠纽带 App,从想法到提交 App Store 仅用 12 天
实战测评:用 Claude Code + BMAD + GLM-4.7 打造 HeartPetBond App (心宠纽带)
加入 AI灵感闪现 微信群
长按下图二维码进入 AI灵感闪现 微信群

长按下图二维码添加微信好友 VibeSparking 加群

关注 AI灵感闪现 微信公众号

夜雨聆风