学习精选 · AI 工具
Claude 与 Skill

实测 Claude Code 每次请求的隐藏开销:283 个 Skill 里 220 个描述已被挤掉

DEV Community2026-11-12约 5 分钟读完AI 整理查看原文

作者通过解析 Claude Code 的会话 transcript,精确测出每次请求在用户开口前就带上了 74,500 tokens,其中约 22,000 来自自己装的插件、Skill、MCP 和 hooks。更关键的发现是:skill 列表超过约 3 万字符后描述会被丢弃,只留光秃秃的名字,导致模型选不准 Skill。作者据此开源了 Rust 工具 deadweight,可一键定位并清理无用配置。

怎么测出来的

  • Claude Code 会把每个会话写到 ~/.claude/projects/<project>/<session>.jsonl,其中记录了启动时加载的 skill_listing、deferred_tools_delta、mcp_instructions_delta、agent_listing_delta 和 hook 输出
  • 每次 API 调用的 usage 字段里有 input_tokens、cache_creation_input_tokens、cache_read_input_tokens 三项,加起来就是首个请求的精确计费大小
  • 作者首日第一条消息就带 74,500 tokens,其中约 22,000 来自自己几个月里装的插件、Skill、MCP 服务器和 hooks,且每个会话每一轮都会重复发送

意外发现:超过约 3 万字符,Skill 描述就没了

  • skill_listing 在所有会话里都稳定在约 30,000 字符,装得太多时 Claude Code 会丢弃描述只保留名字
  • 作者的 283 个 Skill 中有 220 个只剩名字;另一个装了 672 个 Skill 的旧会话里 642 个没有描述
  • 描述正是模型决定何时调用某个 Skill 的依据,像 review 或 start 这种光名字几乎不提供信息
  • 装「以防万一」的 Skill 不只浪费 tokens,还会把你真正依赖的 Skill 的描述挤出去——每加一个插件都是对现有工具的负外部性
  • 约 3 万字符是作者观察到的现象,不是官方文档,版本间可能变化

清点出的其他问题

  • 有 MCP 服务器连续几周每次启动都连接失败
  • 36 个从未登录的 MCP 服务器仍在列出 authenticate 等认证工具
  • 两个插件带了同名 Skill;一个 Skill 光描述就吃掉约 3,000 tokens,而作者只用过一次
  • 283 个 Skill 里 272 个在 30 天内没用过

deadweight:定位并清理无用配置

  • 读取同样的 transcript,按插件、Skill、MCP 服务器、hook 逐项归因 tokens 开销,并扫描最近 30 天(含 subagent)的实际调用记录
  • 示例输出:61.2k tokens 中约 19.4k 来自用户配置,最大来源是 github MCP(91 个工具约 3.9k)和从未用过的 kitchen-sink 插件(64 工具 22 Skill 约 3.6k)
  • deadweight fix 会禁用未用插件、把未用 Skill 移到备份目录,deadweight undo 可恢复;示例中省下约 6.8k tokens/请求
  • 安全设计:默认只读、不删除任何东西、每次运行写 manifest 和 settings.json 备份到 ~/.claude/deadweight/backups/、带 hooks 的插件默认跳过(需 --include-hooked)、少于 5 个会话时拒绝执行、不读取任何密钥也不联网
  • 用 Rust 写成单二进制,rayon 并行扫描加子串预过滤,1.4 GB transcript、41 个会话加 400+ subagent 运行约 1 秒扫完

用 Claude Code 结对开发与注意事项

  • 作者用 Claude Code 当结对程序员:调研现有工具、逆向 transcript 格式、写 Rust 和针对假 ~/.claude 目录的端到端测试
  • 测试提前抓到一个真实 bug:plugin:skill 形式的名字在错误的冒号处被切分,导致一个 Skill 的大小被算到邻居头上
  • 注意事项:总量是实测的,但逐项拆分按文本长度估算(本地没有 tokenizer);transcript 默认 30 天后清理,所以「未使用」只能回看这么久,常用但低频的东西用 --keep 保护

为什么缓存也救不了你

  • 评论区指出:即使开了 prompt caching,22,000 tokens 的配置块在新会话启动或缓存 TTL 过期时仍要重新评估
  • 这些开销还会提前占满上下文窗口,让会话更早触发 compact

原文:I measured what my Claude Code setup costs on every request. Most of my skills had gone blank.

来源:DEV Community · 2026-11-12

查看原文

本文由 AI 阅读原文后整理,未经人工逐字核对,内容以原文为准。

登录后可以点赞、查看和发表评论