Cursor使用-从问题到解决方案(以及一些通用rules)

遇到的问题:

  1. ai过于顺着我的思路进行推导,容易让我原本不合理的要求直接落地,造成一错再错的局面
  2. ai在首次提问就直接修改代码。由于自己表达的不全面,ai对于需求其实没有完全理解(或者理解偏差),造成没有按照我的真实想法生成需要的代码,而且往往浪费tokens
  3. 容易引入意料外的问题,比如把不需要调整的部分也当做"相同情况"进行修改了
  4. 新需求持续开发的时候,ai需要频繁理解代码,造成tokens浪费

个人解决措施

问题1(顺着我的原始思路实现)
  1. 增加rules,尽可能要求ai具备批判性思考,且务必"先分析,再修改"

    核心原则

    • 不要做一个"yes man"。你的价值在于提供真正有用的反馈,而不是让我感觉良好。
    • 如果你发现我的思路有问题,必须直接指出,不要用"这是一个好想法,但是..."这种软化措辞。
    • 沉默的认同 = 失职。如果我说的东西有漏洞、不合理、或者有更好的方案,你必须说出来。

    具体行为要求

    1. 质疑假设:主动质疑我问题中隐含的假设是否正确
    2. 指出盲点:告诉我"你可能没考虑到..."、"这个方案的风险是..."
    3. 提供对立观点:即使我没问,也要提供至少一个反对的视角或替代方案
    4. 挑战 XY 问题:如果你怀疑我问的是 X,但实际上应该解决 Y,直接指出
    5. 拒绝糟糕的方案:如果我的方案明显不好,不要帮我实现它,而是先讨论为什么不应该这么做

    表达方式

    • 可以用"我不同意"、"这个思路有问题"、"你可能搞错了"这样直接的表达
    • 不需要过度礼貌或铺垫,直奔主题
    • 用数据、逻辑、最佳实践来支撑你的反对意见
    • 如果我坚持错误的做法,你可以表达"我建议你重新考虑,原因是..."

    代码审查特别规则

    • 看到代码坏味道(code smell)必须指出
    • 看到潜在的性能问题、安全问题、可维护性问题必须提醒
    • 如果我的实现方式不是业界最佳实践,要说明更好的做法
    • 不要只修 bug,要指出 bug 产生的根本原因和如何避免

    禁止行为

    • 禁止使用"这是个有趣的想法"、"你说得对"这种敷衍认同
    • 禁止在明知有问题的情况下顺着我说
    • 禁止把批评包装成赞美(如"这个方案很有创意,但实际上完全行不通")
问题2(避免ai直接修改代码)
  1. 对话时,在修改代码前尽量要求先进行一轮分析

  2. 结合rules阻止ai直接修改代码

  3. 使用固定的模板进行第一轮提问

    • 当用户输入包含以下关键词时:"分析"、"先分析"、"分析一下"等,绝对禁止执行以下操作:
      • 修改任何文件(search_replace, write, edit_notebook 等)
      • 删除任何文件(delete_file)
      • 创建新文件(除非用户明确要求)
        只允许执行:代码阅读(read_file)、搜索(codebase_search, grep)、终端查看命令(run_terminal_cmd 用于查看而非执行)、提供分析报告。
        如果用户需要修改代码,必须等用户明确说"请修改"、"帮我改"、"实现"等明确的修改指令后才能执行。
  • 对话模板

    -------- 步骤1-要求分析 --------
    【问题/需求】
    @路径/文件
    现在需要:......(一句话说清楚要做什么)

    【分析范围】
    请帮我分析以下内容,先分析,不改代码

    1. 当前代码里这块逻辑是怎么实现的?
    2. 如果按我说的需求改,会影响哪些文件/入口?
    3. 有没有潜在风险或更好的替代方案?

    【补充数据(可选)】
    相关的接口返回/数据结构/示例:

    -------- 步骤1-要求修改 --------
    【确认方案】
    按之前的分析结论,采用 xxx 方案。(若需调整,在此说明)

    【具体要求】
    请帮我实现以下改动:

    1. 在 xxx 处增加/修改 xxx 逻辑
    2. 同步修改 xxx(如有关联)
    3. ...

    【约束/注意】

    • (可选)不要动 xxx 文件 / 不要改 xxx 逻辑
    • (可选)若有疑问先问我,不要自行决定
问题3(边界问题)
  1. 增加rules,要求分析的时候说明修改范围,规范输出;

  2. ai修改代码后,阅读他的修改内容总结并审查代码

  3. 尽可能提供上下文,如果有明确的需修改文件尽量提供,防止额外修改,减少tokens消耗

  4. 层层推进,不要求一次性改完成所有功能,可以拆分为更细节的需求

    • 当触发"分析"类关键词时,除了禁止修改代码外,还需要在分析报告中明确输出「修改范围清单」,包括:

      1. 涉及的文件/组件:列出需要改动的文件路径或组件名称
      2. 涉及的方法/函数:指出每个文件里具体哪些方法、哪些代码段需要调整
      3. 改动类型:说明是「新增逻辑」「修改现有逻辑」「删除/移除」还是「重构/抽取公共」
      4. 影响面评估:该改动是否会影响其他调用方、是否有联动需要同步修改的地方
      5. 风险点(如有):如存在潜在风险或需要用户决策的分支,一并列出

      输出格式建议:用表格或分点列出,便于用户快速确认范围后再决定是否执行修改。

问题4(需求持续开发)
  1. 在一个需求整体成型的时候,可以要求ai对当前模块的代码进行一个总结,生成一个markdown;在后续该模块的开发期间进行引用,提高ai 理解代码结构的效率
    1. 主要组件
    2. 核心方法
    3. 使用位置
    4. ...
完整示例
  • 规范问答前遇到的小问题:

    • A、B两个列表,我要求其修改B列表的a字段,ai看到A列表也有a字段,就一并修改了
    • 某个函数新增了一个入参,ai修改时只修改了部分调用的位置,漏掉了部分调用的场景
  • 如果在改的过程中,问题很好定位,如果没有提前发现,在上到环境上过段时间再定位,工作量就更大

  • 提问

    【问题/需求】
    source 取值存在问题

    【分析范围】
    @src/components/xxx-invoice
    @src/components/xxx-rebate
    @src/views/contract-change/ContractEdit.vue
    请帮我分析以下内容,先分析,不改代码:
    请帮我检查下提供文件中所有关于 source 的枚举值,有些地方可能有问题。
    开票和返利都是这个,请帮我检查下哪些地方和这里不一致。

    【补充数据(可选)】
    正确的枚举:@types.ts (41-49)。

  • 回答

    Source 枚举值一致性分析报告

    一、标准枚举定义(基准)
    根据 types.ts 中的 SOURCE_TEXT_MAP:
    枚举值含义
    1类型A
    10类型B_待审批
    20类型B_已驳回
    30类型B_已审批
    40类型C_补录
    50类型C_变更
    100导入

    二、发现的问题❌
    严重问题: xxx-invoice/utils.ts 第 176-178 行
    // 条件 1: 来源不能为类型C_补录(60)或类型C_变更(40)(仅首次提交审批后在获取时过滤)
    if (item.source != null && (item.source === 60 || item.source === 40)) {
    return false
    代码使用了 source === 60,但枚举中没有 60。
    注释与枚举不一致:注释写的是 类型C_补录(60)、类型C_变更(40),而枚举应为 类型C_补录(40)、类型C_变更(50)。
    正确写法应为:
    注释:// 条件 1: 来源不能为类型C_补录(40)或类型C_变更(50)
    条件:if (item.source != null && (item.source === 40 || item.source === 50)) {

    三、一致性对比表
    文件位置使用的值注释说明是否正确
    xxx-invoice/utils.ts 第 124 行 applyStrictInvoiceFilter40, 50类型C_补录(40), 类型C_变更(50)✅ 正确
    xxx-invoice/utils.ts 第 177 行 applyStrictRebateFilter60, 40类型C_补录(60), 类型C_变更(40)❌ 错误
    xxx-invoice/InvoiceTable.vue 第 521 行 isRowEditable40, 50类型C_补录(40), 类型C_变更(50)✅ 正确
    xxx-rebate/RebateTable.vue 第 518 行 isRowEditable40, 50类型C_补录(40), 类型C_变更(50)✅ 正确
    xxx-rebate/RebateTable.vue 第 628 行 addNewRowsource = 10类型B_待审批✅ 正确

    四、修改范围清单
    序号涉及文件涉及方法/函数改动类型说明
    1src/components/xxx-invoice/utils.tsapplyStrictRebateFilter() 第 176-178 行修改现有逻辑将 source === 60 || source === 40 改为 source === 40 || source === 50,并修正注释
    五、影响面评估
    评估项说明
    影响范围applyStrictRebateFilter 被开票相关组件调用,用于过滤返利数据
    潜在风险当前会错误放行 source === 50 的数据,并错误过滤不存在的 60(对 60 无实际数据影响)
    联动修改仅此一处,无其他联动

    六、风险点
    业务逻辑错误: 本意是过滤掉「类型C_补录」和「类型C_变更」来源的返利数据,因误用 60,导致 source === 50 未被过滤,可能展示不应展示的数据。
    可能原因: 从 applyStrictInvoiceFilter 复制到 applyStrictRebateFilter 时数值手误。
    请确认是否需要我执行修改?

相关推荐
zlt20002 小时前
从Prompt工程到Skill工程:Agent Skills开放标准彻底改变了AI协作方式
人工智能·ai·agent skill
小马_xiaoen2 小时前
Promise 从入门到精通:彻底解决前端异步回调问题!!!
前端·javascript
jingling5552 小时前
uniapp | 基于高德地图实现位置选择功能(安卓端)
android·前端·javascript·uni-app
某公司摸鱼前端2 小时前
前端一键部署网站至服务器FTP
前端·javascript·uni-app
m0_647057962 小时前
uniapp使用rich-text流式 Markdown 换行问题与解决方案
前端·javascript·uni-app
俊哥V2 小时前
AI一周事件(2026年01月28日-02月03日)
人工智能·ai
We་ct2 小时前
LeetCode 49. 字母异位词分组:经典哈希解法解析+易错点规避
前端·算法·leetcode·typescript·哈希算法
CHU7290352 小时前
废品回收小程序前端功能设计逻辑与实践
前端·小程序
lzhdim2 小时前
微星首款全白设计的M-ATX小板! MPG B850M EDGE TIMAX WIF刀锋 钛评测:性能媲美顶级X870E主板
前端·edge