Files
AIEC_Skills/.claude/skills/requirement-generator-v1/references/phase3_interview_guide.md
2025-12-11 14:19:36 +08:00

10 KiB
Raw Blame History

阶段 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步切换到自由对话

向用户输出:

您在【{问题名称}】{选择了需要帮助 / 回答较为模糊}。

原问题的选项包括:
- {选项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 格式

{
  "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生成需求文档。