用 AI 写代码一年,省了上千小时,但也交了足够多的学费。这十个坑,踩过一个算入门,踩过五个算老兵。
坑一:AI 删了你没让它删的代码
这是最高频也最致命的问题。
让 Claude Code 加个搜索功能,它确实加好了。但你回头一看——原来那个精心调过的分页逻辑消失了。它觉得"没用了"就帮你删了。
为什么会发生? Agent 在修改文件时,如果上下文太大,它可能把改动的边界判断错误。尤其是 long context 的模型,越长的文件越容易误删。
怎么避免:
# Claude Code:加 --dangerously-skip-permissions 之前先想清楚
# 更好的做法:用 git diff 审查每次改动
claude "加搜索功能" && git diff
用 Hermes 的 patch 工具比直接重写整文件安全得多——它只替换你指定的代码块,不会碰其他地方。
铁律: 每次 Agent 操作后立即 git diff。不要攒到最后再看。
坑二:测试全绿但功能根本不对
Agent 帮你写了测试,6 个全过。部署上去用户报bug——搜索返回空结果。
一看代码:测试用例里 mock 了搜索结果,被测函数永远返回 mock 数据。测试过的不是你的代码,是 mock 本身。
怎么避免:
# AI 爱写的坏测试
def test_search():
mock_result = [{"title": "test"}]
assert search("test") == mock_result # 永远过
# 你应该让它写的
def test_search():
result = search("真实关键词")
assert len(result) > 0
assert "真实关键词" in result[0]["title"]
告诉 Agent:"不要 mock 数据库查询,用真实测试数据,测试失败就修代码别修测试。"
坑三:Cursor 吃掉了你的 import
Cursor 的 Tab 补全很激进,动不动整段预测。但有个经典bug:它在补全新代码的时候,会把你文件顶部的 import 吞掉。
你正写到文件中间,Cursor 补了一整段函数,顺手把第一行的 import os 删了——因为它的上下文窗口没覆盖到文件开头。
怎么避免:
VS Code 设置里打开 "cursor.composer.collapseImports": true(如果有这个选项的话)更实际的方案:手动把 imports 放在文件最顶部,保持 20 行以内 每次保前存看一眼文件开头
坑四:Ollama 模型选错,显存全被吃掉
拉了一个 32B 的模型,Ollama 说跑起来了。但代码补全要等 15 秒,一看活动监视器——系统在疯狂 swap。
原因: 32B q4 量化模型需要约 18GB 显存。如果你只有 16GB 统一内存的 Mac,系统会把一部分塞进 swap,速度雪崩。
正确做法:
# 看你的显存/内存
# Mac:关于本机 → 内存
# Linux/Windows:nvidia-smi
# 选模型建议
# 8GB 显存 → 7B 模型 (qwen3:7b, llama3.2:7b)
# 16GB 显存 → 14B 模型 (qwen3:14b, deepseek-coder-v3)
# 24GB+ 显存 → 32B+ 模型
# 拉模型前先看大小
ollama show qwen3:14b | grep size
记住: 本地模型的体验瓶颈从来不是模型智能度,是你的硬件。7B 模型在本地秒出的体验,远好于 32B 模型在 swap 里挣扎。
坑五:Agent 陷入死循环
给 Hermes 一个任务,它开始改代码 → 跑测试失败 → 再改 → 再失败 → 再改……你出去倒了杯水回来,它已经重试了 40 轮。
文件被改得面目全非,而且每一轮的改动越来越离谱——模型开始产生幻觉,试图用不存在的方法修不存在的 bug。
怎么避免:
# Hermes 设置 hard stop
hermes config set tool_loop_guardrails.hard_stop_enabled true
hermes config set tool_loop_guardrails.hard_stop_after.exact_failure 5
或者在 prompt 里加一句:"如果同一个错误出现三次,停下来向我汇报,不要继续试。"
坑六:覆盖了今天写的所有代码
"帮我重构这个文件"——Agent 直接重写了整个文件,把你上午写的那段定制逻辑也覆盖了。Git 记录显示改动 247 行。
怎么避免:
# Agent 操作前先 commit 或 stash
git add . && git commit -m "checkpoint: before agent refactor"
# Hermes 用户:开启文件快照
hermes config set checkpoints.enabled true
# 然后可以用 /rollback 回滚
铁律: 别把 Agent 当 Ctrl+Z。你自己要管版本。
坑七:API 账单比预期高了十倍
月初充了 $20,一周就见底。查账单发现 Agent 在一次对话里反复读同一个大文件——每次都重新把整个 2000 行文件塞进上下文。
原因: 没有开 prompt caching。每次 tool call 都是一轮完整请求,如果 Agent 反复读同一个文件,缓存能省 90% 的 token。
怎么避免:
# Hermes:确认 caching 开启
hermes config set prompt_caching.cache_ttl 5m
hermes config set prompt_caching.enabled true
Claude Code 默认开启缓存。如果你用 API 直连 Anthropic/DeepSeek,务必确认 prompt caching 配置正确。
坑八:AI 的"最佳实践"已经过时了
让 Agent 写一个 React 组件,它给你整了个 Class Component。原因是它的训练数据截至某个时间点,不知道 React 社区早就全面转向函数组件 + Hooks。
怎么避免:
在 prompt 里明确:"使用当前推荐的做法,不确定的话先查文档。React 用函数组件 + Hooks,Python 用 3.12+ 语法,不要用两年前的方案。"
如果你用 Hermes,开 web toolset,Agent 会在不确定时自己搜索最新文档。
坑九:Agent 用中文写了所有变量名
"帮我写个用户管理模块"——Agent 确实写好了。但 def 获取用户列表():、class 用户信息:、SELECT * FROM 用户表……这代码要是提交上去,同事能笑半年。
怎么避免:
# 在 prompt 或 personas 里设定
hermes config set agent.environment_hint "代码中变量、函数、类名、数据库字段一律使用英文命名"
或者直接说:"代码里的命名用英文,注释和文档用中文。"
坑十:你开始看不懂自己的代码了
这是一个渐变的过程。先是让 AI 写工具函数——没问题。然后是整个模块——也还行。慢慢的你发现自己打开项目,看着满屏 AI 生成的代码,改一个参数都不知道从哪下手。
这是最大的坑,也是最隐蔽的。AI 不会让你变蠢,但会让你变懒。变懒就会变蠢。
怎么避免:
每次 AI 写完一个功能,手写一遍核心逻辑的注释——能写出注释说明你真的理解了 每周手动重构一次 AI 生成的代码——删掉啰嗦的部分,合并不必要的函数 如果一个函数你看三遍还是不理解,删掉重写
总结
| 坑 | 严重度 | 解药 |
|---|---|---|
| AI 删你没让删的代码 | 🔴 致命 | git diff 每次必看 |
| 测试全绿但功能不对 | 🔴 致命 | 不用 mock,用真实数据 |
| Cursor 吃掉 import | 🟡 麻烦 | 写完先看文件开头 |
| Ollama 模型太大 | 🟡 麻烦 | 7B 够用,14B 富裕 |
| Agent 死循环 | 🔴 致命 | 设 hard stop |
| 覆盖今天写的代码 | 🔴 致命 | 操作前 commit |
| API 账单爆炸 | 🟡 麻烦 | 开 prompt caching |
| AI 用过时方案 | 🟡 麻烦 | prompt 里指定版本要求 |
| 中文变量名 | 🟢 尴尬 | prompt 里声明命名规则 |
| 看不懂自己代码 | 🔴 慢性致死 | 写注释,手动重构 |
这十个坑我都踩过。前九个是技术问题,改配置就能解决。第十个是态度问题,只有自己能解决。
你踩过几个?还有哪些坑是我没写到的?评论区聊聊。
夜雨聆风