用Claude Code做需求分析:如何正确提问才能一次搞定
用Claude Code做需求分析:如何正确提问才能一次搞定
学习来源:跟老金老师学的 Claude Code 系列课程
你有没有过这种感觉——AI给的答案总是"差点意思",不是自己真正想要的?
说实话,这事儿我踩过不少坑。一开始总以为是AI不够聪明,后来才发现,问题往往出在我**问问题的方式**上。
**AI不会读心术。** 你给的信息越模糊,它只能靠猜,猜错的概率能不大吗?
---
一、核心原则:把AI当实习生
这是我跟老金老师学到的最重要的一句话:
**想象你有个刚入职的实习生,你怎么说他才能一次听懂?**
好需求 = **具体场景** + **明确目标** + **约束条件** + **输出格式**
就这么简单?对,但90%的人做不到。
为啥?因为我们习惯了跟人说话时"省略常识"——跟同事说"搞个用户管理",对方知道你们的技术栈、业务逻辑、UI规范。但AI不知道啊,你跟它说"搞个用户管理",它只能给出最通用的方案。
---
二、常见踩坑 vs 正确姿势(我全都踩过)
踩坑1:太笼统,AI靠猜
**❌ 错误示范:**
```
帮我做个网站
```
AI内心OS:啥网站?企业站?博客?电商?SaaS?资讯?完全不知道方向。
**✅ 正确姿势:**
```
帮我做一个个人简历网站
需求说明:
请先生成项目结构和组件规划,我再确认。
```
**效果对比:**
| 维度 | 笼统提问 | 精准提问 |
|------|---------|---------|
| 第一次就满意的概率 | ~10% | ~70% |
| 来回修改的次数 | 5-8轮 | 1-3轮 |
| 花费的时间 | 30分钟+ | 10分钟 |
| Token消耗 | 高(反复生成) | 低(一次到位) |
---
踩坑2:不给上下文,AI无从下手
**❌ 错误示范:**
```
这个代码报错了,帮我看看
```
没贴代码、没贴错误信息、没说在干什么。AI只能回"请提供更多信息"——等于白问。
**✅ 正确姿势:**
```
我在运行测试时遇到了一个错误,帮我分析原因并修复:
项目背景:
错误信息:
TypeError: Cannot read properties of undefined (reading 'id')
at Object.<anonymous> (tests/user.test.js:25:18)
相关代码(user.test.js 20-35行):
it('should return user by id', async () => {
const user = await UserService.getUserById('123')
expect(user.id).toBe('123') // ← 第25行报错
})
UserService.getUserById 的实现:
async getUserById(id) {
const user = await UserModel.findById(id)
return user
}
```
这样AI才能精准定位问题——哦,`findById` 返回了 `null`,没有做空值处理。
---
踩坑3:目标太模糊,AI不知道往哪使劲
**❌ 错误示范:**
```
帮我优化一下这个函数
```
"优化"这个词太宽泛了——优化性能?可读性?安全性?内存占用?不同的方向,做法完全不同。
**✅ 正确姿势:**
```
帮我优化这个函数,按以下优先级:
1. 【最高优先】安全性 - 防止SQL注入,验证输入
2. 【中等优先】可读性 - 加必要的注释,提取子函数
3. 【最低优先】性能 - 这段代码调用频率不高,性能不是瓶颈
函数代码:
[贴代码]
```
告诉AI你的优先级,它就知道往哪儿使劲了。否则它可能会花大量时间做你不需要的优化。
---
踩坑4:一次塞太多,AI消化不了
**❌ 错误示范:**
```
帮我做一个完整的电商系统,包含用户注册登录、商品管理、购物车、订单、支付、后台管理、数据统计、消息通知、优惠券系统……(以下省略100个需求)
```
**✅ 正确姿势:**
分阶段提需求:
```
第一阶段:帮我搭一个电商系统的项目骨架
第二阶段:[等第一阶段完成后再提]
```
---
三、5个万能提问模板(建议收藏)
这些模板我每天都在用,覆盖了最常见的开发场景:
模板1:实现新功能
```
我想实现[功能描述],当前已有[现有代码/项目情况]。
期望结果是[具体目标]。
约束条件:[技术栈/规范/限制/性能要求]
输出格式:[代码/文档/分析报告]
```
**实战案例:**
```
我想在现有Next.js项目中添加用户权限管理功能。
当前已用NextAuth做了基础登录,users表有role字段(admin/user)。
期望实现:不同角色看到不同的导航菜单和页面。
约束:使用middleware实现路由保护,不要额外引入权限库。
请给出完整的实现方案和代码。
```
---
模板2:修复Bug
```
遇到问题:[错误现象/错误信息]
环境:[语言/框架/版本]
相关代码:[贴关键代码]
已尝试的方法:[你试过的解决方式,避免AI重复建议]
```
**实战案例:**
```
遇到问题:React Hook useEffect 缺少依赖项警告,但加上依赖后会无限循环。
环境:React 18,函数组件
相关代码:
useEffect(() => {
setData(process(items))
}, [items]) // ← 如果加上 items 会无限循环
已尝试:
1. 把 items 加入依赖 → 无限循环
2. 用 useRef 存储 items → 可以但不优雅
3. 用 useMemo 处理 process(items) → 依然有警告
请帮我分析根本原因并给出最佳解决方案。
```
---
模板3:代码审查
```
帮我审查这段代码,重点关注以下维度(按优先级排序):
1. 安全性:有没有SQL注入、XSS等漏洞风险
2. 性能:有没有N+1查询、不必要的重渲染
3. 可维护性:命名是否清晰、有没有重复代码
4. 错误处理:边界情况有没有覆盖
代码:
[贴代码]
如果是问题代码,请给出修复方案。
```
---
模板4:技术选型
```
项目背景:[项目类型/规模/团队情况]
核心需求:[要解决什么问题]
候选方案:[方案A/方案B/方案C]
评估维度:学习成本、维护性、性能、生态成熟度
帮我分析各方案的优劣,给出推荐并说明理由。
```
**实战案例:**
```
项目背景:团队5人,技术栈React,做一个中后台管理系统,2个月工期。
核心需求:状态管理方案选型。
候选方案:Zustand / Jotai / Redux Toolkit
评估维度:学习成本(团队React中级水平)、开发效率、维护性。
请给出推荐。
```
---
模板5:学习新知识
```
我想了解[主题],当前基础是[你的水平]。
请用通俗易懂的方式解释,最好有类比。
重点讲清楚[你最关心的那几个点]。
如果可以,给一个最小可运行的例子。
```
**实战案例:**
```
我想了解React Server Components(RSC),当前基础是:
请用类比的方式帮我理解:
1. RSC解决了什么实际问题?
2. 什么时候用服务器组件、什么时候用客户端组件?
3. 给一个最简单的对比例子
```
---
四、进阶技巧:让AI回答质量再上一个台阶
技巧1:角色扮演法
让AI设定一个专业角色,回答质量会明显不同:
```
你是一个有10年经验的前端架构师,曾在阿里、字节带过团队。
我现在要做一个中后台系统,技术栈 React + Ant Design Pro。
请帮我分析目录结构怎么组织最合理,并解释你的设计思路。
```
比"帮我设计目录结构"得到的答案会深入得多。
技巧2:给AI"思考模板"
```
在回答之前,请按以下步骤思考:
1. 先理解我的需求,如果有不清楚的地方,列出你的疑问
2. 分析可能的方案,评估每个方案的优缺点
3. 给出你的推荐方案和理由
4. 最后才是具体实现
```
这样AI给出的答案结构清晰、逻辑完整,不会直接跳结论。
技巧3:迭代式提问
不要追求一次性完美,用"反馈→调整"的迭代模式:
```
第1轮:让AI先出方案
帮我设计一个用户注册功能的技术方案
第2轮:反馈调整
方案不错,但密码策略我想调整一下:
1. 不用密码复杂度要求,改用密码强度实时检测
2. 增加短信验证码验证
请更新方案
第3轮:细化实现
方案确认了,先从后端 API 开始实现
```
技巧4:让AI自我纠错
```
等一下,你刚才的建议有一个潜在问题——
如果并发量大的话,这个方案会出现竞态条件。
请重新考虑并给出更健壮的方案。
```
AI会承认错误并重新分析,比你自己去查资料快多了。
---
五、真实案例:提问质量决定答案质量
**需求:写一个用户注册API**
**❌ 笼统提问:**
```
帮我写一个注册接口
```
AI给出的可能是最简单的 Express + 内存存储 的demo代码,完全不能用。
**✅ 精准提问:**
```
帮我用Express写一个用户注册API,要求如下:
功能要求:
1. 支持用户名、邮箱、密码注册
2. 密码用bcrypt加密存储
3. 注册成功后返回JWT token
4. 邮箱格式和密码强度(8位以上,含大小写字母+数字)校验
5. 同一邮箱不能重复注册
技术栈:
请生成以下内容:
1. 路由文件(routes/auth.js)
2. 控制器(controllers/auth.js)
3. 数据模型(models/User.js)
4. 验证中间件(middleware/validate.js)
5. 对应的测试用例
```
差距非常明显——一个是玩具代码,一个是能直接用的生产级代码。
---
六、一句话总结
| 你的问法 | AI表现 | 需要多少轮 |
|---------|--------|-----------|
| "帮我做个网站" | 猜你心思,大概率跑偏 | 5-8轮 |
| "写一个注册接口" | 给个demo应付了事 | 3-5轮 |
| "用Express写注册API,需要bcrypt加密+JWT返回" | 生产级代码 | 1-2轮 |
| "技术栈+功能+约束+输出格式全给齐" | 一次性完美交付 | 0-1轮 |
**记住:** 你多花30秒写清楚需求,AI帮你省30分钟来回修改。
对AI提问,就像跟同事沟通需求一样——越清晰、越具体、越有结构,效率越高。
---
*本文学自老金老师的Claude Code系列教程。*