Community生产力与协作github.com

上下文权重

测量并削减代理启动时加载的上下文(CLAUDE.md、AGENTS.md、GEMINI.md、规则、@import、技能列表)以及会话膨胀大小;使用本地 Claude Code 和 Codex 日志,然后精简指令文件并证明无一行丢失。

上下文权重 是什么?

“上下文权重”技能专为使用 Claude Code、Codex 等 AI 编程助手的开发者设计,旨在诊断和优化启动时加载的指令文件大小,从而降低每次 API 请求的 token 消耗并提升会话效率。 该技能通过运行`scripts/cw.py`脚本(仅需 Python 3.8+)对仓库的指令文件进行只读分析,报告各工具(如 Claude Code、Codex)启动时加载的 token 数、技能列表占用情况、以及历史会话的平均上下文大小和膨胀率。它不会修改用户文件,仅输出数值和可选图表。 根据分析结果,技能提供明确的行动计划:如果指令文件过大(约 5k token 以上),则指导将引用、日志和重复内容移至外部文档,保持核心文件在 5k token 以内;如果会话过长,则建议单任务单会话、及时清除上下文。最后通过`verify-split`、`files`命令和 CI 检查(如`--max-tokens`)验证精简效果,并通过对比历史会话数据证明 token 节省。 它适用于 Claude Code、Codex 等主流编程代理,支持本地日志分析,帮助用户解决上下文膨胀、使用限制提前到来、跨工具行为不一致等问题。

兼容平台✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/ohm41321/context-weight/tree/HEAD/skills/context-weight

Installed? Explore more 生产力与协作 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Context Weight

无论启动时加载了什么,在会话中的每个请求都会被重新发送。一个 150k token 的 CLAUDE.md,在每个请求开始之前就要花费 150k token。本技能负责测量这个负载,削减它,并用数字证明削减的效果。

脚本位于本技能目录下的 scripts/cw.py。请从本文件所在位置解析其绝对路径。它需要 Python 3.8+,无其他依赖。它从不修改用户的文件,仅输出数字,从不输出对话内容,唯一会写入的文件是使用 --svg 或 --open 时生成的图片。

实时仪表? 对于“我的上下文现在有多满”,请使用工具的内置命令:Claude Code 的 /context,Codex 的 /status。本技能关注的是仓库和历史记录。

1. 称重(只读)

python3 <技能目录>/scripts/cw.py report <仓库路径> --days 30 --svg

--svg 还会将报告绘制成一张图片,存放在系统临时文件夹中,并在最后一行输出其路径(图片: ...)。将该路径提供给用户,以便他们快速查看数字;--open 可以在用户要求查看时自动打开图片。使用 --svg 文件路径 可以自定义保存位置,除非用户要求,否则不要使用仓库内的路径。

文本输出包含四个部分:

  • 每个工具启动时加载的指令文件,以估计 token 数表示;
  • 每个工具预算内的技能列表占用;
  • 该仓库已测量的会话数据;
  • 排名后的问题发现。

更窄的视图:files <仓库>、skills <仓库>、sessions --top 20、sessions --project <项目名> --compare-at YYYY-MM-DD。任何视图均可添加 --json。

当你向用户报告时,请提供:

  • 每个工具的启动 token 数;
  • start(会话第一个请求的中位上下文大小);
  • start%(所有输入中启动负载被重复发送的比例);
  • >阈值 tok 的比例;
  • 问题发现。

说明哪些数字是估计值(files、skills),哪些是测量值(sessions)。Claude Code 的技能预算取决于模型的上下文窗口,但日志中不会记录:cw.py 默认假设为 200k 并会说明。如果用户运行的是 1M 上下文的模型,请使用 --window 1000000 重新运行。

2. 根据数字选择杠杆

信号杠杆
仓库指令文件超过约 5k token,且 start% 较高精简指令文件(步骤 3)
>阈值 tok 超过 50%会话卫生(步骤 4)
“不同工具遵循不同规则”统一为一份 AGENTS.md(步骤 3)
Codex 报告“见不到”的警告精简,或将部分内容移至嵌套的 AGENTS.md 文件
技能列表超出预算卸载不用的技能或插件。先询问,这是用户的配置

从最大的数字开始。不涉及的数字则不要改动。

3. 精简指令文件

完整流程见 references/slimming.md。在编辑之前请先阅读。

简化步骤:

  1. 备份文件,然后记录 cw.py files <仓库>。
  2. 将每个部分归类为以下五种之一:规则(保留,使其简洁)、指针、参考、日志或重复。
  3. 将参考和日志移到 docs/agent-notes/。仅保留一行纯路径指针。不要使用 @:Claude Code 在启动时展开 @import,而 Codex 会忽略它们。
  4. 将核心文件控制在 200 行以内、约 5k token,保持在 Codex 的 32 KiB 链限制内。
  5. 使 AGENTS.md 成为唯一的规范文件。CLAUDE.md 保留 @AGENTS.md 以及仅适用于 Claude 的行。
  6. 证明:verify-split 退出码为 0,files 显示下降,并且通过 --max-tokens 门控。

移动文本是安全的。删除知识需由用户决定:在删除任何不是明确重复的行之前,请先询问。

4. 会话卫生

大多数输入 token 来自长会话的后期请求。每个请求都会重新发送之前的所有内容。

  • 每个会话处理一个任务。
  • 当上下文超过窗口的一半,或任务发生变化时,编写一个简短的工作交接(目标、状态、下一步、涉及的文件),然后重新开始。在 Claude Code 中使用 /clear,在 Codex 中使用 /new。这优于反复压缩。
  • 避免将大量工具输出放入上下文:过滤、截断,或写入文件后只读取所需部分。

5. 证明

  • 立即证明: 对比精简前后的 cw.py files <仓库>,并检查 verify-split 退出码是否为 0。
  • 防止重新膨胀: 在 CI 或 pre-commit 中添加 python3 <技能目录>/scripts/cw.py files . --max-tokens 6000。当仓库指令文件增长超过限制,或 Codex 会截断其中任何部分时,退出码为 1;当路径错误时退出码为 2,从而避免因拼写错误通过检查。
  • 实际使用数天后: 运行 cw.py sessions --project <项目名> --compare-at <改动日期>,报告改动前后的 start 和 start%。

在最后一个命令运行了改动后的会话数据之前,不要声称已实现节省。

退出码

0 正常,1 检查失败(--max-tokens、verify-split),2 输入错误(路径缺失、文件无法读取、日期错误)。错误信息输出到 stderr。

参考

  • references/harnesses.md:每个工具加载的内容和时间、大小限制、技能文件夹,并附有来源。
  • references/slimming.md:精简步骤和验证方法。

相关技能