Claude Code 最佳实践与高效用法
懂原理还要会用。这一页是 Claude Code 的实战手册:怎么写 CLAUDE.md、怎么组织工作流、怎么控成本、怎么配权限、怎么避坑——把前面几页的机制转成「我该怎么做」。机制原理见 核心机制。
一、写好 CLAUDE.md(最高杠杆的一件事)
CLAUDE.md 是每次会话自动注入的项目记忆,写好它能极大提升 Agent 表现。该放什么:
| 类别 | 例子 |
|---|---|
| 常用命令 | 构建/测试/lint/启动命令(让它别自己瞎试) |
| 代码约定 | 命名风格、目录结构、技术栈版本 |
| 关键约束 | 「不要碰 X 目录」「提交前必须跑测试」 |
| 项目背景 | 这是什么项目、核心模块职责 |
| 踩坑提醒 | 已知陷阱、特殊环境配置 |
原则:简洁、具体、可执行。CLAUDE.md 也占上下文,别写成长篇大论;放「模型不知道、且每次都需要」的信息。强约束(必须遵守的)建议同时用 Hook 强制(见 扩展机制)——Prompt 是建议、Hook 是法律。
二、任务组织:拆解 + Plan Mode
- 复杂任务先 Plan:高风险或大改动,先用 Plan Mode 让它给方案、你审阅批准再动手,避免一上来乱改。
- 拆小步:大任务拆成可验证的小步(「先加接口、再写实现、再补测试」),每步可检查,比「一句话让它做完一切」可靠得多。
- 让它跑测试自验:明确告诉它「改完跑 X 测试确认」,利用 agentic loop 的自我纠错(失败→读报错→修)。
- 善用待办:长任务让它用 TodoWrite 列清单跟踪进度,不迷路。
三、上下文管理:保持窗口干净
- 新任务开新会话:不相关的任务别堆在一个超长会话里,避免上下文污染和成本累积。
- 重上下文的探索丢给子 Agent:「调研整个模块」这类会产生海量中间内容的活,交给子 Agent 隔离(见 子 Agent)。
- 及时压缩:长任务接近窗口上限时触发压缩(compaction),保留目标和关键状态。
- 关键信息落盘:重要决定写进 CLAUDE.md 或笔记文件,别只留在易失的对话里。
四、成本控制
编程 Agent 按 token 计费,长任务可能很贵。省钱抓手:
- 前缀稳定命中缓存:稳定的 system prompt / CLAUDE.md 让 prompt caching 生效,重复前缀大幅降价(机制见 上下文工程)。
- 控制上下文体积:别让无关历史、超大文件、冗长工具输出堆积;及时新开会话/压缩。
- 任务分级:简单任务别用最贵的配置;复杂推理才上顶配(模型分级思路见 SLM)。
- agentic search 而非全量读:让它 grep 定位、按需读,别一次性读一堆大文件。
五、权限与安全配置
- 按风险配权限:常用安全命令设 Allow(少打断),危险操作(删除、推送、改配置)设 Ask 或 Deny。
- 敏感文件用 Hook 兜底:禁止碰
.env、密钥、生产配置——用 PreToolUse Hook 强制拦截,不依赖模型自觉。 - 不可信内容警惕注入:让 Agent 处理外部代码/网页/issue 时,记住里面可能藏注入指令;高危环境用沙箱、限制可访问目录(见 大模型安全)。
- CI/自动化场景更谨慎:无人值守时权限要更保守,关键操作留确认或审计。
六、常见坑与避法
| 坑 | 避法 |
|---|---|
| 一句话让它做太复杂的事 | 拆小步、先 Plan、给验证方式 |
| 它「瞎试」命令 | CLAUDE.md 里写清构建/测试命令 |
| 上下文越用越乱越贵 | 新任务开新会话、及时压缩、子 Agent 隔离 |
| 改坏了无关代码 | 用 Plan Mode + 小步 + 跑测试 + git 审查 diff |
| 重要约束它「忘了」 | 用 Hook 强制,而非只写提示 |
| 处理外部内容被注入 | 最小权限 + 沙箱 + 不把外部内容当指令 |
七、一句话工作流模板
1. 维护好 CLAUDE.md(命令、约定、约束)
2. 复杂任务先 Plan Mode 看方案
3. 拆小步执行,每步让它跑测试自验
4. 重探索丢子 Agent,主上下文保持干净
5. 关键约束用 Hook 强制
6. git diff 审查改动后再 commit高频追问
Q:用好 Claude Code 最关键的一件事是什么? 写好 CLAUDE.md。它每次自动注入,决定了 Agent 是否「懂你的项目」——常用命令、代码约定、关键约束写清楚,能让它少瞎试、少犯错、风格一致。这是单位投入回报最高的动作。
Q:怎么让它别改坏我的代码? 组合拳:复杂改动先 Plan Mode 看方案再批准;拆成可验证的小步;明确要求改完跑测试;危险操作设权限确认;最后 git diff 人工审查再 commit。核心是「先看后做 + 小步可验 + 人在关键节点把关」。
Q:长任务越用越贵怎么办? 控上下文:不相关任务开新会话、及时触发压缩、把重探索丢给子 Agent 隔离、关键信息落盘到 CLAUDE.md;同时保持 system prompt/CLAUDE.md 前缀稳定以命中 prompt caching。上下文体积是成本的主因。
Q:哪些约束该用 Hook 而不是写提示? 凡是「必须 100% 遵守」的:提交前必须跑测试/lint、禁止碰敏感文件、改完自动格式化、特定操作必须审计。提示词模型可能忘,Hook 用代码强制执行。一句话:建议用 Prompt,纪律用 Hook。
Q:什么时候该开新会话而不是继续当前会话? 任务切换到不相关的内容时。继续堆在一个超长会话里会导致上下文污染(旧任务信息干扰新任务)、成本持续累积、压缩丢信息。一个会话聚焦一件事,干净又省钱。