别再教 AI 写 for 循环了!搞懂"意图编程",让 Claude Code/Cursor 效能翻倍

cover

上周三下午三点,我在赶一个接口联调,需要把一段旧的数据处理逻辑改成异步的。我打开 Cursor,直接问:”帮我把这个 forEach 改成异步的”。

AI 给了我一版,跑起来报错。我说”不对,要等所有请求完成再返回”,它又改了一版,还是不对。来回折腾了四十分钟,最后我自己动手写了十行代码,五分钟搞定。

那一刻我意识到,不是 AI 笨,是我问的方式有问题。

我一直在告诉它”怎么做”,但从没说清楚”要什么”。

三个让 AI 变”智障”的错误姿势

错误 1:把 AI 当搜索引擎用

很多人跟 AI 说话,就像在百度打关键词:

“登录验证”
“React 状态管理”
“数据库查询优化”

这种提示词,AI 只能猜你想干什么。猜对了是运气,猜错了是常态。

就像你去餐厅,跟服务员说”吃的”,然后期待对方端上来正好是你想要的那道菜。

错误 2:手把手教 AI 写代码

“先定义一个变量 user”
“然后写一个 if 判断”
“再加一个 try-catch”

这种做法,本质上是把 AI 当成了”会打字的手”。

你在用自然语言翻译代码逻辑,AI 在用代码翻译你的自然语言。中间隔了两层转换,效率能高才怪。

更要命的是,AI 不知道你为什么要这么写。它只是在机械执行指令,没法帮你优化,没法给你更好的方案。

错误 3:一次性扔一堆需求

“帮我写一个用户管理系统,要有增删改查,要有权限控制,要有日志记录,要有数据验证,界面要好看,性能要好…”

AI 看到这种需求,就像你看到一个没有任何拆解的 100 页 PRD。

它会尽力去做,但大概率会:

  • 漏掉某些功能
  • 架构设计不合理
  • 代码风格不统一
  • 关键细节处理不到位

意图编程:换个方式跟 AI 说话

真正高效的做法,不是教 AI 怎么写代码,而是告诉它你想解决什么问题。

这就是”意图编程”的核心:说清楚你要什么,而不是怎么做

黄金法则 1:说明业务背景

不要:

1
帮我写一个登录验证函数

要:

1
2
3
我在做一个企业内部管理系统,需要实现用户登录功能。
用户通过邮箱和密码登录,登录成功后需要返回 JWT token。
系统要求:密码错误 3 次后锁定账号 15 分钟。

看到区别了吗?

第一种提示词,AI 只能给你一个最基础的登录函数。

第二种提示词,AI 知道了:

  • 这是企业系统(安全要求高)
  • 用邮箱登录(需要邮箱格式验证)
  • 用 JWT(需要 token 生成和验证逻辑)
  • 有锁定机制(需要记录登录失败次数和时间)

AI 会给你一个更完整、更符合实际需求的方案。

黄金法则 2:定义验收标准

不要:

1
优化这段代码的性能

要:

1
2
3
这段代码在处理 10 万条数据时耗时超过 5 秒,用户体验很差。
目标:将处理时间降到 1 秒以内。
约束:不能改变现有的数据结构,因为其他模块依赖它。

验收标准让 AI 知道:

  • 什么叫”好”(1 秒以内)
  • 什么不能动(数据结构)
  • 为什么要优化(用户体验差)

有了这些信息,AI 才能给出真正有用的优化方案,而不是随便改改了事。

黄金法则 3:设定全局约束

不要:

1
帮我重构这个组件

要:

1
2
3
4
5
6
帮我重构这个 React 组件。
项目约束:
- 使用 TypeScript
- 遵循 Airbnb 代码规范
- 使用 React Hooks,不要用 Class 组件
- 所有异步操作用 async/await,不要用 .then()

全局约束就像是给 AI 设定了”编码风格指南”。

它知道了你的技术栈、代码规范、团队习惯,生成的代码才能直接用,而不是还要你再改一遍。

实战演练:从”差提示词”到”好提示词”

场景 1:重构旧代码

差提示词:

1
这段代码太乱了,帮我重构一下

好提示词:

1
2
3
4
5
6
7
8
9
10
11
这是一个用户信息展示组件,目前有以下问题:
1. 代码重复:三个地方都在格式化日期
2. 性能问题:每次渲染都重新计算用户权限
3. 可读性差:嵌套层级太深

重构目标:
- 提取公共的日期格式化函数
- 用 useMemo 缓存权限计算结果
- 拆分成更小的子组件,降低复杂度

保持现有功能不变,不要改变组件的 props 接口。

效果对比:

差提示词:AI 可能随便改改格式,或者改了不该改的地方。

好提示词:AI 知道了具体问题、重构目标、约束条件,能给出针对性的解决方案。

场景 2:新增登录校验

差提示词:

1
加一个登录校验

好提示词:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
需求:在所有需要登录的页面添加权限校验。

当前情况:
- 项目使用 Next.js App Router
- 用户信息存在 localStorage 的 token 字段
- 后端返回的 token 有效期是 7 天

实现要求:
- 创建一个 auth 中间件,在页面加载前检查 token
- 如果 token 不存在或已过期,跳转到 /login
- 如果 token 有效,允许访问并刷新 token 有效期
- 需要支持白名单路由(如 /login、/register 不需要校验)

技术栈:TypeScript + Next.js 14

效果对比:

差提示词:AI 可能给你一个最简单的 if-else 判断,放在每个页面里。

好提示词:AI 会给你一个完整的中间件方案,包括 token 验证、过期处理、路由白名单、自动跳转等完整逻辑。

让 AI 帮你优化提示词

这里有个小技巧:用 AI 来优化你的提示词。

当你不确定自己的提示词是否清晰时,可以这样问 AI:

1
2
3
4
5
6
7
8
9
10
我想让你帮我实现一个功能,但我不确定我的需求描述是否清楚。

我的需求是:[你的原始需求]

请帮我分析:
1. 这个需求描述中,哪些信息是清晰的?
2. 哪些信息是模糊的或缺失的?
3. 如果要实现这个功能,你还需要知道哪些信息?

然后给我一个优化后的需求描述。

这个方法特别适合复杂需求。AI 会帮你梳理思路,补充缺失信息,让需求描述更完整。

写在最后

我现在用 Cursor 的方式变了很多。

以前我会说”帮我写一个登录函数”,现在我会先花两分钟想清楚:这个登录是给谁用的?有什么安全要求?失败了怎么处理?然后把这些背景一起告诉 AI。

效果差距很明显。以前一个功能要来回改五六次,现在通常第一版就能用,最多微调一下细节。

不是 AI 变聪明了,是我问的问题变具体了。

那个折腾了四十分钟的异步问题,如果我一开始说”我需要并发请求一批接口,等所有请求完成后统一处理结果,用 Promise.all 实现”,大概五分钟就能搞定。

这个认知盲区我花了挺长时间才意识到。