312 lines
10 KiB
Markdown
312 lines
10 KiB
Markdown
|
|
# 阶段 3:执行访谈并收集需求 - 详细指南
|
|||
|
|
|
|||
|
|
本指南详细说明访谈阶段的执行流程和规范。
|
|||
|
|
|
|||
|
|
## 步骤 1:读取配置文件
|
|||
|
|
|
|||
|
|
根据项目类型读取对应的配置文件:
|
|||
|
|
|
|||
|
|
- **配置路径**:`D:\AA_Work\AIEC-团队开发规范Skills\.claude\skills\requirement-generator-v1\assets\{project_type}.md`
|
|||
|
|
- **特殊情况**:如项目类型为"未知",使用开放式访谈
|
|||
|
|
|
|||
|
|
### 从配置文件提取
|
|||
|
|
|
|||
|
|
- 示例问题(YAML 格式)
|
|||
|
|
- 访谈策略指南
|
|||
|
|
- 信息完整性要求
|
|||
|
|
- 选项设计规范
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 步骤 2:分析用户初始描述
|
|||
|
|
|
|||
|
|
评估用户初始输入的信息完整度,动态决定访谈起点。
|
|||
|
|
|
|||
|
|
### 信息完整度评估
|
|||
|
|
|
|||
|
|
根据用户在阶段1的描述,判断哪些信息已经明确:
|
|||
|
|
|
|||
|
|
- **已明确任务/功能** → 跳过"主要任务"问题
|
|||
|
|
- **已说明使用场景** → 跳过或简化"使用场景"问题
|
|||
|
|
- **已提到价值/目标** → 跳过"预期价值"问题
|
|||
|
|
- **已描述复杂流程/多步骤** → 主动询问 Multi-Agent 需求
|
|||
|
|
- **已提及外部系统** → 深入询问数据集成细节
|
|||
|
|
- **已涉及性能/安全** → 追问具体指标
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 步骤 3:执行动态访谈
|
|||
|
|
|
|||
|
|
### 访谈原则
|
|||
|
|
|
|||
|
|
1. **动态调整**:基于用户初始描述动态选择问题,避免机械执行
|
|||
|
|
2. **工具使用**:使用 AskUserQuestion 工具进行所有提问
|
|||
|
|
3. **选项设计原则**:
|
|||
|
|
- **互斥性**:单选问题的选项应完全互斥,避免重叠
|
|||
|
|
- **维度统一**:同一问题的选项应属于同一维度(如都是"交互方式"或都是"数据来源")
|
|||
|
|
- **边界清晰**:选项描述明确,用户能清楚判断应选哪个
|
|||
|
|
- **数量要求**:单选2-6个选项,多选4-10个选项
|
|||
|
|
- **multiSelect判断**:如果用户合理地可能同时需要多个选项,使用多选
|
|||
|
|
4. **系统功能**:系统自动添加"Type something"选项,在 question 文本中提示用户可使用
|
|||
|
|
5. **语言风格**:使用业务语言,专注业务需求而非技术实现
|
|||
|
|
|
|||
|
|
### 交互澄清处理流程
|
|||
|
|
|
|||
|
|
#### 触发交互澄清的情况(满足任一即触发)
|
|||
|
|
|
|||
|
|
1. **用户回答包含问号**(最高优先级):
|
|||
|
|
- 中文问号"?"或英文问号"?"
|
|||
|
|
- 示例:"PubMed够用吗?"、"这个选项是什么意思?"
|
|||
|
|
- **规则**:只要包含问号,必须进入交互澄清
|
|||
|
|
|
|||
|
|
2. **用户明确请求帮助**:
|
|||
|
|
- 输入"需要帮助"、"不确定"、"不清楚"、"帮我选"等
|
|||
|
|
|
|||
|
|
3. **用户回答包含不明确的指代或描述**(必须澄清):
|
|||
|
|
- 使用不具体的指代词:"那些常见的..."、"类似的..."、"这一类..."
|
|||
|
|
- 提及存在但未明确的事物:"还有一些..."、"以及其他..."、"相关的..."
|
|||
|
|
- 使用泛化表述:"所有..."、"一般的..."、"常用的..."
|
|||
|
|
- 示例:"还有那些常见的精神疾病领域的文献数据库" → 需要澄清具体是哪些
|
|||
|
|
|
|||
|
|
4. **用户回答包含其他模糊表述**:
|
|||
|
|
- 反问或转移决策:"你觉得呢"、"应该选什么"
|
|||
|
|
- 明确的不确定表述:"不太确定"、"可能是..."、"大概..."
|
|||
|
|
- 无关或过于简短的回答:"随便"、"都行"、"看着办"
|
|||
|
|
|
|||
|
|
5. **用户对问题未作任何选择**(留空):
|
|||
|
|
- 用户跳过问题,未选择任何预设选项,也未在"其他"中输入内容
|
|||
|
|
- 需要确认是遗漏、不确定、还是认为问题不适用
|
|||
|
|
- 示例:多选问题返回空数组,或单选问题无选择
|
|||
|
|
- **规则**:必须进入交互澄清,询问用户原因
|
|||
|
|
|
|||
|
|
#### 处理流程
|
|||
|
|
|
|||
|
|
**第1步:切换到自由对话**
|
|||
|
|
|
|||
|
|
向用户输出:
|
|||
|
|
```markdown
|
|||
|
|
您在【{问题名称}】{选择了需要帮助 / 回答较为模糊}。
|
|||
|
|
|
|||
|
|
原问题的选项包括:
|
|||
|
|
- {选项1}:{描述}
|
|||
|
|
- {选项2}:{描述}
|
|||
|
|
...
|
|||
|
|
|
|||
|
|
请说明您的疑问或需要讨论的内容。
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**第2步:多轮自由讨论**
|
|||
|
|
|
|||
|
|
- 解答用户疑问
|
|||
|
|
- 提供背景知识和建议
|
|||
|
|
- 每轮回复末尾必须提示:"请明确您的选择,或回复'继续'返回访谈"
|
|||
|
|
|
|||
|
|
**第3步:判断用户是否明确选择**
|
|||
|
|
|
|||
|
|
**情况A:用户明确了选择**
|
|||
|
|
- 用户回复如"那我选择 PubMed + PsycINFO"、"明白了,我需要..."
|
|||
|
|
- 记录用户的选择
|
|||
|
|
- 用户回复"继续"后,直接进入下一个问题
|
|||
|
|
|
|||
|
|
**情况B:用户未明确选择**
|
|||
|
|
- 用户只回复"继续"、"回到访谈"等
|
|||
|
|
- 恢复到**当前问题**,重新提问
|
|||
|
|
- 根据讨论上下文动态生成新的选项
|
|||
|
|
|
|||
|
|
**示例**:
|
|||
|
|
```
|
|||
|
|
讨论前:您需要访问哪些数据库?
|
|||
|
|
选项:PubMed、学术搜索、专业文献库
|
|||
|
|
|
|||
|
|
讨论后了解到是精神疾病研究,重新生成:
|
|||
|
|
问题:基于您的精神疾病研究需求,需要访问哪些数据库?
|
|||
|
|
选项:PubMed(生物医学)、PsycINFO(心理学)、Cochrane Library(系统评价)、其他专业数据库
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 访谈方式
|
|||
|
|
|
|||
|
|
- **工具使用**:使用 AskUserQuestion 工具,每个问题独立可答
|
|||
|
|
- **节奏控制**:每轮3-4个问题,避免疲劳
|
|||
|
|
- **动态调整**:根据回答动态调整后续问题和选项深度以及详细程度
|
|||
|
|
- **信息分类**:只记录业务需求,用户主动提及的技术约束记录到 user_constraints
|
|||
|
|
- **回答检测**(重要):**每次用户提交回答后,立即检查是否触发澄清条件**
|
|||
|
|
- **优先检查问号**:回答中包含"?"或"?"则必须进入交互澄清
|
|||
|
|
- **检查是否留空**:用户未选择任何选项且未输入内容,必须进入交互澄清
|
|||
|
|
- 检查是否包含"需要帮助"、"不确定"等关键词
|
|||
|
|
- 检查是否包含模糊指代或描述(见上文触发条件)
|
|||
|
|
- 如触发任一条件,立即进入交互澄清流程,不继续后续问题
|
|||
|
|
- 只有用户回答明确具体时,才继续下一轮问题
|
|||
|
|
|
|||
|
|
### 信息收集范围
|
|||
|
|
|
|||
|
|
访谈应尽可能收集以下信息:
|
|||
|
|
|
|||
|
|
**业务信息**:
|
|||
|
|
- 项目背景和目标
|
|||
|
|
- 核心功能列表
|
|||
|
|
- 目标用户和使用场景
|
|||
|
|
- 预期效果和价值
|
|||
|
|
|
|||
|
|
**功能信息**:
|
|||
|
|
- 输入输出定义
|
|||
|
|
- 需要访问的外部数据和系统
|
|||
|
|
- 完整交互流程
|
|||
|
|
- **分阶段交付计划(必须收集)**:
|
|||
|
|
- **收集方式**:
|
|||
|
|
- 使用 AskUserQuestion 工具
|
|||
|
|
- 将之前收集的所有功能列为选项
|
|||
|
|
- **必须询问**:"以下功能中,哪些必须在MVP版本中实现?"(多选)
|
|||
|
|
- **必须询问**:"哪些功能可以在MVP中降级实现?"
|
|||
|
|
- **必须询问**:"哪些功能实现难度大或依赖其他功能?"
|
|||
|
|
- **判断与确认**:
|
|||
|
|
- 根据用户选择综合判断阶段划分
|
|||
|
|
- 生成阶段建议后与用户确认
|
|||
|
|
- 阶段数量灵活:通常2-4个阶段
|
|||
|
|
|
|||
|
|
**约束和标准**:
|
|||
|
|
- 用户明确的技术约束
|
|||
|
|
- 性能和安全要求(业务层面)
|
|||
|
|
- 验收标准
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 步骤 4:信息完整性检查
|
|||
|
|
|
|||
|
|
确保收集以下核心信息后可结束访谈。
|
|||
|
|
|
|||
|
|
### 必需信息(缺一不可)
|
|||
|
|
|
|||
|
|
- ✅ 项目背景和目标
|
|||
|
|
- ✅ 核心功能列表(至少3个)
|
|||
|
|
- ✅ 典型使用场景(至少1个)
|
|||
|
|
- ✅ 基本输入输出
|
|||
|
|
- ✅ 验收标准(至少3条)
|
|||
|
|
- ✅ **分阶段交付计划**(MVP功能、降级功能、难度依赖)
|
|||
|
|
|
|||
|
|
### 可选但建议收集
|
|||
|
|
|
|||
|
|
- Agent架构细节(如需Multi-Agent)
|
|||
|
|
- 外部系统集成需求
|
|||
|
|
- 完整交互流程
|
|||
|
|
- 性能和安全要求
|
|||
|
|
|
|||
|
|
**判断标准**:
|
|||
|
|
- 如果必需信息全部收集完整,可以结束访谈
|
|||
|
|
- 如果关键信息缺失,继续提问补充
|
|||
|
|
- 如果用户表示"暂时没有更多信息",可以结束访谈
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 步骤 5:保存访谈结果
|
|||
|
|
|
|||
|
|
生成结构化 JSON 并保存到 `temp/interview_result.json`。
|
|||
|
|
|
|||
|
|
### JSON 格式
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"project_info": {
|
|||
|
|
"type": "项目类型"
|
|||
|
|
},
|
|||
|
|
"requirements": {
|
|||
|
|
"background": "项目背景和目标",
|
|||
|
|
"objectives": "预期效果和价值",
|
|||
|
|
"target_users": "目标用户描述",
|
|||
|
|
"core_features": ["功能1", "功能2"],
|
|||
|
|
"use_cases": [
|
|||
|
|
{
|
|||
|
|
"scenario": "场景描述",
|
|||
|
|
"trigger": "触发方式",
|
|||
|
|
"steps": ["步骤1", "步骤2"],
|
|||
|
|
"expected_result": "预期结果"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"input_output": {
|
|||
|
|
"input": "输入信息",
|
|||
|
|
"output": "输出结果"
|
|||
|
|
},
|
|||
|
|
"data_access": ["数据源或系统"],
|
|||
|
|
"business_constraints": ["业务约束"],
|
|||
|
|
"non_functional": {
|
|||
|
|
"performance": "性能要求",
|
|||
|
|
"security": "安全要求",
|
|||
|
|
"scale": "使用规模"
|
|||
|
|
},
|
|||
|
|
"acceptance_criteria": ["标准1", "标准2"]
|
|||
|
|
},
|
|||
|
|
"delivery_plan": {
|
|||
|
|
"phases": [
|
|||
|
|
{
|
|||
|
|
"phase_number": 1,
|
|||
|
|
"goal": "阶段目标描述",
|
|||
|
|
"features": ["功能1", "功能2"]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"phase_number": 2,
|
|||
|
|
"goal": "阶段目标描述",
|
|||
|
|
"features": ["功能3", "功能4"]
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"phase_rationale": "阶段划分理由"
|
|||
|
|
},
|
|||
|
|
"user_constraints": {
|
|||
|
|
"explicit_tech_constraints": ["用户明确提出的技术约束"]
|
|||
|
|
},
|
|||
|
|
"documentation": {
|
|||
|
|
"recommended_template": "推荐模板路径"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 保存操作
|
|||
|
|
|
|||
|
|
使用 Write 工具保存文件到 `temp/interview_result.json`。
|
|||
|
|
|
|||
|
|
**注意事项**:
|
|||
|
|
- 确保 JSON 格式正确
|
|||
|
|
- 所有必需字段都有值(即使为空字符串或空数组)
|
|||
|
|
- user_constraints 只记录用户明确提出的技术约束
|
|||
|
|
- recommended_template 根据项目类型填写对应的模板路径
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 访谈技巧和注意事项
|
|||
|
|
|
|||
|
|
### 提问技巧
|
|||
|
|
|
|||
|
|
1. **由浅入深**:从用户熟悉的业务问题入手,逐步深入细节
|
|||
|
|
2. **具体化引导**:当用户回答笼统时,通过具体例子引导
|
|||
|
|
3. **二次确认**:关键信息要通过不同角度的问题交叉验证
|
|||
|
|
4. **示例激发**:通过类似项目的例子帮助用户思考
|
|||
|
|
|
|||
|
|
### 常见问题处理
|
|||
|
|
|
|||
|
|
**问题1:用户不知道如何回答**
|
|||
|
|
- 提供2-3个具体例子
|
|||
|
|
- 说明为什么需要这个信息
|
|||
|
|
- 允许用户选择"暂时不确定"
|
|||
|
|
|
|||
|
|
**问题2:用户描述过于技术化**
|
|||
|
|
- 引导回到业务价值:"这个技术能解决什么业务问题?"
|
|||
|
|
- 询问用户体验:"用户会如何使用?"
|
|||
|
|
- 关注目标:"希望达到什么效果?"
|
|||
|
|
|
|||
|
|
**问题3:用户需求矛盾**
|
|||
|
|
- 当场指出矛盾点
|
|||
|
|
- 请用户澄清优先级
|
|||
|
|
- 记录为待确认问题
|
|||
|
|
|
|||
|
|
### 质量控制
|
|||
|
|
|
|||
|
|
- ✅ 每个问题都有明确答案
|
|||
|
|
- ✅ 避免引导性问题
|
|||
|
|
- ✅ 确认关键术语的含义
|
|||
|
|
- ✅ 记录用户的原话(特别是关键需求)
|
|||
|
|
- ✅ 区分"必须有"和"最好有"
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 流程结束
|
|||
|
|
|
|||
|
|
完成保存访谈结果后,阶段3结束,进入阶段4生成需求文档。
|