使用Cursor+Claude-3.7-Thinking修复Bug和实现新需求的最佳实践

使用Cursor+Claude-3.7-Thinking修复Bug和实现新需求的最佳实践

背景与理论基础

AI辅助开发的优势与挑战

在软件开发过程中,AI助手如Claude已成为提升开发效率的重要工具。基于实际项目经验,使用Cursor编辑器结合Claude-3.7-Thinking模型可以显著提升开发效率,但也面临一系列挑战。

优势:

  • 加速代码生成和问题解决
  • 减少重复性工作
  • 提供多角度思路和解决方案

挑战:

  • 大型项目上下文理解有限
  • 需要开发者精确引导
  • 可能生成不符合现有项目规范的代码

大型项目使用AI编程的局限性

在大型、复杂的项目中使用AI助手时存在几个关键限制:

  1. 上下文容量限制:即使是先进的模型如Claude-3.7-Thinking,也无法同时处理整个大型项目的代码库。

  2. 深层依赖理解:AI很难完全理解复杂项目中的深层次依赖关系和历史设计决策。

  3. 项目特定约定:每个项目都有其独特的编码风格、架构决策和业务逻辑,AI可能难以准确把握。

  4. 准确性与一致性:AI生成的代码需要人工审核,确保与现有代码保持一致性并符合项目标准。

现有项目AI辅助开发策略

针对已有项目进行修改时,可采用以下策略提高AI辅助开发的效果:

  1. 分解大问题:将复杂修改任务分解为小的、可管理的单元。

  2. 提供足够上下文:选择性地提供相关文件和模块,帮助AI理解修改环境。

  3. 明确修改边界:明确指定哪些文件、类或函数需要修改,避免影响其他部分。

  4. 迭代渐进:采用小步骤迭代方法,每次修改后进行测试和验证。

  5. 结合人工审核:AI生成代码后,进行人工审核确保符合项目规范和业务需求。

最佳实践总结文档

第一步:提出需求

思考:
在AI的辅助下,整理出本次修改的需求。

输入提示词:
@1.用户管理接口设计.md @users.py @init.sql
删除用户的接口需要修改,除了删除用户主表,还要删除关联的渠道表、三方关联表、任务表、该任务关联的表等所有与该用户关联的内容。应如何设计删除用户接口?
先在 @删除用户接口设计.md 中编写设计思路,包括需要操作哪些数据表、基于当前项目已有的实现需要新增修改哪些文件哪些方法?
先将设计写入 @删除用户接口设计.md

cursor工作:
编写@删除用户接口设计.md

参考图:
请添加图片描述

第二步:引导AI修改需求文档

思考:
仔细阅读 @删除用户接口设计.md ,看看是否有需要补充和修改的
发现没有修改范围,根据以往的使用AI开发经验,如果没有指定修改范围,AI会到处乱改,为了避免影响已经正常运行的代码,我必须给定修改范围。所以需要先整理出需要新增、修改的文件和方法。

提示词:
需要新增、修改 项目 @backend 中哪些文件,哪些方法?将目录结构整理到 @删除用户接口设计.md 中

cursor工作:
修改 @删除用户接口设计.md

参考图:
请添加图片描述

思考:
再次检查 @删除用户接口设计.md 发现并没有给出具体的修改范围,只是提示需要检查哪些文件,(基于大模型上下文长度受限,能给出需要检查的文件目录已经很不错了)于是我手动找出所有需要检查的文件交给AI检查。

提示词:
@base.py @crud_user.py @crud_wechat.py @crud_user_group.py @user.py @user_channel.py @wechat.py @oa.py @task.py @exceptions.py
请检查相关文件确认是否支持本次修改任务?哪些需要修改,哪些需要新增,记录到 @删除用户接口设计.md 中

cursor工作:
修改 @删除用户接口设计.md

参考图:
请添加图片描述

思考:
这次检查后,发现AI已经给出了具体的修改范围,包括需要新增、修改的文件和方法。具体修改也符合我的需求。
但是为了保险起见,我让AI自己审核再一遍

提示词:
审核@删除用户接口设计.md 是否满足修改需求,是否符合项目规范,是否会影响到已有的程序?

cursor工作:
审核并反馈审核结果

  此处省略……
  总体评价
  该设计方案设计合理,结构清晰,对现有系统影响可控。建议按照文档中的修改计划进行实施,并在实现过程中特别注意事务管理和性能优化。
  建议在实现完成后,添加一个恢复已删除用户的接口,以应对误删情况。此外,也可以考虑定期清理长期已软删除数据的后台任务,以优化数据库性能。

我和AI都认为设计没有问题,于是开始开发。

第三步:开始开发

提示词:
基于 @删除用户接口设计.md 的设计,请开始开发实现

cursor工作:
开发实现

参考图:
请添加图片描述

审核:
检查cursor修改的代码
1、检查有没有删除旧的代码。如果有要小心是否影响到已有的程序。
2、大致理解cursor的修改意图,是否符合我的需求。
3、检查cursor的修改是否符合项目规范。

如果差不多,就接受。
如果有的可以有的不行,就接受可以的,拒绝不行的。
如果差太多就全部拒绝,重新生成。
如果生成的代码不满意超过60%,应该思考AI为什么生成不符合我需求的代码
回到上一步修改需求文档强调不满足的点。然后重新生成。
如果多次修改后,AI生成的代码还是不满意,尝试缩小修改范围,一次修改一个文件,或者一个方法。

第四步:测试、修复bug

提交报错信息,AI分析报错信息,给出解决方案。
提示词:为什么报错了?(附 报错信息)
cursor工作:
分析报错信息,给出解决方案。

请添加图片描述

反复修改几次后,测试用过,完成开发任务

有效提示词范本与技巧

问题报告类提示词

  1. 报告错误并附上日志

    为什么报错了?
    
    2025-02-25 10:57:40,482 - app.middleware.logging - INFO - Request: DELETE /api/v1/users/6eb2fc72d1c3435ea537b682e5cc52c3
    2025-02-25 10:57:40,490 - app.middleware.logging - INFO - Response: DELETE /api/v1/users/6eb2fc72d1c3435ea537b682e5cc52c3 Status: 403 Forbidden
    
  2. 反馈修改后的新问题

    怎么还是报错
    
    sqlalchemy.exc.InvalidRequestError: A transaction is already begun on this Session.
    2025-02-25 11:03:17,009 - app.middleware.logging - INFO - Response: DELETE /api/v1/users/6eb2fc72d1c3435ea537b682e5cc52c3 Status: 500 Internal Server Error
    

引导修复类提示词

  1. 提供参考实现

    参考@skills.py  user_id: str = "oa100002"  # 使用已存在的用户ID,绕过认证
    
  2. 指出具体业务需求

    应先判断该用户是否有OA渠道,如果有也要删除,如果没有跳过
    
  3. 指出特定字段问题

    记录操作日志的操作人字段丢失
    

提供上下文类提示词

  1. 查看相关文件

    <open_file>
    backend/app/api/v1/endpoints/skills.py
    </open_file>
    
  2. 查看数据库结构

    <edited_file>
    backend/sql/init.sql
    </edited_file>
    

常见陷阱与避免方法

  1. 提供过少上下文

    • 避免简单说"有错误"而不提供日志
    • 总是附上完整的错误信息和堆栈跟踪
  2. 忽略验证步骤

    • 每次修改后都应测试并提供反馈
    • 即使修复了一个问题,可能会引入新问题
  3. 过度依赖AI而不理解代码

    • 理解AI提供的解决方案的原理
    • 学习AI的解决思路,提升自己的问题解决能力
  4. 跳过设计阶段直接编码

    • 先让AI设计接口和业务逻辑
    • 确保设计覆盖所有边界场景和错误处理
  5. 一次尝试解决所有问题

    • 将复杂问题拆分为多个小步骤
    • 采用迭代式方法,确保每一步都是正确的

总结

使用AI助手进行开发和问题修复是一个强大的工具,但需要开发者精心引导和审核。通过提供清晰的上下文、确定明确的修改范围、采取迭代方法以及结合人工审核,可以充分发挥AI在代码开发中的潜力,同时确保代码质量和项目一致性。

最重要的是理解AI助手是开发工具而非替代者,开发者仍需负责最终代码质量、项目一致性和业务逻辑正确性。当人类经验和AI能力相结合时,可以实现更高效、更高质量的软件开发过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值