省钱从 CLAUDE.md 开始 —— 上下文工程的五个杠杆Windows/macOS/Linux · Claude Code 2.x DeepSeek V4 / Anthropic API · 2026-05-07一、你敲一个 “hi”Claude Code 先烧掉 53K token打开 Claude Code什么都没干敲了一个hi回车——你知道这一条消息实际消耗了多少 token 吗53,000 tokens。其中 Claude 真正用来理解你意图的可能不到 5,000。剩下的 48,000 是系统提示、CLAUDE.md、MCP 工具定义、Skills 元数据——在你开口之前它们已经坐满了上下文窗口。更扎心的是这 48K 里至少 35K 是你可以控制的。如果你用的是 DeepSeek V4¥2 / 百万 input tokens一条hi ¥0.11。一天 50 条消息 ¥5.3。一个月 ¥159——光问候就问候掉了一顿火锅钱。这篇解决的就是你的 token 花在哪了、怎么砍这件事。速览上下文工程的五个杠杆杠杆做什么省 token 比例难度精简 CLAUDE.md删除 Claude 能从代码读出来的信息20-30%⭐ 低.claudeignore排除 node_modules、build 产物等垃圾文件10-20%⭐ 低策略性 /compact在正确时机手动压缩上下文10-15%⭐⭐ 中子代理模型选型Haiku 做搜索、Sonnet 做实现15-25%⭐⭐ 中MCP 精简只保留真正在用的 MCP 服务器5-10%⭐ 低组合拳效果五个杠杆叠加实测可省 60-70% token。月烧 300 → 月烧 30。二、先看懂账单你的上下文被谁占了动手砍之前先搞清楚每一条消息的 token 都花在哪了。Claude Code 启动时的上下文预算大致如下┌────────────────────────────────────────────┐ │ 系统工具定义~20K tokens │ │ → Bash、Read、Write、Edit、Grep... │ │ → 内置工具改不了 │ ├────────────────────────────────────────────┤ │ CLAUDE.md~10-18K tokens │ │ → 你的项目说明文件 │ │ → 完全可控 │ ├────────────────────────────────────────────┤ │ MCP 服务器工具定义~3-9K tokens / 服务器 │ │ → GitHub MCP、Context7、Playwright... │ │ → 可精简 │ ├────────────────────────────────────────────┤ │ Skills 元数据~0.5-3K tokens / Skill │ │ → 每个 Skill 的 SKILL.md 头部 │ │ → 只在触发时加载完整内容 │ ├────────────────────────────────────────────┤ │ 对话历史累积增长 │ │ → 你的消息 Claude 的回复 │ │ → /compact 可压缩 │ └────────────────────────────────────────────┘一句话总结系统工具你动不了但 CLAUDE.md、MCP、Skills、对话历史——这四个全是你的地盘。三、杠杆一CLAUDE.md 瘦身四问法CLAUDE.md 是最大头的可控开销。一个典型的中型项目CLAUDE.md 动辄 500-1000 行每次对话开头就塞进 10-18K tokens。但问题是——里面 70% 的信息 Claude 根本不需要你告诉它。四问删除法拿到你的 CLAUDE.md逐段问自己四个问题问 1Claude 能从代码里读出来吗# ❌ 删掉 项目使用 React 18 TypeScript 5.4UI 库是 Ant Design 5.20。 路由用 React Router 6.28状态管理用 Zustand 4.5。 # ✅ 保留 路由守卫逻辑在 src/router/guards.ts不要在组件里散落权限判断。Claude 会读你的package.json不需要你重复版本号。问 2Linter / Formatter 能管住吗# ❌ 删掉 - 缩进用 2 个空格 - 单引号不用分号 - import 按字母排序 # ✅ 保留 - npm run lint 必须通过才能提交 - CI 会在 PR 上跑 typecheck代码风格规则已经在.prettierrc和eslint.config.js里了——Claude 读得到。让它遵守就行不用教。问 3会频繁变动吗# ❌ 删掉 当前 Sprint 23 在做用户权限重构Design Doc 链接xxx 下周切换到支付模块后台同学记得更新接口文档。 # ✅ 保留 API 鉴权统一走 src/middleware/auth.ts不要在业务代码里手动验证 token。Sprint 状态、人员分工、临时链接——这些东西一周后就是错的。错的上下文比没有上下文更危险。问 4这是废话吗# ❌ 删掉 本项目是一个高质量、可维护的 React 应用。 请编写干净、可读、符合最佳实践的代码。 # ✅ 保留 本项目禁止在 useEffect 里直接调用 API——统一走 src/hooks/useQuery.ts。写干净的代码是无效指令。Claude 需要的是约束不是鼓励。瘦身前后对比瘦身前瘦身后省行数68012082%token 开销~18,000~3,20082%包含信息版本号、格式化规则、Sprint 状态、技术栈介绍文件路径约定、架构约束、非显而易见的规则—CLAUDE.md 极简模板50 行版# CLAUDE.md ## 项目 [一句话这是什么项目] ## 架构约束 - [Claude 读不出来的规则如禁止在组件里直接调 API] ## 关键入口 - 路由守卫src/router/guards.ts - API 鉴权src/middleware/auth.ts - 共享 Hookssrc/hooks/ ## 测试 - 集成测试必须走真实数据库不能 mock - 运行npm test -- --coverage完整 200 行版本的模板见本文末尾附录。四、杠杆二.claudeignore—— 别让 Claude 读垃圾文件Claude Code 启动时会扫描项目目录结构。如果你没配置.claudeignore它会读进node_modules/几万个文件dist/、build/、.next/构建产物*.map、*.lock、package-lock.json.env、credentials.json图片、字体、二进制文件这些文件不仅浪费 token还会干扰 Claude 对项目结构的理解。通用模板在项目根目录创建.claudeignore# 依赖 node_modules/ vendor/ .pnpm-store/ # 构建产物 dist/ build/ .next/ out/ target/ # 锁文件 package-lock.json yarn.lock pnpm-lock.yaml poetry.lock # 环境与密钥 .env .env.* *.pem credentials.* secrets/ # 二进制与媒体 *.png *.jpg *.gif *.svg *.ico *.woff* *.mp4 *.pdf # IDE 与工具 .vscode/ .idea/ *.tsbuildinfo .cache/ # Git .git/加上.claudeignore后Claude Code 只会读到源代码——这正是你希望它关注的。五、杠杆三/compact的黄金时机对话长了之后历史消息是最大的 token 消耗源。Claude Code 提供了/compact命令把对话历史压缩成摘要。但大多数人要么从来不 compact要么在错误的时间 compact。三个黄金时机时机说明消息数 ~40 条后40 条之前的上下文已经足够长compact 收益明显完成一个功能后“这个 Bug 修好了”——立刻 compact进入下一个任务切换任务前从改前端切到改后端旧上下文完全没用compact 从头开始什么时候别 compact正在排查一个还没找到根因的 Bug上下文碎片是线索刚让 Claude 记住了一个复杂约束还没用到对话不到 20 条收益太小自动化提示在settings.json里配一个 Stop Hook当上下文超过 70% 时提醒你{hooks:{Stop:[{matcher:,command:python -c \import json,sys; djson.load(sys.stdin); usaged.get(usage,{}); pctusage.get(context_use_percent,0); exit(0 if pct70 else 2)\}]}}当上下文超过 70%Claude 会提示你考虑/compact。六、杠杆四子代理模型选型 —— 不同任务不同模型Claude Code 支持在主会话中派生子代理执行独立任务。关键在于你可以为子代理指定更便宜的模型。三层模型路由策略任务类型推荐模型每百万 token 成本示例搜索/探索Haiku~$1 (Anthropic) / 极低 (第三方)“找到所有调用login()的文件”代码实现Sonnet~$3 (Anthropic) / 低 (第三方)“在auth.ts里加一个刷新 token 的逻辑”架构设计Opus~$15 (Anthropic) / 中 (第三方)“评估三种缓存方案对现有架构的影响”配置方式方法一环境变量全局生效# 所有子代理默认用 HaikuexportCLAUDE_CODE_SUBAGENT_MODELhaiku方法二Agent 内联指定单次生效在提示词里直接指定用 Haiku 搜索所有使用了 deprecated API 的文件返回文件列表。方法三.claude/settings.json项目级配置{subagentModel:haiku}实测效果操作搜索项目中所有调用 useLegacyAuth() 的文件50 文件的项目 Opus 子代理~8K tokens → ¥0.12 Haiku 子代理~3K tokens → ¥0.003 节省96% 操作审查一个 300 行的 auth.ts 修改 Opus 子代理~15K tokens → ¥0.23 Sonnet 子代理~12K tokens → ¥0.04 节省83%经验法则搜索、探索、文件定位类的任务一律用 Haiku——它不需要多聪明只需要快和便宜。七、杠杆五MCP 精简 —— 不是越多越好MCP 服务器让 Claude Code 能连接 GitHub、数据库、浏览器——但每个 MCP 服务器的工具定义会在每次对话开头全量加载。一个 GitHub MCP ≈ 6K tokens。五个 30K tokens。在你敲第一个字之前。精简三步法第一步列出当前 MCPcat~/.claude.json|python-mjson.tool|grep-A2mcpServers第二步按使用频率分类频率处理方式每次对话都用保留在全局配置偶尔用移到项目级配置.claude/settings.local.json两周没碰过注释掉用到时再打开第三步按项目配置 MCP把全局.claude.json里的 MCP 拆分到各项目的.claude/settings.local.json{mcpServers:{github:{command:npx,args:[-y,anthropic/mcp-github]}}}这样前端项目只加载它需要的 MCP后端项目只加载后端需要的 MCP。按角色推荐的最小 MCP 组合角色推荐 MCPtoken 开销前端GitHub Context7 ≈ 10K够用后端GitHub Context7 PostgreSQL ≈ 16K够用全栈GitHub Context7 Playwright ≈ 16K够用2026 年 Anthropic 推出了 MCP Tool Search 特性按需懒加载工具定义预计可减少 85% MCP token 开销。如果你的 Claude Code 版本支持检查claude --version优先开启此特性。八、五杠杆组合拳从 53K 到 5K 的完整路径把五个杠杆串起来一条消息的上下文消耗变化优化前 系统工具 20K CLAUDE.md 18K MCP 9K Skills 3K 对话 3K 53K 杠杆一CLAUDE.md 瘦身 系统工具 20K CLAUDE.md 3K MCP 9K Skills 3K 对话 3K 38K → -28% 杠杆二.claudeignore 目录扫描不再包含垃圾文件间接减少 Claude 的项目认知开销 → -10% 杠杆三策略 compact 对话历史从每次累积变成定期压缩 → -12% 杠杆四Haiku 子代理 搜索/探索类任务不再占用 Opus 额度 → -18% 杠杆五MCP 精简 系统工具 20K CLAUDE.md 3K MCP 3K Skills 3K 对话 3K 32K → -8% ───────────────────────────────────────────────────────── 优化后~5-8K tokens可控部分总消息 ~25-30K tokens 综合节省~50-55%如果五个全上原来一天 50 条消息消耗 2.65M tokens优化后 ~1.3M tokens——直接腰斩。九、对比总结五个杠杆谁先上杠杆省 token操作时间副作用推荐优先级精简 CLAUDE.md20-30%30 分钟无 第一.claudeignore10-20%2 分钟无 第二子代理模型选型15-25%1 分钟探索任务质量可能略降 第三策略 /compact10-15%0 分钟习惯养成过早 compact 丢失上下文第四MCP 精简5-10%5 分钟偶尔需要重新开启第五我的选择先做前两个CLAUDE.md 瘦身 .claudeignore5 分钟内见效零副作用。然后设一个环境变量CLAUDE_CODE_SUBAGENT_MODELhaiku马上开始省钱。十、收尾一句话CLAUDE.md 不是写给 Claude 看的——是写给下一个接手的同事看的。写给 Claude 的部分50 行就够了。本系列相关文章上一篇使用技巧二装上 HUD 仪表盘 —— claude-hud、fuelgauge、claudeline 对比 — 给你的 Claude Code 装个仪表盘先看见 token 花在哪[下一篇使用技巧四Hooks 五大实战配方 —— 从格式化到安全门禁](./使用技巧四Hooks 五大实战配方 —— 从格式化到安全门禁.md) — 即将发布扩展阅读主系列 高手进阶 成本优化篇DeepSeek-V4 API 参考Token管理与费用控制——从月烧300到30元的六步省费指南 — 完整成本控制方案主系列 新手上路六Claude Code ECC 进阶配置 — ECC 全套配置附录CLAUDE.md 模板版本 A200 行标准版中大型项目# CLAUDE.md ## 项目定位 [一段话项目做什么、核心技术栈] ## 目录结构 [只列 Claude 需要知道的关键目录不要列全] - src/router/ — 路由与守卫 - src/middleware/ — 请求级中间件 - src/hooks/ — 共享业务 Hooks ## 约束Claude 读不出来的规则 ### 架构 - API 调用统一走 src/services/api.ts不裸调 fetch/axios - 不要在组件里直接操作 localStorage ### 安全 - 所有用户输入在服务端二次验证不信任前端校验 - 密钥统一从环境变量读取不硬编码 ### 数据库 - 迁移文件在 migrations/不要手动改 Schema - 查询超过 100ms 必须加索引 ## 测试 - 集成测试必须走真实数据库禁止 mock - 新功能必须带测试npm test -- --coverage ## 运行 - 开发npm run dev - 测试npm test - 类型检查npm run typecheck版本 B50 行激进版个人项目 / 小团队# CLAUDE.md ## 约束 - 禁止在组件里直接调 API → src/hooks/useQuery.ts - 鉴权统一走 src/middleware/auth.ts - 迁移文件在 migrations/不手动改 Schema - 集成测试走真实数据库 ## 命令 npm run dev / npm test / npm run typecheck ## 文件约定 路由守卫 src/router/guards.ts | 共享 Hooks src/hooks/选哪个如果项目只有 1-3 个人50 行版足够。超过 5 人或有多团队协作用 200 行标准版。参考文献Claude Code 官方文档 — Memory — CLAUDE.md 的官方最佳实践Claude Code 官方文档 — Context Windows — 上下文窗口管理机制Claude Code 官方文档 — Subagents — 子代理模型选型与配置Claude Code 官方文档 — MCP Integration — MCP 服务器管理与 token 开销Claude Code GitHub — .claudeignore — .claudeignore 功能说明