--- name: secondme-prd description: 通过对话定义产品需求,根据已选模块针对性提问,更新 state.json user-invocable: true --- # SecondMe 产品需求定义 通过对话式交互帮助开发者明确产品需求,根据已选功能模块针对性提问。 **工具使用:** 收集用户输入时使用 `AskUserQuestion` 工具,支持单选和多选问题。 --- ## 前置条件检查 在开始之前,检查项目状态: 1. **检查 `.secondme/state.json` 是否存在** - 不存在 → 提示:`请先运行 /secondme-init 初始化项目配置` - 存在 → 继续 2. **检查 stage 字段** - `stage == "init"` → 正常继续 PRD 对话 - `stage == "prd"` 或 `"ready"` → 询问:`已有 PRD 定义,是否要重新定义需求?` - 用户确认 → 继续 - 用户取消 → 退出 --- ## 对话流程 ### 第一轮:展示 API 能力 读取 `state.json` 中的 `modules` 字段,根据已选模块展示相关 API 能力: **auth 模块(必有)**: - 用户登录和授权 - Access Token 和 Refresh Token 管理 - 用户身份验证 **profile 模块**(如已选): - 获取用户基础信息(昵称、头像) - 获取用户兴趣标签(Shades) - 获取用户软记忆/知识库 **chat 模块**(如已选): - 与 SecondMe AI 进行流式对话 - 获取历史会话列表 - 获取会话消息记录 **act 模块**(如已选): - 结构化动作判断:让 AI 输出合法 JSON 对象,用于意图分类、情感分析、条件判断等决策场景 - 通过 actionControl 定义输出的 JSON 结构和判断规则 **note 模块**(如已选): - 添加笔记/记忆到用户的 SecondMe 然后询问: > 基于以上能力,你想要构建什么类型的应用? --- ### 第二轮:收集核心需求 提问: 1. **应用目标**:你的应用主要解决什么问题? 2. **目标用户**:这个应用是给谁用的? 收集用户回答,形成需求概要。 --- ### 第三轮:功能细化 根据已选模块,针对性提问: **如果选了 chat 模块**: - 是否需要保存会话历史到本地数据库? - 对话界面有什么偏好?(单轮对话/多轮会话列表) - 需要显示 AI 的思考过程吗? **如果选了 act 模块**: - 需要判断哪些动作?(如:用户意图分类、情感倾向、是否满足某个条件) - 输出的 JSON 结构是什么?(如:`{"is_liked": boolean}`、`{"intent": "like"|"dislike"|"neutral"}`) - 判断结果会驱动什么业务逻辑?(如:自动点赞/收藏、路由跳转、条件触发) **如果选了 profile 模块**: - 需要展示哪些用户信息?(头像、昵称、兴趣标签、软记忆) - 用户信息展示在什么位置?(个人主页/侧边栏/顶部导航) **如果选了 note 模块**: - 什么场景下用户会添加笔记? - 添加笔记后需要什么反馈? --- ### 第四轮:设计偏好 提问: 1. **界面风格**:你希望什么样的视觉风格? - 简约现代 - 温馨可爱 - 专业商务 - 其他(请描述) 2. **配色偏好**:有特别喜欢的颜色吗?(可选) --- ### 第五轮:需求确认 汇总收集的信息,展示需求摘要: ``` 📋 产品需求摘要 应用概要:[用户描述的应用目标] 核心功能: - [功能1] - [功能2] - [功能3] 目标用户:[用户描述] 设计偏好:[界面风格] 确认以上需求是否正确? ``` 用户确认后,进入下一步。 --- ## 更新 state.json 确认需求后,更新 `.secondme/state.json`: ```json { "version": "1.0", "stage": "prd", "modules": ["auth", "chat"], "config": { ... }, "prd": { "summary": "应用概要描述", "features": [ "功能1描述", "功能2描述", "功能3描述" ], "target_users": "目标用户描述", "design_preference": "简约现代" } } ``` --- ## 输出结果 ``` ✅ 产品需求已定义! 概要:[summary] 功能列表: - [feature 1] - [feature 2] 设计偏好:[design_preference] 已保存到 .secondme/state.json 下一步:运行 /secondme-nextjs 生成项目 ``` --- ## 中断处理 如果用户主动要求中止或取消 PRD 定义: - 询问是否保存已收集的部分信息 - 如果保存:写入 `state.json` 的 `prd` 字段,保持 `stage` 为 `"init"` - 下次运行 `/secondme-prd` 时可以继续或重新开始 --- ## 注意事项 - 对话应该自然流畅,不要机械地问答 - 根据用户回答调整后续问题 - 如果用户回答模糊,可以追问澄清 - 最多 5 轮对话,避免过长