Prompt工程04:迭代追问

从模糊需求到可执行任务的拆解路径,理解如何通过追问逐步明确目标和约束。

字数 1116 阅读时长 ≈ 4 分钟 2026-7-24 2026-7-27
Prompt工程04:迭代追问

迭代追问是将模糊需求转化为清晰任务的核心方法。大多数时候,用户的需求是不完整的,需要通过多轮追问来明确目标、输入、输出和约束。

为什么需要迭代追问

模糊需求的问题

用户给出的需求往往是模糊的:

  • “帮我优化一下代码”
  • “写一个数据分析报告”
  • “设计一个系统架构”

这些需求缺少关键信息:

  • 优化什么指标?
  • 分析哪些数据?
  • 系统有什么约束?

迭代追问的价值

阶段需求状态模型输出
初始需求模糊、不完整质量差、返工多
第一次追问部分明确质量提升、仍需调整
第二次追问基本明确质量稳定、少量调整
最终确认完全明确高质量、一次性通过

追问的维度

追问不是随意提问,而是有策略地从多个维度获取信息。

六个核心维度

维度追问方向示例问题
目标要达成什么结果”你期望的优化目标是什么?“
输入需要哪些信息”有相关的代码或文档吗?“
输出期望什么格式”输出需要包含哪些部分?“
约束有什么限制”技术栈或时间上有什么限制?“
标准如何衡量成功”怎么判断结果是否符合要求?“
背景为什么做这件事”这个需求的业务背景是什么?“

追问优先级

  1. 目标优先:先明确要做什么
  2. 输入其次:确认有哪些可用信息
  3. 约束第三:了解限制条件
  4. 输出第四:确定交付格式
  5. 标准第五:定义验收标准
  6. 背景最后:理解业务意图

追问的策略

开放式追问

开放式追问用于获取初步信息,适合需求完全模糊的情况。

你提到要优化代码,我想了解更多细节:
1. 这是什么类型的代码?(前端/后端/算法)
2. 你希望优化哪些方面?(性能/可读性/安全性)
3. 有没有相关的代码或性能报告?

封闭式追问

封闭式追问用于确认具体选项,适合需求部分明确的情况。

关于技术栈,我想确认:
1. 后端使用 Java 还是 Python?
2. 数据库使用 MySQL 还是 PostgreSQL?
3. 需要支持高并发吗?(是/否)

递进式追问

递进式追问从宏观到微观,逐步深入。

第一轮(宏观):
"这个系统主要做什么?有多少用户?"

第二轮(中观):
"核心业务流程是什么?有哪些关键模块?"

第三轮(微观):
"这个模块的具体实现逻辑是什么?有哪些接口?"

假设式追问

假设式追问用于验证理解,避免误解。

根据我的理解,你需要:
1. 优化用户登录接口的响应时间
2. 目标是从 500ms 降到 200ms 以下
3. 使用 Redis 缓存用户信息

我的理解对吗?有没有遗漏或错误?

追问的流程

标准追问流程

1. 确认目标
   ↓
2. 收集输入
   ↓
3. 明确约束
   ↓
4. 定义输出
   ↓
5. 建立标准
   ↓
6. 确认理解
   ↓
7. 开始执行

追问流程图

用户提出需求
    ↓
需求是否清晰?
    ↓ 否
追问关键信息
    ↓
用户补充信息
    ↓
再次判断需求是否清晰
    ↓ 是
开始执行任务

追问的技巧

避免追问过多

情况处理方式
用户不耐烦减少追问次数,先给出初步方案
时间紧张基于现有信息给出方案,后续迭代
用户不确定提供选项让用户选择

追问的语言艺术

技巧示例
表达理解”我理解你需要…”
说明原因”为了更好地…”
提供选项”你更倾向于A还是B?“
确认反馈”我的理解对吗?“

追问的节奏控制

阶段追问频率原因
初期频繁追问需求模糊,需要大量信息
中期适度追问需求逐渐清晰,确认细节
后期少量追问需求基本明确,确认关键点

追问的常见误区

误区1:追问太笼统

错误:“还有什么需要补充的吗?”

正确:“关于技术栈,你有什么偏好吗?“

误区2:追问太细节

错误:“这个变量命名用驼峰还是下划线?”

正确:“代码风格有什么要求吗?“

误区3:追问无目的

错误:随机提问,没有逻辑顺序

正确:按照目标→输入→约束→输出的顺序追问

误区4:忽视用户反馈

错误:用户已经回答过的问题再次提问

正确:记录用户回答,避免重复提问

追问与上下文的关系

追问是上下文的补充

每次追问都是在补充任务上下文:

初始上下文:{"目标": "优化代码"}
第一次追问后:{"目标": "优化代码", "类型": "Java后端", "指标": "响应时间"}
第二次追问后:{"目标": "优化代码", "类型": "Java后端", "指标": "响应时间", "代码": "..."}

追问的结果应该记录

每次追问的结果应该作为上下文保存,用于后续交互:

[对话历史]
用户:帮我优化代码
追问:什么类型的代码?
用户:Java后端
追问:优化什么指标?
用户:响应时间,目标500ms以内
追问:有相关代码吗?
用户:[代码片段]

[当前上下文]
角色:资深Java后端工程师
目标:优化Java后端代码的响应时间,目标500ms以内
输入:[代码片段]

项目判断清单

  • 需求模糊不清 → 使用开放式追问获取初步信息
  • 需求部分明确 → 使用封闭式追问确认细节
  • 用户不确定需求 → 提供选项让用户选择
  • 需要验证理解 → 使用假设式追问
  • 用户不耐烦 → 减少追问,先给出初步方案
  • 需要长期协作 → 记录追问历史,建立上下文
  • 追问效果不好 → 检查追问策略和语言表达
  • 需求频繁变更 → 在追问阶段建立变更控制机制