想象你走进一家餐厅,对服务员说:“我想吃点好吃的。”这句需求模糊得像一团雾——服务员不知道你是想吃辣的还是甜的,吃面还是吃饭,预算多少。如果后厨真的开始做菜,十有八九做出来的不是你想吃的。但如果服务员多问几句:“您想吃荤的还是素的?大概什么价位?有没有忌口?”需求就开始从雾里现出轮廓。AI 产品设计的第一步,就是充当这个“聪明的服务员”——把一句模糊的“我想吃点好吃的”,变成一道可以照着执行的“订单”。 这个问题定义的环节,决定了一道菜最终是让人竖大拇指还是一脸嫌弃。你构建的需求陈述有多精确,决定了 AI 系统这个“后厨团队”能否端出正确的菜。如果一开始就把“好吃的”理解成“麻辣的”,后续花再多精力优化火候和摆盘,也救不回来一道方向就跑偏的菜。今天这篇文章,我们就跟着这位“服务员”的完整工作流程,学会如何把模糊的人类愿望,翻译成一套 AI 产品团队可以照单执行的问题陈述。

岗位关联

对 AI 从业者而言,会定义问题等于会“翻译”需求:把一句含糊的话翻译成团队能执行、老板能认可、用户能验证的标准订单。这是奠定所有后续工作价值的技术起点,也是从“会做 AI”走向“会做对 AI”的分水岭。

目录
  1. 可视化演示
  2. 需求的起点
  3. 问题空间分析
  4. 约束识别策略
  5. 成功标准制定
  6. 伪需求鉴别
  7. 方向偏离防护
  8. 实践工具箱
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示AI产品设计中从模糊症状到清晰问题陈述的定义过程,通过聚类收敛与根因提取将混沌需求转化为可执行的问题定义。

本节配有交互动效(进入视口后自动加载,约 3KB)。

问题定义流程 模糊症状:分散的用户反馈与现象 聚类收敛:将相关症状分组归并 根因提取:识别核心问题本质 Clarity = (RootCauses / TotalSymptoms) × Scope 从混沌到有序的问题定义过程

需求的起点

那位聪明的服务员接到“想吃点好吃的”之后,做的第一件事不是冲向厨房,而是掏出小本子,开始问问题。这个过程在 AI 产品设计里叫做“需求澄清”——它是问题定义的起点。现实中的 AI 产品需求,几乎从来不会以清晰的面貌出现。“帮我做一个智能客服”、“让推荐更准确”、“提高用户活跃度”,这些话本质上都是“想吃点好吃的”。不是说提需求的人在故意刁难,而是人类天然用模糊语言思考,用具体语言验证。AI 产品经理的职责,就是充当那个掏出小本子的服务员。

从模糊需求到问题陈述,中间隔着一道“翻译”工序。翻译不是逐字转述,而是把对方心里那个模糊的意象,转成团队共享的精确语境。比如“让推荐更准确”——准确是谁的准确?是点击率提升了算准确,还是用户停留时间变长算准确?不同人听到同一句话,脑中浮现的是完全不同的菜。翻译的目的,就是让所有人在开火做饭之前,对着同一张菜单达成共识。

问题陈述的句式有固定套路,它像点菜时的标准写法:为谁(目标用户),解决什么(核心痛点),在什么场景下(使用情境)。三要素缺一不可。举个例子,“为晚饭选择困难的白领,在工作日下午六点,提供 30 秒内生成三个备选方案的建议工具”——这句陈述把“想吃点好吃的”压缩成了一个精确的订单。句式本身不复杂,难的是填充进句式里的内容,需要靠后续章节的方法去挖掘。

要判断一份问题陈述是否合格,可以做一次“厨房测试”:把这句陈述交给一个完全不了解背景的工程师,他是否知道该收集什么数据、调用什么模型、做成什么界面?如果答案是“还得再问问”,说明订单还不够精确。请记住,AI 系统没有常识,它不会像人类服务员那样主动追问“您要辣的吗”——它只会忠实执行你写下的每一个字。所以问题定义越精确,后续的工程工作越省力。

P=(U,S,N)\displaystyle P = (U, S, N)
问题陈述 P 由三元组构成:U(用户)、S(场景)、N(痛点)。三个元素确定,问题就从一个模糊的语意坍缩成一个具体的结构——就像“吃的”被限定为“给加班白领的、在下午六点、解决选择困难的三样东西”。
  1. 用户 U(Who)定义“为谁做”,把服务的对象从一个泛指的人群,缩小到具有共同特征的群体。
    U={用户画像,行为特征}U = \{用户画像, 行为特征\}
  2. 场景 S(When/Where)定义“在什么情境下”,同一个用户在凌晨两点和下午六点的需求完全不同。
    S={时间,地点,设备状态}S = \{时间, 地点, 设备状态\}
  3. 痛点 N(What pain)定义“要解决什么具体的麻烦”,痛点是用户真实感受到的落差,而非产品经理想象的落差。
    N={期望状态−现状}N = \{期望状态 - 现状\}

问题空间分析

拿到“为晚饭选择困难的白领提供建议”这个初步问题后,聪明的服务员不会立刻写单,而是会进一步端详这位客人:他是真的不知道怎么选,还是觉得选择太花时间?同样的行为,背后可能是完全不同的痛点。这一步在 AI 产品设计中叫“问题空间分析”——把“问题”从一个点,展开成一个有结构的面。

问题空间由三个维度构成:用户、场景、痛点。这不是三个独立变量,而是一个互相咬合的齿轮组。同一个用户在不同场景下痛点不同;同一个场景下不同用户的痛点也不同。比如“白领晚饭选择困难”,在“加班赶报告”和“健身控制饮食”两个场景下,解决方案截然不同——前者要快,后者要健康。分析问题空间,就是在三维坐标里给这个问题定一个精确的位置。

探索问题空间有一件趁手工具:5W1H。Who(谁在痛)、What(痛什么)、When(何时痛)、Where(在哪痛)、Why(为什么痛)、How(现在怎么对付)。这六个问题像六盏探照灯,把问题空间的每个角落照亮。很多被忽视的关键约束,都是在回答“When“和”Where“时浮出水面的——比如”用户在地铁上拿出手机时只有单手操作”,这个约束直接决定了方案形态。

很多 AI 项目夭折,不是因为技术不够强,而是因为解决的是“现象”而不是“根因”。用户说“我希望推荐更准”,根因可能是“用户没有耐心给反馈机制打分”——如果你去优化推荐算法,那是解决现象;如果你设计一个“划走即反馈”的轻量交互,那是解决根因。区分二者的诀窍,是问一句“为什么这个痛点存在”,然后对答案再问一次“为什么”。连续问五个“为什么”,通常就能从地面挖到根因。

Root Cause={x∈S∣Causes(x,N)}\displaystyle \text{Root Cause} = \{x \in S \mid \text{Causes}(x, N)\}
根因是问题空间里那个“最底层的原因集合”:它是导致痛点 N 的深层变量 x 的集合。解决根因是釜底抽薪,解决表层现象是扬汤止沸。
  1. 候选因素集合 S把问题空间里所有可能相关的因素列出来——用户习惯、使用环境、历史数据等。
    S={s1,s2,s3,… }S = \{s_1, s_2, s_3, \dots\}
  2. 因果判定逐一验证每个因素是否真的对痛点 N 有因果影响,而不是只相关。
    Causes(x,N)⇔改变x 能改变 N\text{Causes}(x, N) \Leftrightarrow \text{改变}x\text{ 能改变 }N
  3. 取交集把所有“导致 N 的因素”收集起来,就是根因集合。
    Root Cause={x∣Causes(x,N),x∈S}\text{Root Cause} = \{x \mid \text{Causes}(x, N), x \in S\}

约束识别策略

假设服务员已经确定了客人想吃辣,正准备下单——突然想起来厨房今天没有干辣椒了。这道菜还要不要做?这就是约束的力量:它不改变问题的方向,但直接圈定了方案的边界。AI 产品设计中的约束识别,是在问题定义阶段就预先排查“厨房里到底有什么”,以免方案做到一半发现食材根本不存在。

约束分三类:资源约束、技术约束、合规约束。资源约束像“预算上限和项目周期”——这道菜只能花 30 块、30 分钟;技术约束像“厨房设备能力”——没有烤箱就别设计烤鸭方案;合规约束像“食品安全条例”——用户隐私数据不能用于训练模型、医疗建议不能超出诊断范围。第一类和第三类往往在业务层就能识别,第二类需要工程师的早期介入——这也是为什么问题定义阶段就要组建跨职能团队。

约束看起来是限制,其实是过滤器。想象你面前有一百种解决方案,约束帮你划掉了其中九十种——留下来的十种,每一种都是真正可以落地的。没有约束的问题反而让人无从下手,就像面对一整本菜单却不知道点什么。所以约束识别的产出,不是一份“做不到清单”,而是一份“在边界内如何做到”的地图。

约束识别的口头禅是“当场记录、同步传达”。把每一条约束写进问题定义文档,标注来源和验证方式,后续每个设计评审会都对照检查。很多项目死于“我们以为可以做”——不是技术不行,而是早期没人把约束摆到台面上。请记住一句厨房箴言:“菜单上可以有很多菜,但今晚厨房只能做三样。”约束让人清醒。

C=Cres∪Ctech∪Ccomp\displaystyle C = C_{res} \cup C_{tech} \cup C_{comp}
约束集合 C 由资源约束、技术约束、合规约束三部分的并集构成。一个方案可行的条件是:它必须同时满足 C 中的每一个约束——就像一道菜必须同时买得起食材、用得了设备、过得了食安检查。
  1. 资源约束 C_res预算、人力、时间——“用多少钱、多少人、多久做完”。
    Cres={预算,人力,时间}C_{res} = \{预算, 人力, 时间\}
  2. 技术约束 C_tech现有算法、数据、基础设施的能力边界——“厨房有没有这个设备”。
    Ctech={算法,数据,算力}C_{tech} = \{算法, 数据, 算力\}
  3. 合规约束 C_comp法律、伦理、平台政策——“哪些事不能做”。
    Ccomp={法规,伦理,政策}C_{comp} = \{法规, 伦理, 政策\}
  4. 并集合成三类约束的合集才是完整的边界,缺了任何一类,方案都可能中途翻车。
    C=Cres∪Ctech∪CcompC = C_{res} \cup C_{tech} \cup C_{comp}

成功标准制定

现在订单有了,边界清楚了,但客人心里还有一个没说出口的问题:“我怎么知道这道菜做得成不成功?”如果答案停留在“好吃就行”,那后厨就只能靠玄学。AI 产品的成败,取决于你是否能在动手之前,定义出“什么叫做成了”。这就是成功标准制定——给问题配一把可以客观度量的尺子。

好标准的第一个要求是“可量化可验证”。将“让推荐更准”从一句口号改成一个数字:点击率从现在的 3% 提升到 5%,或者用户平均浏览时长从 40 秒增加到 90 秒。把模糊的期望变成具体的数字,是问题定义从“语文题”走向“数学题”的关键一跃。第二个要求是“有基线对比”——成功不是绝对概念,而是相对概念。今天的 3% 是基线,目标是 5%,这才构成了一个可评估的提升。

要让标准真正产生作用,需要把它放到团队所有人看得见的地方。一个简单的指标看板,一张写着“当前值 vs 目标值”的表格,每周更新一次就够了。它像一个厨房里的温度计,让每个人都看到火候是否到位。如果做了三个月指标没动,那不是在“坚持”,而是在“视而不见”——标准的意义就是让团队无法回避真相。

1[⋅]={1,Mafter−Mbaseline≥Δtarget0,otherwise\mathbb{1}[\cdot] = \begin{cases} 1, & M_{after} - M_{baseline} \geq \Delta_{target}\\ 0, & \text{otherwise} \end{cases}

定标准最忌讳的是“拍脑袋定数字再拍脑袋改数字”。一个健康的指标,要能从问题陈述直接推导出来。如果目标是“帮用户快速做决定”,那指标就应该是“决策时长”;如果目标是“让推荐更合口味”,那指标可以是“采纳率”。指标和问题之间的因果链越短,标准的可信度越高。记住,跟“对指标负责”相比,“对用户负责”是件太难验证的事——而 AI 产品恰恰需要用标准来证明价值。

Success=1[Mafter−Mbaseline≥Δtarget]\displaystyle \text{Success} = \mathbb{1}\left[ M_{after} - M_{baseline} \geq \Delta_{target} \right]
成功是一个指示函数:如果实施后的指标值 M_after 减去基线值 M_baseline,达到了预先定义的目标差量 Δ_target,结果为 1(成功),否则为 0(未达标)。
  1. 基线指标 M_baseline实施前的当前值——“现在站在哪”。
    Mbaseline=现状水平M_{baseline} = \text{现状水平}
  2. 实施后指标 M_after上线一段时间后的测量值——“做完站到哪”。
    Mafter=实施后水平M_{after} = \text{实施后水平}
  3. 目标差量 Δ_target预先定好的提升幅度——“要往前跳多远”。
    Δtarget=目标值−基线值\Delta_{target} = \text{目标值} - \text{基线值}
  4. 指示函数判断差值是否达标,得到 1 或 0——没有任何模糊地带。

伪需求鉴别

后厨偶尔会遇到一种客人:点了一大桌菜,最后只吃了一口。你说他饿吗?不饿,他就是想看看菜单。AI 产品里的“伪需求”也是这么一回事——用户嘴上说要一个东西,真实行为却暴露了他根本不需要。伪需求是问题定义最大的隐形杀手,因为它会耗尽团队的精力,最后只端出一桌没人动的菜。

鉴别伪需求有一个简单有效的工具:三问测试法。第一问,“这个问题存在的证据是什么?”——是十个用户访谈里的真实抱怨,还是产品经理脑海中的想象?第二问,“用户现在怎么解决这个问题的?”——如果他已经在用一款笨办法凑合,说明问题真实存在;如果他说“我不知道”或“我没有这个问题”,那需求可能根本不成立。第三问,“如果我们不做,用户会损失什么?”——答不上来,说明这个问题在用户心中毫无分量。

伪需求最常披的一件外衣是“提高用户活跃度”这类运营指标。仔细看——用户不会想要“活跃”这个行为,他想要的是别的东西。你不是想“天天打开 App”,你是想“知道今天该吃什么”。指标是结果,不是需求。把中间指标误认为最终需求,是伪需求得以生存的土壤。问题定义阶段要反复追问:“用户真正想要的结果是什么?这个指标离那个结果有多远?”

第三问的答案往往已经能告诉你这个需求的分量了。如果用户被问起“没有这个功能你怎么办”,他的回答是“那就凑合用现有的”——恭喜你找到一条伪需求。但也要小心另一面:用户不总是能准确表达自己的需求。有些真需求藏在笨办法里——用户宁可手工抄表也不用你的自动工具,可能不是需求不存在,而是你的方案太差。鉴别伪需求,靠的不是猜测,而是观察行为,不是听他们说了什么,而是看他们做了什么。

V(problem)=∑u∈Uwu⋅Impactu−Cost\displaystyle V(\text{problem}) = \sum_{u \in \mathcal{U}} w_u \cdot \text{Impact}_u - \text{Cost}
一个问题对用户的价值 V,等于每个受影响用户 u 的收益权重 w_u 乘以影响程度 Impact_u 的总和,减去解决问题的成本 Cost。只有当 V > 0 时,这个问题才值得解决。
  1. 受影响用户集合 U列出会被这个问题困扰的所有真实用户。
    U={u1,u2,… }\mathcal{U} = \{u_1, u_2, \dots\}
  2. 影响程度 Impact_u对每个用户,评估这个问题给他带来的实际麻烦有多大。
    Impactu=麻烦程度×发生频率\text{Impact}_u = \text{麻烦程度} \times \text{发生频率}
  3. 收益权重 w_u不同用户群的分量不同——付费用户比免费用户权重更高。
    wu∈[0,1]w_u \in [0, 1]
  4. 成本 Cost解决这个问题需要消耗的工程与运营资源。
    Cost=研发成本+维护成本+机会成本\text{Cost} = \text{研发成本} + \text{维护成本} + \text{机会成本}

方向偏离防护

厨房里最怕的不是火不够大,而是做菜做到一半发现方向错了——客人点的是回锅肉,你端上来一盘鱼香肉丝。AI 项目最大的风险不是效率低,而是方向偏,方向错了,越快越危险。问题定义阶段建立的方向防护,是一种机制化的自我保护,它确保团队做的每一件事,都在朝同一个目标前进。

方向偏离最隐蔽的原因是范围蔓延——订单上写着“酸菜鱼”,结果为了展示资源,你加了一道“佛跳墙”当配菜。AI 产品里的范围蔓延表现为:把“给用户推荐三个方案”扩展成“顺便分析用户的饮食偏好、做一份周报、再主动推送附近餐厅折扣”。每一个听起来都合理,但每一个都在稀释主问题的资源。防范围蔓延,靠的不是自律,而是把问题陈述变成一份“合同”——任何新增需求,都要回到问题陈述前重新评审。

保持方向还有一个朴实的原则:KISS——Keep It Simple, Stupid。把问题定义得简单、直接、让哪怕是刚加入项目的新人也能看懂。复杂的问题定义意味着每个人对它的理解都不同,理解不同意味着执行方向分散。好的问题定义不是花哨的长句,而是像菜单上的一道菜名——“麻婆豆腐”四个字,人人都知道是什么。

方向偏离防护的落地动作很简单:第一,把问题陈述贴在最显眼的地方,每次需求评审先读一遍;第二,对任何新增请求,团队必须问“这跟问题陈述有什么关系”;第三,每两周做一次方向校准——现在的做法还服务于最初那个问题吗?这三个动作的成本趋近于零,却能拦住绝大多数的无用功。记住,与其做一百个半成品功能,不如把一个核心问题彻底解决——用户会记住那盘好吃的麻婆豆腐,而不是十盘平庸的菜。

Focus=核心问题出产值全部工作出产值\displaystyle \text{Focus} = \frac{\text{核心问题出产值}}{\text{全部工作出产值}}
方向聚焦度 Focus 等于花在核心问题上的产出占总产出的比例。这个比值越低,说明范围蔓延越严重,团队在为一个不相关的目标付出成本。
  1. 核心问题出产值直接推动核心指标变好,得到的一切工作产出。
    核心出产值=∑与核心问题直接相关的贡献\text{核心出产值} = \sum \text{与核心问题直接相关的贡献}
  2. 全部工作出产值团队在周期内所有工作的总和,包含跑偏的部分。
    全部出产值=核心出产值+蔓延出产值\text{全部出产值} = \text{核心出产值} + \text{蔓延出产值}
  3. 比值监控这个比例应当被定期评估——如果连续下降,说明方向盘在偏。
    Focus→1 方向集中,Focus→0 方向扩散\text{Focus} \to 1 \text{ 方向集中}, \quad \text{Focus} \to 0 \text{ 方向扩散}

实践工具箱

理论讲了一堆,是时候把“聪明的服务员”的完整接待流程整理成一套可以带走的工具了。一个合格的 AI 产品从业者,需要把问题定义从“灵感”变成“手艺”。工具箱里有三件宝贝——访谈问题的模板、问题陈述的模板、定义到落地的检查清单。

第一件宝贝是“黄金十五问”。这不是十五个固定的问题,而是五组三个层次的问题:先问现象(“你上次遇到这个情况是什么时候?”),再问情绪(“当时你有多郁闷?”),后问行为(“你后来怎么解决的?”)。层层递进,像是厨师先看食材外观、再闻味道、最后试口感。十五问的关键不是数量,而是它构建了一个从表面事实通向深层动机的访谈管道。

第二件宝贝是一句话问题陈述模板,它把前面所有章节的成果压缩进一个句式:“为了 [用户] 在 [场景] 下,解决 [痛点],我们的目标是 [成功标准],并且在 [约束] 的边界内实现。”注意,问题陈述和用户故事不同,它不只是一个句子,还要包含成功标准和约束信息——这样整个团队读完陈述,就能达成共识,不会在执行中迷失方向。

从定义到落地的检查清单,可以在每个里程碑回看一遍。第一步,从用户一句话,到问题陈述——检查三者是否齐备;第二步,从问题陈述到约束清单——检查是否遗漏了需要工程师早期介入的条目;第三步,从约束清单到成功标准——检查每个指标都与问题陈述有直接因果关系。这份清单让问题定义从开会时讨论的理论,变成项目推进中每个人都在使用的活文档。一个好的定义,能让团队少走半年弯路;反过来,一个草率的定义,会让团队用六个月时间验证一个不需要解决的问题。

D=P(U,S,N)∧C∧M\displaystyle D = P(U, S, N) \wedge C \wedge M
完整问题定义 D 等于问题陈述 P 与约束 C 和成功标准 M 的逻辑合取:三者缺一不可。只有问题清晰、边界明确、标准可测,这个定义才算完整。
  1. 问题陈述 P用户-场景-痛点的三元组,定义了“做什么”。
    P=(U,S,N)P = (U, S, N)
  2. 约束 C资源、技术、合规的边界集合,定义了“不做什么”。
    C=Cres∪Ctech∪CcompC = C_{res} \cup C_{tech} \cup C_{comp}
  3. 成功标准 M可量化验证的指标,定义了“怎样算做成”。
    M=1[Mafter−Mbaseline≥Δtarget]M = \mathbb{1}[M_{after} - M_{baseline} \geq \Delta_{target}]

AI 应用场景

智能客服项目启动

阶段:产品设计

解决的问题:传统客服产品往往是“我要做一个 Chatbot”,技术团队大量投入学习新框架,业务团队等着模糊的“自动化率提升”。用问题定义的方法,将模糊愿望转化成“为电商平台的售后用户,在物流异常高峰期,解决查不到包裹到哪里的焦虑”。这样一个清晰的命题,落地时模型需要什么数据、产品需要什么界面、成功如何衡量,都水落石出。

具体案例:某电商平台售后团队日均收到 2 万条物流类咨询,用户普遍重复提问“我的快递到哪了”,接到需求后首先进行问题空间分析,识别出“包裹定位”和“预计到达时间”两个高频痛点,与基线对比法设定自动化率从 15% 提升到 45% 的成功标准,最终精准命中了问题,项目优先处理查询接口的整合,而非盲目训练大模型。

推荐系统的重新定位

阶段:问题重构

解决的问题:一个内容社区推荐系统“想让推荐更精准”,原本的新人引导策略是增加更多推荐算法模型,在访谈和伪需求筛查后发现,新用户流失的根因不是推荐不精准,而是注册引导后的“冷启动”——推荐的内容没有解释为什么被推荐。重新定义问题为“为新注册用户在前 3 次刷信息流中建立推荐信任”,引导式推荐让次日留存率显著提升。

具体案例:新闻类 App 次日留存徘徊在 38%,将问题从“提高推荐准确性”重构为“让新用户在前三次滑动中感到推荐有价值”,基于成功标准制定了 7 天观察期和次日留存对比基线 5% 的指标,3 个月内拉齐了预期。

企业内部知识库检索升级

阶段:需求澄清与方案边界

解决的问题:业务部门提出“要一个更聪明的企业知识库搜索”,这个传统模糊需求导致了范围蔓延(把搜索工具做成运营后台),通过三问测试法发现,用户核心痛点是“权限安全的、自然语言提问、以及找不到跨部门文档”。约束识别厘清了合规边界(权限系统集成)和技术边界(基于内部文档的向量检索),成功标准定为“对新员工搜索失败率降低 30%”,上线后新员工寻找制度文档耗时从平均 25 分钟降至 9 分钟。

具体案例:某咨询公司内部 Wiki 搜索失败率高,以前靠新员工在 IM 群“求文档”,AI 搜索工具把常见入职问题答案检索命中率(Top-5)提升到 87%,远高于原 60% 的基线。

Python 演示

python65 行
# -*- coding: utf-8 -*-"""问题定义工作台: 从模糊需求到结构化问题陈述的辅助工具"""from dataclasses import dataclass, fieldfrom typing import List, Dictfrom datetime import datetime  @dataclassclass ProblemStatement:    """问题陈述结构体"""    user: str          # 目标用户    scene: str         # 使用场景    pain: str          # 核心痛点    success_metric: str = ""  # 成功标准    constraints: List[str] = field(default_factory=list)  # 约束清单     def to_one_line(self) -> str:        """一句话模板: 为[用户]在[场景]下解决[痛点]"""        return f"为{self.user}在{self.scene}解决{pain_case}"  def golden_question_probe(raw_need: str, answers: Dict[str, str]) -> ProblemStatement:    """黄金十五问的极简版: 从字典答案中组装问题定义"""    return ProblemStatement(        user=answers.get("who", "未定义用户"),        scene=answers.get("when", "") + " " + answers.get("where", ""),        pain=answers.get("pain", raw_need),        success_metric=answers.get("metric", ""),    )  def validate_problem(pb: ProblemStatement) -> List[str]:    """三问测试法校验, 返回未通过项清单"""    issues = []    if not pb.user or pb.user == "未定义用户":        issues.append("[用户] 回答'为谁做'不能为空")    if not pb.scene or len(pb.scene) < 2:        issues.append("[场景] 回答'何时何地用'不能为空")    if not pb.pain or len(pb.pain) > 30:        issues.append("[痛点] 需一句话精准描述, 不超过30字")    if not pb.success_metric:        issues.append("[标准] 可量化的成功标准不能为空")    return issues  def estimate_focus(core_output: float, total_output: float) -> float:    """方向聚焦度 = 核心问题产出 / 全部产出, 越低越偏离"""    if total_output == 0:        return 0.0    return round(core_output / total_output, 2)  if __name__ == "__main__":    raw = "我想让我们的AI客服更聪明一点"    collected = {        "who": "电商平台的售后用户",        "when": "物流异常高峰期",        "where": "订单详情页",        "pain": "无法快速定位包裹位置, 焦虑感上升",        "metric": "自动化解决率从15%提升到45%",    }    pb = golden_question_probe(raw, collected)    print(pb.to_one_line())    print(validate_problem(pb))    print("方向聚焦度:", estimate_focus(core_output=0.8, total_output=1.25))
目的:这是一个用 Python 标准库搭建的问题定义校验台,帮你模拟“聪明的服务员”如何把模糊需求翻译成结构化的问题陈述,并自动检查遗漏项。
  1. @dataclass class ProblemStatement用数据类定义问题陈述的四个核心字段:用户、场景、痛点、成功标准。
  2. def to_one_line(self)把结构化的字段压缩成“为谁、何地、何痛”的一句话模板。
  3. def golden_question_probe(...)模拟黄金十五问的收集过程,输入的字典就是访谈时的记录。
  4. def validate_problem(pb)三问测试法的自动化版,一键列出问题定义中的缺失项。
  5. def estimate_focus(...)计算方向聚焦度,数值越低表示团队在核心问题之外的投入越高。

常见误区

误区我只要在文档里把用户痛点写得清清楚楚、把成功指标定义得明明白白,用户就一定会买账、产品一定会成功。

正解问题定义只是将“做正确的事”的概率提至更高,它不能替代执行。就像一份完美的菜单不能保证菜好吃,后厨的技法和火候同样决定成败。问题定义阶段要做到的是“少走弯路”,至于能否走到终点,还需要配合敏捷开发、用户测试、模型评估的完整闭环,问题定义和持续迭代是多轮对话,而不是一次性交付。

为何常见:因为人在学习新方法时容易把工具当作结果,以为写出一段完美的文档就等于完成了工作,但这是行动前的导航图,不是行动本身。

误区反正 AI 产品都是快速迭代,问题定义阶段直接写个大概齐的标准就行,后面可以慢慢收紧。

正解成功标准是 AI 项目进行中判断“做得好不好”的唯一标尺,如果它是一个模糊的“大概齐”,团队就会丧失一个决策的基础认知。就像做菜时如果不对咸淡的标准达成一致,大家只会坐在饭桌前互相对视。标准和指标当然可以调整,但前提是你先有一个明确的基线,否则每次调整都会引起争议与无休止的返工。

为何常见:团队常把“敏捷”误解为“不需要想清楚就跑”,这是把执行敏捷与定义问题混为一谈,一个模糊的目标无论多敏捷都只是在原地打转。

误区用户访谈中,只要用户反复提到一个功能,我就应该把它列入需求清单,问题定义阶段的任务就是收集并翻译这些诉求。

正解用户反复提及的功能可能只是虚假的止痛药,比如用户说要一个 Excel 导出按钮,真实诉求却是“需要一份跨周分析的报表”——如果你照单翻译成导出功能,团队也只会做出一个更快的止痛药。需求翻译要建立在观察行为之上,观察到用户在使用临时方案、跨越障碍、甚至放弃某个任务,那些非语言的信号往往比访谈中的语言诉求更值得定义为问题。

为何常见:语言是最容易获取的证据,行为是最难收集的证据;懒惰让团队更愿意相信用户嘴上说的话,而不是去验证行为背后的因果关系。

误区问题定义阶段就是要天马行空地发挥,把约束放进问题是限制创造力,等方案设计完再交给工程评估。

正解约束是问题定义的组成部分,它和用户、场景、痛点同等重要。在 AI 产品里,一条数据合规约束可能直接改变问题定义。例如,如果明确约束“不得使用用户病历数据”,那么“做一个根据病例推荐药品的助手”这个命题就会立即被改写为“做一个健康建议助手”,两者在问题定义阶段就是完全不同的方向。约束发现得越晚,返工成本越高。

为何常见:人们天然倾向于在“可行性”之前先谈“可能性”,从乐观的起点开始似乎可以增强士气,但忽视了问题定义恰恰是关于现实边界的工种。

误区老板只看进度,花两周时间做用户访谈和问题定义,一定会被当成效率低。

正解这是对效率的误解——效率不是单位时间产出量越大越好,而是减少返工时间的杠杆。问题定义多花两周,换取后续三个月都在正确的方向上推进,是投入产出比极高的交易。真正高效的项目经理会向老板展示“定义进度”——“我们把问题收敛到只剩两个候选方案”,而不是“第一周我们写了调研报告”。把定义工作包装成能降低风险、节省预算的里程碑,它才会在推进高管的眼中显化成“省钱的工程”,而不是“拖延的动作”。

为何常见:人们对“看得见的产出”(代码、界面、文档)有天然的偏好,却对看不见的产出(思维收敛、共识建立、风险排除)缺乏耐心,问题定义恰恰是高杠杆的隐性产出。

面试题

Q1. 一个 AI 产品团队想研发“智能客服”,最开始的需求是“让客服更聪明”,哪个问题陈述最符合问题定义的三要素?

单选题 · mid

  • A.为电商售后用户在物流异常期解决包裹定位难← 正确答案
  • B.做一个基于最新大语言模型的新一代智能客服
  • C.提高客服团队的工作效率,降低人力成本压力
  • D.用自然语言处理技术升级现有的客服系统

答案:A。选项 A 包含用户(电商售后用户)、场景(物流异常期)和痛点(包裹定位难)。B 只讲了技术手段,C 只讲了业务收益,D 只讲了实现方式。三者都是“怎么做”或宏观收益,缺少“为谁、在哪、痛什么”三要素。

Q2. 以下哪些手段用来避免“范围蔓延”?

多选题 · hard

  • A.把问题陈述贴在会议室白板上← 正确答案
  • B.对新增需求追问它与核心问题的关系← 正确答案
  • C.每两周对照问题陈述做一次同步校准← 正确答案
  • D.让开发团队自主决定是否接受新需求

答案:ABC。A、B、C 都是方向偏离防护机制中的核心动作:把问题陈述变成可见合同、对新需求做资格审问、周期性校准方向。D 让执行层自行决定会破坏问题定义的一致性,缺乏对核心问题的守护。

Q3. “用户、场景、痛点”三要素在问题陈述中的作用是什么?

单选题 · easy

  • A.让产品经理的报告显得完整全面
  • B.让所有团队成员对问题达成统一理解← 正确答案
  • C.给算法工程师提供特征工程思路
  • D.方便公司高层确定项目预算

答案:B。三要素的核心功能是建立共同语境。它不仅是一个模板,更是一个翻译机制:把模糊需求转成团队一致认可的目标。其他选项都只是这种统一理解的额外收益,而不是它的本质目的。

Q4. 关于“伪需求鉴别”,三问测试法包含哪些步骤?

多选题 · mid

  • A.这个问题存在的证据是什么← 正确答案
  • B.用户现在是怎么解决这个问题的← 正确答案
  • C.如果我们不做,用户会损失什么← 正确答案
  • D.这个功能需要多长时间开发完成

答案:ABC。三问分别指向真实性证据、现有替代方案和损失评估。D 是工程工时评估,属于实现层问题,与判断“需求本身是否为伪”无关。

Q5. 一名新员工问:“如果用户明确表达了需求,为什么还需要问题空间分析?”最佳回答是?

单选题 · easy

  • A.用户总是会隐藏真实想法需要挖掘动机
  • B.同一需求在不同场景不同用户下可能对应完全不同的问题← 正确答案
  • C.问题空间分析是给领导做汇报的必要素材
  • D.用户明确表达的需求已经足够精确无需再分析

答案:B。问题空间分析的核心是把一个点状需求展开成用户-场景-痛点的三维坐标。相同的一句话比如“推荐更准”,在通勤、深夜、健身后的含义各异;用同一方案回应这些不同问题,必定有至少一处在做伪需求。

Q6. 在问题定义文档中,约束的作用被恰当描述为?

单选题 · mid

  • A.让团队在受限环境里失去创新动力
  • B.划定了可行方案的边界,帮助团队集中决策← 正确答案
  • C.是免责声明,防止产品上线后追责
  • D.仅用于排除明显不合理的方案

答案:B。约束被定义为“创意过滤器”,它筛掉不可行的方案,让团队把创造力集中在真正可落地的范围内。A 是消极解读,C 是误解它的责任属性,D 低估了它的价值:约束不只排除不合理项,还引导方案的形态。

Q7. “成功标准”与“项目愿景”的区别是?

单选题 · mid

  • A.愿景比较宏大,成功标准比较微观
  • B.愿景描述方向,成功标准给出可验证的量化指标← 正确答案
  • C.愿景写进 PPT,成功标准写进代码
  • D.两者含义相同没有区别

答案:B。愿景是“让用户更高效”,成功标准是“减少用户 30% 的决策时长”。衡量一个目标到底是不是成功标准,检验方式为:它是否可以用前后测对比数值来判断。愿景无法直接指导验收,而成功标准是基线之后可验证的指标。

Q8. 一个 AI 推荐系统“用户总停留时间”在三个月内提升了 20%,但业务方认为项目失败。最可能的原因是哪一项?

单选题 · hard

  • A.用户停留时间不是项目的核心指标← 正确答案
  • B.技术团队执行模型训练的效率太低
  • C.产品上线时间比计划晚了一个月
  • D.推荐结果在 A/B 测试中产生了偏差

答案:A。项目的成败取决于它和最初问题定义的契合度。“总停留时间”的提升,如果它并不来自问题定义所设置的核心目标,那它就是一个虚荣指标。业务方的“失败”说明,停留时间或者不是他们真正关心的结果,或者这种提升是以牺牲用户信任为代价的(例如点击诱饵导致“迷失式”长时间停留),这种情况在问题定义阶段是不被划入成功标准的。

Q9. 在 AI 产品定义阶段,跨职能团队(产品、算法、工程)共同参与的好处是?

多选题 · mid

  • A.技术约束更早被识别而不会在后期返工← 正确答案
  • B.通过提问与共识建立了需求评审的共同语境← 正确答案
  • C.算法工程师可以提前判断数据结构是否满足要求← 正确答案
  • D.开发工程师能在此期间把界面设计全部完成

答案:ABC。问题定义本来就是跨职能工作,缺了任何一方,约束识别、场景甄别,都会存在盲区。A、B、C 分别对应早期约束识别、共同语境建构与数据可行性预判。D 是具体执行工作,不在定义阶段展开。

Q10. “如果用户不用我们的解决方案,他也只是开着备忘录手动记录而已。”对这句话的正确解读?

单选题 · hard

  • A.用户没有强烈痛点所以问题不值得解决
  • B.手动备忘录说明问题不严重可以延缓解决
  • C.既有行为为用户价值提供了验证基线← 正确答案
  • D.用户行为习惯保守不适合作为目标用户

答案:C。用户“已经在用备忘录对付”,恰好说明问题真实存在且有价值,同时提供了一个可对比的行为基线——如果方案的耗时比备忘录更长,用户一定会放弃方案。这是“三问测试法”第二问的正确答案:用户已有的替代方案是问题定义中的关键参照物。