返回 FEED
AGENT2026-05-29

Claude Code 十大技巧:把 vibe-coding 变成真正的工程

现在公开的 GitHub commits 里约 4% 由 Claude Code 写出,约合每天 13.5 万个。但大多数跑它的人可能只用了三分之一不到的能力。

他们打一句话、看着代码撒到四十个文件里、点接受、说"搞定"——然后叫它 vibe-coding。

问题不在模型,在于 setup。以下 10 个技巧全部来自 Anthropic 官方最佳实践文档,每个都有具体可操作的文件或命令。

1. CLAUDE.md:项目根目录的配置圣经

这个文件在每个 session 开始时自动加载,不需要每次手动解释。

正确的 mental model:CLAUDE.md 是给那些"每次对话都需要知道、但不应该每次手动说"的事情准备的。 stack 和全局规范放这里,任务特定流程放 Skills(技巧 8)。

一个完整的例子:

# Project: Reports Dashboard
## Stack
- Next.js 14, TypeScript, Tailwind
- Postgres via Supabase
- Tests: Vitest, in /tests
## Conventions
- 2-space indent, no tabs
- Named exports only, no default exports
- No new dependencies without asking first
## Always
- Run `npm test` before saying a task is done
- Keep changes scoped to exactly what I asked
- If you're unsure about an approach, ask before coding

注意层级结构:项目根目录的 CLAUDE.md 通过 git 团队共享,Home 目录的 ~/.claude/CLAUDE.md 放个人规则跨越所有项目,子目录里的 CLAUDE.md 只管那一个局部。团队规范进代码库,个人习惯进 Home 文件,各司其职。

2. Plan-first:先问怎么干,再动手

在真正写代码之前,要求 Claude 先给出计划:方案、涉及的文件、权衡和假设。接受了再让它写代码。

理由是机械性的:计划便宜,读和纠正花一句话;代码写完再纠正,要跨多个文件 revert 加上 Claude 已经烧掉的上下文。

关键是加"don't write code yet"这句话,否则 Claude 的帮助本能是计划完就顺手下场了。

3. Hooks:必须发生的事,用 Hook 保证

CLAUDE.md 是建议性的——Claude 会读也会遵守,但"通常"不等于"总是"。到了第 40 轮长对话、上下文塞满的时候,一条规范可能悄悄滑过去。

Hooks 是确定性的。它们是 shell 脚本,在 Claude 工作流的固定节点自动触发,运行在模型推理之外,不能被跳过、遗忘或幻觉掉。

可挂载的 hook 事件包括:

  • PreToolUse:Claude 运行工具之前,用于阻断危险命令(如写 src/ 以外的文件)
  • PostToolUse:工具执行之后,自动跑格式化或 linter
  • UserPromptSubmit:每次提交 prompt 时注入上下文

一个真正的 PostToolUse hook:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit",
        "command": "npm run format"
      }
    ]
  }
}

CLAUDE.md 说"每次编辑后格式化"通常有效,hook 说"每次编辑后格式化"永远有效。

4. MCP:Model Context Protocol,像 USB-C 一样的连接标准

MCP 服务器让你把各种外部系统接入 Claude:数据库、issue tracker、设计文件、监控、SaaS 工具等。把它想成 AI 的 USB-C——一个协议,多种设备。

接入后就可以说"implement issue PROJ-241; check the reports table schema directly",Claude 自己读 ticket、查真实 schema,不需要人肉中转。

但要克制:每个连接的 MCP 服务器会在 session 开始时把工具定义加载进上下文,一个五服务器的配置就要先烧掉约 55000 个 token。连接真正在用的,断开从来不用 的。

5. Skills:任务特定的know-how,存在可复用的文件夹里

Skill 是一个包含 SKILL.md 文件的文件夹,YAML frontmatter(名称和描述)加 markdown 说明文字,可选辅助脚本。它打包的是可复用工作流:部署清单、迁移步骤、导出规范、无障碍审查。

判断标准:如果一句话你跟 Claude 说了两次,那就应该从一开始就写成 Skill。

Skills 便宜的秘密是渐进式披露:session 开始时 Claude 只看到名称和描述(每个约 100 tokens),只有当任务描述匹配时才加载完整说明(最多约 5K tokens),脚本只在真正需要时才加载。这就是在上下文窗口里装几十个 Skills 也不会变慢的原因。

Skill 的描述行(description)是唯一被用来判断是否加载的字段。模糊的描述会浪费 tokens 或让 Claude 加载错 Skill。精确描述的例子:"use whenever the task involves exporting data to CSV or spreadsheet formats."

6. Subagent:隔离上下文,把噪声留在分支里

经典失误:做 20 次文件读、12 次 grep 来调查一个问题,然后试图在所有噪声都还加载着的情况下做计划。等到 Claude 写代码时,上下文窗口已经塞满了一半。

Subagent 在自己的独立全新上下文里运行,有自己的工具,甚至可以用不同的模型(如用便宜的 Haiku 做 grep 密集型探索)。它们做完那些脏活,只回报一个干净的摘要——噪声从未进入主会话。

触发方式就是自然语言:"用 subagent 梳理导出功能目前在代码库里怎么工作的,然后回报一个简短摘要,主上下文保持干净。"

7. 模型分级使用:Opus / Sonnet / Haiku 各有归属

所有任务用一个模型,要么花冤枉钱、要么等冤枉时间。三个 tier 真正适合的场景不同:

  • Opus:复杂推理、架构决策、硬核调试,正确性比速度重要
  • Sonnet:日常主力构建,性价比最佳
  • Haiku:快速、便宜、大量重复的工作,如"找出所有导入了 X 的文件"

在 session 里切换只需要一句话:/model haiku

五层扩展的整体图

以上 10 个技巧可以映射到 Claude Code 的 5 个扩展层,每层有不同的上下文成本和不同的职责:

  • 第一层(文件系统 + shell):开箱即用
  • 第二层(CLAUDE.md):每次 session 加载一次,持续生效
  • 第三层(MCP):按需连接外部系统,token 成本高
  • 第四层(Skills):just-in-time 加载,不影响上下文基础成本
  • 第五层(Subagent):完全隔离的并行工作空间

让 vibe-coder 停下来的习惯清单

  • 没有 CLAUDE.md:每轮都在重新解释规范
  • 跳过 plan:40 个文件改完才发现不对
  • 接受没读过的 diff:会在半夜 2 点 debug 的代码
  • 相信"搞定":没看到测试跑过就不算验证通过
  • 把必须做的事放 CLAUDE.md 而非 hooks:建议性意味着"通常",有些事需要"永远"
  • 从不离开聊天窗口:MCP、Skills、Subagent 三个工具一个没用

模型写代码。你做工程。这两件事不冲突。