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以内
输入:[代码片段]

项目判断清单

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