Skip to content

26.5 Interview Mode

Interview Mode概述

Interview Mode(交互式询问模式)是Claude Code的一项核心功能,它通过AskUserQuestion工具在自动化工作流中插入人工决策点,允许AI Agent在执行任务过程中主动向用户提问,以获取关键信息、确认决策或澄清需求。

Thariq推荐的基于规范的开发方法

Claude Code的工程师Thariq在推特中分享了他使用Interview Mode的最佳实践:

my favorite way to use Claude Code to build large features is spec based start with a minimal spec or prompt and ask Claude to interview you using the AskUserQuestionTool then make a new session to execute the spec

这种基于规范的开发方法已成为Claude Code用户构建大型功能的首选方式,它通过前置决策过程确保AI准确理解需求,从而提高开发效率和质量。

Interview Mode的核心概念

1. 什么是Interview Mode

Interview Mode是Claude Code的一种交互范式,具有以下特点:

  • 主动询问 :AI在执行任务过程中主动向用户提问,而不是被动等待用户输入
  • 上下文感知 :基于当前任务上下文提出相关问题,确保询问的针对性
  • 灵活决策 :根据用户的回答动态调整执行路径
  • 工作流集成 :可作为工作流中的独立节点使用,与其他组件无缝协作
  • 多轮对话 :支持复杂的多轮交互式决策过程

2. Interview Mode的工作原理

bash


┌─────────────┐     ┌─────────────────┐     ┌─────────────────┐
│ AI执行任务   │────▶│ 需要用户输入   │────▶│ 生成问题       │
└─────────────┘     └─────────────────┘     └─────────────────┘
                               ▲                      │
                               │                      ▼
┌─────────────┐     ┌─────────────────┐     ┌─────────────────┐
│ 继续执行任务 │◀────│ 处理用户回答   │◀────│ 用户回答问题   │
└─────────────┘     └─────────────────┘     └─────────────────┘

Interview Mode的核心工具:AskUserQuestion

1. AskUserQuestion工具概述

AskUserQuestion是Claude Code中用于实现Interview Mode的核心工具,它允许AI在执行工作流时向用户提出问题并获取回答。

工具参数

  • question:要向用户提出的问题(必填)
  • options:可选的预定义答案列表(数组格式)
  • default:默认答案(如果用户未提供回答)
  • required:是否为必填问题(布尔值,默认为false)
  • description:问题的详细描述或上下文信息
  • multiple:是否允许选择多个答案(布尔值,默认为false)

2. AskUserQuestion在工作流中的使用

在Claude Code工作流中,AskUserQuestion通常与其他节点配合使用,如条件分支(IfElse/Switch)、子代理(AI任务)等:

    bash


    ┌─────────────┐     ┌─────────────────┐     ┌─────────────────┐
    │ 启动任务    │────▶│ AskUserQuestion │────▶│ IfElse/Switch   │
    └─────────────┘     └─────────────────┘     └─────────────────┘
                                   │                      │
                                   │                      ▼
                                   │               ┌─────────────────┐
                                   │               │ 执行分支1       │
                                   │               └─────────────────┘
                                   │                      │
                                   │                      ▼
                                   │               ┌─────────────────┐
                                   └──────────────▶│ 执行分支2       │
                                                   └─────────────────┘

## 基于规范的开发流程


Thariq推荐的基于规范的开发方法包含三个主要阶段:

### 阶段1:使用Interview Mode构建规范

从一个最小化的规范或提示开始,让Claude使用`AskUserQuestion`工具对你进行访谈:

    bash


    $ claude "帮我构建一个待办事项应用的规范" --interview

    我需要了解一些细节来为您创建待办事项应用的规范:

    1. 应用类型:桌面应用、Web应用还是移动应用?
    2. 核心功能需求:
       - 用户认证
       - 任务管理(创建、编辑、删除)
       - 任务分类
       - 提醒功能
       - 数据同步
    3. 技术栈偏好:
       - 前端框架
       - 后端技术
       - 数据库
    4. 设计风格要求:
       - 简约风格
       - 现代风格
       - 自定义风格

### 阶段2:生成详细规范文档

基于访谈结果,Claude会生成一个详细的规范文档:

    markdown


    # 待办事项应用规范

    ## 应用概述
    Web应用,提供任务管理和提醒功能

    ## 核心功能
    1. 用户认证
       - 注册/登录
       - 密码重置
       - 邮箱验证

    2. 任务管理
       - 创建任务(标题、描述、截止日期、优先级)
       - 编辑任务
       - 删除任务
       - 标记完成/未完成

    3. 任务分类
       - 创建分类
       - 任务分配到分类
       - 按分类筛选

    4. 提醒功能
       - 截止日期提醒
       - 自定义提醒时间

    5. 数据同步
       - 实时同步
       - 离线支持

    ## 技术栈
    - 前端:React + TypeScript + Tailwind CSS
    - 后端:Node.js + Express
    - 数据库:MongoDB
    - 认证:JWT

    ## 设计风格
    现代简约风格,支持深色/浅色主题切换

### 阶段3:执行规范实现功能

创建一个新会话,使用生成的规范作为输入,Claude会按照规范实现完整的应用:

    bash


    $ claude "根据待办事项应用规范实现完整功能"

## Interview Mode的使用方法

### 1\. 在命令行中使用Interview Mode

在Claude Code命令行界面中,当AI需要用户输入时会自动进入Interview Mode,主动提出问题:

    bash


    $ claude "帮我创建一个Web应用"

    我需要了解一些细节来为您创建Web应用:

    1. 您希望使用什么前端框架?(React, Vue, Angular, 或其他)
    2. 您希望使用什么后端技术?(Node.js, Python, Java, 或其他)
    3. 您需要数据库支持吗?如果需要,您偏好哪种数据库?
    4. 应用需要哪些核心功能?
    5. 您有特定的设计风格或布局要求吗?

    请提供您的选择,或者直接按Enter接受默认值。

### 2\. 在工作流中使用AskUserQuestion节点

在Claude Code Workflow Studio中,可以通过拖拽AskUserQuestion节点来创建交互式工作流:

yaml
    yaml


    # 工作流示例:创建项目结构
    name: "创建项目结构"
    description: "根据用户选择创建不同类型的项目结构"

    nodes:
      - id: "start"
        type: "start"
        next: "ask_project_type"

      - id: "ask_project_type"
        type: "AskUserQuestion"
        question: "您希望创建什么类型的项目?"
        options:
          - "前端项目"
          - "后端项目"
          - "全栈项目"
          - "移动应用"
        required: true
        next: "project_type_branch"

      - id: "project_type_branch"
        type: "IfElse"
        condition: "${ask_project_type.result}"
        branches:
          - value: "前端项目"
            next: "create_frontend_project"
          - value: "后端项目"
            next: "create_backend_project"
          - value: "全栈项目"
            next: "create_fullstack_project"
          - value: "移动应用"
            next: "create_mobile_project"

      - id: "create_frontend_project"
        type: "subagent"
        prompt: "创建一个现代前端项目结构,包含React框架和Vite构建工具"
        next: "end"

      - id: "create_backend_project"
        type: "subagent"
        prompt: "创建一个Node.js后端项目结构,包含Express框架和REST API"
        next: "end"

      - id: "create_fullstack_project"
        type: "subagent"
        prompt: "创建一个全栈项目结构,包含React前端和Node.js后端"
        next: "end"

      - id: "create_mobile_project"
        type: "subagent"
        prompt: "创建一个移动应用项目结构,包含React Native框架"
        next: "end"

      - id: "end"
        type: "end"

### 3\. Interview Mode的编程接口

在Claude Code的编程接口中,可以通过ask_user函数来使用Interview Mode:

python
    python


    # 使用Interview Mode的Python示例
    from claude_code import ClaudeAgent

    agent = ClaudeAgent()

    def create_website():
        # AI主动询问网站类型
        website_type = agent.ask_user(
            question="您希望创建什么类型的网站?",
            options=["博客", "电商网站", "企业官网", "个人作品集"],
            required=True
        )

        # 根据用户回答调整执行逻辑
        if website_type == "博客":
            create_blog()
        elif website_type == "电商网站":
            create_ecommerce()
        elif website_type == "企业官网":
            create_corporate_site()
        elif website_type == "个人作品集":
            create_portfolio()

        # 询问是否需要额外功能(允许多选)
        additional_features = agent.ask_user(
            question="您是否需要添加额外功能?",
            options=["SEO优化", "响应式设计", "社交媒体集成", "支付功能"],
            required=False,
            multiple=True
        )

        if additional_features:
            add_features(additional_features)

        print("网站创建完成!")

    def create_blog():
        print("创建博客网站...")
        # 博客网站创建逻辑

    def create_ecommerce():
        print("创建电商网站...")
        # 电商网站创建逻辑

    def create_corporate_site():
        print("创建企业官网...")
        # 企业官网创建逻辑

    def create_portfolio():
        print("创建个人作品集...")
        # 个人作品集创建逻辑

    def add_features(features):
        print(f"添加额外功能: {', '.join(features)}...")
        # 添加功能的逻辑

    # 执行任务
    create_website()

## Interview Mode的使用场景

### 1\. 需求澄清

当AI需要更详细的需求信息时,可以使用Interview Mode:

    bash


    我需要了解更多关于您的项目需求:

    1. 您的项目预计有多少用户访问量?
       - 少于1000/月
       - 1000-10000/月
       - 10000-100000/月
       - 超过100000/月

    2. 您需要支持哪些语言版本?
    3. 您有特定的性能要求吗?

### 2\. 决策确认

当AI需要用户确认关键决策时,可以使用Interview Mode:

    bash


    我发现项目中存在以下潜在问题:

    1. 数据库连接字符串使用了明文密码
    2. 代码中存在未使用的依赖
    3. 缺乏错误处理机制

    请问您希望我如何处理这些问题?
       - 自动修复所有问题
       - 只修复安全相关问题(数据库密码)
       - 只修复性能相关问题(未使用的依赖)
       - 不修复,只提供建议

### 3\. 配置选择

当AI需要用户选择配置选项时,可以使用Interview Mode:

    bash


    请选择项目的配置选项:

    1. 开发环境:
       - Local(本地开发)
       - Docker(容器化开发)
       - Cloud(云开发环境)

    2. 代码风格:
       - Standard
       - Prettier
       - ESLint

    3. 测试框架:
       - Jest
       - Mocha
       - Cypress

### 4\. 内容确认

当AI生成内容需要用户确认时,可以使用Interview Mode:

    markdown


    我为您的项目生成了以下README文件内容:

    # My Project

    这是一个使用React和Node.js开发的全栈项目,包含以下功能:
    - 用户认证
    - 数据管理
    - API接口

    ## 安装

    ```bash

    npm install
    npm run dev


    请问您是否满意这个README文件?
       - 满意,使用这个版本
       - 需要修改,我来提供具体修改意见
       - 不满意,重新生成

### 5\. 规范构建


使用Interview Mode构建详细的项目规范:
bash


我需要了解一些细节来构建您的项目规范:

1. 项目类型:
   - 前端项目
   - 后端项目
   - 全栈项目
   - 移动应用

2. 核心功能需求:
   - 用户认证
   - 数据管理
   - 第三方集成
   - 其他特殊功能

3. 技术栈偏好:
   - 编程语言
   - 框架和库
   - 数据库
   - 部署方式

4. 项目规模:
   - 小型(1-5人月)
   - 中型(5-15人月)
   - 大型(15人月以上)

5. 交付时间要求:
   - 紧急(1-2周)
   - 短期(2-4周)
   - 中期(1-3个月)
   - 长期(3个月以上)

Interview Mode与其他功能的结合

1. 与Plan Mode结合


Interview Mode可以与Plan Mode结合使用,在生成执行计划前向用户询问关键信息:
bash


我将为您创建一个完整的项目计划,首先需要了解一些关键信息:

1. 项目类型:前端/后端/全栈/移动应用
2. 技术栈偏好:
3. 项目规模:小型/中型/大型
4. 时间期限:
5. 预算限制:

请提供这些信息,我将生成一个详细的项目计划。

2. 与子Agent结合


Interview Mode可以与子Agent结合,为子Agent提供必要的输入信息:

```yaml
    yaml


    # 工作流示例:多Agent协作
    name: "多Agent项目开发"
    description: "基于用户需求开发完整项目"

    nodes:
      - id: "start"
        type: "start"
        next: "ask_requirements"

      - id: "ask_requirements"
        type: "AskUserQuestion"
        question: "请描述您的项目需求"
        required: true
        next: "plan_agent"

      - id: "plan_agent"
        type: "subagent"
        prompt: "根据用户需求生成详细的项目计划"
        next: "ask_approval"

      - id: "ask_approval"
        type: "AskUserQuestion"
        question: "您是否批准这个项目计划?"
        options: ["批准", "修改", "拒绝"]
        required: true
        next: "approval_branch"

      - id: "approval_branch"
        type: "IfElse"
        condition: "${ask_approval.result}"
        branches:
          - value: "批准"
            next: "execute_agent"
          - value: "修改"
            next: "ask_requirements"
          - value: "拒绝"
            next: "end"

      - id: "execute_agent"
        type: "subagent"
        prompt: "根据批准的计划执行项目开发"
        next: "end"

      - id: "end"
        type: "end"

### 3\. 与条件分支结合

Interview Mode可以与条件分支结合,根据用户的回答选择不同的执行路径:

python
    python


    # 示例:根据用户选择执行不同的优化策略
    def optimize_website():
        # 询问用户的优化目标
        optimization_goal = agent.ask_user(
            question="您的网站优化主要目标是什么?",
            options=["加载速度", "SEO排名", "用户体验", "转化率"]
        )

        # 根据回答选择不同的优化策略
        if optimization_goal == "加载速度":
            optimize_load_speed()
        elif optimization_goal == "SEO排名":
            optimize_seo()
        elif optimization_goal == "用户体验":
            optimize_ux()
        elif optimization_goal == "转化率":
            optimize_conversion()

## Interview Mode的最佳实践

### 1\. 清晰的问题表述

    python


    # 不好的问题
    question = "您想要什么?"

    # 好的问题
    question = "您希望创建哪种类型的网站?(博客、电商、企业官网或个人作品集)"

### 2\. 提供合理的选项

    python


    # 不好的选项
    options = ["选项1", "选项2", "选项3"]

    # 好的选项
    options = ["博客", "电商网站", "企业官网", "个人作品集"]

### 3\. 控制问题数量

    python


    # 不好的做法:一次性问太多问题
    questions = [
        "您的项目类型是什么?",
        "您使用什么技术栈?",
        "项目规模有多大?",
        "时间期限是什么?",
        "预算限制是什么?",
        "有什么特殊要求?"
    ]

    # 好的做法:分阶段提问
    first_question = "您的项目类型是什么?"
    # 根据回答再提问相关问题

### 4\. 提供默认值

    python


    # 提供默认值,提高效率
    question = "您希望使用哪种开发环境?"
    options = ["Local", "Docker", "Cloud"]
    default = "Local"

### 5\. 基于规范的开发最佳实践


  * **从简单开始** :使用最小化的提示启动Interview Mode
  * **深入细节** :在访谈中逐步深入功能细节
  * **验证理解** :让AI重复关键需求,确保理解正确
  * **文档化规范** :将访谈结果整理成正式的规范文档
  * **分阶段执行** :先构建规范,再执行实现

## Interview Mode的优势

### 1\. 提高任务成功率
指标非交互式模式Interview Mode改善

任务成功率| 70%| 95%| +36% 用户满意度| 75%| 92%| +23% 需求理解准确率| 80%| 98%| +22% 返工率| 25%| 8%| -68%

2. 增强灵活性

  • 处理开放式任务 :能够处理需求不明确的复杂任务
  • 适应变化 :可以根据用户的实时反馈调整执行路径
  • 个性化定制 :生成符合用户特定需求的解决方案

3. 提升用户体验

  • 透明化流程 :用户清楚了解AI的执行思路和决策过程
  • 控制权 :用户在关键节点保持决策控制权
  • 参与感 :用户能够参与到任务执行过程中
## 实际案例:使用Interview Mode构建待办事项应用

### 步骤1:启动Interview Mode构建规范

    bash


    $ claude "帮我构建一个待办事项应用的详细规范" --interview

### 步骤2:回答AI的问题

    bash


    1. 应用类型:Web应用
    2. 核心功能:
       - 用户认证
       - 任务管理
       - 任务分类
       - 提醒功能
    3. 技术栈:React + Node.js + MongoDB
    4. 设计风格:现代简约风格

### 步骤3:获取生成的规范

Claude会根据回答生成详细的规范文档:

    markdown


    # 待办事项应用规范

    ## 1. 项目概述
    基于React的Web待办事项应用,提供完整的任务管理功能

    ## 2. 核心功能
    ### 2.1 用户认证
    - 注册/登录
    - 密码重置
    - JWT认证

    ### 2.2 任务管理
    - 创建任务(标题、描述、截止日期、优先级)
    - 编辑任务
    - 删除任务
    - 标记完成/未完成

    ### 2.3 任务分类
    - 创建/编辑/删除分类
    - 任务分配到分类
    - 按分类筛选任务

    ### 2.4 提醒功能
    - 截止日期前24小时提醒
    - 支持邮件提醒

    ## 3. 技术栈
    - 前端:React 18 + TypeScript + Tailwind CSS
    - 后端:Node.js + Express + TypeScript
    - 数据库:MongoDB + Mongoose
    - 认证:JWT + bcrypt
    - 状态管理:React Context API
    - 构建工具:Vite

    ## 4. 项目结构

    ```

    ├── client/           # 前端代码
    │   ├── src/
    │   │   ├── components/  # React组件
    │   │   ├── contexts/    # Context API
    │   │   ├── hooks/       # 自定义Hooks
    │   │   ├── pages/       # 页面组件
    │   │   ├── services/    # API服务
    │   │   ├── types/       # TypeScript类型
    │   │   └── utils/       # 工具函数
    │   └── package.json
    ├── server/           # 后端代码
    │   ├── src/
    │   │   ├── controllers/ # 控制器
    │   │   ├── middleware/  # 中间件
    │   │   ├── models/      # 数据模型
    │   │   ├── routes/      # 路由
    │   │   ├── services/    # 业务逻辑
    │   │   └── utils/       # 工具函数
    │   └── package.json
    └── README.md


### 步骤4:使用规范实现应用

    bash


    $ claude "根据待办事项应用规范实现完整功能"


Claude会按照规范创建完整的项目结构和代码实现。

## 总结

Interview Mode是Claude Code的一项强大功能,它通过`AskUserQuestion`工具实现了AI与用户之间的交互式对话。Thariq推荐的基于规范的开发方法进一步释放了Interview Mode的潜力,通过"访谈-规范-执行"的流程,大幅提高了复杂功能的开发效率和质量。

Interview Mode的核心价值在于:

  1. **需求澄清** :确保AI准确理解用户需求
  2. **决策确认** :让用户在关键节点保持控制权
  3. **灵活适应** :根据用户反馈调整执行路径
  4. **规范构建** :从模糊需求到详细规范的转化
  5. **透明流程** :让用户清楚了解AI的执行过程

通过合理使用Interview Mode,开发者可以充分发挥Claude Code的能力,处理更加复杂和多样化的任务,同时确保结果符合自己的预期。Interview Mode与Plan Mode、子Agent等功能相结合,构成了Claude Code强大的Agentic编程能力体系。

基于 MIT 许可发布 | 永久导航