mcpField
T
token-conservation

token-conservation

github.com/atholaAgent 工作流343112 次安装1 天前更新
代码仓库

关于 token-conservation

面向 Claude Code 的技能,用流程管理会话中的 Token 使用,包括额度检查、读取预算、上下文压缩和记录。适用于提示词或工具调用增多、以及需要进行长时间分析的 Agent。

主要功能

  1. 01检查会话与每周额度
  2. 02按任务设定读取预算
  3. 03规划并压缩上下文
  4. 04评估任务委派与确定性工具
  5. 05记录 Token 预算及后续步骤

适用场景

  1. 01开始长时间分析前做准备
  2. 02实现任务中限制文件读取
  3. 03长会话后压缩上下文

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/athola/claude-night-market --skill token-conservation

安装后在 Claude Code 中输入/token-conservation确认已加载。

附带文件modules/source-selection.md

详细介绍

Token 节省工作流

适用场景

  • 在每次会话开始时,以及提示词大小或工具调用开始激增时运行。
  • 在启动长时间运行的分析、大范围差异检查或大规模上下文加载之前,必须运行。

不适用场景

  • 上下文优化已能处理该场景
  • 上下文极少的简单查询

必需的 TodoWrite 项

  1. token-conservation:quota-check
  2. token-conservation:context-plan
  3. token-conservation:delegation-check
  4. token-conservation:compression-review
  5. token-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 或定价声明都必须附带引用或不确定性标记

评论

支持 Markdown