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
# 工作流示例:创建项目结构
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
# 使用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
# 示例:根据用户选择执行不同的优化策略
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程式設計能力體系。