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 许可发布 | 永久导航