🇺🇸 EN

Claude Code 10 大常见坑 2026:新手必看的避坑指南(省 50%

Claude Code 新手最爱踩的 10 个坑:没写 CLAUDE.md、默认用 Opus 烧钱、忽略 Hooks、权限弹窗烦人、超长对话不压缩……每条附具体解决方案,帮你省一半 Token、输出质...

Bruce

Claude CodeTipsBest PracticesBeginner

AI Guides

622  字

2026-02-25


Claude Code 新手最容易犯的 10 个错误及修复方法

Claude Code 是目前最强大的 AI 编程工具,但也是最容易被用错的工具之一。

我观察了几十位开发者使用 Claude Code 的过程——包括我自己——发现大家反复踩的坑惊人地相似。修正这些问题后,输出质量通常能提升 5–10 倍,Token 消耗能降低 50% 以上。

以下是最常见的 10 个错误,以及每一个的具体修复方法。

错误 #1:没有配置 CLAUDE.md

典型表现:直接开始用 Claude Code,指望 AI 能自动理解你的项目。

代价:没有项目上下文,Claude Code 每次都要重新摸索你的技术栈、编码规范和项目结构。这意味着更多的提问、更多的错误假设、更多浪费的 Token,以及更多的反复修改。

解决方案:在项目根目录创建 CLAUDE.md,写明技术栈、编码规范、常用命令和架构说明。不需要写太长——哪怕 20 行的上下文信息也能显著改善效果。

# Project: E-commerce API
## Stack: Node.js 22 + Express + PostgreSQL + Prisma
## Testing: Jest (files in __tests__/ next to source)
## Style: ESLint + Prettier, functional style, no classes
## Commands: npm test | npm run lint | npm run dev
## Rules: Never use console.log in production code. Always use the logger utility.

效果:配置了好的 CLAUDE.md 文件后,修正轮次通常减少 40–60%。更少的 Token 消耗,更少的挫败感,更快的结果。

错误 #2:所有任务都用 Opus 模型

典型表现:把模型设为 Opus 4.6 后就再也没换过,所有任务都用最贵的模型。

代价:Opus 的每 Token 成本是 Sonnet 的 1.67 倍。一个普通会话下来,本来花 $10–15 就够的,结果花了 $15–25。每天都用的话,一个月下来差距可能有几百美元。

解决方案:日常使用 Sonnet 4.6 作为默认模型,只在真正需要的时候切换到 Opus:

任务类型用 Sonnet用 Opus
Bug 修复✅
功能开发✅
代码审查✅
编写测试✅
复杂的多文件重构✅
系统架构决策✅
排查隐晦的逻辑错误✅
理解不熟悉的代码库✅

随时用 /model sonnet 或 /model opus 切换模型,不需要重启会话。

效果:成本降低 30–40%,大多数任务的质量完全不受影响。

错误 #3:提示词太模糊

典型表现:“修一下这个 bug”、“优化一下这个”、“登录那块好像有问题”。

代价:模糊的提示词让 Claude Code 只能猜你想要什么。它会读取大量额外文件试图定位问题,做出可能错误的假设,生成你并不需要的代码——这些全都在烧 Token 和时间。

解决方案:写具体。包含文件名、行号、报错信息和期望行为。

差:“修一下登录的 bug。”

好:“在 src/auth/login.ts 中,第 42 行的 refreshToken() 函数在 Token 过期时抛出 403 错误。期望行为是静默刷新 Token。错误信息是 ‘Token validation failed’。请修复刷新逻辑,不要改变 API 接口。”

更好:把实际的报错输出、堆栈跟踪或测试失败信息直接粘贴到提示词里。Claude Code 能解析所有这些信息。

效果:具体的提示词通常 1–2 轮工具调用就能解决问题,而不是 5–8 轮。单个任务的 Token 消耗可以节省 3–4 倍。

错误 #4:从不使用 /compact

典型表现:长时间工作不压缩对话历史。

代价:对话中的每条消息都会随着每次请求一起发送给 API。连续使用 30 分钟以上后,你的每个提示词都会携带大量已经过时的上下文——与当前工作完全无关的信息。

解决方案:定期执行 /compact——特别是在切换不同任务时。它会压缩对话历史,同时保留 Claude 需要的关键上下文。

更好的做法是,对于完全无关的工作直接开一个新会话。没必要让一个会话从早跑到晚。

/compact           → 压缩当前历史
/clear             → 完全重置(核弹选项)
Ctrl+C → claude    → 开启新会话

效果:长会话中节省 20–30% 的 Token。响应速度也会更快,因为 API 需要处理的输入更少了。

错误 #5:不使用 Hooks 自动化重复任务

典型表现:每次修改后都手动告诉 Claude Code “跑一下 lint"或"跑一下测试”,更糟的情况是根本忘了验证修改。

代价:每次手动验证请求都是一个额外的 Agent 轮次——更多 Token,更多时间。而忘记验证的结果就是代码出了问题,后面需要花更多轮次来修复。

解决方案:设置 Hooks 来自动执行修改后的验证。Hooks 在特定生命周期节点运行 Shell 命令——工具调用前/后、提交前/后等。

示例:每次文件写入后自动 lint:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "command": "npm run lint --fix $FILE_PATH",
        "silent": true
      }
    ]
  }
}

示例:每次编辑源文件后自动运行相关测试:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "command": "npm test -- --related $FILE_PATH 2>/dev/null || true",
        "silent": true
      }
    ]
  }
}

效果:消除了整类手动验证提示。一些团队反馈,配置 Hooks 后 Agent 轮次减少了 30–50%。

错误 #6:一个提示词塞进一个巨大任务

典型表现:“重构整个认证系统,加上 OAuth2 支持,迁移数据库,还有更新所有测试。”

代价:Claude Code 很强,但它不是全知全能的。超大任务会导致:

  • 实现不完整(上下文用完了还没做完)
  • 修改不一致(执行到一半就丢失了计划)
  • 触发工具调用安全上限(默认每轮 20 次)
  • 难以审查改动内容

解决方案:把大任务拆分成聚焦的、有序的步骤。让 Claude Code 完成并验证每一步后再进行下一步。

不要这样:“用 OAuth2 重构认证系统”

要这样:

  1. “阅读当前的认证系统,解释一下架构”
  2. “如果要加 OAuth2 支持,需要改哪些地方?拟一个计划”
  3. “实现 OAuth2 provider 配置(只做配置,不做路由)”
  4. “现在添加 OAuth2 回调路由和 Token 交换逻辑”
  5. “更新现有测试并为 OAuth2 流程添加新测试”
  6. “跑一下完整的测试套件,修复所有失败”

每一步都给 Claude Code 一个可以高质量完成的聚焦任务,步骤之间还能验证结果。

效果:更高质量的输出,更少的修正,更容易的代码审查。复杂重构从"可能能跑"变成"确定能跑"。

错误 #7:从不查看 /cost

典型表现:从来不检查 Token 用量,月底看到账单才吓一跳。

代价:看不到成本就无法优化。有的开发者在一个会话里烧掉 $50+ 都没察觉——通常是因为犯了错误 #4(从不压缩)或错误 #2(所有任务都用 Opus)。

解决方案:每完成一个重要任务后查看 /cost。建立一个成本直觉:

  • 快速修 bug:约 $0.15–0.30
  • 功能开发:约 $1–3
  • 大型重构:约 $5–15
  • 全天会话:约 $15–40

如果看到一个会话已经超过 $10 而你还在做同一个任务,说明哪里有问题了。压缩一下、重启会话,或者重新思考你的方法。

效果:光是有成本意识就能改变行为。关注成本的开发者通常能少花 20–30%。

错误 #8:不预先批准安全命令

典型表现:每一个 git status、npm test、ls 命令都要手动点"允许"。

代价:每次权限提示都会打断你的工作节奏,浪费几秒钟。整个会话下来,几百个明显安全的命令请求加起来就是大量的时间浪费。

解决方案:在设置中预先批准常用的安全命令:

{
  "permissions": {
    "allow": [
      "Bash(git status)",
      "Bash(git diff *)",
      "Bash(git log *)",
      "Bash(npm test *)",
      "Bash(npm run lint *)",
      "Bash(npm run build)",
      "Bash(ls *)",
      "Bash(cat *)",
      "Bash(wc *)",
      "Bash(head *)",
      "Bash(tail *)"
    ]
  }
}

或者考虑使用沙箱模式,在安全边界内给 Claude Code 充分的自由。

效果:权限中断减少 80% 以上,工作流程明显更顺畅。

错误 #9:不使用 Worktree 并行处理任务

典型表现:所有事情都在一个 Claude Code 会话里做——来回切换任务、stash 代码、丢失上下文。

代价:在单个会话中切换上下文会让对话历史充斥无关信息。每个新任务都带着之前任务的包袱,让 Claude Code 注意力分散且成本更高。

解决方案:使用 Worktree 模式在独立的 Git worktree 分支中并行处理任务:

# 在新的 worktree 中启动任务
claude --worktree "Add user profile endpoint"

# 在另一个终端启动不同的任务
claude --worktree "Fix the pagination bug in /api/products"

每个 worktree 都有自己干净的 Git 分支和独立的对话上下文。没有上下文污染,没有 stash 的烦恼,直到你准备好了才需要处理合并。

效果:处理多任务的日子里,产出可以提升 2–3 倍。每个任务都能得到 Claude Code 的全部注意力。

错误 #10:把 Claude Code 当搜索引擎用

典型表现:用 Claude Code 来回答一搜就有答案的问题。

比如:

  • “Python 列表推导式的语法是什么?”
  • “PostgreSQL 默认端口是多少?”
  • “CSS 怎么让 div 居中?”

代价:Claude Code 是一个 Agent——它的设计目的是执行操作,而不是回答常识。每个问题都会消耗你的套餐或 API 额度。不需要读取代码库、不需要做修改的简单知识性问题,用文档、Stack Overflow 或免费的聊天机器人就能解决。

解决方案:把 Claude Code 留给那些需要 Agent 能力的任务:

用 Claude Code用搜索引擎/文档
“找到并修复 worker 进程中的内存泄漏”“Node.js 的 process.memoryUsage API 是什么?”
“用 Repository 模式重构这个模块”“什么是 Repository 模式?”
“为支付流程写集成测试”“Jest 异步测试的语法是什么?”
“分析这个查询为什么慢并优化它”“PostgreSQL EXPLAIN 的语法是什么?”

效果:把 Claude Code 的预算留给高价值的 Agent 任务,每一分钱都能产出更多实际成果。

自检清单

下次使用 Claude Code 之前,过一遍这个清单:

  • CLAUDE.md 已创建且保持更新
  • 默认模型设为 Sonnet(除非确实需要 Opus)
  • 常用安全命令已预先批准
  • Hooks 已配置好 lint 和测试自动化
  • 任务描述具体且聚焦(不是超大提示词)
  • 新话题开新会话

把这些基础做好,Claude Code 就能从"好用的聊天机器人"变成"不可或缺的团队成员"。

相关阅读

Comments

Join the discussion — requires a GitHub account