程序员如何高效使用 Claude Code

Claude Code 是 Anthropic 推出的 CLI 编程助手,能直接在终端中理解你的代码仓库、执行命令、编辑文件、管理 Git——简单说,它就是一个住在你终端里的高级程序员搭档。但和所有强大工具一样,会用和用好之间隔着一道鸿沟。

本文综合了 Claude Code 创始人 Boris Cherny、Vue.js 作者尤雨溪、Google Chrome 工程负责人 Addy Osmani 等大咖的实战经验,以及 Anthropic 黑客松冠军 Affaan Mustafa 的两篇深度指南(The Shorthand Guide 和 The Longform Guide)的精华,以及社区优秀开源项目 everything-claude-code(50K+ Stars)和 awesome-claude-skills(38K+ Stars)的核心内容,帮你从”能用”进阶到”用好”。


一、理解核心约束:200K 上下文窗口

在学任何技巧之前,先理解这一点:Claude Code 的 200K token 上下文窗口是你最稀缺的资源。

一个 200 文件的中型项目全部加载需要约 800K token,是可用容量的 4 倍。高强度工作 30 分钟内就能把上下文填满。一旦上下文接近满载,Claude 会开始”遗忘”早期指令,输出质量急剧下降。

所以,所有最佳实践的核心都围绕一件事:上下文管理。

关键操作

操作用途
/clear在不相关任务之间清空上下文(最常被推荐的技巧)
/compact <描述>手动压缩上下文,在 70-80% 容量时执行
/context审计 token 使用情况
/statusline自定义状态栏,实时监控上下文占用百分比

黄金法则:在上下文使用率达到 70-80% 时手动执行 /compact,不要等到 95% 的自动压缩——那时已经太晚了。禁用自动压缩,在逻辑断点手动操作。


二、CLAUDE.md — 最重要的配置文件

CLAUDE.md 是 Claude Code 在每次会话开始时自动加载的指令文件,相当于给你的 AI 搭档写一份”入职手册”。

该写什么

# 项目构建
- 构建: `pnpm build`
- 测试: `pnpm test`
- lint: `pnpm lint:fix`

# 代码规范
- 使用 TypeScript 严格模式
- 组件使用 PascalCase 命名
- 禁止使用 any 类型,必须显式声明类型
- 错误处理统一使用自定义 AppError 类

# Git 规范
- 提交信息格式: `feat/fix/docs(scope): description`
- 分支命名: `feature/xxx` 或 `fix/xxx`

# IMPORTANT: 压缩时保留
当压缩上下文时,必须保留完整的已修改文件列表和所有测试命令。

不该写什么

关键原则

  1. 控制在 50-100 行以内(约 2500 token)。太长的 CLAUDE.md 会导致规则被忽略——Boris Cherny 称之为”规则失忆症”
  2. 每条规则要有必要性:问自己”删掉这条 Claude 会犯错吗?”如果不会,就删掉
  3. 用强调语气标注关键规则:例如 IMPORTANT: 或 你必须
  4. 提交到 Git:让团队共同维护,Boris 的团队每周更新多次
  5. Claude 每犯一次错,就加一条规则:这是 Boris 的日常做法
  6. 用 @path/to/import 语法引用额外文件,不要把所有内容堆在一个文件里

文件层级

~/.claude/CLAUDE.md          # 全局配置(所有项目生效)
./CLAUDE.md                   # 项目配置(团队共享)
./CLAUDE.local.md             # 本地覆盖(.gitignore)
./src/CLAUDE.md               # 子目录配置(monorepo)

Rules 目录 — 模块化替代方案

对于大型项目,用 .claude/rules/ 目录按关注点拆分规则:

~/.claude/rules/
  security.md      # 不允许硬编码密钥,必须验证输入
  coding-style.md  # 不可变性,文件大小限制
  testing.md       # TDD 工作流,80% 覆盖率
  git-workflow.md  # 常规提交格式
  agents.md        # 何时委派给子代理
  performance.md   # 模型选择策略

三、Subagent(子代理)— 上下文保护的利器

子代理是 Claude Code 最强大的特性之一。每个子代理在独立的上下文窗口中运行,不会污染你的主会话。

尤雨溪的核心建议

“开一批 subagent,一个一个 fix,不要在一个 session 里面批量 fix,容易因为上下文不足产生幻觉。”
— 尤雨溪 (@yuxiyou)

这条建议揭示了一个关键原则:宁可开多个子代理逐一处理,也不要在一个会话里塞太多任务。每个子代理有自己的上下文窗口,不会互相干扰,也不会因为上下文过长而产生幻觉。

推荐的子代理架构

在 .claude/agents/ 目录下创建 Markdown 文件,社区推荐配置 13 个专业子代理:

规划与设计类:

代码质量类:

语言专用类:

错误处理类:

维护类:

子代理定义示例

# .claude/agents/code-reviewer.md
---
name: code-reviewer
description: 对实现完成的代码进行质量审查
tools: Read, Grep, Glob
model: opus
---
你是一位高级代码审查工程师。审查要点:
- 边界条件和错误处理
- 性能问题和内存泄漏
- 安全漏洞(注入、XSS 等)
- 代码可读性和维护性

迭代检索模式

子代理返回摘要以节省上下文,但主代理拥有子代理缺乏的语义上下文(主代理理解目的,子代理只知道字面查询)。因此:

  1. 主代理评估每个子代理的返回
  2. 在接受前提出澄清性的后续问题
  3. 子代理回到源头寻找答案
  4. 循环直到充分(最多 3 个周期)

关键:传递目标上下文,而不仅仅是查询。

Writer/Reviewer 模式

这是社区公认的高质量工作流:

  1. Session A(Writer):实现功能代码
  2. Session B(Reviewer):用全新的上下文审查代码,没有”自己写的代码一定没问题”的偏见

四、Hooks — 确定性的自动化

CLAUDE.md 的指令是”建议性”的,Claude 可能遵守也可能忽略。而 Hooks 是确定性的——它们每次都会执行,没有例外。

六种 Hook 事件

事件触发时机用途示例
PreToolUse工具执行前阻止危险命令、tmux 提醒
PostToolUse工具执行后自动格式化、TypeScript 类型检查
UserPromptSubmit发送消息时拦截用户输入
StopClaude 结束响应时保存会话状态、console.log 检测
PreCompact上下文压缩前保存关键上下文
Notification权限请求时系统通知

实战 Hooks 配置

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [{
          "type": "command",
          "command": "npx prettier --write $CLAUDE_FILE_PATH || true"
        }]
      },
      {
        "matcher": "Edit && .ts/.tsx",
        "hooks": [{
          "type": "command",
          "command": "npx tsc --noEmit || true"
        }]
      }
    ],
    "PreToolUse": [
      {
        "matcher": "Bash && (npm|pnpm|yarn|cargo|pytest)",
        "hooks": [{
          "type": "command",
          "command": "if [ -z \"$TMUX\" ]; then echo '[Hook] 建议在 tmux 中运行长命令' >&2; fi"
        }]
      },
      {
        "matcher": "Write && .md",
        "hooks": [{
          "type": "command",
          "command": "node .claude/hooks/block-non-readme-md.js"
        }]
      }
    ],
    "Stop": [
      {
        "matcher": "*",
        "hooks": [{
          "type": "command",
          "command": "node .claude/hooks/check-console-log.js"
        }]
      }
    ]
  }
}

Pro tip:用 Stop hook(会话结束时执行一次)来持久化学习成果,而不是 UserPromptSubmit(每条消息都执行,影响延迟)。

更 Pro 的 tip:用 hookify 插件对话式创建 Hook,运行 /hookify 然后描述你想要的行为。


五、上下文与记忆管理 — 跨会话持久化

跨会话记忆文件

创建 .tmp 文件在 .claude/ 目录中追踪会话进度:

# .claude/session-state.tmp

## 已验证有效的方案
- 用 Vite 替代 Webpack 后构建时间从 45s → 8s(已验证)
- API 鉴权使用 JWT + refresh token 方案(已通过安全审查)

## 已尝试但失败的方案
- esbuild 直接打包——不支持 CSS Modules(放弃)
- 尝试用 Redis 缓存——引入了竞态条件(回退)

## 尚未尝试
- 服务端渲染优化
- 数据库查询索引优化

动态系统提示注入

不要把所有内容都塞进 CLAUDE.md,用 CLI 标志动态注入上下文:

claude --system-prompt "$(cat memory.md)"

系统提示的权威性高于用户消息,用户消息又高于工具结果。这给了你精确控制加载内容的能力。

实用别名设置:

alias claude-dev='claude --system-prompt "$(cat ~/.claude/contexts/dev.md)"'
alias claude-review='claude --system-prompt "$(cat ~/.claude/contexts/review.md)"'
alias claude-research='claude --system-prompt "$(cat ~/.claude/contexts/research.md)"'

记忆持久化 Hooks

三个被低估的 Hook 实现记忆管理:

  1. PreCompact Hook — 在上下文压缩前保存关键状态
  2. Stop Hook — 会话结束时持久化学习成果
  3. SessionStart Hook — 新会话自动加载之前的上下文

持续学习系统

当 Claude 发现非平凡的洞见(调试技巧、变通方案、项目特定模式)时,将其捕获为新的 Skill。后续类似问题会自动加载该 Skill,避免重复浪费 token。


六、Token 优化 — 省钱又提效

模型选择框架

不要总是用最贵的模型,90% 的编码任务 Sonnet 就够了:

任务类型推荐模型理由
探索/搜索文件Haiku速度和成本优势
简单编辑Haiku单文件变更,指令明确
多文件实现Sonnet编码工作的最佳平衡
PR 审查Sonnet上下文理解 + 细微检测
文档编写Haiku结构化输出简单
复杂架构Opus需要深度推理
安全分析Opus不能遗漏漏洞
调试系统性问题Opus需要持有整个系统上下文

升级到 Opus 的信号:Sonnet 首次尝试失败、任务涉及 5+ 文件、架构决策、安全关键代码。

用 /model sonnet 切换默认模型,需要时再 /model opus。

推荐配置

{
  "model": "sonnet",
  "MAX_THINKING_TOKENS": "10000",
  "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "50"
}

工具优化

MCP 替换策略

许多 MCP 只是包装了现有 CLI 工具。虽然方便,但消耗上下文空间。建议:


七、工作流最佳实践

四阶段工作流(官方推荐)

探索 → 规划 → 实现 → 验证
  1. 探索:进入 Plan Mode(Shift+Tab),让 Claude 阅读代码、回答问题,不做修改
  2. 规划:要求 Claude 创建详细的实现计划,用 Ctrl+G 在编辑器中审查
  3. 实现:切换回 Normal Mode,Claude 按计划编码并自我验证
  4. 验证:要求 Claude 运行测试、构建、lint,确认一切正常

使用 Plan Mode 进行多文件修改时,架构错误减少约 45%。

验证循环 — 单一最高杠杆率实践

所有来源一致同意:给 Claude 一种验证自身工作的方式,可以将最终结果的质量提升 2-3 倍。

验证方式包括:

# 在 CLAUDE.md 中添加验证指令
每次修改代码后,必须运行 `pnpm test` 和 `pnpm build` 验证无错误。

验证评估指标

pass@k: 至少 k 次尝试中有一次成功
        k=1: 70%   k=3: 91%   k=5: 97%

pass^k: 全部 k 次尝试都必须成功
        k=1: 70%   k=3: 34%   k=5: 17%

需要工作一次时用 pass@k,需要一致性时用 pass^k。

五阶段顺序架构(复杂任务)

阶段 1:研究 (Explore agent)           → research-summary.md
阶段 2:规划 (Planner agent)           → plan.md
阶段 3:实现 (TDD-guide agent)         → 代码变更
阶段 4:审查 (Code-reviewer agent)     → review-comments.md
阶段 5:验证 (Build-error-resolver)    → 完成或循环

关键规则:

  1. 每个代理接收一个明确输入,产出一个明确输出
  2. 输出成为下一阶段的输入
  3. 绝不跳过阶段
  4. 阶段间用 /clear 清理上下文
  5. 将中间输出存储在文件中

八、并行工作 — 成倍提升吞吐量

Boris Cherny 的工作设置

Claude Code 创始人 Boris Cherny 的日常工作方式:

并行策略

/fork — 为不重叠的任务创建分支会话。主聊天处理代码修改,fork 处理代码库问题、状态查询或外部服务研究。

Git Worktree — 为重叠的并行任务创建独立工作树:

git worktree add ../project-feature-a feature-a
git worktree add ../project-feature-b feature-b

cd ../project-feature-a && claude

Cascade 方法:

  1. 在新标签页中打开新任务(向右)
  2. 从左到右依次处理(最旧到最新)
  3. 上限 3-4 个并行任务

指导哲学:用最少的必要并行化完成最大的工作量。

两实例启动模式(项目初始化)

空仓库用两个 Claude 实例并行启动:

实例 1(脚手架代理):建立项目结构、创建配置(CLAUDE.md、rules、agents)

实例 2(深度研究代理):连接服务和网络搜索、开发详细 PRD、创建架构图(Mermaid 格式)、编译参考文档


九、Skills 和 Commands — 可复用的工作流

Skills vs Commands

# 目录结构示例
~/.claude/skills/
  pmx-guidelines.md      # 项目特定模式
  coding-standards.md    # 语言最佳实践
  tdd-workflow/          # 多文件 Skill
  security-review/       # 检查清单 Skill

~/.claude/commands/
  commit-push-pr.md      # Boris 每天用几十次的命令
  refactor-clean.md      # 长会话后清理死代码
  deploy-check.md        # 部署前检查

Skills 中的 Codemap

Skills 可以包含 codemap——让 Claude 快速导航代码库而不必消耗大量上下文进行探索:

# .claude/skills/project-map.md
## 代码地图
- `src/api/` — 所有 REST API 端点
- `src/services/` — 业务逻辑层
- `src/models/` — 数据库模型
- `src/middleware/` — Express 中间件(auth、error handling)
- `tests/` — 测试文件,镜像 src 结构

社区精选 Skills(awesome-claude-skills)

awesome-claude-skills 仓库收录了 150+ 个技能:

分类数量示例
开发工具19代码质量分析、Playwright 自动化、MCP 服务器构建
文档处理5Word/PDF/PPT/Excel 操作
数据分析4CSV 汇总、PostgreSQL 查询、根因分析
安全4数字取证、威胁狩猎、元数据提取
创意媒体6Canvas 设计、图像增强、GIF 创建
效率工具8文件整理、发票管理、简历定制
应用自动化78+通过 Composio 集成 HubSpot、Jira、Slack、GitHub 等 1000+ 应用

安装使用

# Claude Code 安装
mkdir -p ~/.config/claude-code/skills/
# 将 skill 文件夹复制到该目录
# 启动 Claude Code,Skills 自动激活

# 插件方式安装
/plugin marketplace add affaan-m/everything-claude-code
/plugin install everything-claude-code@everything-claude-code

十、MCP 服务器 — 扩展 Claude 的能力边界

MCP(Model Context Protocol)让 Claude Code 能连接外部工具和服务。它不是 API 的替代品,而是围绕 API 的提示驱动包装器。

推荐 MCP 配置

{
  "github": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"] },
  "firecrawl": { "command": "npx", "args": ["-y", "firecrawl-mcp"] },
  "supabase": { "command": "npx", "args": ["-y", "@supabase/mcp-server-supabase@latest"] },
  "memory": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-memory"] },
  "sequential-thinking": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-sequential-thinking"] },
  "vercel": { "type": "http", "url": "https://mcp.vercel.com" },
  "context7": { "command": "npx", "args": ["-y", "@context7/mcp-server"] }
}

关键警告

“你的 200K 上下文窗口可能因为启用了太多工具而只剩 70K。”


十一、Plugins — 打包好的工具集

插件将工具打包以便安装,避免繁琐的手动设置。一个插件可以是 Skill + MCP 的组合,或者 Hooks/工具的捆绑。

推荐插件

# 安装插件市场
claude plugin marketplace add https://github.com/mixedbread-ai/mgrep

# 在 Claude 中运行 /plugins 管理
插件用途
typescript-lspTypeScript 智能补全(编辑器外运行时必备)
pyright-lspPython 类型检查
hookify对话式创建 Hooks
mgrep比 ripgrep 更好的搜索,节省约 50% token
frontend-designUI/UX 模式
commit-commandsGit 工作流自动化
context7实时文档查询

和 MCP 一样的警告:只启用 4-5 个插件,监控你的上下文窗口。

LSP 插件的价值

如果你经常在编辑器之外运行 Claude Code,LSP 插件尤其有用。Language Server Protocol 让 Claude 获得实时类型检查、跳转定义和智能补全,无需 IDE。


十二、编辑器搭配建议

Zed(社区推荐)

Rust 编写,启动极快,巨型代码库也不卡顿,资源占用极低:

编辑器通用技巧

  1. 分屏:一侧终端运行 Claude Code,另一侧编辑器
  2. Ctrl+G:在编辑器中打开 Claude 当前工作的文件
  3. 开启自动保存:确保 Claude 读取的文件始终是最新的
  4. 文件监听:确认编辑器自动重新加载被修改的文件

语音输入

用语音转录代替打字——对大多数人来说更快。工具:superwhisper(Mac)、MacWhisper(Mac)。Claude 即使有转录错误也能理解意图。


十三、常见陷阱及避免方法

1. “厨房水槽”式会话

从一个任务开始,中途问一个无关的问题,再回到原来的任务。上下文被无关信息填满。

解决:/clear 在不相关任务之间。完成一个功能要去修一个 Bug?先 /clear。

2. 反复纠正

Claude 做错了,你纠正它,还是错的,你再纠正。上下文充满了失败的尝试。

解决:两次纠正失败后,/clear 然后重写一个更好的初始提示,把你学到的教训融入进去。

3. CLAUDE.md 过度膨胀

写了 500 行的 CLAUDE.md,Claude 忽略了一半。重要规则淹没在噪音中。

解决:无情精简。如果 Claude 在没有某条指令的情况下就能做对,就删掉它或者转成 Hook。

4. 全量加载项目

把 200 个文件的项目全部喂给 Claude——消耗约 800K token,是窗口的 4 倍。

解决:精准定位 3-5 个目标文件,效果远好于批量加载 50 个文件。

5. 跳过规划

让 Claude 直接开始写代码,结果解决了错误的问题。

解决:涉及 3 个以上文件的修改,一律使用 Plan Mode。

6. 无限探索

让 Claude “调查一下”但不限定范围,它读了几百个文件把上下文填满。

解决:严格限定调查范围,或使用子代理进行探索。

7. 草率开启 bypass 模式

23% 经历过破坏性执行的用户启用了 --dangerously-skip-permissions。

解决:用 /permissions 白名单安全命令。只在没有网络访问的容器中使用 skip permissions。


十四、快捷键与实用命令速查表

快捷键

快捷键功能
Ctrl+U删除整行(比退格快得多)
Shift+Enter多行输入
Shift+Tab切换思考模式
Esc Esc中断 Claude / 恢复代码
@搜索文件
/触发斜杠命令
!快速执行 bash 命令
Ctrl+G在编辑器中编辑
Tab切换思考显示

常用命令

命令用途
/clear清空上下文(最常用)
/compact手动压缩上下文
/context审计 token 使用
/fork分支会话
/model切换模型
/rewind回退到之前的状态
/checkpoints文件级撤销点
/statusline自定义状态栏
/mcp管理 MCP 服务器
/plugins管理插件
/rename标记聊天便于管理

终端别名

alias c='claude'
alias cc='claude --continue'  # 继续上次会话

十五、科研场景:用 Claude Code 驱动 AI 研究全流程

Claude Code 不只是写业务代码的工具。结合 Hugging Face Skills 插件,它可以覆盖从数据准备到论文发表的完整 AI 科研工作流。

安装 Hugging Face Skills

/plugin marketplace add huggingface/skills
/plugin install hugging-face-model-trainer@huggingface/skills
/plugin install hugging-face-trackio@huggingface/skills
# 按需安装其他 skill

9 个 Skills 覆盖完整研究流程

Skill用途科研价值
Model Trainer用 TRL 训练/微调语言模型(SFT、DPO、GRPO、奖励建模)可复现的训练流程,支持硬件选择和成本估算,GGUF 转换支持本地部署
Trackio实时训练指标追踪和可视化仪表盘实验追踪和消融研究,团队协作共享仪表盘到 HF Spaces
Evaluation模型评估和基准测试管理导入 Artificial Analysis API 基准分数,用 vLLM/lighteval 框架运行自定义评估
Datasets创建和管理 HF Hub 上的数据集创建基准数据集、训练语料,SQL 查询和数据转换
Paper Publisher在 HF Hub 发布和管理研究论文论文-模型-数据集-代码一站式关联,提升可发现性和可复现性
Gradio构建交互式 Web UI 和演示为论文构建可交互 Demo,让审稿人/读者直接体验模型
Jobs在 HF 基础设施上执行云端计算任务无需自有 GPU,支持大规模训练和评估
HF CLIHub 命令行操作(上传/下载模型和数据集)简化数据流水线和模型分发
Tool Builder创建可复用的 API 自动化脚本构建可复现的数据预处理流水线

典型科研工作流示例

用自然语言驱动整个流程:

第 1 步:数据准备
> "用 HF Datasets skill 创建一个指令微调数据集,基于我 data/ 目录下的 jsonl 文件"

第 2 步:模型微调
> "用 Model Trainer skill 对 Qwen2.5-7B 进行 SFT 微调,
   使用刚创建的数据集,估算 A100 的成本"

第 3 步:实验追踪
> "用 Trackio 监控训练过程,记录 loss、learning rate 和 eval metrics,
   同步仪表盘到我的 HF Space"

第 4 步:模型评估
> "用 Evaluation skill 在 MMLU、HumanEval 和我的自定义基准上评估模型,
   和 baseline 对比生成评估表格"

第 5 步:构建 Demo
> "用 Gradio 为微调后的模型创建一个对话式 Demo,部署到 HF Spaces"

第 6 步:发布论文
> "用 Paper Publisher 在 HF Hub 上创建论文页面,
   关联训练好的模型、数据集和 Demo"

为什么科研人员应该关注

  1. 可复现性:所有 Skill 输出可版本控制的代码和配置,论文审稿人可以一键复现
  2. 开放科学:论文、模型、数据集、代码在 HF Hub 上形成完整的工件链
  3. 零硬件门槛:通过 HF Jobs 在云端训练大模型,内置成本估算
  4. 团队协作:Trackio 实时仪表盘支持多人同时查看实验进展
  5. 跨平台:这些 Skill 同时支持 Claude Code、Cursor、Codex CLI 和 Gemini CLI

一个完整的 AI 研究项目——从数据集构建到论文发表——现在可以在 Claude Code 终端中用自然语言指令驱动完成,所有代码自动生成且可复现。


十六、安全最佳实践

核心原则

“每个集成都创建了一个潜在的入侵点。”

沙箱与访问控制

数据保护

记忆投毒预防

定期审计持久化文件——恶意片段可能跨会话积累。

AgentShield

使用 npx ecc-agentshield scan 进行自动漏洞扫描,覆盖 102 条安全规则。


总结

Claude Code 不仅仅是一个代码补全工具,它是一个需要管理的高级协作者。像管理一个极其聪明但记忆有限的团队成员一样来使用它:

实践影响
给 Claude 验证手段(测试、截图、构建)质量提升 2-3 倍
/clear 在不相关任务之间防止上下文污染
使用 Plan Mode 进行多文件修改架构错误减少约 45%
CLAUDE.md 控制在 100 行以内防止规则失忆
用子代理做研究保护主上下文窗口
在 70-80% 容量时 /compact避免性能下降
并行会话用独立 Git checkout成倍提升吞吐量
PostToolUse Hook 自动格式化零例外的一致性
禁用未使用的 MCP回收上下文空间
两次纠正失败后 /clear 重写比累积修复更干净

“早期我花时间构建可复用的工作流和模式。构建过程很繁琐,但随着模型和代理工具的改进,这产生了疯狂的复利效应。” — Affaan Mustafa

掌握这些原则,你就能把 Claude Code 从一个”偶尔有用的工具”变成”不可或缺的编程搭档”。


参考资源