🎯 核心主张(一句话)
工具好用只是开始,能不能控住成本、查得清行为、守得住权限、推得开团队,才是 Claude Code 从个人玩具变成工程资产的分水岭。
📖 正文
成本:先搞懂钱是怎么烧掉的
Claude API 按 Token 计费,但你的一句指令背后可能触发几十次 API 调用——读文件、搜索、推理、验证,每次都要重新携带完整对话历史。成本失控的根源不是模型贵,而是上下文被重复计费。
定价结构里有三个关键事实:输出单价约为输入的 5 倍(Opus),所以控制输出比控制输入更省钱;Opus 与 Haiku 价差 5 倍,任务分级用模型能省大头;缓存读取只要正常输入价的十分之一,命中缓存等于打一折。另有一个隐形出血点:Extended Thinking 的思考 Token 按输出价计费,默认预算约 3.2 万 Token,不需要深度推理时用 MAX_THINKING_TOKENS=8000 压住。
模型分级的原则:规则明确的活给 Haiku,有范围的开发给 Sonnet,需要全局视野的架构和疑难杂症才上 Opus。 Headless 模式下用 --model 显式指定,并且必须带 --max-budget-usd 硬上限——CI 脚本一旦死循环,一夜烧掉几百美元不是段子。
但省钱不是目的。书里给了一个清醒的公式:真实成本 = API 成本 + 人力时间成本。Opus 五分钟搞定的事,用 Haiku 折腾半小时反复调试,算上你的时薪,Haiku 反而是贵的那个。
Prompt 缓存:让 CLAUDE.md 保持稳定的经济学理由
缓存的原理是前缀复用:如果本次请求的输入前缀(System Prompt + CLAUDE.md + 工具定义)与上次完全一致,这部分按一折计费。
由此推出三条纪律:不要频繁改 CLAUDE.md(改一个字前缀就变,缓存全部失效);相关任务聚在同一会话里做完;用 --resume / --continue 延续旧会话,而不是每次都冷启动。这也解释了为什么 CLAUDE.md 里禁放易变信息——那不只是整洁问题,是每次调用都在为失效的缓存买单。
上下文管理同理:主对话里读进一个 5000 行日志,之后每一步决策都在为这 5000 行重新付费。子智能体不是奢侈品,是经济决策——大文件分析丢给子进程,主对话只收几行结论。上下文逼近上限时用 /compact 手动压缩并指明保留项(如"保留所有已修改文件路径和测试命令"),任务切换时 /clear 清场重来;/cost 随时查本会话花销,Headless 的 JSON 输出里有 total_cost_usd 字段可汇入团队监控。
调试:黑盒可以透视
Claude 的行为是概率性的,"复现 bug"这条老路走不通,只能靠日志和轨迹回溯。排查工具箱从轻到重:
--debug:输出每轮对话上下文、每个工具调用的参数与结果、Token 与耗时,支持"api,hooks"这类类别过滤。交互中按 Ctrl+O 随时切 verbose 模式,实时看工具调用细节。--output-format stream-json:Headless 下把决策过程变成 NDJSON 流,适合排查"为什么在某处停住/死循环"。- PostToolUse Hook 写审计日志:把每次工具调用的名称和参数追加到文件,形成可回溯的持久记录。
- 会话存档:所有会话存在
~/.claude/projects/{project}/{sessionId}.jsonl,子智能体另存一份。配合--resume <session-id>可以"时光倒流"回故障现场,看当时 Claude 到底拿到了什么信息。环境异常时/doctor做一次健康自检。
异常行为九成归为三类,按序排查:上下文缺失(症状是反复读同一文件、回答空洞,解法是补导航指引)→ 指令冲突(CLAUDE.md 规则互相打架,解法是显式声明优先级)→ 权限不足(反复失败或绕路,检查 allowedTools 和 Hook 拦截日志)。
安全:deny 优先,层层设防
权限体系是三级规则:deny > ask > allow,deny 命中即拒绝,哪怕同时匹配了 allow。团队共享的 .claude/settings.json 里典型配置:
{
"permissions": {
"allow": ["Bash(npm run test *)", "Bash(git commit *)"],
"deny": ["Bash(curl *)", "Read(./.env)", "Read(./secrets/**)", "Bash(git push --force *)"],
"ask": ["Bash(git push *)"]
}
}
敏感文件要双保险:.claudeignore 挡索引(已知可被绕过,只当第一层),permissions.deny 挡读取(硬防线)。API 密钥再加两层:.gitignore 排除 + PreToolUse Hook 在提交前扫描拦截。MCP 服务器要做信任评估并版本锁定——授权一次后自动更新不会再询问,最初干净的服务器可能在某次升级中被投毒。大规模组织用受管设置(Managed Settings)下发不可覆盖的全局策略,直接禁用 bypassPermissions。
CLAUDE.md 六级加载:治理的骨架
Claude Code 按严格优先级加载六个层次的配置:受管设置最高,然后逐级到项目、目录、个人。父目录 CLAUDE.md 递归向上累积加载,子目录的只在处理该目录文件时按需触发。

这个顺序本身就是治理工具:根目录管全局架构规范,子目录管模块细节,.claude/rules/ 用路径过滤实现规则按需激活(改 API 文件时自动加载 API 规范)。安全团队的红线放在受管层,谁也覆盖不掉;个人偏好放 CLAUDE.local.md,不进 Git。
大型代码库的配套打法:20 万 Token 窗口扣掉系统提示、配置、历史和安全余量,真正能装代码的只有约 14 万 Token(三四万行),全量载入不可能。核心策略是引导搜索而非全量阅读——在 CLAUDE.md 里写死导航纪律(先 Grep 定位、再 Glob 看结构、只 Read 最相关的两三个文件),大输出任务委托给只读的 Explore 子智能体,主对话只收摘要。
团队落地:靠制度不靠自觉
个人用 Claude Code 会自发上瘾,团队统一不会自发形成。共享的基石是把 .claude/ 目录纳入 Git:settings.json、agents、skills、rules、CLAUDE.md 全部共享,settings.local.json 和 CLAUDE.local.md 留给个人。CLAUDE.md 必须走 PR 审查——它决定全团队的 AI 行为,重要性不低于核心业务代码。
推广节奏分四阶段:个人探索(前两周,攒案例)→ 项目级统一(第一个月,私有经验变公共资产)→ 自动化集成(第二个月,质量门控进 CI/CD)→ 组织级规模化(第三个月,Plugin 分发 + 受管策略)。新人则按一套一个月的结构化培训计划,从零基础到能独立优化团队工作流。

🧭 业界视角(书外补充)
- Boris Cherny(Claude Code 创造者)的验证闭环:给 Claude 一个能自查工作的手段——测试命令、lint、截图对比——产出质量约提升 2-3 倍,把验证命令直接写进 CLAUDE.md。这与本章"分步确认"呼应:调试成本最低的时机是生成时,而不是事后排查时。
- Anthropic 官方上下文工程三手段(Effective context engineering for AI agents):上下文是稀缺资源,性能随填充度衰减。三招是 compaction(压缩)、just-in-time retrieval(用时才取)、structured note-taking(状态写进文件而非留在对话里)。本章的 /compact、引导搜索、层次化 CLAUDE.md 正是这三招的产品化落地。
- Cherny 的反应式维护法:他自己的 CLAUDE.md 只有约 100 行,经验上限 200 行。不预先猜错误,等 Claude 犯了错再加"能防住这个错"的那一条——每条规则都因真实事故而存在。这比书中"500 行以内"的官方建议更激进,也更贴近缓存经济学。
- Vercel 团队:删掉 80% 的 Agent 工具后流程更快、Token 更省。权限最小化不只是安全要求,也是性能优化——工具越少,选择越准。
🔗 知识网络
- upstream:CLAUDE.md 记忆系统工程、Hooks:给概率模型上确定性缰绳
- downstream:SDD 与工作流框架:Superpowers 与复合工程
- 平行关联:Claude Code子智能体:上下文隔离与任务委派、ClaudeHeadless 模式与 CI-CD 集成、index