关于 token-conservation
面向 Claude Code 的技能,用流程管理会话中的 Token 使用,包括额度检查、读取预算、上下文压缩和记录。适用于提示词或工具调用增多、以及需要进行长时间分析的 Agent。
主要功能
- 01检查会话与每周额度
- 02按任务设定读取预算
- 03规划并压缩上下文
- 04评估任务委派与确定性工具
- 05记录 Token 预算及后续步骤
适用场景
- 01开始长时间分析前做准备
- 02实现任务中限制文件读取
- 03长会话后压缩上下文
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ athola/ claude-night-market --skill token-conservation安装后在 Claude Code 中输入/token-conservation确认已加载。
附带文件modules/source-selection.md
详细介绍
Token 节省工作流
适用场景
- 在每次会话开始时,以及提示词大小或工具调用开始激增时运行。
- 在启动长时间运行的分析、大范围差异检查或大规模上下文加载之前,必须运行。
不适用场景
- 上下文优化已能处理该场景
- 上下文极少的简单查询
必需的 TodoWrite 项
token-conservation:quota-checktoken-conservation:context-plantoken-conservation:delegation-checktoken-conservation:compression-reviewtoken-conservation:logging
步骤 1 – 配额检查(quota-check)
- 记录当前会话时长和每周用量(从
/status或笔记本查看)。 注意 Claude 社区公告中强调的 5 小时滚动上限和每周上限。 - 记录剩余预算,并为此任务设置最高 Token 目标。
步骤 2 – 上下文规划(context-plan)
-
在读取任何文件之前,先设定探索性读取预算。 每次
Read调用 和每次内容模式的Grep都计为一次读取。Glob 和仅查找匹配文件的 Grep 免费。- 根据规范/需求实现:最多 8 次读取
- 修复已知位置的 Bug:最多 5 次读取
- 范围已知的重构:每个待修改文件最多 1 次读取
- 开放式探索:最多 15 次读取
-
读取顺序(优先读取价值最高的内容):规范/需求、待修改文件、 导入/接口,然后停止并开始编写。
-
预算用尽时:询问用户是否需要更多上下文。不要 自行授权额外读取。只有用户明确批准才能突破预算。
-
优先使用带
offset/limit参数的Read或Grep工具,而不是加载整个文件。 目标少于 50 行的Read计为 0.5 次读取。避免通过 Bash 使用cat/sed/awk: Claude Code 2.1.21+ 倾向于使用原生文件工具(Read、Edit、Write、Grep、Glob)。 -
PDF(Claude Code 2.1.30+):使用带
pages: "1-5"的Read定向读取 PDF, 而不是加载整份文档。大型 PDF(超过 10 页)在通过 @ 提及时会返回轻量级 参考,因此应使用pages参数读取特定章节。 硬性限制:最多 100 页,每个 PDF 最大 20MB。超过这些限制曾导致 会话永久锁定(已在 2.1.31 中修复)。 -
在提示模型前,将散文式指令转换为项目符号列表,确保只向模型提供必要信息。
-
在进行网页搜索或抓取之前,先判断该说法是否确实需要来源。
modules/source-selection.md会将说法分为值得引用的类别(版本、性能、安全性、API、定价) 和无需引用的类别,并说明每种方法的 Token 成本。
步骤 3 – 委派检查(delegation-check)
- 评估是否可以将计算密集型任务交给 Qwen MCP 或其他外部工具
(必要时使用
qwen-delegation技能)。 - 对于本地工作,尽可能优先使用确定性脚本(格式化工具、分析器), 而不是依赖 LLM 推理。
步骤 4 – 压缩检查(compression-review)
- 在添加新上下文前,总结前面的步骤/结果。 删除冗余历史记录,精简日志,避免重复发送相同代码。
- 使用
prompt caching思路:如果模型已处理过相关信息,就引用先前的输出,而不是重述 (注明片段 ID)。 - 判断当前对话是否应该压缩:
- 如果只有近期上下文已过时,可通过消息选择器使用 “Summarize from here”(Claude Code 2.1.32+) 对对话进行部分总结。这样既能保留近期上下文,又能压缩较早的部分。
- 如果当前工作流已结束,且不会再用到之前的上下文,
请让用户运行
/new。 - 如果需要沿用现有对话继续推进,但上下文窗口已过于臃肿,
请提示用户在继续前运行
/compact。
- 自动记忆(Claude Code 2.1.32+):Claude 现在会自动记录并回忆会话 记忆。这会略微增加 Token 开销,但能改善跨会话的连续性。无需采取任何操作; 请注意,这会增加基准上下文用量。
步骤 5 – 日志记录(logging)
记录所采用的节省策略,并注明剩余令牌预算。如果预算不足,请明确警告用户并提出备用方案。记录有关使用 /new 或 /compact 的建议,或说明为何两者都没有必要,以便为今后的上下文处理决策提供参考。
输出要求
- 简要说明节省令牌的步骤、委派的任务以及剩余余量。
- 列出具体的下一步操作,保持对话精简(例如):
- “下一轮:仅提供第 40–60 行的失败测试输出”
- 只要判断
/new或/compact有助于节省令牌,就明确提醒;否则说明目前无需重置或压缩。
退出条件
- 按顺序创建并勾选全部 5 项 TodoWrite 事项:
quota-check、context-plan、delegation-check、compression-review、logging - 在首次调用
Read前设定发现阶段的读取预算,并记录任务类型(spec/bug/refactor/exploration)和 max-reads 限制 - 输出摘要说明剩余令牌余量(或警告“预算不足”),并明确建议使用
/new或/compact,或说明为何两者都不需要 - 读取预算耗尽后,未经用户在同一会话中明确批准,不得再读取其他文件
- 根据
modules/source-selection.md的要求,输出中的每项版本、性能、安全、API 或定价声明都必须附带引用或不确定性标记