SecondMe 产品需求定义
通过对话式交互帮助开发者明确产品需求,根据已选功能模块针对性提问。
工具使用: 收集用户输入时使用 AskUserQuestion 工具,支持单选和多选问题。
前置条件检查
在开始之前,检查项目状态:
-
检查
.secondme/state.json是否存在- 不存在 → 提示:
请先运行 /secondme-init 初始化项目配置 - 存在 → 继续
- 不存在 → 提示:
-
检查 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
然后询问:
基于以上能力,你想要构建什么类型的应用?
第二轮:收集核心需求
提问:
- 应用目标:你的应用主要解决什么问题?
- 目标用户:这个应用是给谁用的?
收集用户回答,形成需求概要。
第三轮:功能细化
根据已选模块,针对性提问:
如果选了 chat 模块:
- 是否需要保存会话历史到本地数据库?
- 对话界面有什么偏好?(单轮对话/多轮会话列表)
- 需要显示 AI 的思考过程吗?
如果选了 act 模块:
- 需要判断哪些动作?(如:用户意图分类、情感倾向、是否满足某个条件)
- 输出的 JSON 结构是什么?(如:
{"is_liked": boolean}、{"intent": "like"|"dislike"|"neutral"}) - 判断结果会驱动什么业务逻辑?(如:自动点赞/收藏、路由跳转、条件触发)
如果选了 profile 模块:
- 需要展示哪些用户信息?(头像、昵称、兴趣标签、软记忆)
- 用户信息展示在什么位置?(个人主页/侧边栏/顶部导航)
如果选了 note 模块:
- 什么场景下用户会添加笔记?
- 添加笔记后需要什么反馈?
第四轮:设计偏好
提问:
-
界面风格:你希望什么样的视觉风格?
- 简约现代
- 温馨可爱
- 专业商务
- 其他(请描述)
-
配色偏好:有特别喜欢的颜色吗?(可选)
第五轮:需求确认
汇总收集的信息,展示需求摘要:
📋 产品需求摘要
应用概要:[用户描述的应用目标]
核心功能:
- [功能1]
- [功能2]
- [功能3]
目标用户:[用户描述]
设计偏好:[界面风格]
确认以上需求是否正确?
用户确认后,进入下一步。
更新 state.json
确认需求后,更新 .secondme/state.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 轮对话,避免过长