审计并精简 Claude Code 的隐性 token 开销——CLAUDE.md 臃肿、MEMORY 过期记录、插件爆炸、MCP 常驻、死 symlink、scientific-skills 大类、重复 skill。用户说"优化 token""Claude Code 变慢了""减少 token 消耗""claude 变笨了""额度不够用""audit claude code""slim down claude code"时触发。也响应 /Boris-Token-Slim。
Resources
10Install
npx skillscat add zcdeng/boris-token-slim Install via the SkillsCat registry.
Boris-Token-Slim
Cut the invisible tax Claude Code pays before every prompt.
砍掉 Claude Code 每次请求前的隐性税。
为什么需要这个 skill
每次 Claude Code 请求的 context 里,真正回答你问题的内容可能只占 27%,剩下 73% 是:
- 每轮加载的 CLAUDE.md / MEMORY.md
- 每个激活插件注入的 UserPromptSubmit hook
- 每个连接 MCP 的 tool schema
- 扫描到但从没用到的 skill 清单
- 死 symlink(指向不存在目录的 skill,仍占清单位置)
- 过期的项目状态记录
这些是"不 instrument 永远看不见"的浪费。原始出处:I tracked 430 hours of Claude Code usage. 73% was wasted on these 9 patterns.
执行协议(必须按顺序)
Phase 0: 运行审计脚本
bash scripts/audit.sh输出 7 行核心指标 + 8 个 gotcha 检测结果(指标包括 CLAUDE.md / MEMORY.md 大小、插件数、MCP 数、本地 skill 数、commands 下子目录数、活动 hooks,附每项推荐上限;gotcha 包括死 symlink、_archive 陷阱、sub-plugin 爆炸等)。把表格直接贴给用户,让他看见基线。
Phase 0.5: 回溯分析过往 session(可选但推荐)
python3 scripts/analyze.py --days 30这会扫 ~/.claude/projects/**/*.jsonl 给出过去 30 天的真实 token 消耗、cache 命中、最贵 session 排行、Pattern 2/4 风险标记。与 audit.sh 互补:
- audit.sh 看"现在的 overhead 配置"(静态)
- analyze.py 看"过去花了多少钱、哪些 session 最浪费"(历史)
如果用户问"哪个项目/会话最烧 token",跑 analyze.py 而不是 audit.sh。如果用户问"该清理什么",跑 audit.sh。
Phase 1: 确认范围
向用户展示基线 + 本 skill 将按 4-5 步清理:
- 插件清理(最高 ROI)
- MEMORY.md 索引化
- CLAUDE.md 精简
- MCP 常驻审计
5.(可选)skill 审计——需要重启 Claude Code 才能看到 symlink 清单真实变化
用 AskUserQuestion 问用户从哪步开始(可多选)。每步都要用 TaskCreate 立个 task 跟踪。
Phase 2: 逐步清理
所有清理严格遵守 3 条铁律:
铁律 1:归档不删除
永远 mv 到 ~/.claude/_tokenslim_archive_<YYYYMMDD>/ 子目录,绝不 rm。
用户如果发现删错了,能 mv 回来。
ARCHIVE_ROOT=~/.claude/_tokenslim_archive_$(date +%Y%m%d)
mkdir -p "$ARCHIVE_ROOT"/{plugins,memory,skills,mcp-backup}铁律 2:commands/_archive 陷阱
Claude Code harness 会递归扫描 ~/.claude/commands/ 所有子目录,包括名叫 _archive/ 的。把 scientific-skills 挪到 ~/.claude/commands/_archive/ 没用——skill 清单里它们还在,名字更长(变成 _archive:xxx:yyy)。
必须挪到 ~/.claude/ 下、commands/ 以外的目录:
# ❌ 错误
mv ~/.claude/commands/scientific-skills ~/.claude/commands/_archive/
# ✅ 正确
mv ~/.claude/commands/scientific-skills ~/.claude/_commands_archive/同理,skills/ 下的归档也不能放在 ~/.claude/skills/_archive/(harness 会扫),要放在 ~/.claude/_skills_archive/ 或类似目录。
铁律 3:重启才能看到 skill 清单变化
Claude Code 只在 session 启动时扫描 skill 清单。symlink 删除、目录归档后,当前 session 的 system-reminder 里 skill 清单不会更新。要求用户 /exit 重启后,skill 清单才真正干净。
告诉用户:"skill 审计必须重启后做,我在上下文里看到的清单和实际不同步。"
Phase 3: 各步详细做法
步骤 A:插件清理(Pattern 3 & 9)
cat ~/.claude/plugins/installed_plugins.json | python3 -c "import json,sys; d=json.load(sys.stdin); [print(k) for k in sorted(d.get('plugins',{}).keys())]"列出全部- 按营销套件分组问用户(AskUserQuestion 多选):
- 金融服务套件(equity-research / investment-banking / private-equity / sp-global / lseg / wealth-management / financial-analysis)
- HuggingFace 子套件(8 个 hugging-face-* 通常可以只留 huggingface-skills 入口)
- 集成服务(Notion / supabase / vercel / figma / gitlab / telegram / playwright)
- 重复/冷门(同名插件从不同 marketplace 装了两次,prompts.chat 预设库,claude-code-setup 装完就没用)
- 批量卸载:
for p in "$@"; do claude plugin uninstall -y "$p"; done - 不要自动卸载 superpowers / compound-engineering / github / context7 等核心高频插件,除非用户明确说不用。
步骤 B:MEMORY.md 索引化(Pattern 1 的变体)
MEMORY.md 应该是索引,不是项目状态日志。典型垃圾:
project_xxx_current_state.md这种"当前状态"快照,过期即垃圾project_xxx_v1_upgrade_pending.md这种"待完成"任务,完成后没删project_xxx_shipped.md这种"已交付"记录,commit message 已覆盖- 已被弃用模块的配置说明(例:MEMORY 说"mempalace 已移除",但 CLAUDE.md 里还有 3 段 mempalace 配置)
保留标准:
- ✅ Feedback 类(通用教训,跨会话有用)
- ✅ Reference 类(决策结论、存放规范、链接资源)
- ❌ Project 状态快照(时间一过就是骗人)
做法:
ReadMEMORY.md- 按保留/归档分类,每条过一遍
- 问用户:"归档到
memory/archive/还是直接删?"(推荐归档) - 重写 MEMORY.md 为纯索引(每行 <150 字符,
- [Title](file.md) — one-line hook格式)
步骤 C:CLAUDE.md 精简(Pattern 1)
典型可删内容:
- Anthropic 博客最佳实践照搬(Long-Running Agent 9 小节、Compound Engineering 原理等)——harness 本身已内置 TaskCreate / plan mode / subagent / memory,冗余
- 已废弃模块的详细配置(例:mempalace 整段,但 MEMORY 说已移除)
- Skill 触发说明(harness 的 skill 系统会自动路由,CLAUDE.md 里再写
/hermes-status 触发 hermes-status是重复) - 过度解释型规则(把"提交前 commit what/why/how"写成 3 段说明,1 句话够了)
保留核心:
- 身份 + 沟通风格
- 项目级工作流入口
- 安全红线(部署确认、不复述密钥、push 确认)
- 服务器操作链条(SSH/Docker)
目标:1500 tokens 以内(约 3000 字节中文,或 6000 字节英文)。
步骤 D:MCP 常驻审计(Pattern 6)
python3 -c "import json; d=json.load(open('/Users/\$USER/.claude.json')); print('user MCP:', list(d.get('mcpServers',{}).keys())); [print(f'proj {p}:', list(d.get('projects',{}).get(p,{}).get('mcpServers',{}).keys())) for p in d.get('projects',{}) if d['projects'][p].get('mcpServers')]"常见可候删:
task-master-ai(harness 的 TaskCreate/Update/List 功能重复)chrome-devtools(低频,用到时再claude mcp add)- 项目级 MCP 在全局目录里常驻(挪到对应项目)
卸载:claude mcp remove <name>
步骤 E:Skill 审计(必须提醒用户重启)
先处理死 symlink:
cd ~/.claude/skills for s in *; do [ -L "$s" ] && [ ! -e "$s" ] && rm "$s" done这些指向不存在目录的 symlink 是纯浪费——占 skill 清单名字但读不到内容。
检测
~/.claude/commands/子目录下的大类 skill pack(如 scientific-skills 142 个子 skill):find ~/.claude/commands -maxdepth 2 -type d | head整目录挪到
~/.claude/_commands_archive/(注意铁律 2)。本地 skills 分类审计(需重启 Claude Code):
按命名规律分组(perspective 系列 / 写作系列 / UI 模板系列 / 编程角色短名 / dbs 系列等),用AskUserQuestion让用户勾选分组,全组归档 or 全组保留。
不要一条条问——每次 AskUserQuestion 最多 4 题,4 选项,按组问最高效。
Phase 4: 报告
结束时输出 before/after 表:
| 指标 | 优化前 | 优化后 | 变化 |
|---|---|---|---|
| CLAUDE.md | XXXX B | YYYY B | -Z% |
| MEMORY.md | XXXX B | YYYY B | -Z% |
| 插件 | N | M | -K |
| MCP 常驻 | N | M | -K |
| Skill 清单 | N | M | -K% |
告诉用户:
- 重启 Claude Code(
/exit再开)让插件卸载和 skill 清单变化生效 - 养成 3 个习惯:默认关 extended thinking、方向错了立刻 Esc、对话超 20 条
/compact - 每周或每月跑一次
bash scripts/audit.sh复查指标是否回涨
参考资料
references/9-patterns.md— 原文 9 个浪费模式速查references/gotchas.md— 本 skill 作者踩过的坑(dead symlinks、_archive 位置、sub-plugin 爆炸)references/archive-layout.md— 归档目录结构规范references/methodology.md— analyze.py 的数据源/计费公式/方法学scripts/audit.sh— 一键审计脚本,输出 9 指标表scripts/analyze.py— 回溯解析 transcript JSONL,给出 cost/cache/Pattern 风险报告scripts/archive-helper.sh— 批量归档工具
非目标
- 不自动卸载任何东西(铁律 1:归档不删除,且全部交互确认)
- 不改 Claude 订阅/API key/provider 配置
- 不处理 1 小时 cache 升级(那要改
ANTHROPIC_BASE_URL背后的转发方配置,超出 skill 范围) - 不评估"该不该买更贵的订阅"——本 skill 只负责砍开销,不负责增预算