返回文章

如何向 AI 提出更高质量的技术问题

从一次真实的提问习惯复盘出发,整理一套适合前端排障、动态表单和业务系统维护场景的 AI 协作提问模板。

很多技术问题不是 AI 不会答,而是上下文一开始就被切碎了。

尤其在企业后台、动态表单、权限控制、接口联调这类项目里,一个 bug 往往不是单点错误,而是一条链路上的状态变化:事件触发、字段配置、接口返回、watcher、computed、渲染逻辑、权限规则,任何一环缺失,AI 都容易走偏。

这篇文章不是泛泛而谈“如何写 Prompt”,而是基于真实协作场景,整理一套更适合前端排障和复杂业务系统维护的提问方法。

你的典型工作场景

从提问内容来看,你主要面对的是企业后台和低代码表单编排类项目。常见关键词包括:

维度 判断 说明
技术栈 Vue2、iView、vxe-table、Webpack 常见于存量后台系统和复杂表单页面
业务类型 动态表单、工作流、字段权限、导入预览 问题通常横跨配置、渲染和接口数据
工作角色 中级偏上前端,接近核心维护者 能提供接口响应、复现路径、字段配置和控制台日志
问题偏好 偏具体实例,不偏抽象设计 贴真实数据后,AI 的回答质量会明显上升
核心目标 快速定位、少走弯路、代码别乱改 更关心修复效率,而不是概念解释

这类项目最难的地方在于:表面上是一个页面 bug,背后可能是“表单引擎/编排器”的状态流问题。

所以,好的提问不只是描述现象,而是帮助 AI 建立一条可以验证的链路。

现在最容易浪费时间的地方

1. 现象给得早,数据给得晚

很多请求一开始会这样描述:

页面卡死了,控制台也有报错,什么问题导致的?

这能说明问题严重,但还不够让 AI 判断根因。AI 往往会先猜递归、自引用、watcher 循环、重复请求这些常见原因。

更有效的写法是:

复现路径:
1. 进入某页面
2. 选择字段 A
3. 切换配置 B 后页面卡死

卡死前最后一条日志:
...

Network 表现:
接口 X 重复请求约 N 次 / 没有重复请求 / 接口已返回

已排除:
- 接口已正常返回
- buildInputFieldTree 耗时约 5ms
- 不是自引用字段导致

这样 AI 会少走很多猜测路径。

2. “优化”“完善”“解决”太大

“优化一下”“完善一下逻辑”“和 uploadFiles 保持一致”这类说法很常见,但它们没有验收标准。

AI 可能会做风格性重构,也可能扩大修改范围,最后反而把原有逻辑改坏。

可以把模糊动词改成明确约束:

目标:
Signature 在 Excel 预览中与 UploadFiles 的错误展示逻辑一致。

验收:
- 有图片时显示图片
- validateResult[原始 code] 有值时显示错误
- 不猜测其它接口返回结构
- 只修改 data-preview.vue

这比“帮我优化一下”更容易得到稳定结果。

3. 纠错发生在 AI 猜错之后

你很擅长在 AI 走偏后纠正它,例如说明“这个只是示例”“不是自引用的问题”。这很有价值,但如果关键事实太晚出现,前几轮成本就已经浪费了。

提问时尽量一次性给出三类样例:

样例类型 作用
最小输入样例 让 AI 知道真实数据结构
错误输出样例 让 AI 知道当前问题在哪里
正确输出样例 让 AI 知道最终验收标准

对复杂业务逻辑来说,样例比一大段抽象描述更可靠。

更适合复杂 bug 的提问方式

复杂 bug 不要只问“哪里错了”,可以先让 AI 建立模型。

例如:

请先梳理这个问题涉及的文件、数据流和触发链路,暂时不要改代码。

请按这个结构输出:
1. 入口事件是什么
2. 哪些 watcher / computed / 方法会被触发
3. 哪些接口会被调用
4. 哪些字段会影响渲染
5. 当前最可能的 3 个根因
6. 每个根因需要什么证据验证

当你确认它对系统理解没有偏差后,再让它进入实现:

按方案 2 实现。

约束:
- 不要大重构
- 保持现有代码风格
- 不改接口结构
- 修改前先说明会改哪些文件
- 最后列出 3 个验证场景

这能把 AI 从“猜答案”拉回“按证据排障”。

认知盲区:不要过早补丁化

在表单引擎类代码里,“特殊处理一下这两个字符”“这个字段单独判断一下”很诱人,因为它通常能立刻止血。

但这类补丁很容易越补越脆。

更好的问法是让 AI 同时给出三层方案:

请分别给出:
1. 根因层修复:从数据模型或解析逻辑上修
2. 兼容层修复:兼容旧数据或历史异常输入
3. 临时补丁:最小改动止血

请说明每种方案的风险、影响范围和验证方式。

这样你仍然可以选择临时补丁,但会清楚知道它是不是在埋债。

提问前的 3 个自检问题

每次向 AI 提复杂问题前,可以先问自己这 3 个问题:

自检问题 应该补充的内容
环境是什么? 技术栈、相关文件、是否需要读项目约定、是否禁止执行某些命令
期望输出是什么? 修代码、只分析、加日志、给方案对比,不要混在一起
我已经尝试了什么? 已排除项、日志、接口样例、复现步骤

这三个问题能显著减少 AI 的误判。

专属提问模板

以后遇到复杂前端 bug,可以直接套用下面这个模板:

### 背景

项目:Vue2 + iView。
限制:不要 npm run build。
是否需要先读 AGENTS.md:是 / 否。

### 目标

我希望你:修复代码 / 只分析原因 / 加调试日志 / 给方案对比。

### 涉及文件

- `path/to/file.vue`
- `path/to/util.js`

### 当前表现

具体描述页面现象、报错、Network 表现、控制台日志。

### 复现步骤

1. 
2. 
3. 

### 输入数据 / 接口样例

贴最小 JSON,不贴无关的大对象。

### 期望行为

正例 1:
正例 2:
反例:

### 已排除 / 已尝试

例如:
- 接口已返回
- 构建字段树耗时 5ms
- 不是自引用限制

### 修改约束

- 不要大重构
- 保持现有风格
- 只改指定文件
- 修改前先说明改动点
- 最后列出验证点

如果问题很复杂,可以在末尾追加一句:

请反问我 3 个可能影响结论的边界条件,并标注哪个最可能导致返工。

这句话很有用。它会逼 AI 主动暴露不确定性,而不是假装上下文已经足够。

最该改变的 3 个习惯

  1. 不要先给“现象 + 情绪强度”,后给“最小复现数据”。先给数据,AI 才能少猜。
  2. 少用“优化、完善、解决”这类大词,多给验收标准和修改边界。
  3. 不要等 AI 出错后才补关键事实。把接口样例、已排除项、触发时机提前,会直接提高协作效率。

真正高质量的 Prompt,不是把话写得很长,而是把问题的边界、证据和验收标准放在正确的位置。

当你从“描述现象”升级到“描述系统状态变化”,AI 才更像一个靠谱的协作者,而不是一个只能猜测的回答机器。