ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Claude Code CLAUDE.md 瘦身实战:22 个 Skill 精简到 6 个的配置过程

Claude Code CLAUDE.md 瘦身实战:22 个 Skill 精简到 6 个的配置过程 1. 为什么我的 Claude Code 越用越慢如果你正在用 Claude Code并且从社区抄过一份全家桶CLAUDE.md大概率遇到过这种情况明明只是让它写个工具函数它却要愣十几秒才动手翻 token 消耗记录发现每次对话还没正式开始光加载 CLAUDE.md 里的 Skill 指令就吃掉七八千 tokens。这不是模型变笨了是配置文件太胖了。CLAUDE.md 本质上是持久化 prompt。每次会话启动Claude Code 会把全局配置、项目根配置、子目录配置全部拼进 system prompt。Skill 越多拼接的指令越长模型在动手前要读完的前置内容就越多。更麻烦的是多个 Skill 之间如果对同一件事给出不同指令Claude 不会报错而是试图同时遵守两套规则结果就是输出变长、逻辑打架、响应变慢。这篇面向已经积累了大量 Skill、感觉 token 开销压不住的开发者。我会把从 22 个 Skill 精简到 6 个的完整过程拆开讲怎么诊断当前占用、怎么找出互相冲突的 Skill、最终可复制的 CLAUDE.md 骨架长什么样以及怎么通过 TaoToken 统一 Key 和 API 通道接入 Claude Code 做验证。目标很明确——保留核心能力把每次对话的固定开销压下来。2. 接入前的准备用 TaoToken 统一 Key 与 API 通道在动 CLAUDE.md 之前先把接入通道理顺。很多人 CLAUDE.md 改了半天没效果其实是通道层的问题——比如 Key 分散在多个地方、base_url 指向不一致导致你以为在测新配置实际请求走的是旧通道。TaoToken 的作用是把模型调用统一到一个入口。你可以在官网注册后拿到 Key然后在 Claude Code 里通过环境变量指向它的 API 地址。这样做的好处是无论你后面用 Claude Code、Cline 还是别的客户端Key 和通道都是同一套排查问题时不会因为通道差异产生干扰。具体操作上先去控制台创建 API Key再确认你要用的模型通道。TaoToken 的 API 地址是https://taotoken.net/api注意这个地址不带任何查询参数。Key 拿到后不要硬编码进项目文件用环境变量管理。这里有个细节值得说清楚Skills 是客户端侧拼接的 prompt跟你用哪个 API 通道无关。也就是说CLAUDE.md 的写法在直连和通过 TaoToken 接入时完全一样。通道只影响请求怎么发出去不影响 prompt 怎么拼。所以你可以放心地先在 TaoToken 上把通道跑通再专心做 CLAUDE.md 精简。如果你还没建 Key可以直接去 API Keys 页面操作接入文档里有各客户端的 base_url 配置示例照着填就行。3. 可复制的精简配置从 22 个 Skill 到 6 个3.1 先诊断当前 token 占用动手删之前先量一下你的 CLAUDE.md 到底有多大。用字符数统计比字节数更接近 token 估算wc -m ~/.claude/CLAUDE.md ./CLAUDE.md # 输出示例全局 4200 字符 项目 6800 字符注意用wc -m而不是wc -c。UTF-8 里一个中文字符占 3 字节用-c会把估算值拉高。粗算规则英文约 4 字符对应 1 token中文约 1 到 2 token 每字。如果你的文件里中英混杂实际 token 往往比纯英文估算高不少。我当时的配置是全局 4.2KB 加项目 6.8KB实测加载约 8200 tokens。按一天 50 次对话算光加载配置这一项就是一笔持续开销。这个数字是促使我下决心精简的直接原因。3.2 冲突矩阵哪些 Skill 在互相打架22 个 Skill 里真正有用的没那么多互相干扰的倒不少。我把它们两两过了一遍整理出典型的冲突对冲突对Skill ASkill B冲突表现1verbose-commentsclean-code注释量反复横跳2defensive-codingminimal-code生成大量冗余校验3functional-styleoop-pattern同一功能两种写法混用4strict-typesflexible-typesTypeScript 类型时宽时严5detailed-loggingperformance-first日志和性能指令打架6auto-refactorpreserve-structure改还是不改反复纠结7chinese-commentsenglish-only中英文注释混杂处理原则很简单每对里只留一个留哪个看项目实际需要。比如团队协作就留 git 相关个人脚本项目就留 code-style 和 error-handling。3.3 最终 6 个 Skill 的配置骨架删掉冲突项后再删掉 Claude 已经具备通用编程能力、无需显式声明的规则比如写代码要考虑边界情况这种常识最后只剩 6 个。下面是可以直接复制的 CLAUDE.md# Project: my-saas-app ## code-style - TypeScript strict mode, 2-space indent - 函数命名 camelCase, 类命名 PascalCase - 单文件不超过 200 行超了就拆 ## error-handling - 业务错误用自定义 AppError 类 - 不允许空 catch至少 log - API 层统一 try-catch 中间件 ## git-workflow - commit 格式: type(scope): message - 不直接 push main走 PR - 每个 commit 只做一件事 ## test-pattern - 测试文件放 __tests__/ 同级目录 - 用 vitest断言用 expect - 每个函数至少 happy path edge case ## file-structure - src/modules/[feature]/{index,types,utils}.ts - 共享逻辑放 src/shared/ - 配置文件放项目根目录 ## security-rules - 禁止执行 rm -rf, sudo, chmod 777 - 不在代码中硬编码密钥 - 数据库操作必须参数化查询整个文件约 1.2KB折合 1800 tokens 左右比之前省了 6400 tokens 每次。3.4 加载顺序与权限边界Claude Code 的合并逻辑是全局 → 项目根 → 子目录后者覆盖前者。建议这样分配# 全局配置只放个人习惯 ~/.claude/CLAUDE.md → code-style security-rules # 项目配置放项目专属规则 ./CLAUDE.md → git-workflow test-pattern file-structure error-handling这样换项目时不用重配 code-style但每个项目的测试框架和目录结构可以不同。权限边界单独放 settings.json{ permissions: { allow: [Bash(git:*), Bash(npm:*)], deny: [Bash(rm -rf:*), Bash(sudo:*)] } }配置生效后触发拦截会报PermissionError: Claude does not have permission to execute: rm -rf看到这个说明权限规则起作用了。4. 验证请求确认精简真的生效配置改完得验证。第一步是把通道跑通用 TaoToken 的 API 地址做一次基础请求export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_API_KEY你的Key # 发起一次简单对话验证通道 curl -s $ANTHROPIC_BASE_URL/v1/messages \ -H x-api-key: $ANTHROPIC_API_KEY \ -H anthropic-version: 2023-06-01 \ -H content-type: application/json \ -d { model: claude-sonnet-4-5, max_tokens: 128, messages: [{role: user, content: 回复 OK 两个字母}] }返回里能看到content字段有正常回复说明通道没问题。接着在 Claude Code 会话里直接问它你当前加载了哪些 CLAUDE.md 指令请列出来。它会把读到的内容复述一遍。如果复述的内容比你文件里的多说明有全局配置在干扰需要回去检查~/.claude/CLAUDE.md。验证精简效果最直接的方式是对比首字延迟。我实测下来22 个 Skill 时首字延迟约 14 秒精简到 6 个后降到 3.8 秒左右单次对话 token 开销减少约 62%。你可以在自己的环境里跑几次同样的简单任务记录响应时间做前后对比。如果你还想单独验证模型行为有没有因为精简而变化可以用模型对话页面发几条测试指令看看代码风格、错误处理这些是否还符合预期。5. 本篇常见错排查改了 CLAUDE.md 但 Claude Code 没反应。Claude Code 默认只在会话初始化时读取配置中途修改不会热加载。重启会话或者在会话里执行/reload手动刷新。不同版本行为可能有差异优先试/reload。报 context_length_exceeded。报错长这样Error: context_length_exceeded - The prompt is too long. Maximum context length is 200000 tokens.不一定是 Skills 的锅但 Skills 占的 token 越多留给实际对话的空间越少。把 CLAUDE.md 压到 2000 tokens 以内是比较安全的水位。子目录配置和根目录冲突。子目录的 CLAUDE.md 会在 Claude 访问该目录文件时追加到根配置之后。如果有矛盾指令又会出现两个都试着遵守的问题。建议子目录只写增量规则不要重复根目录内容。团队成员全局配置不一致。把项目级 CLAUDE.md 提交到 Git 仓库全局配置让每个人自己管。项目级优先级更高所以即使个人全局配置不同项目内行为也是统一的。通过 API 通道接入时 Skills 配置有区别吗。没区别。Skills 是客户端行为Claude Code 在本地拼接 prompt跟你用哪个通道无关。只要模型还是 ClaudeCLAUDE.md 写法完全一样。权限规则不生效。检查 settings.json 的语法allow和deny里的模式要匹配实际命令。改完同样需要重启会话或 reload。6. 长期编码与 Agent 场景的接入建议如果你不只是偶尔用 Claude Code 写几段代码而是把它当成日常编码和 Agent 工作流的主力那配置精简只是第一步。长期跑下来通道稳定性和 Key 管理同样重要。TaoToken 的 Coding Plan 适合这种持续调用的场景Key 和通道统一管理不用每次换项目都重新配一遍。回到 CLAUDE.md 本身折腾这一轮最大的感受是它应该像 .gitignore 一样写的是例外不是常识。Claude 已经具备通用编程能力你只需要告诉它我们项目里哪些地方跟常规不一样。22 个删到 6 个之后不光响应快了生成的代码质量反而更高——因为互相矛盾的指令没了它不用在两套规则之间反复纠结。最后一个实用技巧在 Claude Code 会话里执行/init让它自动扫描项目生成初始配置然后在这个基础上删比从零开始加要高效得多。如果你的 CLAUDE.md 超过 3KB建议认真审视一遍大概率有一半是可以删的。
返回列表