news 2026/8/24 13:43:08

如何向 AI 清楚描述一个编程需求

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何向 AI 清楚描述一个编程需求

文章目录

    • 一、为什么“帮我写代码”通常不够清楚
    • 二、描述需求的第一个要素:背景
      • 背景通常包含什么
      • 为什么背景很重要
      • 背景不要写得过多
    • 三、描述需求的第二个要素:目标
      • 不够具体的目标
      • 更清楚的目标
      • 目标最好包含“做什么”和“不做什么”
    • 四、描述需求的第三个要素:限制
      • 常见的限制类型
        • 1. 技术限制
        • 2. 修改范围限制
        • 3. 功能范围限制
        • 4. 输出限制
        • 5. 安全和数据限制
      • 不确定的内容不要让 AI 自行猜
    • 五、描述需求的第四个要素:输出格式
      • 只要求“给我代码”
      • 明确输出步骤
      • 不同任务可以要求不同输出
        • 学习代码
        • 生成小功能
        • 排查报错
        • 修改已有代码
    • 六、把 4 个要素组合起来
      • 原始需求
      • 补充背景
      • 补充目标
      • 补充限制
      • 补充输出格式
      • 组合后的完整需求
    • 七、不同场景下的需求描述模板
      • 模板一:让 AI 解释代码
      • 模板二:让 AI 生成一个函数
      • 模板三:让 AI 修改已有代码
      • 模板四:让 AI 排查报错
    • 八、描述需求时最容易犯的 4 个错误
      • 错误一:目标太抽象
      • 错误二:把多个大任务混在一起
      • 错误三:只说技术,不说结果
      • 错误四:只说结果,不说明学习阶段
    • 九、提交需求前的快速检查
    • 十、总结

✍创作者:全栈弄潮儿
🏡 个人主页:全栈弄潮儿的个人主页
🏙️ 个人社区,欢迎你的加入:全栈开发社区
📙 专栏地址,欢迎订阅:AI 编程提效实战

前面几篇文章中,我们反复提到一个观点:

AI 输出得好不好,和我们描述问题的方式有很大关系。

很多人第一次向 AI 提问时,通常只会说:

帮我写一个待办事项功能。

AI 确实可以生成代码。

但这段代码很可能和你的实际需求不一致,因为 AI 不知道:

  • 你使用什么技术栈。
  • 你想实现哪些具体功能。
  • 数据应该保存在哪里。
  • 哪些功能暂时不需要。
  • 你希望 AI 输出代码,还是先解释思路。

这不是 AI 故意回答得不好,而是问题本身留下了太多需要猜测的地方。

今天我们就来学习一个非常实用的能力:

如何向 AI 清楚描述一个编程需求,让它少猜一点、少返工一点。

本文不会要求你学习复杂的 Prompt 术语。

只要记住 4 个要素:

背景 ↓ 目标 ↓ 限制 ↓ 输出格式

一、为什么“帮我写代码”通常不够清楚

我们先看一个很短的需求:

帮我写一个用户登录页面。

这句话看起来很明确,但真正开始实现时,还有很多问题没有答案:

  • 使用 Vue、React,还是原生 HTML?
  • 页面需要哪些输入框?
  • 登录使用账号密码,还是手机号验证码?
  • 用户名和密码是否必填?
  • 密码是否需要显示和隐藏切换?
  • 登录成功后跳转到哪里?
  • 登录失败后如何提示?
  • 是否需要显示加载状态?
  • 是否需要调用真实接口?
  • 是否需要保存登录状态?

如果你不补充这些信息,AI 就必须自行选择。

它可能生成一个简单的静态页面,也可能生成一个带路由、接口、状态管理和第三方组件库的复杂实现。

两种结果都可能“看起来合理”,但未必符合你的目标。

所以,问题不一定是:

AI 为什么没有按照我的想法写?

也可能是:

我有没有把自己的想法说完整?

二、描述需求的第一个要素:背景

背景是告诉 AI:

你现在处于什么环境,要解决什么类型的问题。

背景不需要写成一篇项目介绍,只需要提供和当前任务有关的信息。

背景通常包含什么

根据任务不同,可以提供:

  • 使用的编程语言。
  • 使用的框架或运行环境。
  • 当前项目的大致类型。
  • 相关文件或模块。
  • 你目前的学习阶段。
  • 已经完成了哪些内容。

例如:

我正在学习 JavaScript,使用 Node.js 运行代码。 目前只会使用变量、函数、数组和条件判断。 我想通过一个小练习理解如何读取和处理文件。

如果是一个已有项目,可以这样描述:

这是一个 Vue 3 + JavaScript 的待办事项项目。 页面代码位于 src/components/TodoList.vue。 当前已经可以展示待办列表,本次只想增加删除功能。 项目使用 npm 管理依赖,不希望新增第三方库。

为什么背景很重要

同一个需求,在不同环境中的实现方式可能不同。

例如“读取文件”:

  • 浏览器中需要考虑文件选择器和用户权限。
  • Node.js 中可以使用文件系统模块。
  • Python 中有自己的文件操作方式。
  • 移动端还需要考虑平台权限。

如果不说明背景,AI 只能给出一个通用答案。

通用答案适合学习概念,但不一定能直接放进你的项目。

背景不要写得过多

提供背景不等于把整个项目全部复制给 AI。

如果你只是想学习一个数组方法,不需要把整个项目目录、所有配置和无关代码都发过去。

可以遵循一个简单原则:

只提供完成当前任务必须知道的背景。

例如:

我使用 JavaScript。 下面有一个用户数组。 我想筛选出年龄大于 18 岁的用户。

这些信息已经足够 AI 解释filter的用法。

三、描述需求的第二个要素:目标

目标是告诉 AI:

这一次具体要完成什么。

目标越具体,AI 越容易判断工作范围。

不够具体的目标

帮我优化一下页面。

“优化”可能代表很多事情:

  • 让页面加载更快。
  • 让样式更好看。
  • 让手机端适配更好。
  • 减少重复代码。
  • 提高代码可读性。
  • 修复一个具体的交互问题。

如果没有进一步说明,AI 可能按照自己的理解进行大范围修改。

更清楚的目标

请优化待办事项列表的移动端显示效果。 本次只调整 CSS,不修改 JavaScript 逻辑。 要求: 1. 屏幕宽度小于 600px 时,列表不要出现横向滚动。 2. 每条待办事项的文字过长时可以换行。 3. 删除按钮保持在每条记录的右侧。

这个目标就比较清楚了:

  • 优化对象是待办事项列表。
  • 使用场景是移动端。
  • 修改范围是 CSS。
  • 不允许修改 JavaScript。
  • 有明确的验收条件。

目标最好包含“做什么”和“不做什么”

很多返工都来自范围不清。

所以,描述目标时可以同时写:

本次要做: - 增加待办事项删除功能。 本次不做: - 不增加编辑功能。 - 不修改数据存储方式。 - 不重构现有列表组件。

明确不做什么,同样重要。

四、描述需求的第三个要素:限制

限制是告诉 AI:

哪些事情必须遵守,哪些事情不能自行决定。

没有限制时,AI 往往会选择它认为方便的实现方式。

常见的限制类型

1. 技术限制
- 只使用原生 JavaScript。 - 不使用第三方库。 - 使用项目现有的 axios 封装。 - 兼容 Node.js 18。
2. 修改范围限制
- 只修改 LoginForm.vue。 - 不修改路由配置。 - 不修改数据库结构。 - 不重命名现有接口。
3. 功能范围限制
- 本次只实现新增,不实现编辑和删除。 - 只处理未完成的待办事项。 - 暂时不接入真实登录接口。
4. 输出限制
- 先解释思路,再给代码。 - 代码拆分成三个文件。 - 每段代码后说明如何运行。 - 只输出需要修改的部分,不要重复整个项目。
5. 安全和数据限制
- 不要在日志中打印密码和令牌。 - 不要使用真实用户数据。 - 不要把密钥写死在前端代码中。 - 用户输入必须经过基本校验。

不确定的内容不要让 AI 自行猜

如果你不知道某条规则,也可以直接告诉 AI:

下面这条业务规则我还没有确认。 请先把它列为待确认问题,不要自行选择一种实现。

例如:

订单支付成功后是否允许取消,目前还没有确定。 请在方案中单独列出这个问题。

这样可以避免 AI 把一个猜测写进代码,之后又被当成了正式规则。

五、描述需求的第四个要素:输出格式

输出格式是告诉 AI:

你希望它用什么方式回答。

同一个需求,输出格式不同,结果的可用性也会不同。

只要求“给我代码”

帮我写一个读取 CSV 文件的程序。

AI 可能只返回一段代码。

如果你是初学者,可能还不知道:

  • 代码应该保存成什么文件。
  • 需要安装什么环境。
  • 如何运行。
  • 输入文件放在哪里。
  • 输出结果是什么。

明确输出步骤

请按以下顺序回答: 1. 先用简单语言解释实现思路。 2. 说明需要准备的文件和目录。 3. 给出完整代码。 4. 说明如何运行。 5. 给出一份示例输入和预期输出。 6. 列出 3 个常见错误及排查方法。

这种格式特别适合初学者。

不同任务可以要求不同输出

学习代码
请先解释概念,再给一个最小示例。 逐行说明关键代码,并给出可以修改的练习。
生成小功能
请先复述需求,再给出实现思路和代码。 最后列出运行步骤和测试场景。
排查报错
请先解释报错含义。 再按可能性从高到低列出原因和排查步骤。 不要直接猜一个结论。
修改已有代码
请先说明准备修改哪些地方。 只修改与当前需求相关的代码。 不要重写无关部分。 修改后说明可能影响的功能。

输出格式越明确,你越容易阅读、检查和使用 AI 的回答。

六、把 4 个要素组合起来

下面用一个具体需求,把背景、目标、限制和输出格式组合起来。

原始需求

帮我做一个待办事项功能。

这句话太宽泛,AI 需要自行猜测很多内容。

补充背景

我正在学习原生 HTML、CSS 和 JavaScript。 目前已经可以创建一个网页,并使用 JavaScript 操作按钮点击事件。 我想通过一个小项目练习数组和 DOM 操作。

补充目标

请实现一个简单的待办事项列表。 用户可以输入待办内容,点击按钮后把它添加到列表中。 每条待办事项旁边显示一个删除按钮。

补充限制

要求: 1. 只使用原生 HTML、CSS 和 JavaScript。 2. 不使用第三方库。 3. 本次不接入数据库。 4. 待办内容为空时不能添加。 5. 只修改新增和删除,不实现编辑功能。

补充输出格式

请按以下格式输出: 1. 先解释实现思路。 2. 分别给出 index.html、style.css 和 app.js。 3. 说明每个文件的作用。 4. 说明如何在浏览器中运行。 5. 列出正常输入、空输入和连续删除的测试方法。 6. 代码要适合初学者阅读,避免不必要的复杂写法。

组合后的完整需求

我正在学习原生 HTML、CSS 和 JavaScript。 目前已经可以创建一个网页,并使用 JavaScript 操作按钮点击事件。 我想通过一个小项目练习数组和 DOM 操作。 请实现一个简单的待办事项列表。 用户可以输入待办内容,点击按钮后把它添加到列表中。 每条待办事项旁边显示一个删除按钮。 要求: 1. 只使用原生 HTML、CSS 和 JavaScript。 2. 不使用第三方库。 3. 本次不接入数据库。 4. 待办内容为空时不能添加。 5. 只修改新增和删除,不实现编辑功能。 请按以下格式输出: 1. 先解释实现思路。 2. 分别给出 index.html、style.css 和 app.js。 3. 说明每个文件的作用。 4. 说明如何在浏览器中运行。 5. 列出正常输入、空输入和连续删除的测试方法。 6. 代码要适合初学者阅读,避免不必要的复杂写法。

相比最开始的一句话,这个版本已经明确了:

  • 学习背景。
  • 技术环境。
  • 具体功能。
  • 本次范围。
  • 不做的内容。
  • 代码组织方式。
  • 运行和测试要求。

AI 得到的信息越完整,越容易给出符合预期的回答。

七、不同场景下的需求描述模板

模板一:让 AI 解释代码

我正在学习 [编程语言或框架]。 下面是一段代码: [粘贴代码] 请完成以下任务: 1. 用初学者能理解的语言说明整体作用。 2. 逐段解释关键代码。 3. 说明每个输入和输出。 4. 指出可能出现的错误。 5. 给我一个可以自己修改的练习。

模板二:让 AI 生成一个函数

我使用 [语言和版本]。 请实现一个 [函数功能]。 背景: [说明函数会被用在哪里] 要求: - 输入是 [参数和类型] - 输出是 [返回值和类型] - [业务规则或限制] - [异常输入如何处理] 请先解释思路,再给代码。 最后提供正常、边界和异常测试示例。

模板三:让 AI 修改已有代码

这是当前代码: [粘贴相关代码] 我想解决的问题: [说明当前问题] 项目背景: [技术栈、文件位置和相关规则] 限制: 1. 只修改与当前问题相关的部分。 2. 不新增第三方依赖。 3. 不改变已有功能的输入和输出。 请先说明问题原因和修改计划。 确认后再给出修改后的代码。

模板四:让 AI 排查报错

我在 [操作步骤] 时遇到了下面的报错: [粘贴完整报错] 相关代码: [粘贴报错位置附近的代码] 环境信息: - 操作系统: - 运行环境版本: - 框架或库版本: 我已经尝试过: [列出已经尝试的处理方式] 请: 1. 解释报错含义。 2. 列出最可能的原因。 3. 按顺序给出排查步骤。 4. 说明还需要哪些信息。

八、描述需求时最容易犯的 4 个错误

错误一:目标太抽象

帮我优化一下。 帮我完善一下。 帮我做得更好看。

改成:

请优化登录表单的移动端布局。 只修改 CSS,不修改交互逻辑。 当屏幕宽度小于 600px 时,表单内容不能出现横向滚动。

错误二:把多个大任务混在一起

帮我把这个项目的登录、支付、订单和后台管理全部做完。

改成:

本次只实现登录页面的表单校验。 登录接口和登录成功后的跳转放到下一步。

任务越小,越容易理解和验证。

错误三:只说技术,不说结果

用 React 写一个组件。

还需要说明:

这个组件用于展示待办事项。 需要接收 items 和 onDelete 两个参数。 每条记录显示标题、完成状态和删除按钮。

技术栈只能说明“用什么写”,不能说明“要写出什么”。

错误四:只说结果,不说明学习阶段

如果你是初学者,可以直接告诉 AI:

我刚开始学习 JavaScript。 请避免使用我还没有学过的高级语法。 如果必须使用,请先解释它的作用。

AI 知道你的学习阶段后,可以调整解释深度和代码复杂度。

九、提交需求前的快速检查

向 AI 发送需求前,可以快速看一遍:

[ ] 我说明了使用的语言、框架或运行环境吗? [ ] 我明确说明了这次要完成什么吗? [ ] 我说明了哪些内容暂时不做吗? [ ] 我写清楚了输入、输出和关键规则吗? [ ] 我告诉 AI 希望它如何回答吗? [ ] 我要求它提供运行或测试方法了吗? [ ] 我是否删除了密钥、密码和真实用户数据?

如果暂时没有足够信息,也可以这样问:

在开始实现之前,请先列出完成这个需求还需要我补充的关键信息。

让 AI 先提问,通常比让它基于猜测直接写代码更稳妥。

十、总结

向 AI 描述编程需求,不是把 Prompt 写得越长越好,而是把真正重要的信息说清楚。

今天重点学习了 4 个要素:

  1. 背景:说明技术栈、项目环境和当前基础。
  2. 目标:明确这次要实现什么,以及做到什么程度。
  3. 限制:说明不能做什么、必须遵守哪些规则。
  4. 输出格式:告诉 AI 希望它用什么方式回答、如何运行和验证。

可以把它们记成一张简单的卡片:

我现在在哪里? 我想完成什么? 有哪些事情不能做? 我希望你怎样交付?

请记住:

描述需求的过程,本身也是梳理需求的过程。

当你能够把一个问题说清楚,通常也会更容易理解自己到底想解决什么。

下一篇文章,我们继续练习 4 个新手可以直接套用的 AI 编程提示词模板:

解释代码、生成函数、排查报错和优化代码。


✍坚持原创,求关注,点赞,收藏

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 13:39:03

Arteris session 1 — NoC Concept and Architecture- 总结

引言 随着现代片上系统(SoC)的复杂度不断提升,传统的总线互连架构在带宽、延迟和可扩展性方面面临严峻挑战。片上网络(Network on Chip, NoC)作为一种分布式、可扩展的互连解决方案,已成为高性能SoC设计的核心。本文基于Arteris的培训资料,系统梳理NoC的核心概念、架构…

作者头像 李华
网站建设 2026/8/24 13:37:58

Android多渠道打包全攻略:从原理到Walle/VasDolly实战避坑

1. 项目背景与核心价值如果你在Android开发团队里待过,或者自己发布过App,大概率都听过“多渠道打包”这个词。听起来挺高大上,但说白了,就是给同一个App包,打上不同的“身份标签”,然后分发给不同的应用商…

作者头像 李华
网站建设 2026/8/24 13:36:49

基于SpringBoot的户外救援系统(毕设源码+文档)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

作者头像 李华
网站建设 2026/8/24 13:34:37

论文理论基础写成名词解释?普通大学生先把理论放进分析

一、理论基础最怕只剩下几段定义 普通大学生写论文时,理论基础经常是最容易拖到后面的部分。有人先找一段理论定义,换几个词后放进正文;有人一次写了三四个理论,却说不清每个理论分别解决什么问题。 理论基础不是为了让论文看起…

作者头像 李华
网站建设 2026/8/24 13:33:03

2026年7月许昌市新房价格深度分析报告

一、报告背景与数据说明本报告基于2026年7月许昌市新房实际成交案例,结合成交价格、成交面积、成交区域分布等维度,对许昌市新房市场进行深度分析。报告数据来源于许昌市不动产登记中心备案数据、主要房企网签数据及市场调研信息,覆盖许昌市魏…

作者头像 李华