Cursor 的 AI 能读懂上下文,但提示词的质量直接决定生成代码的可用性。含糊的指令往往得到“看起来对、跑起来错”的结果,而清晰的提示词能一次性拿到可用代码,减少反复拉扯。
4.2.1 高质量代码生成的描述公式
有效提示词通常遵循一个简单结构:角色/场景 + 具体任务 + 约束条件 + 输出要求。
| 要素 | 说明 | 示例 |
|------|------|------|
| 场景 | 技术栈与上下文 | “在一个使用 React 18 + TypeScript 的前端项目中……” |
| 任务 | 具体要做什么 | “……编写一个带防抖功能的搜索输入组件……” |
| 约束 | 边界与规范 | “……要求使用 useCallback 缓存函数,延迟 500ms,并处理组件卸载时的定时器清理……” |
| 输出 | 期望格式 | “……以完整的可运行代码形式给出,并附上组件 Props 的 TypeScript 接口定义。” |
对比示例:
- ❌ 低效:"写一个搜索功能。"
- ✅ 高效:"为 Next.js 13 App Router 编写一个服务端搜索 API 路由,接收
q和page参数,使用 Prisma 查询 PostgreSQL,要求 SQL 注入安全,返回 JSON 格式,并处理无结果时的 404 状态。"
约束条件越明确,AI 的“幻觉”越少,生成代码与项目现有风格的契合度也越高。
4.2.2 复杂需求的拆解方法
不要试图用一句话让 AI 完成整个模块。复杂需求建议分轮次、分粒度推进:
- 先定方案:让 AI 输出伪代码或步骤清单,确认逻辑分支无误。例如:“我要实现一个支持断点续传的文件上传功能,请先用步骤描述整体流程。”
- 再要骨架:基于确认的方案,先生成接口定义、类型和空函数体,确保与现有代码结构兼容。
- 最后填充:逐个函数要求实现细节,利用 Cursor 的多轮对话上下文,在后续消息中追加要求,如“刚才的
uploadChunk函数需要增加 MD5 校验”。 - 验证收尾:生成完毕后,让 AI 检查潜在边界情况,例如“这段上传逻辑在弱网环境下会有什么问题?”
这种拆解方式既避免了一次性输出过长代码导致上下文丢失,也方便你在每轮及时纠偏。
4.2.3 高频场景指令模板
以下模板可直接复制使用,根据实际情况替换括号内容即可:
- 解释代码
> “解释这段代码的业务逻辑和关键算法,并指出是否存在性能瓶颈或安全隐患。”
- 重构优化
> “将以下代码重构为 [Python TypeHint / TypeScript],提取重复逻辑为独立函数,保持原有功能不变,变量命名采用驼峰式。”
- 生成测试
> “为以下函数编写 [Jest / Pytest / JUnit] 单元测试,覆盖:正常输入、空值、越界值,并使用 Arrange-Act-Assert 结构。”
- 添加注释
> “为以下代码添加规范注释:[Python Docstring / JSDoc],要求包含参数类型、返回值说明,以及可能抛出的异常。”
- Bug 定位
> “这段代码在运行时出现了 [具体错误信息 / 现象],请分析根因并给出最小化修复方案,只修改必要部分。”
- 跨语言转换
> “将以下 Python 函数转换为 Go 语言实现,要求使用 Go 的 error 处理惯用法,并保持时间复杂度不变。”
实用建议
在对话中如果 AI 输出偏离预期,不要从头重打提示词,直接指出具体问题,例如:“第 3 步的 SQL 没有加索引,请改用覆盖索引查询。” Cursor 的多轮上下文会记住前文,局部修正的效率远高于重新开始。