Skip to Content

37f 产品研发工作流 Agent

上一篇: 37e RAG 知识库搭建 | 下一篇: 37g 数据分析与运营 Agent

本篇实现覆盖完整 SDLC 的 Agent 工作流:从需求收集到上线验收的全流程自动化。核心是事件驱动 + 状态机编排,通过 OpenClaw 记忆系统在 Skill 之间传递上下文,在关键节点保留 Human-in-the-Loop 审批。最后以 HackQuest “新增 Solana 课程模块”为例演示完整流程。


1. 研发流程状态机

1.1 状态定义

1.2 状态转换表

当前状态目标状态触发事件执行 Skill人工确认
待评审用户提出需求requirement-create
待评审已通过评审人在飞书确认requirement-status-change✅ 评审人确认
待评审已关闭评审人拒绝requirement-status-change✅ 评审人确认
已通过PRD编写中状态变更事件requirement-prd-generate❌ 自动触发
PRD编写中设计中产品经理审阅 PRDrequirement-status-change✅ PM 确认
设计中开发中设计评审通过requirement-status-change✅ 设计评审
开发中待审查开发者提交 PRcode-pr-review❌ 自动检测
待审查测试中CR 通过并合并requirement-status-change✅ Reviewer 确认
待审查开发中CR 打回requirement-status-change✅ Reviewer 确认
测试中待部署测试通过requirement-status-change✅ 测试确认
测试中开发中测试不通过bug-create✅ 测试确认
待部署已上线部署完成ops-deploy-trigger✅ 运维确认

2. 事件驱动触发

2.1 事件源

事件源事件类型触发的 Skill
飞书消息用户 @机器人 说”创建需求”requirement-create
飞书消息用户 @机器人 说”生成 PRD”requirement-prd-generate
多维表格需求状态字段变更requirement-status-change
多维表格缺陷状态字段变更bug-status-change
GitHubPR 创建/更新code-pr-review
GitHubCI 完成code-ci-trigger
定时每天 9:30站会提醒 Skill
定时每周五 17:00迭代总结 Skill

2.2 事件路由流程

事件到达 OpenClaw 识别事件类型 ├─→ 飞书消息事件 → 意图识别 → 匹配 Skill ├─→ 多维表格变更事件 → 解析变更字段 → 匹配状态转换 Skill ├─→ GitHub Webhook → 解析 PR/CI 事件 → 匹配代码 Skill └─→ 定时事件 → 直接触发对应 Skill 加载上下文(从记忆系统读取相关信息) 执行 Skill 写入记忆 → 回复用户/更新表格/发送通知

3. 核心 Skill 实现

3.1 需求收集 Skill

创建 skills/requirement/requirement-create.md

# requirement-create 从用户消息中提取需求信息,创建需求记录并归档到飞书多维表格。 ## 触发条件 用户消息包含"创建需求"、"新需求"、"提需求"、"我想做一个"等关键词。 ## 执行步骤 1. 从用户消息中提取以下信息: - 标题(必填) - 描述(可选,如果用户未提供则追问) - 优先级(可选,默认 P2) - 所属模块(可选,根据内容自动推断) 2. 如果标题或描述信息不完整,向用户追问缺失字段 3. 从记忆中读取多维表格 app_token 和需求表 table_id 4. 调用 lark-mcp 在需求多维表格中创建记录,状态设为"待评审" 5. 在需求评审群发送通知消息,包含需求摘要和多维表格链接 6. 将需求信息写入记忆,格式: - 记忆键:requirement_{record_id} - 内容:标题、描述、优先级、创建人、创建时间 ## 输出格式 ✅ 需求已创建 - 标题:{title} - 优先级:{priority} - 状态:待评审 - 模块:{module} - 多维表格:[查看]({bitable_link}) 已通知评审群,等待评审。 ## 示例输出 ✅ 需求已创建 - 标题:新增 Solana 课程模块 - 优先级:P1 - 状态:待评审 - 模块:课程 - 多维表格:[查看](https://xxx.feishu.cn/base/xxx) 已通知评审群,等待评审。 ## 权限要求 - 飞书多维表格写入权限 - 飞书消息发送权限 ## 错误处理 - 多维表格写入失败:提示用户稍后重试,记录错误日志 - 用户信息不完整:最多追问 2 次,仍不完整则创建草稿状态

3.2 PRD 生成 Skill

创建 skills/requirement/requirement-prd-generate.md

# requirement-prd-generate 根据需求信息和知识库上下文,自动生成 PRD 文档草稿。 ## 触发条件 - 需求状态从"待评审"变为"已通过"时自动触发 - 用户消息包含"生成 PRD"、"写 PRD" ## 执行步骤 1. 从记忆中读取需求详情(标题、描述、优先级、模块) 2. 调用 knowledge-rag-search 检索相关的历史需求和技术文档 3. 基于需求信息和检索结果,生成 PRD 文档,包含: - 背景与目标 - 用户故事 - 功能需求(按优先级排列) - 非功能需求(性能、安全、兼容性) - 技术方案建议(基于知识库中的架构文档) - 验收标准 - 里程碑计划 4. 调用 lark-mcp 创建飞书文档,写入 PRD 内容 5. 更新需求多维表格的 PRD 链接字段 6. 在需求评审群发送通知:"PRD 已生成,请 @产品经理 审阅" 7. 将 PRD 文档 token 写入记忆 ## 输出格式 📄 PRD 已生成 - 需求:{requirement_title} - PRD 文档:[查看]({doc_link}) - 状态:AI 生成-待审阅 请 @产品经理 审阅后确认。 ## PRD 模板 ### {需求标题} — 产品需求文档 #### 1. 背景与目标 (基于需求描述和知识库上下文生成) #### 2. 用户故事 - 作为 [角色],我希望 [功能],以便 [价值] #### 3. 功能需求 | 编号 | 功能点 | 优先级 | 描述 | |------|--------|--------|------| #### 4. 非功能需求 - 性能: - 安全: - 兼容性: #### 5. 技术方案建议 (基于知识库中的架构文档生成) #### 6. 验收标准 - [ ] 标准 1 - [ ] 标准 2 #### 7. 里程碑 | 阶段 | 时间 | 交付物 | ## 权限要求 - 飞书文档创建权限 - 飞书多维表格读写权限 - 向量数据库读取权限(RAG 检索) - 飞书消息发送权限

3.3 代码审查 Skill

创建 skills/code/code-pr-review.md

# code-pr-review 当 GitHub PR 创建或更新时,自动生成审查摘要并关联需求。 ## 触发条件 - GitHub PR 创建或更新事件 - 用户消息包含"查看 PR"、"PR 审查" ## 执行步骤 1. 通过 GitHub MCP 获取 PR 详情(标题、描述、变更文件列表、diff) 2. 从 PR 描述或分支名中提取关联的需求编号 3. 从记忆中读取关联需求的上下文 4. 分析 PR 变更: - 变更文件数和行数统计 - 主要变更内容摘要 - 潜在风险点(大文件变更、敏感文件修改、缺少测试) 5. 生成审查摘要并发送到开发群 6. 如果 PR 关联了需求,更新需求状态为"待审查" ## 输出格式 🔍 PR 审查摘要:#{pr_number} {pr_title} 📊 变更统计: - 文件数:{files_changed} - 新增:+{additions} 行 - 删除:-{deletions} 行 📝 主要变更: - {change_summary_1} - {change_summary_2} ⚠️ 关注点: - {risk_point_1} - {risk_point_2} 🔗 关联需求:{requirement_title} 🔗 PR 链接:{pr_url} ## 权限要求 - GitHub MCP(PR 读取权限) - 飞书消息发送权限 - 飞书多维表格读写权限(更新需求状态)

3.4 测试验收 Skill

创建 skills/requirement/requirement-test-verify.md

# requirement-test-verify 测试完成后更新需求状态,生成测试报告摘要。 ## 触发条件 - 用户消息包含"测试通过"、"验收通过"、"测试不通过" - 缺陷表中关联需求的所有缺陷状态变为"已关闭" ## 执行步骤 ### 测试通过 1. 更新需求状态为"待部署" 2. 统计该需求关联的缺陷数量和修复情况 3. 生成测试报告摘要 4. 通知运维团队准备部署 ### 测试不通过 1. 保持需求状态为"测试中" 2. 自动创建缺陷记录(调用 bug-create) 3. 通知开发负责人 ## 输出格式(测试通过) ✅ 测试验收通过 - 需求:{requirement_title} - 关联缺陷:{bug_count} 个(全部已关闭) - 状态:待部署 - 已通知运维团队 ## 权限要求 - 飞书多维表格读写权限 - 飞书消息发送权限

4. 跨 Skill 编排

完整的多 Agent 配置和编排文件格式见 37d 第 3 节:多 Agent 编排与配置。跨部门 Agent 全链路协作(如线上故障→修复→复盘的 4 Agent 接力)见 37d 3.9 节:跨部门 Agent 全链路协作。本节聚焦研发工作流中 Skill 之间的上下文传递和链式调用。

4.1 编排配置:研发流程状态机

skills/_orchestration/requirement-lifecycle.md 中定义完整的研发流程编排(详见 37d 3.6 节)。核心是将第 1 节的状态机转化为 OpenClaw 可执行的编排配置:

# requirement-lifecycle 需求全生命周期编排。 ## 编排类型 事件驱动状态机 ## 状态转换定义 ### 待评审 → 已通过 - 触发:飞书卡片回调,action = "approve" - 执行:requirement-status-change(PM Agent) - 自动链式触发:requirement-prd-generate(PM Agent) - 委派:dev-agent → code-issue-create ### 已通过 → 开发中 - 触发:PM 确认 PRD + 设计评审通过 - 执行:requirement-status-change(PM Agent) ### 开发中 → 待审查 - 触发:GitHub PR 创建事件 - 执行:code-pr-review(Dev Agent) - 读取共享记忆:requirement_{id} ### 待审查 → 测试中 - 触发:GitHub PR 合并事件 - 执行:requirement-status-change(PM Agent) ### 测试中 → 待部署 - 触发:用户消息"测试通过" - 执行:requirement-test-verify(PM Agent) - 委派:dev-agent → ops-deploy-trigger(需人工确认) ### 待部署 → 已上线 - 触发:运维确认部署(飞书卡片回调) - 执行:requirement-status-change(PM Agent) - 通知:项目群上线公告

这个编排文件让 OpenClaw 知道”什么事件触发什么 Skill、由哪个 Agent 执行、需不需要委派”,而不是完全依赖 LLM 隐式判断。

4.2 记忆系统传递上下文

OpenClaw 的记忆系统是 Skill 之间传递上下文的核心机制。每个 Skill 执行后将结果写入记忆,下一个 Skill 可以读取。

requirement-create │ 写入记忆:requirement_rec001 = {title, priority, status, creator} requirement-prd-generate │ 读取记忆:requirement_rec001 │ 写入记忆:prd_doc_token = {doc_token, doc_url} code-pr-review │ 读取记忆:requirement_rec001, prd_doc_token │ 写入记忆:pr_info = {pr_number, pr_url, review_summary} requirement-test-verify │ 读取记忆:requirement_rec001, pr_info │ 写入记忆:test_result = {passed, bug_count} ops-deploy-trigger 读取记忆:requirement_rec001, pr_info, test_result

4.3 记忆键命名规范

记忆键格式说明示例
requirement_{record_id}需求详情requirement_rec001
bug_{record_id}缺陷详情bug_rec042
prd_{requirement_id}PRD 文档信息prd_rec001
pr_{pr_number}PR 信息pr_156
sprint_{sprint_name}迭代信息sprint_2026-W28
deploy_{date}部署记录deploy_2026-07-15

4.4 Skill 链式调用

某些场景需要一个 Skill 主动触发另一个 Skill:

## 链式调用示例:需求通过 → 自动生成 PRD requirement-status-change Skill 检测到状态变为"已通过"后: 1. 更新多维表格状态 2. 将需求信息写入记忆 3. 在回复消息中提示:"需求已通过,正在自动生成 PRD..." 4. OpenClaw 识别到需要调用 requirement-prd-generate 5. requirement-prd-generate 从记忆中读取需求信息,生成 PRD

4.5 错误处理和重试

错误类型处理策略
MCP 工具调用超时自动重试 1 次,仍失败则通知用户
飞书 API 限流等待 1 秒后重试,最多 3 次
LLM 生成内容不符合格式重新生成 1 次,附加更严格的格式约束
记忆读取失败从多维表格重新查询数据
权限不足立即通知用户,不重试

5. Human-in-the-Loop 设计

5.1 审批节点

审批节点审批人审批方式超时处理
需求评审产品负责人飞书消息卡片(通过/拒绝)24h 未处理提醒,48h 升级到 CTO
PRD 审阅产品经理飞书文档评论 + 确认消息24h 提醒
设计评审设计负责人 + 技术负责人飞书消息卡片24h 提醒
代码审查指定 ReviewerGitHub PR Review48h 未处理自动提醒
测试验收测试负责人飞书消息卡片24h 提醒
部署确认运维 + 技术负责人飞书消息卡片(双重确认)不超时,必须人工确认

5.2 飞书消息卡片交互

需求评审的消息卡片示例:

{ "msg_type": "interactive", "card": { "header": { "title": { "tag": "plain_text", "content": "📋 需求评审" }, "template": "blue" }, "elements": [ { "tag": "div", "text": { "tag": "lark_md", "content": "**需求标题**:新增 Solana 课程模块\n**优先级**:P1\n**提出人**:张三\n**描述**:用户对 Solana 生态学习需求增长,需要新增完整的 Solana 开发课程,包含基础、智能合约、DApp 开发三个阶段。" } }, { "tag": "action", "actions": [ { "tag": "button", "text": { "tag": "plain_text", "content": "✅ 通过" }, "type": "primary", "value": { "action": "approve", "record_id": "rec001" } }, { "tag": "button", "text": { "tag": "plain_text", "content": "❌ 拒绝" }, "type": "danger", "value": { "action": "reject", "record_id": "rec001" } }, { "tag": "button", "text": { "tag": "plain_text", "content": "💬 需要讨论" }, "value": { "action": "discuss", "record_id": "rec001" } } ] } ] } }

5.3 超时升级机制

审批请求发出 ├─→ 24h 内确认 → 正常流转 ├─→ 24h 未确认 → 发送提醒消息 │ │ │ ├─→ 48h 内确认 → 正常流转 │ │ │ └─→ 48h 未确认 → 升级到上级审批人 └─→ 部署确认:无超时,必须人工确认

6. 完整示例:HackQuest “新增 Solana 课程模块”

以下演示一个需求从提出到上线的完整 Agent 辅助流程。

6.1 第一步:需求提出

张三(前端开发)在飞书群 @机器人:

@HackQuest AI Agent 创建一个 P1 需求:新增 Solana 课程模块,包含 Solana 基础、智能合约开发、DApp 实战三个阶段,目标用户是有以太坊基础的开发者

Agent 回复:

✅ 需求已创建

  • 标题:新增 Solana 课程模块
  • 优先级:P1
  • 状态:待评审
  • 模块:课程
  • 多维表格:查看 

已通知评审群,等待评审。

同时,Agent 在需求评审群发送消息卡片(含通过/拒绝按钮)。

6.2 第二步:需求评审

李四(产品负责人)点击消息卡片的”✅ 通过”按钮。

Agent 自动执行:

  1. 更新需求状态为”已通过”
  2. 自动触发 PRD 生成

Agent 回复:

✅ 需求”新增 Solana 课程模块”已通过评审 正在自动生成 PRD…

6.3 第三步:PRD 生成

Agent 自动执行(无需人工触发):

  1. 从记忆读取需求详情
  2. 检索知识库中的相关文档(课程体系架构、已有课程模板、Solana 技术资料)
  3. 生成 PRD 文档

Agent 回复:

📄 PRD 已生成

  • 需求:新增 Solana 课程模块
  • PRD 文档:查看 
  • 状态:AI 生成-待审阅

请 @李四 审阅后确认。

6.4 第四步:设计与开发

李四审阅 PRD 后确认 → Agent 更新状态为”设计中”

设计完成后,设计评审通过 → Agent 更新状态为”开发中”

张三在 GitHub 创建 PR:

PR #156: feat: add solana course module

Agent 自动检测到 PR 创建,生成审查摘要:

🔍 PR 审查摘要:#156 feat: add solana course module

📊 变更统计:

  • 文件数:23
  • 新增:+1,850 行
  • 删除:-120 行

📝 主要变更:

  • 新增 Solana 课程数据模型和 API
  • 新增课程页面组件(3 个阶段)
  • 更新课程导航配置

⚠️ 关注点:

  • 缺少单元测试文件
  • api/courses/solana.ts 中有硬编码的 RPC 端点

🔗 关联需求:新增 Solana 课程模块 🔗 PR 链接:https://github.com/hackquest/web/pull/156 

6.5 第五步:测试与部署

CR 通过,PR 合并 → Agent 更新需求状态为”测试中”

测试通过后,王五(测试)@机器人:

@HackQuest AI Agent 需求”新增 Solana 课程模块”测试通过

Agent 回复:

✅ 测试验收通过

  • 需求:新增 Solana 课程模块
  • 关联缺陷:2 个(全部已关闭)
  • 状态:待部署
  • 已通知运维团队

Agent 在运维群发送部署确认卡片 → 运维确认后触发部署 → 部署完成后 Agent 更新状态为”已上线”

6.6 全流程时间线

时间事件Agent 行为人工操作
Day 1 09:00张三提出需求创建记录,通知评审群张三 @机器人
Day 1 14:00李四评审通过更新状态,触发 PRD 生成李四点击”通过”
Day 1 14:05PRD 生成完成创建文档,通知 PM
Day 2 10:00PRD 审阅通过更新状态为”设计中”李四确认
Day 3 16:00设计评审通过更新状态为”开发中”设计评审会
Day 7 11:00张三提交 PR生成审查摘要,关联需求张三提交 PR
Day 8 15:00CR 通过更新状态为”测试中”Reviewer 合并
Day 10 17:00测试通过更新状态,通知运维王五确认
Day 11 10:00部署上线更新状态为”已上线”运维确认部署

整个流程中,Agent 自动完成了 12 次状态更新、3 次通知发送、1 次 PRD 生成、1 次 PR 审查摘要。人工只需要在 6 个关键节点做确认操作。


7. 工具与资源推荐

工具用途价格适用场景
OpenClaw 记忆系统Skill 间上下文传递内置免费所有跨 Skill 编排
飞书消息卡片Human-in-the-Loop 审批免费需求评审、部署确认
GitHub MCP ServerPR 检测和代码审查开源免费代码 Skill
Mermaid状态机可视化开源免费流程文档

下一篇: 37g 数据分析与运营 Agent — 搭建数据查询和运营分析 Agent,实现即时数据洞察

Last updated on