跳转到主内容
本站为独立第三方技术服务商,Claude™ 与 Anthropic® 为 Anthropic, PBC 的商标,本站与 Anthropic 无任何关联、授权或合作关系。

Claude Code 实战技巧:从能跑到好用的 12 条工程化经验

Claude Code 装好之后大多数人只用了 10% 的能力。本文给出 hooks 自动化、自定义 slash command、CLAUDE.md 写法、并行 subagent、上下文压缩、成本控制等 12 条经过生产验证的实战技巧,附完整配置与命令,并说明如何通过 claudeapi.com 稳定接入。

开发指南Claude Code 技巧预计阅读15分钟
2026.05.27 发表
Claude Code 实战技巧:从能跑到好用的 12 条工程化经验

Claude Code 实战技巧:从能跑到好用的 12 条工程化经验

Claude Code 装好之后,大多数人的用法停留在:在终端打开它,敲一段需求,看着它改完文件,关掉。一个月下来,体感和"AI 自动补全工具"差不多。

但 Claude Code 真正的能力曲线在后面:当你开始用 hooks 让它在每次保存前自动跑 lint、用 CLAUDE.md 让它记住你的工程约定、用 subagent 把任务拆成并行的小窗口、用自定义 slash command 把高频流程封装成一句指令——同样的模型,同样的 API 调用,产出效率会出现数量级的差异。

本文整理 12 条经过生产环境验证的实战技巧,每条都给出完整可复制的配置。文末附在国内稳定接入的方案(claudeapi.com)。


一、写一份真正有用的 CLAUDE.md

CLAUDE.md 不是 README。它是每次会话都会自动塞进上下文的高优先级指令。写得好能省下大量的"请按 X 风格写代码"重复提示;写得差就是在浪费 token。

好的 CLAUDE.md 写法

# 项目约定

## 技术栈
- 后端:FastAPI 0.115,async-first
- ORM:SQLAlchemy 2.0(asyncio 风格)
- 测试:pytest + pytest-asyncio,不要用 unittest

## 代码风格
- 不写多行 docstring,每函数最多一行注释
- 错误处理:业务边界 raise 自定义 Exception;不要在 service 层 catch 后吞掉
- 不要新建文件,优先编辑现有文件

## 必须先看的文件
- `app/core/deps.py` — 所有依赖注入入口
- `app/models/base.py` — 所有 model 必须继承 BaseModel

## 禁止
- 任何 `print()` 调试语句
- `from x import *`
- 修改 `migrations/` 下已应用的迁移文件
# 项目约定

## 技术栈
- 后端:FastAPI 0.115,async-first
- ORM:SQLAlchemy 2.0(asyncio 风格)
- 测试:pytest + pytest-asyncio,不要用 unittest

## 代码风格
- 不写多行 docstring,每函数最多一行注释
- 错误处理:业务边界 raise 自定义 Exception;不要在 service 层 catch 后吞掉
- 不要新建文件,优先编辑现有文件

## 必须先看的文件
- `app/core/deps.py` — 所有依赖注入入口
- `app/models/base.py` — 所有 model 必须继承 BaseModel

## 禁止
- 任何 `print()` 调试语句
- `from x import *`
- 修改 `migrations/` 下已应用的迁移文件

坏的写法:项目背景介绍、团队规模、技术选型理由——这些是给人看的,给模型看就是噪声。

经验值:CLAUDE.md 控制在 200 行以内,超过部分用 @import 拆到子文件,按需引入。


二、用 hooks 把"每次都要提醒一遍"的事情自动化

hooks 是 Claude Code 的杀手锏,但绝大多数人没启用过。它能在工具调用前后插入 shell 脚本,把"每次让 Claude 跑测试"、“每次改完格式化”、"每次禁止改 prod 配置"这类规则从对话提示降级成强制硬约束

~/.claude/settings.json

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "if [[ $CLAUDE_FILE_PATHS == *.py ]]; then ruff format $CLAUDE_FILE_PATHS && ruff check --fix $CLAUDE_FILE_PATHS; fi"
          }
        ]
      }
    ],
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "echo \"$CLAUDE_TOOL_INPUT\" | grep -qE 'rm -rf|git push --force|drop database' && exit 1 || exit 0"
          }
        ]
      }
    ]
  }
}
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "if [[ $CLAUDE_FILE_PATHS == *.py ]]; then ruff format $CLAUDE_FILE_PATHS && ruff check --fix $CLAUDE_FILE_PATHS; fi"
          }
        ]
      }
    ],
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "echo \"$CLAUDE_TOOL_INPUT\" | grep -qE 'rm -rf|git push --force|drop database' && exit 1 || exit 0"
          }
        ]
      }
    ]
  }
}

第一个 hook:每次 Edit/Write 完 Python 文件,自动跑 ruff 格式化和修复。 第二个 hook:拦截危险 bash 命令(rm -rfgit push --forcedrop database),直接阻止执行。

hooks 的好处:你不需要在 prompt 里再说"记得跑 ruff",模型也无法"忘记"。


三、把高频流程封装成自定义 slash command

如果你每周要做 5 次相同的事(写 changelog、生成 API 文档、把 issue 转成 PR description),把它写成 slash command。

.claude/commands/changelog.md 写:

---
description: 根据最近的 git 提交生成 CHANGELOG 条目
---

读取从上一个 tag 到 HEAD 的所有 commit(用 `git log <last-tag>..HEAD --oneline`),
按 feat / fix / chore / docs 分类,
按照项目 CHANGELOG.md 的现有格式追加一节。

要求:
- 标题用今天日期 + 版本号(从 package.json 读)
- feat 类要写清"用户能做什么新事",不要堆 commit message
- breaking change 单独标 ⚠️
---
description: 根据最近的 git 提交生成 CHANGELOG 条目
---

读取从上一个 tag 到 HEAD 的所有 commit(用 `git log <last-tag>..HEAD --oneline`),
按 feat / fix / chore / docs 分类,
按照项目 CHANGELOG.md 的现有格式追加一节。

要求:
- 标题用今天日期 + 版本号(从 package.json 读)
- feat 类要写清"用户能做什么新事",不要堆 commit message
- breaking change 单独标 ⚠️

之后在 Claude Code 里输入 /changelog 就直接触发,省去每次手敲完整指令。

更进一步,slash command 支持参数:

---
description: 给指定 PR 写 review 评论
argument-hint: <pr-number>
---

`gh pr view $ARGUMENTS --json files,title,body` 获取 PR 内容,
按 review-checklist.md 里的项逐条 review,
找到问题用 `gh pr review $ARGUMENTS --comment -b "..."` 发表评论。
---
description: 给指定 PR 写 review 评论
argument-hint: <pr-number>
---

`gh pr view $ARGUMENTS --json files,title,body` 获取 PR 内容,
按 review-checklist.md 里的项逐条 review,
找到问题用 `gh pr review $ARGUMENTS --comment -b "..."` 发表评论。

调用:/review 1234


四、并行 subagent:把 90 分钟的活压成 15 分钟

Claude Code 的 Agent 工具可以一次启动多个 subagent,每个开一个独立上下文窗口并行跑。适用场景:

  • 在 5 个不同的模块里同时找一个 API 的所有调用点
  • 给整个仓库的 10 个 service 类同时加上同一种 logging
  • 同时跑代码 review、security 扫描、performance 检查三个独立分析

正确的触发方式是在一次回复里发出多个 Agent 工具调用,不要串行。Claude Code 在收到多个独立任务时自动并行,前提是你明确告诉它"并行执行"

请同时(并行)执行以下三件事:
1. 在 services/ 下找所有调用 `external_api.py` 的位置
2. 在 tests/ 下找所有 mock 了 external_api 的测试
3. 在 docs/ 下找所有提到 external_api 的文档

每件事用一个独立的 Agent 任务,三个并行启动。
请同时(并行)执行以下三件事:
1. 在 services/ 下找所有调用 `external_api.py` 的位置
2. 在 tests/ 下找所有 mock 了 external_api 的测试
3. 在 docs/ 下找所有提到 external_api 的文档

每件事用一个独立的 Agent 任务,三个并行启动。

实测对比:同样的"在大仓库里做三项独立调研",串行 90 秒,三个并行 30 秒。


五、用 plan mode 防止"边想边改"

复杂改动直接动手是 Claude Code 翻车的高发场景——改到一半发现思路不对,已经把 8 个文件搅得乱七八糟,回滚也尴尬。

解法:在重要任务前先进入 plan mode(Shift+Tab 切换,或直接说"先给我一份实施计划,不要动代码")。Claude 会探索代码、列出方案、给出步骤清单,等你确认后才开写。

特别值得 plan mode 的场景:

  • 涉及 3 个以上文件的重构
  • 引入新依赖或新架构模式
  • 数据库 migration / API 版本变更
  • 不熟悉的代码区域

六、上下文管理:长会话要主动压缩

Claude Code 的上下文窗口很大(Opus 4.7 支持 1M),但不等于无脑塞。会话超过几千轮后:

  • 早期无关讨论会"污染"模型注意力
  • 找最近的关键决策变慢
  • token 计费持续累加

实战做法:

  1. 完成一个子任务后用 /clear:清空当前上下文,下一个任务从干净状态开始
  2. 超长会话用 /compact:让 Claude 把前面的会话压成一段摘要,保留关键决策但去掉冗余
  3. 跨会话的事项写进 CLAUDE.md:而不是依赖"上次会话我们决定了 X"

七、给模型读 issue / PR / log 的快捷方法

Claude Code 不止能改代码。当你的问题来自 GitHub issue、PR 评论或日志文件,让它直接读源头比你复制粘贴更准:

# 让 Claude 读 issue 全文
请用 `gh issue view 456 --comments` 看完这个 issue 和所有评论,
然后告诉我应该怎么修。

# 让 Claude 看 CI 失败原因
最近一次 push 的 CI 挂了,用 `gh run list -L 1` 找到 run ID,
然后用 `gh run view <id> --log-failed` 看失败日志,分析原因。

# 让 Claude 分析生产日志
读 `~/var/log/myapp/2026-05-27.log` 最后 500 行,
找出所有 ERROR 级别记录,按出现次数归类。
# 让 Claude 读 issue 全文
请用 `gh issue view 456 --comments` 看完这个 issue 和所有评论,
然后告诉我应该怎么修。

# 让 Claude 看 CI 失败原因
最近一次 push 的 CI 挂了,用 `gh run list -L 1` 找到 run ID,
然后用 `gh run view <id> --log-failed` 看失败日志,分析原因。

# 让 Claude 分析生产日志
读 `~/var/log/myapp/2026-05-27.log` 最后 500 行,
找出所有 ERROR 级别记录,按出现次数归类。

八、cost 命令:让账单可见

/cost 命令显示当前会话累计费用。养成习惯:

  • 每个大任务开始前先 /cost,结束后再 /cost,知道这个任务花了多少
  • 上下文炸到几十万 token 时一眼能看到费用拐点
  • 团队多人协作时,可以以会话费用为单位评估"这个功能开发用了多少 AI 成本"

配合上一节的 /clear,控制单会话成本上限。


九、用 Skills 沉淀团队最佳实践

Skills 是 Claude Code 的可复用能力包,比 slash command 更结构化——可以带说明文件、模板、辅助脚本。

例如团队约定的"创建新微服务"流程,可以做成一个 skill:

.claude/skills/new-microservice/
├── SKILL.md              # 描述 + 触发条件
├── templates/
│   ├── pyproject.toml.tpl
│   ├── Dockerfile.tpl
│   └── main.py.tpl
└── scripts/
    └── setup.sh
.claude/skills/new-microservice/
├── SKILL.md              # 描述 + 触发条件
├── templates/
│   ├── pyproject.toml.tpl
│   ├── Dockerfile.tpl
│   └── main.py.tpl
└── scripts/
    └── setup.sh

SKILL.md

---
name: new-microservice
description: 在 services/ 下创建符合公司规范的新微服务骨架,包括 FastAPI 入口、Dockerfile、CI 模板。当用户说"新建一个 XX 服务"或"加一个微服务"时使用。
---

按以下步骤:
1. 询问服务名(kebab-case)
2. 复制 templates/ 下所有模板到 services/<服务名>/,替换占位符
3. 跑 scripts/setup.sh 初始化依赖
4. 在 .github/workflows/ 加上对应的 CI 文件
---
name: new-microservice
description: 在 services/ 下创建符合公司规范的新微服务骨架,包括 FastAPI 入口、Dockerfile、CI 模板。当用户说"新建一个 XX 服务"或"加一个微服务"时使用。
---

按以下步骤:
1. 询问服务名(kebab-case)
2. 复制 templates/ 下所有模板到 services/<服务名>/,替换占位符
3. 跑 scripts/setup.sh 初始化依赖
4. 在 .github/workflows/ 加上对应的 CI 文件

之后团队任何人在 Claude Code 里说"新建一个订单查询服务",模型会自动触发这个 skill,按统一规范生成,避免每个人手动捏一份。


十、模型分层:贵的留给硬骨头

不是所有任务都需要 Opus 4.7。Claude Code 支持手动切模型(/model):

任务类型 推荐模型 理由
复杂重构、架构设计、跨多文件的逻辑梳理 claude-opus-4-7 最强推理能力
写新功能、改 bug、单文件级别的代码改动 claude-sonnet-4-6 速度快 5 倍,质量足够
简单查找、文档撰写、commit message claude-haiku-4-5-20251001 价格 1/20,秒回

在 settings.json 默认设 Sonnet 4.6,只在啃硬骨头时切到 Opus,月成本可以下降 60% 以上。

{
  "env": {
    "ANTHROPIC_MODEL": "claude-sonnet-4-6"
  }
}
{
  "env": {
    "ANTHROPIC_MODEL": "claude-sonnet-4-6"
  }
}

十一、permission 配置:减少弹窗、保留安全

Claude Code 默认对每个 Bash 命令、文件写入都会询问授权。频繁弹窗会打断节奏。

~/.claude/settings.json

{
  "permissions": {
    "allow": [
      "Bash(npm test)",
      "Bash(npm run *)",
      "Bash(git status)",
      "Bash(git diff *)",
      "Bash(git log *)",
      "Bash(gh issue view *)",
      "Bash(gh pr view *)",
      "Bash(pytest *)",
      "Read(**)",
      "Edit(src/**)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(git push --force*)",
      "Bash(curl * | sh)",
      "Edit(.env*)",
      "Edit(secrets/**)"
    ]
  }
}
{
  "permissions": {
    "allow": [
      "Bash(npm test)",
      "Bash(npm run *)",
      "Bash(git status)",
      "Bash(git diff *)",
      "Bash(git log *)",
      "Bash(gh issue view *)",
      "Bash(gh pr view *)",
      "Bash(pytest *)",
      "Read(**)",
      "Edit(src/**)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(git push --force*)",
      "Bash(curl * | sh)",
      "Edit(.env*)",
      "Edit(secrets/**)"
    ]
  }
}

把高频安全操作(读、跑测试、看 git)默认放行,危险操作(rm -rf、强推、env 文件)默认拒绝。


十二、稳定接入:把"网络"这个变量排除

Claude Code 直连 Anthropic 官方 API 在国内网络环境下偶尔会出现请求中断、响应卡顿、跨地域延迟波动等问题,这些会直接导致"对话到一半失联"——而 Claude Code 是带状态的会话,中断后恢复成本不低。

可以把接入点改成 https://gw.claudeapi.com,接口与 Anthropic SDK 完全兼容,Claude Code 透明使用:

# macOS / Linux
export ANTHROPIC_AUTH_TOKEN="sk-你的ClaudeAPI密钥"
export ANTHROPIC_BASE_URL="https://gw.claudeapi.com"
# macOS / Linux
export ANTHROPIC_AUTH_TOKEN="sk-你的ClaudeAPI密钥"
export ANTHROPIC_BASE_URL="https://gw.claudeapi.com"
# Windows PowerShell(永久)
[System.Environment]::SetEnvironmentVariable("ANTHROPIC_AUTH_TOKEN", "sk-你的Key", "User")
[System.Environment]::SetEnvironmentVariable("ANTHROPIC_BASE_URL", "https://gw.claudeapi.com", "User")
# Windows PowerShell(永久)
[System.Environment]::SetEnvironmentVariable("ANTHROPIC_AUTH_TOKEN", "sk-你的Key", "User")
[System.Environment]::SetEnvironmentVariable("ANTHROPIC_BASE_URL", "https://gw.claudeapi.com", "User")

或写入 settings.json:

{
  "env": {
    "ANTHROPIC_AUTH_TOKEN": "sk-你的ClaudeAPI密钥",
    "ANTHROPIC_BASE_URL": "https://gw.claudeapi.com",
    "ANTHROPIC_MODEL": "claude-sonnet-4-6"
  }
}
{
  "env": {
    "ANTHROPIC_AUTH_TOKEN": "sk-你的ClaudeAPI密钥",
    "ANTHROPIC_BASE_URL": "https://gw.claudeapi.com",
    "ANTHROPIC_MODEL": "claude-sonnet-4-6"
  }
}

之后 Claude Code 启动直接走稳定接入点,不必再为网络抖动调试 timeout 配置。控制台 console.claudeapi.com 提供按会话维度的用量明细,配合上面第八条 /cost 使用,可以清楚看到每个项目、每个开发者的 Claude Code 实际消耗。


小结

Claude Code 不是"装上就完事"的工具。投资半天时间把 CLAUDE.md、hooks、自定义 slash command、permissions 配置好,往后几个月的产出曲线会和"开箱即用"派完全分开。

12 条里最优先做的三件事:

  1. 写一份精简但具体的 CLAUDE.md(不要超 200 行)
  2. 把"自动格式化 + 危险命令拦截" hooks 启用
  3. 默认模型设为 Sonnet 4.6,只在硬骨头时切 Opus 4.7

如需在国内稳定使用 Claude Code,访问 claudeapi.com 获取接入点,配置只需替换两个环境变量,账单清晰、用量透明,企业结算支持。

相关文章