1. 五类扩展机制到底在解决什么问题Claude Code 的扩展机制之所以让人犯迷糊是因为它们名字都挺像职责还互相咬合。你打开一份配置文件看到 Skills、MCP、Plugins、Hooks、Slash Commands 全挤在一起第一反应往往是“我到底该动哪个”。我先把结论钉死这五个东西不是竞争关系而是分别管知识、连接、分发、时机、快捷五件事。你只要搞清楚自己当前卡在哪一类问题上选型就变得非常直接。先给一个最简判断法。如果你希望 Claude 知道“这类任务该怎么做”比如代码评审要查哪些安全项、部署流程分几步走那你要的是 Skills。如果你希望 Claude 能“连上某个外部系统”比如拉 GitHub PR、查 PostgreSQL、调某个内部 API那你要的是 MCP。如果你想把上面这些能力打包发给队友让整个团队一键装上那你要的是 Plugins。如果你想让某个动作在特定时刻自动执行比如写文件后自动跑测试、提交前自动 lint那你要的是 Hooks。如果你只是想把一段常用提示词取个短名比如 /review、/deploy那你要的是 Slash Commands。这五类机制在 2026 年的 Claude Code 里已经形成了比较清晰的分层。Skills 和 Slash Commands 偏“软知识”MCP 偏“硬连接”Hooks 偏“确定性动作”Plugins 偏“分发容器”。它们可以组合但选型时不要一上来就全上。大多数开发者真正需要的其实是 2 到 3 个 MCP 服务器加上几个针对自己工作流的自定义 Skills再配一两个 Hooks 做质量门这就已经能覆盖八成日常场景了。为什么大家容易选错因为重叠确实存在。Plugin 里面可以包含 SkillsSkill 可以调用 MCP 工具Slash Commands 已经被合并进 Skills 体系。所以你看到“一个东西既能当命令又能当技能”并不奇怪。关键不是记住定义而是记住你当前要解决的是“知识问题”还是“连接问题”还是“自动化问题”。知识问题用 Skills连接问题用 MCP自动化问题用 Hooks分发问题用 Plugins快捷问题用 Commands。这条主线抓住后面所有配置都不会跑偏。还有一个容易被忽略的点是 Token 成本。Skills 每个常驻只有 30 到 50 token按需加载完整指令MCP 单个服务器工具定义可能上万 token五服务器五十八工具的配置在对话开始前就能吃掉五万多 token。Hooks 几乎不占常驻 token因为它是确定性脚本不经过模型。Plugins 取决于内含什么。这个成本差异直接决定了你的选型策略能用 Skills 表达的知识不要硬塞进 MCP能用 Hooks 做的确定性动作不要交给模型判断。我实测下来最容易踩的坑是“用 MCP 做本该 Skills 做的事”。比如有人为了让 Claude 按团队规范写提交信息专门装一个 MCP 服务器去查规范文档结果每次对话都背着几万 token 的工具定义。其实这只需要一个 Skill把规范写成 SKILL.md三十个 token 常驻相关时才展开。反过来有人想用 Skill 去连数据库那也不现实因为 Skill 给的是方法论不是接口。搞清楚这个边界你的配置会清爽很多。2. TaoToken 统一 Key 通道的前置准备在动手配这五类扩展之前先把接入通道理顺。Claude Code 本身支持多种模型接入方式但如果你希望用一个统一的 Key 来管理模型调用TaoToken 是一个可以用的通道。它的官网是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 。注意 API 地址不带 UTM 参数配置时直接用这个基础地址就行。前置准备其实就三件事拿到 Key、确认 Base URL、选定 Model ID。这三件套在后面的 MCP、Hooks、Plugins 配置里都会反复出现所以先在这里一次性说清楚。你可以先到控制台创建一个 API Key路径是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 创建完把 Key 复制出来后面配置里用占位符替换。模型对话页面在 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 你可以在这里确认当前可用的 Model ID比如 claude-sonnet 系列或者 claude-opus 系列具体以页面显示为准。为什么要在扩展机制之前先搞这个因为 Claude Code 的很多扩展配置最终都要落到“模型从哪里调”这个问题上。MCP 服务器本身不调模型但 Claude Code 主进程调模型Hooks 是本地脚本不调模型Skills 是提示词和脚本最终也由主进程调模型。所以统一 Key 通道的意义在于你只需要在一个地方管理 Key 和 Base URL所有扩展机制共享同一个模型入口不用每个机制单独配一套凭证。配置方式上Claude Code 通常读取环境变量或者 settings 文件。你可以用环境变量方式把 Base URL 和 Key 写进去。比如在 shell 里设置 ANTHROPIC_BASE_URL 和 ANTHROPIC_API_KEY或者在 Claude Code 的 settings.json 里配置。具体字段名以你当前 Claude Code 版本的文档为准但核心就是 Base URL 指向 https://taotoken.net/api Key 用你创建的那串。Model ID 在调用时指定比如在 settings 里写默认模型。这里有个细节要注意MCP 配置里如果涉及模型调用通常不是 MCP 服务器自己调而是 Claude Code 主进程调。所以你在 MCP 的 JSON 配置里一般不需要写 KeyKey 是在 Claude Code 全局配置里。但有些 MCP 服务器如果自带模型调用能力那就需要单独给它配 Key这时候也用同一个 TaoToken Key 就行。统一通道的好处就在这里一个 Key 走天下不用记多套。如果你用的是 Claude Code 的 coding plan 或者长期编码场景可以看 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 里面有针对长期编码的套餐说明。API Keys 管理页面在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 。Claude Code 相关的接入说明可以看 https://taotoken.net/claude-code?utm_sourcetaotoken_aicg_blog_endutm_contentclaudecodeutm_campaignrewrite 。这些页面在你排障的时候会用得上建议先收藏。前置准备做完之后你可以先跑一个最小验证在 Claude Code 里发一句“你好”确认模型能正常返回。如果这一步就报 401那说明 Key 或 Base URL 有问题先解决这个再往下配扩展。如果返回正常说明统一通道已经通了接下来配 MCP、Skills、Hooks 就只是在这个基础上加东西。3. 可复制配置片段与逐项验证这一节给你可以直接复制的配置片段。先说明路径Claude Code 的配置通常放在项目根目录的 .claude/ 下或者用户目录的 .claude/ 下。MCP 配置一般在 .claude/settings.json 或者专门的 mcp.json 里。Skills 放在 .claude/skills/ 目录下每个 Skill 一个文件夹里面放 SKILL.md。Hooks 在 settings.json 的 hooks 字段里配置。Slash Commands 现在合并进 Skills 体系放在 .claude/commands/ 下也能生成对应命令。先看 MCP 配置。这是一个 JSON 片段你可以直接放进 settings.json 的 mcpServers 字段。注意这里用的是 filesystem 和 github 两个例子你按需增减。Base URL 和 Key 不在这个片段里因为 MCP 服务器本身不调模型Key 在 Claude Code 全局配置里。{ mcpServers: { filesystem: { command: npx, args: [ -y, modelcontextprotocol/server-filesystem, /Users/yourname/projects ] }, github: { command: npx, args: [ -y, modelcontextprotocol/server-github ], env: { GITHUB_PERSONAL_ACCESS_TOKEN: your_github_token } } } }这个片段里filesystem 服务器让你能操作指定目录下的文件github 服务器让你能拉 PR、查 Issue。注意 github 的 token 是 GitHub 自己的 token不是 TaoToken Key别搞混。TaoToken Key 是在 Claude Code 全局配置里比如环境变量 ANTHROPIC_API_KEYBase URL 是 https://taotoken.net/api 。再看 Skills 配置。在 .claude/skills/code-review/SKILL.md 里写--- name: code-review description: 代码评审时检查安全项、风格约束和常见缺陷 --- # 代码评审 Skill 当用户要求评审代码时按以下顺序检查 1. 安全项SQL 注入、XSS、硬编码密钥、越权访问 2. 风格约束命名规范、函数长度、注释完整性 3. 常见缺陷空指针、边界条件、异常处理 输出格式按严重程度分级每条给出文件行号和修改建议。这个 Skill 常驻只有几十个 token相关时才展开完整指令。你可以在 .claude/skills/ 下放多个这样的文件夹每个一个 SKILL.md。Hooks 配置在 settings.json 里比如写文件后自动跑测试{ hooks: { PostToolUse: [ { matcher: Write, hooks: [ { type: command, command: npm test -- --watchAllfalse } ] } ] } }这个配置的意思是当 Claude 执行 Write 工具写文件之后自动跑 npm test。注意这是确定性脚本不经过模型所以几乎不占 token。你可以把 command 换成你的 lint 命令或者格式化命令。Slash Commands 现在可以放在 .claude/commands/review.md内容就是一段提示词模板请对当前改动的文件做一次代码评审重点检查安全项和风格约束按严重程度分级输出。放好之后你在 Claude Code 里输入 /review 就能触发。简单的提示词用命令复杂的带脚本和资源的升级成 Skill。配置完之后逐项验证。先验证 MCP在 Claude Code 里输入“列出当前目录的文件”如果 filesystem 服务器配好了它应该能返回文件列表。再验证 Skills输入“帮我评审一下这个文件”看它是否按 SKILL.md 里的顺序检查。再验证 Hooks改一个文件看是否自动跑了测试。再验证命令输入 /review看是否触发。每一步都确认了再往下走。这里要提醒一点如果你在配置里用了 CC Switch 或者 Cline MCP 或者 Codex 的 auth.json记得三件套写全Base URL、Key、Model ID。Base URL 是 https://taotoken.net/api Key 是你创建的Model ID 按模型对话页面显示的填。缺一个都可能报错。4. 验证请求与成功结果对照配置写完不算完得跑一遍确认真的通了。这一节给你几个验证动作和预期结果你照着做就能判断哪一环出了问题。第一个验证模型通道。在 Claude Code 里发一句“用一句话说明什么是 MCP”。如果返回正常说明 TaoToken 统一 Key 通道通了。如果报 401说明 Key 或 Base URL 有问题去 API Keys 页面确认 Key 是否有效Base URL 是否是 https://taotoken.net/api 。如果报 model not found说明 Model ID 写错了去模型对话页面确认可用模型名。第二个验证MCP 连接。输入“列出 /Users/yourname/projects 下的文件”。如果 filesystem 服务器配好了它会返回文件列表。如果报 local proxy failed 或者 connection refused说明 MCP 服务器没启动起来检查 npx 命令是否能手动跑通。如果报 tool not found说明 MCP 配置没被 Claude Code 读到检查 settings.json 路径和 JSON 格式。第三个验证Skills 加载。输入“帮我评审一下 src/index.js”。如果 Skill 配好了它会按 SKILL.md 里的检查项逐条输出。如果它只是泛泛而谈说明 Skill 没被加载检查 .claude/skills/ 目录名和 SKILL.md 的 frontmatter 格式。注意 name 和 description 字段要写对description 是相关性匹配的依据。第四个验证Hooks 触发。改一个文件看终端是否自动跑了测试。如果没跑检查 hooks 配置里的 matcher 是否匹配工具名command 是否能手动执行成功。Hooks 是确定性脚本不依赖模型判断所以只要配置对就一定会跑。第五个验证Slash Commands。输入 /review看是否触发提示词。如果没反应检查 .claude/commands/review.md 是否存在文件名是否和命令名一致。成功结果长什么样模型通道通了你会看到正常的中文回复。MCP 通了你会看到真实的文件列表或 PR 列表。Skills 通了你会看到结构化的评审输出。Hooks 通了你会看到测试命令的输出。命令通了你会看到提示词被展开执行。这五个都通了说明你的扩展配置基本可用。如果某一步报错先看错误信息里的关键词。401 通常是 Key 问题local proxy failed 通常是 MCP 服务器启动问题reading choices 通常是模型返回格式问题OAuth 通常是 GitHub token 权限问题。对照这些关键词去排比盲目改配置快得多。还有一个常见现象配置都对了但 Claude 不调用某个 MCP 工具。这通常是因为工具描述和你的提问不匹配或者工具太多导致模型选择困难。这时候可以精简 MCP 服务器数量或者用 Tool Search 功能按需发现工具。Tool Search 能把 MCP 的 token 开销降低大约 85%是目前缓解 MCP token 税最有效的手段。验证通过之后建议把配置提交到仓库的 .claude/ 目录这样队友拉下来就能用。但注意不要把 Key 提交进去Key 用环境变量或者本地配置文件管理。团队共享的部分是 Skills、Hooks、Commands 和 MCP 的服务器定义Key 每个人自己配。5. 本篇常见错误排查这一节把常见的报错和排查路径列出来你遇到问题可以直接对照。401 Unauthorized。这是最常见的错误通常出现在模型通道。原因可能是 Key 无效、Key 过期、Base URL 写错、或者请求头格式不对。排查步骤先去 API Keys 页面确认 Key 状态再确认 Base URL 是 https://taotoken.net/api 注意不要多加路径或者斜杠。如果用的是环境变量确认变量名没写错比如 ANTHROPIC_API_KEY 和 ANTHROPIC_BASE_URL。如果用的是 settings.json确认字段名和层级对。local proxy failed。这个错误通常出现在 MCP 服务器启动阶段。原因可能是 npx 命令找不到包、网络问题、或者服务器进程崩溃。排查步骤先在终端手动跑一遍 MCP 启动命令看是否能正常启动。如果手动跑也失败说明是包或环境问题。如果手动跑成功但 Claude Code 里失败说明是配置路径或权限问题。注意 MCP 服务器的 command 和 args 要写对路径要用绝对路径。reading choices 相关错误。这个通常出现在模型返回格式不符合预期时。原因可能是 Model ID 不支持某些参数或者返回被截断。排查步骤确认 Model ID 是模型对话页面里列出的可用模型不要用未支持的模型名。如果问题持续换一个模型试试比如从 opus 换到 sonnet。OAuth 相关错误。这个通常出现在 GitHub MCP 服务器。原因可能是 token 权限不足或者 token 过期。排查步骤去 GitHub 设置里确认 token 有 repo 权限如果过期就重新生成。注意 GitHub token 和 TaoToken Key 是两回事不要混用。MCP 工具不调用。配置都对了但 Claude 就是不调用某个工具。原因可能是工具描述和提问不匹配或者工具太多导致选择困难。排查步骤精简 MCP 服务器数量先只留最必要的两三个。或者用更明确的提问比如“用 github 工具列出最近的 PR”。如果还是不行检查 MCP 服务器是否真的暴露了那个工具。Skills 不加载。原因可能是目录结构不对、SKILL.md 格式不对、或者 description 写得太模糊。排查步骤确认 .claude/skills/ 下每个 Skill 是一个文件夹文件夹里有 SKILL.md。确认 frontmatter 里 name 和 description 都有。description 要写清楚这个 Skill 什么时候用因为相关性匹配靠它。Hooks 不触发。原因可能是 matcher 不匹配、command 执行失败、或者配置层级不对。排查步骤确认 matcher 和工具名一致比如 Write、Edit。确认 command 能在终端手动跑通。确认 hooks 配置在 settings.json 的正确层级。Plugins 安装失败。原因可能是 marketplace 地址不对、网络问题、或者插件依赖缺失。排查步骤确认插件地址是有效的 GitHub 仓库确认网络能访问。如果插件依赖 MCP 服务器确认那些服务器也能正常启动。还有一个通用排查技巧把 Claude Code 的日志级别调高看详细输出。很多错误在日志里会写清楚是哪一步失败。另外配置改动之后重启 Claude Code确保新配置被加载。如果你在排障过程中需要查文档接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite API Keys 在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 模型对话在 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 。这几个页面覆盖了大部分接入和排障场景。6. 按场景选型与组合建议最后给你一套按场景选型的对照你对着自己的情况挑就行。场景一你只是想让 Claude 按团队规范写代码。选 Skills。写一个 SKILL.md把规范写进去三十个 token 常驻相关时展开。不需要 MCP不需要 Hooks不需要 Plugin。场景二你需要 Claude 拉 GitHub PR、查 Issue。选 MCP。配一个 github 服务器token 用 GitHub 自己的。如果同时需要操作本地文件再加一个 filesystem。两个 MCP 就够了别贪多。场景三你希望每次写文件后自动跑测试。选 Hooks。配一个 PostToolUsematcher 写 Writecommand 写你的测试命令。确定性执行不占 token。场景四你想把一套工作流分享给队友。选 Plugins。把 Skills、Hooks、Commands、MCP 配置打包成一个 Plugin托管在 GitHub队友用 /plugin install 安装。注意 Key 不要打包进去让队友自己配。场景五你只是想把常用提示词取个短名。选 Slash Commands。在 .claude/commands/ 下放一个 md 文件内容就是提示词模板。简单的用命令复杂的升级成 Skill。组合建议大多数人的够用组合是一个 CLAUDE.md 加两个 MCP 加几个 Skills 加一两个 Hooks。CLAUDE.md 写项目级规范MCP 管连接Skills 管方法Hooks 管质量门。这套组合覆盖日常开发八成场景token 开销也可控。如果你做长期编码或者 Agent 场景可以看 coding plan 页面 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 里面有针对长期使用的套餐。Claude Code 接入说明在 https://taotoken.net/claude-code?utm_sourcetaotoken_aicg_blog_endutm_contentclaudecodeutm_campaignrewrite 。选型的主线再强调一遍该连系统用 MCP该教方法用 Skills该自动跑用 Hooks该分享给团队用 Plugins该取短名用 Commands。别一上来就把五个 MCP 全装上先从一个 CLAUDE.md 加两个 MCP 加几个 Skill 起步遇到真实瓶颈再加。这是 Claude Code 扩展机制最省心的打开方式。