你有没有遇到过这种场景——给 Cursor 或 Claude Code 发了一条指令,它生成的代码跑不通,还得你自己改?
不是工具不行,是提示词没写好。
我用了两年 AI 编程工具,总结了几个核心原则。掌握这些,同样的工具效率能翻三倍。
一、为什么提示词这么重要
AI 编程助手不是搜索引擎。你问它什么,它不一定知道上下文。
比如你说"帮我优化这个函数"。优化什么?性能?可读性?内存?AI 只能猜。
猜对了,完美。猜错了,你得重新解释,来回几次,时间反而花更多。
好的提示词 = 让 AI 一次猜对你的意图。
二、提示词的黄金公式
我总结了一个万能公式:
角色 + 任务 + 上下文 + 约束 + 输出格式
拆解一下:
角色:让 AI 知道它在什么立场工作 任务:具体要做什么 上下文:相关代码、项目结构、技术栈 约束:不能用什么、要遵守什么规范 输出格式:代码、注释、文档、还是解释
例子:坏提示词 vs 好提示词
坏的:
帮我写个登录接口
AI 会懵:什么框架?什么数据库?JWT 还是 session?前端传什么参数?
好的:
角色:资深后端工程师
任务:实现用户登录 API
上下文:
- 框架:FastAPI + SQLAlchemy
- 数据库:PostgreSQL
- 用户表字段:id, email, password_hash, created_at
- 认证方式:JWT token,有效期 24 小时
约束:
- 密码用 bcrypt 加密
- 输入参数用 Pydantic 校验
- 错误信息用统一格式返回
输出:完整的 Python 代码,包含路由、服务层、数据库模型
差距一目了然。
三、Cursor 专用技巧
Cursor 有文件上下文感知能力,善用这个优势。
技巧 1:用 @ 符号引用文件
在 Cursor 的聊天框里,输入 @ 然后选择文件。这样 AI 能看到完整代码,不只是你粘贴的那几行。
比如你想重构一个函数:
@user_service.py 帮我重构 getUser 函数,改成异步版本,加上缓存逻辑。
AI 会读取整个 user_service.py 文件,理解依赖关系后再改代码。
技巧 2:Composer 模式的多文件策略
Composer(Cmd+I)能同时改多个文件。但如果你不告诉它改哪些,它可能只改一个。
正确的做法:
帮我加用户注销功能。
需要修改的文件:
- auth_routes.py:加 POST /logout 路由
- auth_service.py:加 invalidate_token 方法
- user_model.py:加 last_logout_at 字段
约束:token 失效后存入 Redis,TTL 30 分钟
明确告诉它改什么、怎么改,AI 不会瞎猜。
技巧 3:用 Tab 接受,逐行审查
Cursor 的代码补全按 Tab 接受。不要全盘接受。
看每一段生成的代码,确认:
- 逻辑对不对
- 边界条件处理了没有
- 有没有安全漏洞
四、Claude Code 专用技巧
Claude Code 在终端里运行,适合批量任务和自动化。
技巧 1:用 –follow 参数追踪修改
Claude Code 改完文件后,你可以用:
claude --follow "检查刚才修改的文件有没有引入新 bug"
让它主动读文件,而不是猜你改了啥。
技巧 2:把项目结构作为上下文
Claude Code 能看到文件树。但如果你要它理解架构,最好主动告诉它:
这是一个电商后端项目,结构如下:
- src/routes/:API 路由
- src/services/:业务逻辑
- src/models/:数据模型
- src/middleware/:中间件
现在要加一个订单取消功能,涉及 routes/order.py 和 services/order.py。
技巧 3:用 -p 参数预览模式
不想真的改文件?用 -p(preview)参数:
claude -p "优化这个数据库查询,减少 N+1 问题"
AI 会输出 diff,你确认后再执行。
五、通用技巧:迭代式提示
不要指望一条提示词解决所有问题。迭代改进更有效。
第一轮: 生成基础代码 第二轮: 指出问题,让 AI 修复 第三轮: 要求优化(性能、可读性、测试覆盖)
举个例子:
第一轮:写一个 REST API 获取用户列表
第二轮:加了分页参数,每页 20 条,返回总数
第三轮:加上 Redis 缓存,TTL 5 分钟,缓存击穿用互斥锁解决
每一轮都在前一轮基础上改进,AI 更容易跟上节奏。
六、常见错误:别这样写提示词
错误 1:太抽象
❌ “让这个代码更好” ✅ “把函数拆成更小的单元,每个函数只做一件事,加类型注解”
错误 2:一次给太多任务
❌ “写登录、注册、找回密码,全部用 JWT 认证” ✅ “先写登录接口,注册和找回密码后面再说”
AI 一次处理太多任务,容易漏掉细节。拆开做,质量更高。
错误 3:忽略错误处理
❌ “实现文件上传功能” ✅ “实现文件上传,处理超大文件、非法类型、磁盘空间不足的情况”
错误 4:不给技术栈约束
❌ “写个爬虫” ✅ “用 Python + httpx + asyncio 写异步爬虫,支持代理和重试”
七、实战案例:从 0 到 1 写一个工具
假设你要写一个"日志分析工具"。
第一步:定义需求
用 Python 写一个日志分析脚本。
功能:
1. 读取 Nginx 访问日志
2. 统计每小时请求量
3. 找出状态码为 5xx 的请求
4. 输出趋势图(用 matplotlib)
5. 支持命令行参数指定日志路径和时间范围
第二步:让 AI 生成框架
把上面的 prompt 发给 Claude Code 或 Cursor。它会给你一个基础版本。
第三步:迭代完善
第一轮生成的代码缺异常处理。
请加上:
- 日志文件不存在时提示
- 解析失败时跳过该行而不是崩溃
- 时间格式错误时打印警告
第四步:最终审查
检查代码的安全性:
1. 有没有路径遍历漏洞?
2. 用户输入有没有过滤?
3. 内存占用会不会爆?
八、提示词模板库
收藏几个常用模板,以后直接改参数:
代码审查模板
角色:资深 Code Reviewer
任务:审查以下代码
约束:
- 检查安全漏洞(注入、越权)
- 检查性能问题(N+1、内存泄漏)
- 检查代码规范(命名、注释、结构)
- 检查边界条件
输出:问题列表 + 修改建议 + 优先级
Bug 修复模板
角色:Debug 专家
任务:修复以下 bug
上下文:
- 错误信息:{错误信息}
- 相关代码:{代码}
- 期望行为:{描述}
- 实际行为:{描述}
输出:原因分析 + 修复代码 + 测试用例
代码重构模板
角色:架构师
任务:重构以下代码
目标:提高可读性和可维护性
约束:
- 保持原有功能不变
- 减少重复代码
- 添加类型注解和文档字符串
输出:重构后的完整代码
总结
提示词工程不是玄学,是有方法可循的。
记住核心公式:角色 + 任务 + 上下文 + 约束 + 输出格式。
下次给 AI 编程助手发指令前,花 30 秒想想:我把上下文说清楚了没有?约束列全了没有?输出格式明确了吗?
多试几次,你会发现自己和 AI 的配合越来越默契。
你现在最想让我帮你写什么代码?把 prompt 发过来,我帮你改。