菜单导航

开发故事
解决 AI 编程助手多轮对话后幻觉和代码乱改问题的策略
开发故事

解决 AI 编程助手多轮对话后幻觉和代码乱改问题的策略

野盐
2025-06-06

「你的AI助手正在‘失控’吗?」
它开始修改不该动的函数,
它坚持添加不存在的依赖,
它把简单逻辑复杂化——
这不是AI的错,
而是你的提示词缺少边界。

在使用如 Cursor、Claude 或其他大型语言模型辅助编程时,尤其是在多轮对话和复杂任务中,遇到 AI “幻觉”(生成不正确或无意义的内容)或对代码进行意外修改是常见挑战。以下是一些有效的策略来缓解这些问题:

最佳策略:

当发现AI开始"发挥创意"或偏离预期时,最好的策略是Stop当前窗口对话,整理思路后果断开启新的对话窗口重新开始。

一、清晰、精确地沟通

  1. 明确的指令和上下文:

    • 具体化您的请求: 避免模糊不清的指令。例如,不要只说“优化这段代码”,而应说明“请优化这段代码以减少内存使用,并解释你做了哪些改动”。

    • 提供完整上下文: 确保 AI 拥有理解任务所需的所有相关代码片段、函数定义、变量声明以及您的目标。如果 AI 只能看到部分代码,它更容易做出错误的假设。

    • 指定范围: 明确指出 AI 应该修改哪些部分,哪些部分不应该碰。例如:“请只修改 process_data 函数,不要改动 helper_utils 里的任何内容。”

  2. 分步进行,小步快跑:

    • 分解复杂任务: 将大型或复杂的编码任务分解成更小、更易于管理的部分。一次只让 AI 处理一个子任务。

    • 逐步迭代: 在 AI 完成一个小步骤后,立即审查和测试其输出。确认无误后再进行下一步。这比让 AI 一次性生成大量代码然后发现问题要高效得多。

  3. 设定“角色”或“行为准则”:

    • 在对话开始或关键节点,可以尝试给 AI 设定一些行为准则。例如:“你是一个专注于代码正确性和可读性的 Python 专家。请在每次修改后都提供修改说明和潜在风险。”

二、有效管理对话历史和上下文

  1. 定期“重置”或“刷新”上下文:

    • 如果感觉对话开始跑偏,或者 AI 开始重复犯错,可以考虑明确地提醒它当前的核心任务和上下文。

    • 一些工具可能允许您编辑或删除之前的对话历史,这有助于清理掉可能误导 AI 的信息。

    • 在新的对话轮次中,重新概括之前的关键决策和当前目标。

  2. 利用工具特性(如果可用):

    • Cursor 等 IDE 集成工具: 它们通常能更好地感知项目结构和当前打开的文件。善用其“选中代码”再提问的功能,能帮助 AI 更聚焦。

    • Diff 查看: 在 AI 修改代码后,仔细使用 diff 工具查看每一处改动,理解其意图和影响。

  3. 明确“停止”和“撤销”:

    • 如果 AI 的修改方向不对,要及时制止。

    • 熟练使用版本控制工具(见下文),以便轻松撤销不满意的修改。

三、编码实践和辅助工具

  1. 版本控制 (Git):

    • 黄金法则: 在让 AI 修改代码之前,务必提交当前工作进度 (commit)。

    • 这样,如果 AI 的修改不理想,您可以轻松地回滚到上一个稳定状态 (git checkout .git reset --hard)。

    • 为 AI 的修改创建单独的分支进行实验,也是一个好习惯。

  2. 单元测试和自动化测试:

    • 在引入 AI 修改之前和之后运行测试用例。这能快速发现 AI 是否破坏了现有功能。

    • 如果 AI 是在帮您写新功能,那么也应该围绕这个新功能编写测试。

  3. 代码审查:

    • 自己是第一审查员: 绝对不能盲目信任 AI 生成的代码。逐行审查,理解每一处修改的逻辑。

    • 同行审查: 如果条件允许,让团队其他成员也看一下 AI 的重要修改。

  4. Linter 和 Formatter:

    • 这些工具可以帮助保持代码风格一致,并捕获一些低级错误,无论代码是人写的还是 AI 生成的。

四、理解模型的局限性

  1. 上下文窗口限制:

    • 所有大型语言模型都有其上下文窗口的限制。超出这个限制,模型就可能“忘记”对话早期的内容或指令。这就是为什么长对话后问题更容易出现。

    • 意识到这一点,并在长对话中注意总结和重申关键信息。

  2. 它不是“思考”,而是“预测”:

    • AI 是基于其训练数据中的模式来生成文本(代码也是一种文本)的。它并不真正“理解”代码的逻辑,而是预测接下来最可能出现的词元。这种机制使得它有时会生成看似合理但实际上错误的代码。

  3. 保持怀疑态度:

    • 始终对 AI 的输出持审慎态度,尤其是对于核心逻辑和复杂算法的修改。

五、当问题发生时

  1. 明确指出错误:

    • 当 AI 犯错时,清晰地告诉它哪里错了,为什么错了,并提供正确的方向。例如:“你修改了 X 文件,但我们约定只修改 Y 文件。另外,你引入的 Z 变量未定义。”

  2. 索要解释:

    • 要求 AI 解释它为什么做出某个修改。这有时能帮助你理解它的“思考”过程,也可能让 AI 自己意识到问题。

  3. 从头开始(如果必要):

    • 有时,对话已经混乱到难以挽回,发现AI开始产生幻觉或频繁出错时,最快的方法是果断开启新的对话会话,用清晰的初始指令重新开始,提供清晰的上下文摘要,包括当前代码状态和具体需求。

记住,AI是工具,需要人来把控方向和质量。AI协作的本质是边界管理——模糊的指令会换来失控的代码,清晰的约束才能产生精准的协作。

「和AI协作像教实习生写代码」
不给明确需求 → 得到天马行空
不设修改禁区 → 代码面目全非
不要求解释 → 埋下技术债务
最好的AI协作策略,
是把每次对话当作code review会议。

「我们正在用培养新人的耐心培养AI」
第一次:它擅自重构了整个模块
第二次:它发明了不存在的语法
第三次:你学会了在提示词里写
“请先确认理解需求再动手”
原来所有工具都要经历
从失控到驯服的过程

版权声明

本文为「野盐」原创内容,图片个人摄影 / 手绘 / AIGC,后期 PhotoMator / Procreate,版权归「野盐」所有。未经授权,禁止用于商业用途,禁止抹除水印,禁止转发至小红书等平台。转载请注明出处与链接并保留本声明。

...

评论 (0)

评论将以随机ID显示
野盐

野盐

@wildsalt.me

推荐阅读

Automate reddit video creation with n8n待验证
开发故事

Automate reddit video creation with n8n待验证

野盐 | 2025-06-11

"用n8n自动化工具将Reddit帖子转化为视频的完整工作流定义,包含从内容抓取到视频渲染的每个技术细节"

6
Claude失控,所有源代码被其删除。FUCK!
开发故事

Claude失控,所有源代码被其删除。FUCK!

野盐 | 2025-06-04

技术简化变成粗暴删除:AI的‘最优解’,给我带来一次代码被删的愤怒与反思

7
英语,决定了我的开发效率上限😭
开发故事

英语,决定了我的开发效率上限😭

野盐 | 2025-06-03

"语言是信息的钥匙,英语的平淡背后藏着技术世界的通行证——掌握它,鸿沟变桥梁。"

7