第 03 模块 · 2 节

上下文与 Token 优化技巧

《Claude Code 生产级工程》03 性能与成本优化 · 本节时长 44 分钟

上下文和 Token,是性能和成本的双重来源

模型按「看到的 Token 量」来理解、也按它计费。上下文越大 = 越慢 + 越贵 + 越容易犯迷糊。 所以优化上下文和 Token,能同时提升性能和降低成本。

这一节讲可落地的优化技巧,并全部用在 mcp-hub 上。

贯穿项目上一节定位到 mcp-hub 的性能瓶颈常是「上下文过载」。这一节,你动手**给 mcp-hub 瘦身**:让每个成员和 Claude Code 对话时,被塞进上下文的工具/文件/旧话都尽可能少。**优化目标是:上下文里只留「这次任务真要用的」,其余一概不进。**

技巧 1:别把无关代码塞进上下文

最常见的浪费:让 Claude Code「看整个仓库」,或把无关文件粘进去。它要处理一堆没用信息,又慢又贵。

做法:只给它完成任务需要的必要文件。

❌ 「看看我们项目,帮我改一下登录」 ✅ 「只需要看 src/auth.js 和 src/utils/token.js,帮我改登录校验」

对 mcp-hub:别让 Claude「看看 mcp-hub 里所有东西」,而是指明只看某一个 Server 的配置或清单。范围越小,上下文越干净。


技巧 2:及时清空旧上下文

一个会话聊久了,全是过期信息。用 /clear 开干净的新会话,或换话题时清一下。

注意:/clear 只清对话,不清你改过的文件。

对 mcp-hub:给团队立个习惯——每次切换要操作的 MCP 服务时,先 /clear,避免上一个服务的上下文污染下一个。


技巧 3:用 /compact 压缩长对话

对话太长、额度紧张时,/compact 把前面的内容压成摘要,保留关键信息、腾出空间。

  • 感觉它「开始犯迷糊」→ 压一下
  • 额度紧张 → 压一下
  • 长任务换阶段 → 压一下

对 mcp-hub:当你在排查一个「接服务接不上」的长对话时,压一压,把排查结论留下来,再接着试,能省下不少 token。


技巧 4:拆任务,别一把梭

一个长任务,拆成多个短任务,比一个超长对话更省、更稳。每段上下文短而干净,判断准、成本低。

❌ 让我把整个 mcp-hub 都接上所有服务
✅ 先接订单服务 → 验证 → 再接库存服务 → 验证

技巧 5:一次只给必要的输入

「最少必要」原则。让模型看到的,永远是它此刻完成任务所需的最小集合。这个习惯能长期省下大量 Token。

对 mcp-hub 这里有个专门的优化点:mcp-hub 暴露的工具本身就在吃上下文。 所以「最少必要」也适用于工具——只暴露这次任务用得上的 Server 工具,而不是一次全挂出来。


mcp-hub 专属:精简暴露的工具

这是 mcp-hub 独有的 Token 优化大招。Claude Code 每次调用前,会「过一遍」可用的工具清单,工具越多,这段「清单」占的 token 越多。

优化手段:

  • 按需启用:不是所有 Server 常驻,按任务临时启用需要的
  • 合并工具:把多个细碎工具合成一两个高层的
  • 精简参数:工具的每个参数描述也会吃 token,写精炼些
# 示例:临时只启用订单 Server,用完即关
/mcp-hub enable orders
# ... 用完后
/mcp-hub disable orders

让团队按需启用,而不是让所有工具常驻上下文。


技巧 6:善用 CLAUDE.md 当「上下文锚点」

一个容易被忽略的省钱技巧:与其每次对话都重复交代 mcp-hub 的规则,不如把团队规范写进 CLAUDE.md,让它成为每次会话都自动带上的「锚点」,而不是每次手动重复输入。

# 写进 mcp-hub 项目的 CLAUDE.md
## mcp-hub 使用约定
- 只启用本次任务需要的 Server,用完即关
- 服务凭据一律走环境变量,不写明文
- 默认只读,写操作需人工确认

规范写进 CLAUDE.md,模型每次都能看到,你也不用反复「教」它,省的是重复的输入 Token,也统一了行为。对 mcp-hub 团队,这比每次会话手打一遍规范省得多。


落地练习:给 mcp-hub 做一次「上下文瘦身」

这一节,实际给 mcp-hub 减负。

跟着这三步走:

  1. 数一下你 mcp-hub 当前暴露了多少 Server / 工具,估算每多一个大概吃多少上下文
  2. 做「按需启用」改造:给 mcp-hub 加上 enable/disable,让它能按任务临时启用需要的 Server
  3. 用一个「只查订单」的场景,验证只启用订单 Server 时的表现,对比全量启用

你会怎么判断做对了?——同一个「查订单」任务,在「只启用订单 Server」时明显更轻(工具清单更短、更不犯迷糊),而功能没缺失,就算过关。

卡住了怎么办? 不想实现 enable/disable?那就先在使用习惯上动手:约定每次任务只提示 Claude「只使用 XX Server」。工具参数不会精简?让 Claude Code 帮你把工具描述写精炼,你再审。


常见坑:只优化「用户喂进去的」,忽略了「mcp-hub 自己长出来的」

一个容易被忽略的坑:大家知道「别把无关代码塞进上下文」,却忘了 mcp-hub 自己暴露的工具列表也在不断吃 token。你省了半天文件,结果工具清单有一百项,白省。

上下文优化要两头一起抓:既控制「用户喂进去的」,也控制「mcp-hub 长出来的工具」。工具按需启用、精简描述,和「别塞无关文件」同样重要。缺了任何一头,优化都不彻底。


小结

  1. 上下文越大,越慢越贵越易错
  2. 五个技巧:只给必要文件、及时清空、compact 压缩、拆任务、最小必要输入
  3. 关键习惯:大改前先想「最少让它看什么」
  4. mcp-hub 专属:按需启用工具,精简工具清单,两头一起省

下一节,讲成本的控制与监控。