MCP 工具只会增加、而不会减少你的 Claude Code 输入 Token 账单;你通过清理工具发送的每个提示词最终都会消耗更多 Token,从而花费更多资金。追求降低 API 成本的开发者往往会寻求基于 MCP 的清理工具,误以为它们会在模型看到提示词之前对其进行缩减。
为什么 Token 计量器至关重要
当你的文本到达模型的上下文窗口时,Claude Code 就会立即开始计算 Token。模型首先读取原始提示词,然后决定是否调用 MCP 工具。清理工具是在原始文本已经成为对话的一部分之后才运行的,因此计量器已经记录了这些 Token。
一个典型的流程如下:
- 提交原始提示词 —— Token 计数器开始跳动。
- 模型读取提示词并决定调用清理工具。
- 工具返回一个精简版本。
- 上下文现在包含三部分:原始提示词、工具调用元数据(tool-call metadata)以及清理后的提示词。
你需要为这三项内容付费。“精简”版本并不会替换原始版本;它只是与原始版本并列存在。
什么时候 MCP 清理确实有效
只有当原始文本从未进入 Claude Code 的主上下文时,MCP 工具才能节省 Token。这种情况发生在以下下游调用中:
- 模型转发给搜索引擎或数据库的检索增强生成 (RAG) 查询。
- 发送给独立于主对话运行的子代理 (sub-agents) 的指令。
在这些情况下,模型将清理后的负载直接转发给外部系统,从而使原始用户文本不计入主 Token 计数中。
如何真正缩减你的输入 Token
如果你想减少喂给 Claude Code 的 Token 数量,请在文本接触模型之前对其进行清理。以下是目前行之有效的三种实用方法:
- 系统级热键 —— 在 Windows 上使用 AutoHotkey 脚本;在 macOS 上使用 Automator。脚本会选中你即将发送的文本,将其通过外部 API 进行处理以返回清理版本,然后在编辑器中替换该文本。由于原始版本从未离开你的机器,因此只有清理后的版本会被提交。
- CLI 管道 (piping) —— 从终端启动 Claude Code,并使用 bash 过滤器(例如
sed或 Python 脚本)预处理你的提示词,以去除不必要的空格、注释或重复短语。过滤后的输出才是喂给模型的内容。 - 仅将 MCP 用于下游调用 —— 将 MCP 工具保留给前文提到的 RAG 或子代理步骤。让模型直接处理初始的用户提示词,并仅让清理工具作用于离开主对话的负载。
需要避免的常见误区
- 误以为 MCP 工具会修剪原始提示词 —— 它们会增加一个工具调用 Token 块并保留原始文本,从而推高总数。
- 依赖 Claude Code hooks —— Hooks 可以注入额外的上下文或拦截提示词,但它们无法覆盖对话中已经存在的文本。
- 使用带有行内清理功能的斜杠命令 (slash commands) —— 即使命令运行了清理脚本,原始参数仍然是模型记录的命令行的一部分,因此你也需要为此付费。
Token 计量器在你输入的字符到达模型的 API 端点那一刻就开始了。在此之后的任何清理操作都只会增加额外开销。
这对开发者意味着什么
在大多数 AI 服务账单中,Token 定价都是一个单独的项目。因为“清理工具”增加了隐藏的 Token 而导致过度付费,会迅速侵蚀你原本希望节省的成本。将清理步骤移至客户端,以保持 Token 计数的真实性并使预算可预测。
核心结论: MCP 工具对于下游负载非常有用,但它们无法修剪你输入的提示词 Token。如果你想真正降低 Claude Code 的 Token 成本,请在发送前进行清理,或者将清理限制在从未出现在主上下文中的调用中。
