「你的AI助手正在‘失控’吗?」
它开始修改不该动的函数,
它坚持添加不存在的依赖,
它把简单逻辑复杂化——
这不是AI的错,
而是你的提示词缺少边界。
在使用如 Cursor、Claude 或其他大型语言模型辅助编程时,尤其是在多轮对话和复杂任务中,遇到 AI “幻觉”(生成不正确或无意义的内容)或对代码进行意外修改是常见挑战。以下是一些有效的策略来缓解这些问题:
最佳策略:
当发现AI开始"发挥创意"或偏离预期时,最好的策略是Stop当前窗口对话,整理思路后果断开启新的对话窗口重新开始。
一、清晰、精确地沟通
明确的指令和上下文:
具体化您的请求: 避免模糊不清的指令。例如,不要只说“优化这段代码”,而应说明“请优化这段代码以减少内存使用,并解释你做了哪些改动”。
提供完整上下文: 确保 AI 拥有理解任务所需的所有相关代码片段、函数定义、变量声明以及您的目标。如果 AI 只能看到部分代码,它更容易做出错误的假设。
指定范围: 明确指出 AI 应该修改哪些部分,哪些部分不应该碰。例如:“请只修改
process_data
函数,不要改动helper_utils
里的任何内容。”
分步进行,小步快跑:
分解复杂任务: 将大型或复杂的编码任务分解成更小、更易于管理的部分。一次只让 AI 处理一个子任务。
逐步迭代: 在 AI 完成一个小步骤后,立即审查和测试其输出。确认无误后再进行下一步。这比让 AI 一次性生成大量代码然后发现问题要高效得多。
设定“角色”或“行为准则”:
在对话开始或关键节点,可以尝试给 AI 设定一些行为准则。例如:“你是一个专注于代码正确性和可读性的 Python 专家。请在每次修改后都提供修改说明和潜在风险。”
二、有效管理对话历史和上下文
定期“重置”或“刷新”上下文:
如果感觉对话开始跑偏,或者 AI 开始重复犯错,可以考虑明确地提醒它当前的核心任务和上下文。
一些工具可能允许您编辑或删除之前的对话历史,这有助于清理掉可能误导 AI 的信息。
在新的对话轮次中,重新概括之前的关键决策和当前目标。
利用工具特性(如果可用):
Cursor 等 IDE 集成工具: 它们通常能更好地感知项目结构和当前打开的文件。善用其“选中代码”再提问的功能,能帮助 AI 更聚焦。
Diff 查看: 在 AI 修改代码后,仔细使用 diff 工具查看每一处改动,理解其意图和影响。
明确“停止”和“撤销”:
如果 AI 的修改方向不对,要及时制止。
熟练使用版本控制工具(见下文),以便轻松撤销不满意的修改。
三、编码实践和辅助工具
版本控制 (Git):
黄金法则: 在让 AI 修改代码之前,务必提交当前工作进度 (commit)。
这样,如果 AI 的修改不理想,您可以轻松地回滚到上一个稳定状态 (
git checkout .
或git reset --hard
)。为 AI 的修改创建单独的分支进行实验,也是一个好习惯。
单元测试和自动化测试:
在引入 AI 修改之前和之后运行测试用例。这能快速发现 AI 是否破坏了现有功能。
如果 AI 是在帮您写新功能,那么也应该围绕这个新功能编写测试。
代码审查:
自己是第一审查员: 绝对不能盲目信任 AI 生成的代码。逐行审查,理解每一处修改的逻辑。
同行审查: 如果条件允许,让团队其他成员也看一下 AI 的重要修改。
Linter 和 Formatter:
这些工具可以帮助保持代码风格一致,并捕获一些低级错误,无论代码是人写的还是 AI 生成的。
四、理解模型的局限性
上下文窗口限制:
所有大型语言模型都有其上下文窗口的限制。超出这个限制,模型就可能“忘记”对话早期的内容或指令。这就是为什么长对话后问题更容易出现。
意识到这一点,并在长对话中注意总结和重申关键信息。
它不是“思考”,而是“预测”:
AI 是基于其训练数据中的模式来生成文本(代码也是一种文本)的。它并不真正“理解”代码的逻辑,而是预测接下来最可能出现的词元。这种机制使得它有时会生成看似合理但实际上错误的代码。
保持怀疑态度:
始终对 AI 的输出持审慎态度,尤其是对于核心逻辑和复杂算法的修改。
五、当问题发生时
明确指出错误:
当 AI 犯错时,清晰地告诉它哪里错了,为什么错了,并提供正确的方向。例如:“你修改了 X 文件,但我们约定只修改 Y 文件。另外,你引入的 Z 变量未定义。”
索要解释:
要求 AI 解释它为什么做出某个修改。这有时能帮助你理解它的“思考”过程,也可能让 AI 自己意识到问题。
从头开始(如果必要):
有时,对话已经混乱到难以挽回,发现AI开始产生幻觉或频繁出错时,最快的方法是果断开启新的对话会话,用清晰的初始指令重新开始,提供清晰的上下文摘要,包括当前代码状态和具体需求。
记住,AI是工具,需要人来把控方向和质量。AI协作的本质是边界管理——模糊的指令会换来失控的代码,清晰的约束才能产生精准的协作。
「和AI协作像教实习生写代码」
不给明确需求 → 得到天马行空
不设修改禁区 → 代码面目全非
不要求解释 → 埋下技术债务
最好的AI协作策略,
是把每次对话当作code review会议。
「我们正在用培养新人的耐心培养AI」
第一次:它擅自重构了整个模块
第二次:它发明了不存在的语法
第三次:你学会了在提示词里写
“请先确认理解需求再动手”
原来所有工具都要经历
从失控到驯服的过程