Cursor最佳实践之二:提问技巧

一. 最佳实践

短对话优于长对话,保持对话简短、专注,每个对话只做一件事

二. 实践前提

先要自己理解问题,把复杂问题解构成一个个的小问题或步骤,用AI做任务,而不是决策

三. 底层原理

LLM的工作方式是基于概率最大预测下一个token,每次只预测一个token,流式输出,无法修改之前输出的内容,一旦中间一步走偏,会沿着偏差继续自圆其说。对话拆分本质上是任务拆分,短对话也更容易追踪,每个对话都有明确的目标,中间可以不断"尝试--反馈---调整",这样做的好处:

  1. 每一步都可控,容易发现问题

  2. 可以根据实际情况调整方向

  3. 降低出错概率

  4. AI 理解更准确

四. 实践示例

错误示例:

XML 复制代码
"帮我完成整个标签管理模块,包括增删改查、权限控制、日志记录、数据验证、异常处理、单元测试"

正确示例:

XML 复制代码
Step 1: "帮我设计标签表的数据库结构"
Step 2: "生成标签实体类和 Mapper"
Step 3: "实现标签列表的分页查询功能"
Step 4: "添加标签新增功能,并处理唯一性校验"
Step 5: "为新增功能添加参数验证"
Step 6: "添加操作日志记录"

一个典型的工作流程:

XML 复制代码
功能:用户登录后的会话管理
[对话 1] 调研现有代码结构    
├── 了解 auth 模块的实现    
├── 查看 session 管理的现状    
└── 输出:关键文件列表和当前架构理解

[对话 2] 实现基础功能    
├── 参考对话 1 的发现    
├── 实现核心的 session 保存逻辑   
└── 输出:基础实现代码

[对话 3] 添加错误处理    
├── 参考对话 2 的实现    
└── 增加边界情况处理

[对话 4] 编写测试    
├── 参考对话 2、3 的实现    
└── 添加单元测试和集成测试

[对话 5] 代码审查    
├── 检查实现是否符合项目规范    
└── 确认没有引入安全问题

[对话 6] 清理和重构    
└── 根据审查结果进行调整

注:上面代码引用自https://mp.weixin.qq.com/s/Zlwn42KyfjgwfX6lp-JthQ

五. 实战建议

  1. 复杂任务拆解成 5-10 个小步骤

  2. 每个步骤完成后验证再继续

  3. 遇到问题及时调整,不要硬推

  4. 重要步骤让 AI 解释思路

六. 提问工程学

  1. 结构化提问框架:CRISP法则
XML 复制代码
C - Context 上下文
R - Requirements 需求
I - Input/Output 输入输出
S - Style/Constraints 风格约束
P - Priority 优先级

示例应用:

XML 复制代码
基于CRISP框架的完美提问:

[上下文]
我正在开发电商平台的订单服务,当前文件结构:
- OrderService.js (主服务类)
- OrderRepository.js (数据访问层)
- OrderValidator.js (验证逻辑)

[需求]
需要实现一个批量更新订单状态的功能,支持事务处理

[输入输出]
输入:orderIds数组,targetStatus字符串,operatorId
输出:成功更新的订单数量,失败详情列表

[风格约束]
1. 使用async/await
2. 遵循公司ESLint配置(Airbnb风格)
3. 包含完整的错误处理
4. 添加JSDoc注释
5. 支持数据库事务回滚

[优先级]
先实现核心功能,再添加日志和监控

七. 提问模板

XML 复制代码
[背景] 
我正在{工作上下文},涉及{技术栈}。

[目标]
需要实现{具体功能},解决{业务问题}。

[约束条件]
- 必须遵循{公司规范}
- 性能要求{具体指标}
- 安全性考虑{具体要求}

[示例参考]
类似功能的代码片段或API设计。

[期望输出]
请提供{代码/设计/建议},并解释{关键决策点}。
相关推荐
zh1570234 小时前
JavaScript中WorkerThreads解决服务端计算瓶颈
jvm·数据库·python
代码AI弗森4 小时前
一文理清楚“算力申请 / 成本测算 / 并发评估”
java·服务器·数据库
摇滚侠5 小时前
expdp 查看帮助
java·数据库·oracle
流年似水~5 小时前
MCP协议实战:从零搭建一个让Claude能“看见“数据库的工具服务
数据库·人工智能·程序人生·ai·ai编程
2401_871492855 小时前
Vue.js监听器watch利用回调函数处理级联下拉框数据联动
jvm·数据库·python
志栋智能6 小时前
超自动化安全:构建智能安全运营的核心引擎
大数据·运维·服务器·数据库·安全·自动化·产品运营
zhoutongsheng6 小时前
C#怎么实现Swagger文档 C#如何在ASP.NET Core中集成Swagger自动生成API文档【框架】
jvm·数据库·python
WinterKay7 小时前
【开源】我写了一个轻量级本地数据库浏览工具,支持 MySQL/Redis 只读查询
数据库·mysql·开源
zxrhhm8 小时前
Oracle 索引完整指南
数据库·oracle
程序猿乐锅8 小时前
【Tilas|第三篇】多表SQL语句
数据库·经验分享·笔记·学习·mysql