别让 AI 替你拍板,它真的会给你拍出幺蛾子

先说结论:Claude Code 是我用过最猛的 AI 编程助手,没有之一。但它也是一把极其锋利的双刃剑——用好了,一天干三天的活;用不好,你花三天改它一天写的 bug。

今天不聊虚的,直接掏心窝子分享三条血的教训换来的原则。看完你就能避开我踩过的那堆坑。

原则一:提示词越“啰嗦”,代码越“懂事”

先给你讲个真实翻车现场。

有一天我急着写一个日期解析函数,随手丢给 Claude Code 一句话:

“写个日期转换函数。”

好家伙。它给我生成了一个支持 30 多种格式、附带时区转换、农历节气、相对时间计算的百行巨无霸函数。90% 的功能我这辈子都用不上,而且它还引入了一个第三方库。

是我要求太多吗?不,是我要求太少了。

后来我学会了把提示词写成“需求规格说明书”。同样是日期解析,我会这样写:

“写一个 JavaScript 函数。输入任意字符串 dateStr,用 new Date(dateStr) 尝试解析。
如果解析成功且不是 NaN,返回 YYYY-MM-DD 格式的字符串;否则返回 null。
不许处理时区,不许引入第三方库,函数体不超过 20 行。”

这次它出来的代码干净得像刚擦过的白板——不多一个字,不少一个标点。

经验公式:你花 2 分钟把提示词写清楚,能省下后面 30 分钟的删代码、改依赖和骂自己。

我现在的习惯是写完提示词多问自己一句:“有没有任何歧义?边界情况说了吗?它会不会自作聪明?” 没有就点发送,有就再补两句。

原则二:永远不让 AI 做决定,你是指挥官,它是你的手脚

这是新手最容易掉进去的坑。

很多人喜欢这样跟 AI 说话:

“帮我优化一下这段代码,看着改就行。”
“这个函数性能太差,你看着办。”

这叫什么?这叫“悬赏式指令”——你把决策权拱手相让,然后指望 AI 比你更懂你的业务。

结果呢?它可能把你的冒泡排序换成了快速排序——速度是快了,但在你那种特殊数据分布下,快速排序的边界条件会漏掉一组数据。它不知道那组数据有多重要,因为你没告诉它。

正确的姿势永远是:你做方案,它写代码。

对比一下:

  • ❌ “把这个模块改得更快一点。”

  • ✅ “把这个模块里的冒泡排序替换成快速排序,函数入口和出口参数完全不变,不改变原有异常处理逻辑。”

  • ❌ “这段代码太乱,重构一下。”

  • ✅ “把 userService.js 里的数据库连接代码提取成一个独立函数,文件名和对外接口保持不变,其他函数不许动。”

区别一目了然:前者是“你替我想”,后者是“你照我说的做”。

记住一句话:Claude Code 是你手里最快的那把扳手,但它永远不知道自己该拧哪颗螺丝——那颗螺丝,必须你来指。

原则三(我的私藏心得):会话越聊越“失忆”,记得手动刷新上下文

这条经验我几乎没见人提过,但它每天都在救我。

Claude Code 的上下文窗口虽然很大,但不是无限的。当你和它聊了十几轮之后,它会慢慢“忘记”最开始定下的那些约束——比如你半小时前说过“不许用 console.log”,结果它最新的回复里赫然出现了三行 console.log。

不是它故意气你,而是工程限制。解决方案也不难:主动重置上下文。

我每隔 5-8 轮交互,会插一条“状态同步”指令,格式如下:

“【当前任务】继续优化 payment.js 的退款函数。
【仍在生效的约束】不许用 console.log,只用 logger.info;不许引入新依赖;保持函数签名不变。
【上次完成点】已提取重复的金额校验逻辑,请继续下一步。”

这就像给 AI 刷新了一下记忆缓存,成本只有几十个字,但能避免后面花半小时返工。

另一个小技巧:要求 AI 同时输出验证代码。比如让它改完排序函数后,同时生成一段测试脚本,随机生成 1000 个用例对比新旧结果。你别自己去点测试,让 AI 把测试也写出来——这样你合并代码之前跑一下,心里有底,晚上睡得着觉。

最后聊几句

很多人对 AI 编程助手又爱又恨。爱的是一小时干完一周的活,恨的是它总在不经意间“自由发挥”给你埋雷。

但问题的根源其实不在 AI,而在我们怎么用它。你把 AI 当成一个会写代码但完全没有业务常识的实习生,你就知道该怎么带它了:指令要细,决策要牢,记忆要勤,验证要早。

用好这三条,Claude Code 从“猪队友”秒变“神仙搭档”。


你的键盘还在响吗?评论区欢迎分享你的 Claude Code 故事——不管是被坑的,还是爽翻的,都值得被看见。

本文作者:一个正在学习AI、被 AI 教育过、又重新站起来的普通程序员

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐