Claude Code 如何节省 Token

8次阅读
没有评论

共计 3884 个字符,预计需要花费 10 分钟才能阅读完成。

Claude 在官方提供了三种不同的套餐:Pro、Max 5 和 Max 20。

但是,即使订阅最高版本的 Max 20,每个月花费 200 美元,依然有可能会在短时间内将所有的 Token 使用完。并且,在之前的时间里,Claude 官方也限制了周使用的 Token 数,所以极有可能导致在不到一周的时间内就把 Claude Max 20 的 Token 限制消耗殆尽。 所以这就迫使我去思考如何更高效地使用 token。 在这篇文章里面,会结合我的实际经验和朋友们的交流总结,提出一些可以帮大家节省 token、提高使用 AI 工具效率的方法。

如果我们不了解 Claude Code 的工作原理,不理解模型的运行机制,那么会让 Claude 带有很多无用的上下文,白白浪费 Token。

不同订阅计划的 Token 使用限制

计划5 小时内 Token 额度大约提示数量
Pro44,000 tokens10-40 条
Max588,000 tokens适合生产工作
Max20220,000 tokens支持长时间持续开发

每 5 小时限制重置一次。

不同模型的调用成本。

模型输入成本输出成本上下文窗口
Claude Opus 4.1$15/MTok$75/MTok200K
Claude Sonnet 3.5$3/MTok$15/MTok200K
Claude Haiku 3.5$0.80/MTok$4/MTok200K

输出 Token 的成本通常是输入的 5 倍,Claude 输出策略(添加冗长的注释,完整的代码结构)会导致 Token 使用成本翻倍。

Claude Code 的工作原理

在使用 Claude Code 的过程中,Token 的消耗存在一个关键的挑战:对话累积成本。因为大语言模型是没有记忆的,我们通常需要将整个对话传给大模型,才可以让大模型维持上下文。

当你在同一个对话中继续交互时,模型需要重新处理之前的所有输入和输出,即使这些内容已经不再相关。例如,第一条信息使用了 3000 个 Token,而第二条信息就可能需要 6000 个 Token,因为它必须包含第一条信息的全部上下文。这种指数级增长会快速消耗你的 Token 配额。

设计 CLAUDE.md 文件

CLAUDE.md 文件是 Claude Code 中最好的控制成本的工具之一。文件是项目的「宪法」,向 Claude Code 明确指示了哪些文件可读,哪些文件被忽略。

通过防止 Claude Code 读取不必要的文件,你可以显著减少 Context 污染,使模型专注于真正相关的代码。这不仅节省 Token,还能改善响应准确性。

  • 明确列出禁止目录(如 node_modules/、vendor/、.git/)
  • 定义项目目标和代码风格
  • 指定允许的工具和 API 版本
  • 存储可重复使用的 Slash 命令。

指定文件

项目当中的文件大小直接影响 token 的消耗。保持代码文件的精简和有明确的单一职责,可以让 Claude Code 在无需读取整个项目的情况下理解代码结构。

如果明确知道需要修改哪些文件,可以直接在 Claude Code 当中使用 @ 符号指定这些文件。

明确地告诉 Claude Code 应该关注哪些文件,可以让模型更有效地开展工作,避免无关文件的扫描成本。

开启新的对话完成不同的任务

一旦完成任务,可以立即开始 Claude Code 的会话,避免将之前的任务 Token 拖入到新的工作环境中。 在同一个对话窗口当中处理多个无关的任务,会导致 Token 数指数级增长。我们可以频繁使用 /clear 来清除无关上下文。

  • 完成一个功能或者 bug 的修复之后,立即开启新的对话。
  • 避免在一个对话中混合代码编写、代码审查和调试等不同任务。
  • 不要在同一个聊天窗口当中处理多个项目。

尽可能地进行批量编辑,而非单次编辑

如果这一次的变更请求当中已经明确地知道需要修改多个文件,我们可以在一次请求中让 Claude Code 去处理多个目标文件,而不是进行多次的对话往返。

使用 /compact 命令压缩对话

CLAUDE Code 提供了/compact 命令,用来总结长对话的同时保留关键的信息。这一条命令会压缩对话历史记录,保留关键的决策和上下文,显著减少 Token 的使用,而不丢失重要的信息。

对于需要使用长期开发工作但想保留上下文的场景,这个命令特别有用。然而,需要注意的是,官方提供的 Compact 命令在某些情况下可能无法理想地工作。此时,我们可以自行保留关键信息并生成文件,让 Claude Code 重新读取该文件后进行对话。

建议在长对话当中,每隔 20 到 30 条消息,使用一次 /compact 命令。

使用 context 命令可视化上下文

在新版本的 Claude Code 当中,支持 context 命令,可以显示当前可视化的 token 使用情况和成本预估。可以利用这个工具,在对话变得过长之前,识别成本的增长,决定是否要启用新的对话或使用 compact 命令压缩的对话。

选择合适的模型处理不同任务

利用 /model 命令来切换模型

任务类型推荐模型成本对比适用场景
简单代码生成Claude Sonnet 3.5基准 (1x)模板、简单脚本、文本处理
中等复杂度Claude Opus 4.15x 成本架构设计、复杂算法调试
仅查询/说明Claude Haiku 3.50.27x 成本代码解释、API 文档查询

建议

  • 默认使用 Sonnet 3.5 完成大部分编程任务,成本低,能力强
  • 仅在遇到 Sonnet 无法解决的复杂问题时切换到 Opus
  • 对于单纯的提问或代码审查,使用 Haiku 或普通 Claude ,ChatGPT,Perplexity 等(非 Code)

请教问题可以使用外部的 Perplexity 或 ChatGPT

我们通常可以使用其他的外部大模型或者 Claude Code 来分析我们项目当中遇到的小范围的 Bug,或直接针对这些代码问 Claude Code 的一些问题。

但是,对于这样的情况,我们还可以借助外部的工具,比如说 Perplexity 或者 ChatGPT。对于一些代码相关的问题,ChatGPT 或者 Gemini 可能会给出更好的答案。

分析 bug 和询问代码相关的问题通常不需要有强大的 agent 编码能力,而是需要对问题更深入的思考和更广阔的知识。

在分析 Bug 的时候,一定不要把代码直接发布给外部模型。可以通过人工将问题抽象,提供公开的 API 文档,使用伪造的数据替代等等方法将代码脱敏,或使用伪代码。这样不仅可以让模型更专注于解决问题,同时也避开了数据泄露的问题。 我们可以手动地将代码逻辑抽象为更高层的描述或微代码,然后提供给模型。这相当于先做了一次人类的理解,将复杂的实现用自然语言方式描述出来,避免直接暴露源代码。

使用更清晰的提示词

我们可以使用更清晰、更明确的提示词,让大模型可以一次性完成工作,而不需要反复的编辑。因为每一次对话,大模型可能都会携带更大量的上下文信息,比如在一些场景中,我们可以让大语言模型生成一个函数去处理什么事情。 但是,这种方法不如我们更加明确地指定编写一个函数:它的功能是什么,入参是什么、返回参数是什么。这样的一个描述可能更有助于模型理解用户的意图,并输出更符合预期的代码。

对于一些更复杂的场景,我们可以通过多轮的对话,让大语言模型真正理解我们的需求之后,再让大语言模型去生成代码。 在我自己的使用过程中,我通常会根据我们具体的需求,让大模型首先生成一份设计文档。然后,在这份设计文档给我 review 完成之后,让大模型基于这份文档再进行代码的修改和编写。

  • 一个提示词只描述一个任务,不要混合需求
  • 明确输出格式,高速 Claude 需要什么格式的输出,代码片段,完整函数,文档等
  • 提供最小化的上下文,只包含必须的代码片段,不要粘贴整个文件。

拆分模块

在某些时候,如果没有让大模型进行良好的模块拆分,大模型可能会帮我们生成一个巨大的脚本文件。而大模型在处理超大文本时,可能是因为它的上下文长度有限,所以就会导致 Token 消耗过大。

这个时候,我们可以让大模型根据我们项目的规划,进行良好的模块拆分,将不同的功能拆分到不同的文件当中。然后,我们再基于实现的内容指定特定的文件以及特定的行数。这样的话,就可以每一次只需要少量的 Token,就可以完成我们具体的需求。

MCP 工具的隐藏成本

MCP 服务器是 Claude Code 的重大 Token 消耗源,配置的每个 MCP 服务器都会在会话初始化时将其完整的工具 Schema 加载到上下文中,即使这些工具未被使用。每个未使用的 MCP 都会消耗 1000 到 20000 Tokens。

  • 禁用低价值工具,关闭在工作流中很少使用的工具
  • 仅启用必要的工具

SubAgent 的使用

subagent 会显著增加 token 的消耗,但如果使用得当,它能够提供显著的生产力提升。我们可以在使用的时候进行一些特定的优化,来达到一个平衡。

  • 我们可以在部署特定任务的时候,开启 SubAgent。
  • SubAgent 会使用独立的上下文窗口。但是我们需要注意,在传递给 SubAgent 上下文的时候,我们可以进行总结和压缩,以减少冗余信息的传递。

总结

建立高效的 Claude Code 工作流需要多方面的配合。 但是,如果你没有做如下的操作,请在阅读完这篇文章之后立即进行。 这些策略的组合可以让 Claude Code 的 token 消耗量降低 50% 以上,同时保持原来的代码质量和开发效率。

  • 创建优质的 CLAUDE.md 文件
  • 为不同的上下文环境创立独立的会话,避免跨任务的 token 污染
  • 使用 /clear 命令,完成任务后清除对话历史,防止无关信息累积
  • 定期使用 /compact 命令,保持对话清洁且高效
  • 选择合适的模型,使用 /model 命令切换到 Sonnet 而不是默认的 Opus,可显著降低成本
  • 禁用不必要的 MCP 服务器,手动禁用未使用的工具定义以回收上下文
正文完
 0
评论(没有评论)