如何在 LLM 中节省 Token:Claude Code 实用指南
如何在 LLM 中节省 Token:Claude Code 实用指南
花掉 10 个 200 美元的订阅不是问题,问题在于花得有没有意义。下面是我每天使用 Claude Code 时实际用到的节省 Token 的方法。
1. 我们到底在为什么付费
Claude Code 对 输入 和 输出 Token 分别计费。输入是指所有进入上下文的内容:系统提示、聊天历史、文件、截图。输出是指模型生成的内容。
聊天中的每条消息都会把累积的上下文加到输入中。如果你使用 1M 上下文的 Opus,每条消息的计费就像你重新发送了整个一百万 Token 一样。输出也会参与上下文膨胀——每个回答都在不断累积。
结论: 对话越短越便宜。上下文越小越便宜。模型”思考”越少越便宜。
2. 子代理——必备利器
主进程(Lead)不应该自己做任何事。它的任务是协调和委派。所有工作由拥有小上下文的子代理完成。
为什么这样做:
- Lead 进程的上下文保持在 100-200K 范围内,不会增长
- 子代理完成任务后,上下文自动清除
- 可以并行运行数十个代理
配置方式:
主进程 (Opus, 200K 上下文)
├── 代理 1 (Haiku, 短上下文) — 脚本处理
├── 代理 2 (Sonnet, 短上下文) — 编写测试
└── 代理 3 (Haiku, 短上下文) — 重构
对于批量任务(比如处理 8000 个脚本)——一个脚本、一个子代理、用 Haiku 模型。这比在一个聊天中跑所有内容便宜得多。
3. 上下文与幻觉——非线性关系
100K 上下文的 Opus 比 1M 上下文的 Opus 更准确。在 1M 上下文下,幻觉会非线性增长。也就是说,大上下文既更贵,质量也更差。
结论:保持上下文紧凑。5 个 100K 的聊天比 1 个 500K 的聊天好得多。
4. 技能(Skills)很好用
技能(Skills)是预配置的提示,按需加载,不会一直占用上下文。很多框架在开始工作之前,第一件事就是准备/下载技能。
与 MCP 服务器(会持续将自身指令加载到上下文中)不同,技能只在需要时才激活。在 Opus 4.5 之前,MCP 浪费了大量 Token——现在这个问题已解决,但”用技能和命令替代 MCP”的思路对于节省 Token 仍然有效。
Caveman
Caveman 是面向 Claude Code(及其他代理)的开源技能/插件:在保持技术准确的前提下,用「caveman speak」风格让模型极尽简短作答——对应 §1「对话越短越便宜」的具体做法。仓库中的基准测试平均可减少约 65% 的 输出 Token;另有 caveman-compress 可压缩记忆文件中的散文以节省 输入 Token。
5. 国产模型和低价订阅
阿里云、国内订阅——在性价比方面优势明显。约 30 美元的订阅可以获得与 Anthropic 200 美元订阅相当数量的 Token。
实际做法:
- 使用 Claude 的封装工具,可以切换模型提供商
- 不修改全局环境变量——只在启动封装工具时传入需要的变量
- Gemini 也有低价订阅,可以类似地使用
目前还没有”将所有提供商的模型直接嵌入 Claude”的现成方案,但封装工具已经能满足 80% 的需求。其中一个是 Clother——它允许使用不同的模型提供商运行 Claude Code,而不需要修改全局设置。
6. 知识图谱和 RAG:Token 消耗降低 10 倍
LightRAG
LightRAG 是一种将知识图谱与 LLM 结合的方法。通过结构化地提取相关信息(而非加载全部上下文),可以将 Token 消耗减少高达 10 倍。
a8e
由 ivansglazunov 开发——作者以隐士模式工作,公开发布的内容很少,所以目前很难看到项目的全貌。它的工作方式类似图书管理员-RAG:将所有传入的数据存入数据库。核心思想是将图谱与 LLM 结合,实现更精准、更廉价的上下文提取。该方法类似于这个视频中描述的技术。
cmdop-claude
cmdop-claude 是 markolofsen 的方案。图谱方面使用了 Merkle 树。核心思路:在后台运行几乎免费的国产 LLM 来整理 .claude 文件夹——为主模型准备好上下文。
7. 代理管理框架
Superpowers
一个流行的 Claude Code 框架,提供现成的技能、模式和工作流。
AI Factory
ai-factory 是一个有趣的 AI 代理管理框架。搭配 aif-handoff 可以提供带看板和过滤器的前端界面。
核心理念:人类设定初始任务,AI 进行分解,但只有在人类批准计划后才开始执行。这既节省了 Token(避免返工),又保证了控制权。
8. 实用小技巧
高努力程度和推理模式可以关闭以降低成本。不是每个任务都需要模型的”深度思考”。
用技能替代 MCP。 在 Opus 4.5 之前,用技能替代 MCP 能显著节省。现在差距缩小了,但对于批量任务这个方法仍然有效。
管理子代理的模型选择。 可以指定子代理使用哪个模型。常规任务用 Haiku,复杂任务用 Sonnet 或 Opus。
--bare 模式——纯净启动。 --bare 标志启动 Claude Code 时不加载钩子、LSP、插件同步、自动记忆、后台预加载,最重要的是不自动发现 CLAUDE.md。这些内容通常会加载到系统提示中,在第一条消息之前就在消耗 Token。在 bare 模式下,上下文从最小状态开始,需要的数据可以通过 --system-prompt、--append-system-prompt、--add-dir 或 --mcp-config 精确传入。非常适合批量子代理场景,多余的预提示就是纯粹的浪费。
9. 钩子——自动化节省
钩子(Hooks)是在 Claude Code 内部事件触发时执行的脚本。在 .claude/settings.json 中配置,可以自动化那些节省 Token 的常规操作。
钩子类型
- PreToolUse —— 在工具调用前触发。可以过滤或修改输入数据。
- PostToolUse —— 在工具调用后触发。适用于自动格式化和后处理。
- PreCompact —— 在上下文压缩前触发。允许保存重要信息。
- Stop —— 代理结束工作时触发。可以检查任务完成度。
- SessionStart —— 会话启动时触发。适用于预加载上下文。
实用钩子示例
过滤测试输出。 Anthropic 官方示例——在 PreToolUse 上为 Bash 设置钩子,截断长测试输出,只保留失败的测试和摘要。不是 500 行日志进入上下文,而是只有 10 行——直接节省 Token。
{
"hooks": {
"PreToolUse": [{
"matcher": "Bash",
"command": "your_filter_script.sh"
}]
}
}
写入后自动格式化。 在 PostToolUse 上为 Write/Edit 设置钩子——每次保存文件后运行 prettier 或 black。模型不需要花 Token 来格式化代码——它只写逻辑,格式化由钩子完成。
防止破坏性命令。 在 PreToolUse 上为 Bash 设置钩子,阻止 rm -rf、DROP TABLE 等类似命令。虽然不直接节省 Token,但避免了昂贵的错误和返工。
压缩前保存上下文。 PreCompact 钩子——在上下文压缩前将关键决策和状态保存到文件,这样压缩后不会丢失重要信息。
钩子做不到的事
每 N 条消息自动压缩无法通过钩子配置——这是 Claude Code 的内置功能。但可以使用 PreCompact 钩子来控制压缩时保留哪些内容。
10. 截图——隐藏的 Token 杀手
根据文档,Claude 会按分辨率压缩图片。但实际上压缩效果不明显。在 4K 显示器上,一张截图的成本很高。
解决方案:在发送前将截图缩小到约 400px 宽度。文字仍然可读,而 Token 消耗少一个数量级。
macOS 上我用 Open Screenshot —— 这是我做的工具,直接以低分辨率格式截图,不需要手动调整大小。欢迎试用!
节省 Token 清单
| 方法 | 节省幅度 |
|---|---|
| 使用短上下文的子代理 | 长会话节省 2-5 倍 |
| 常规任务使用国产模型 | 按价格节省 5-10 倍($30 vs $200) |
| 用技能替代常驻 MCP | 1.5-2 倍 |
| 用钩子过滤输出 | 测试/日志任务节省 1.5-3 倍 |
| 压缩截图尺寸 | 视觉任务节省 1.5-2 倍 |
| 用图谱/RAG 替代完整上下文 | 最高 3-5 倍 |
| 简单任务关闭推理模式 | 1.5-2 倍 |
子代理使用 --bare 模式 | 每次启动节省 1.5-2 倍 |
| 使用带计划审批的框架 | 间接节省,通过减少返工 |
你可以无限烧钱——10 个 200 美元的账号也不是上限。但这并不代表高效。目标是在不损失质量的前提下,将成本至少降低 10 倍。