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编程能力体系。