Cursor AI 提示词使用技巧完全指南

993 阅读4分钟

Cursor AI 提示词使用技巧完全指南

一、提示词基本原则

1. 明确性

❌ 模糊的提示:

"这段代码有问题吗?"

✅ 明确的提示:

"请分析这段代码在并发场景下可能存在的问题,重点关注:

1. 线程安全性

2. 死锁风险

3. 资源竞争

4. 性能瓶颈"

2. 结构化

❌ 无结构提示:

"帮我写个用户管理的代码"

✅ 结构化提示:

"请帮我创建一个用户管理模块,需要:

1. 核心功能:

   - 用户注册

   - 登录认证

   - 信息修改

   - 密码重置

2. 技术要求:

   - Spring Boot 3.x

   - JPA 持久化

   - JWT 认证

   

3. 安全考虑:

   - 密码加密

   - 输入验证

   - 权限控制"

二、常见场景示例

1. 代码生成

实体类生成"请生成一个订单实体类,要求:1. 使用 JPA 注解2. 包含字段:   - 订单ID(雪花算法)   - 创建时间   - 更新时间   - 订单状态(枚举)   - 支付金额(BigDecimal)   3. 需要添加:   - Lombok 注解   - 审计字段   - 乐观锁   - 必要的索引   4. 包含与其他实体的关联:   - 用户(多对一)   - 订单项(一对多)"

生成的代码示例:

@Entity

@Table(name = "t_order")

@Data

@Builder

@NoArgsConstructor

@AllArgsConstructor

@EntityListeners(AuditingEntityListener.class)

public class Order {

    @Id

    @GeneratedValue(strategy = GenerationType.IDENTITY)

    private Long id;

    

    @Column(nullable = false)

    private BigDecimal amount;

    

    @Enumerated(EnumType.STRING)

    private OrderStatus status;

    

    @ManyToOne(fetch = FetchType.LAZY)

    @JoinColumn(name = "user_id")

    private User user;

    

    // ... 其他生成的代码

}

2. 代码优化

性能优化"这是一个处理大量数据的方法,请优化它的性能:1. 当前问题:   - 处理 100w 条数据需要 30s   - 内存使用过高   - CPU 使用率不理想2. 优化目标:   - 处理时间减少 50%   - 内存使用控制在 2GB 以内   - 充分利用多核 CPU3. 约束条件:   - 保证数据一致性   - 不能修改接口定义   - 需要考虑可维护性"

原始代码:

public List processUsers(List users) {

    return users.stream()

        .filter(user -> user.getStatus().equals("ACTIVE"))

        .map(user -> {

            UserDTO dto = new UserDTO();

            BeanUtils.copyProperties(user, dto);

            return dto;

        })

        .collect(Collectors.toList());

}

优化建议示例:

public List processUsers(List users) {

    return users.parallelStream()

        .filter(user -> "ACTIVE".equals(user.getStatus()))

        .map(this::convertToDTO)

        .collect(Collectors.toCollection(

            () -> new ArrayList<>(users.size())

        ));

}

private UserDTO convertToDTO(User user) {

    return UserDTO.builder()

        .id(user.getId())

        .name(user.getName())

        // ... 直接设置属性而不是使用 BeanUtils

        .build();

}

3. 问题诊断

并发问题诊断"在并发场景下,这段代码出现了数据不一致问题:1. 问题现象:   - 高并发时库存出现负数   - 部分订单重复处理   - 数据库死锁频繁2. 运行环境:   - 8核16G服务器   - MySQL 8.0   - 并发用户 1000+3. 请提供:   - 问题根因分析   - 解决方案   - 性能影响评估   - 改进建议"

问题代码:

@Service

public class StockService {

    @Autowired

    private StockRepository stockRepository;

    

    public boolean deductStock(Long productId, int amount) {

        Stock stock = stockRepository.findById(productId).orElse(null);

        if (stock != null && stock.getQuantity() >= amount) {

            stock.setQuantity(stock.getQuantity() - amount);

            stockRepository.save(stock);

            return true;

        }

        return false;

    }

}

4. 测试用例生成

单元测试生成"请为这个支付服务生成单元测试:1. 测试场景:   - 正常支付流程   - 余额不足   - 重复支付   - 系统异常2. 技术要求:   - JUnit 5   - Mockito   - AssertJ3. 测试覆盖:   - 参数验证   - 业务逻辑   - 异常处理   - 边界条件"

生成的测试代码示例:

@ExtendWith(MockitoExtension.class)

class PaymentServiceTest {

    @Mock

    private PaymentRepository paymentRepository;

    

    @InjectMocks

    private PaymentService paymentService;

    

    @Test

    void shouldProcessPaymentSuccessfully() {

        // Given

        PaymentRequest request = createValidPaymentRequest();

        when(paymentRepository.findById(any()))

            .thenReturn(Optional.empty());

        

        // When

        PaymentResult result = paymentService.processPayment(request);

        

        // Then

        assertThat(result.isSuccess()).isTrue();

        verify(paymentRepository).save(any(Payment.class));

    }

    

    // ... 其他测试方法

}

三、高级技巧

1. 迭代优化

先提供基础需求,然后基于返回结果逐步完善:第一次提示:

"请生成一个基础的用户注册接口"

基于返回结果继续优化:

"请为刚才的接口添加:

1. 参数验证

2. 错误处理

3. 日志记录"

最后完善细节:

"请补充:

1. API 文档注解

2. 单元测试

3. 性能优化建议"

2. 上下文关联"基于之前生成的用户服务,请:1. 添加与订单服务的集成2. 处理跨服务调用的异常3. 添加必要的日志追踪4. 确保与现有代码风格一致"

3. 代码审查"请审查这段代码,关注:1. 代码质量:   - 命名规范   - 代码结构   - 注释完整性   2. 技术实现:   - 设计模式使用   - 异常处理   - 资源管理   3. 性能相关:   - SQL 优化   - 缓存使用   - 并发处理   4. 安全考虑:   - 输入验证   - 权限控制   - 敏感数据处理"

四、最佳实践

  • 提供足够上下文

  • 技术栈版本

  • 运行环境

  • 业务背景

  • 性能要求

  • 明确输出期望

  • 代码风格

  • 文档格式

  • 性能指标

  • 测试覆盖率

  • 分步骤提问

  • 先确认方向

  • 再完善细节

  • 最后优化改进

  • 及时反馈

  • 如果生成的代码不符合预期,及时提供具体的改进建议

  • 说明具体的问题和期望的结果

  • 持续优化

  • 收集常用的提示词模板

  • 根据实际效果调整提示词

  • 建立个人的最佳实践库

记住:好的提示词应该像写技术文档一样清晰、结构化,并且包含足够的细节信息。通过不断实践和总结,你可以建立起自己的提示词库,提高与 AI 助手的协作效率。