ARTICLE DETAIL

资讯详情

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

ClaudeCode完整学习指南:从斜杠命令到MCP与钩子的配置实战

ClaudeCode完整学习指南:从斜杠命令到MCP与钩子的配置实战 1. 为什么你的 ClaudeCode 总是“差点意思”很多人第一次用 ClaudeCode感觉就是个能聊天的命令行。敲claude进去问两句改个 bug然后就没有然后了。问题不在模型而在于你只用了它 10% 的能力。斜杠命令、子代理、MCP、钩子这四样东西才是把 ClaudeCode 从“玩具”变成“工具链”的关键。我见过太多人卡在同一个地方官方文档把每个功能都讲清楚了但没人告诉你它们怎么串起来用。斜杠命令负责快捷入口子代理负责把复杂任务拆出去并行处理MCP 负责让模型够到外部真实数据钩子负责在关键节点自动执行校验和格式化。四者组合起来才是一条能复用的 AI 工作流。这篇指南聚焦进阶配置不重复讲怎么安装。我会给你可直接复制的settings.json和config.toml骨架演示如何通过 TaoToken 统一 Key 和 API 通道接入再给出 CC Switch、Cline 的配置片段最后逐项验证。适合已经能跑通 ClaudeCode 基础对话、想把它接进真实项目的人。2. TaoToken 前置统一 Key 与 API 通道在配置四大能力之前先把接入层理顺。ClaudeCode 默认走 Anthropic 官方通道但如果你同时用 Cline、CC Switch 或者自建脚本每个工具都配一遍 Key 很麻烦。TaoToken 的作用就是提供一个统一的 API 入口你只需要维护一份 Key所有工具都指向同一个地址。官网地址是https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentAPI 端点是https://taotoken.net/api。注意 API 地址不带 UTM 参数配置时直接用这个。你需要先拿到 API Key。登录后进入控制台在 API Keys 页面创建一个新 Key复制保存。这个 Key 后面会填进 ClaudeCode 的环境变量、CC Switch 的配置文件和 Cline 的设置里。注意Key 只显示一次创建后立刻保存到密码管理器或本地环境变量文件不要直接写进会提交到 Git 的配置文件。配置 ClaudeCode 使用 TaoToken 通道最直接的方式是设置环境变量。在~/.zshrc或~/.bashrc里加入export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_API_KEYsk-你的TaoToken密钥保存后执行source ~/.zshrc让变量生效。这样 ClaudeCode 启动时会自动读取这两个变量所有请求都走 TaoToken 通道。如果你不想改全局环境变量也可以在项目根目录建一个.env文件用dotenv加载但 ClaudeCode 本身不自动读.env需要你在启动脚本里手动 export。验证环境变量是否生效echo $ANTHROPIC_BASE_URL echo $ANTHROPIC_API_KEY | head -c 8第一条应该输出https://taotoken.net/api第二条输出你 Key 的前 8 位。如果为空说明没加载成功检查 shell 配置文件路径和 source 命令。3. 可复制配置settings.json 与 config.toml 骨架ClaudeCode 的配置分两层用户级~/.claude/settings.json和项目级.claude/settings.json。用户级对所有项目生效项目级只对当前仓库生效。钩子和权限相关的配置建议放用户级项目特定的斜杠命令和子代理放项目级。先给一份用户级settings.json骨架包含钩子和权限模式{ permissions: { allow: [ Read, Grep, Glob ], deny: [ Bash(rm -rf *), Bash(curl * | sh) ] }, hooks: { PreToolUse: [ { matcher: Write|Edit, hooks: [ { type: command, command: ~/.claude/hooks/format-on-write.sh, timeout: 30 } ] } ], PostToolUse: [ { matcher: Edit, hooks: [ { type: command, command: ~/.claude/hooks/lint-check.sh, timeout: 60 } ] } ] } }这份配置做了三件事允许只读工具直接执行禁止危险的 Bash 命令在写入和编辑文件前后触发格式化与 lint 脚本。matcher支持精确字符串和正则Write|Edit表示匹配这两个工具中的任意一个。项目级.claude/settings.json可以更轻量主要放斜杠命令和子代理的引用{ commands: { dir: .claude/commands }, agents: { dir: .claude/agents } }斜杠命令就是.claude/commands/目录下的 Markdown 文件文件名就是命令名。比如optimize.md对应/optimize。子代理是.claude/agents/下的 Markdown 文件每个文件定义一个独立上下文的代理。再给一份config.toml骨架这个主要用于 CC Switch 或类似工具读取[api] base_url https://taotoken.net/api api_key sk-你的TaoToken密钥 model claude-sonnet-4-6 timeout 120 [claude_code] settings_path ~/.claude/settings.json commands_dir .claude/commands agents_dir .claude/agents mcp_config .mcp.json [hooks] pre_tool_use ~/.claude/hooks/pre-tool-check.sh post_tool_use ~/.claude/hooks/post-tool-lint.shconfig.toml不是 ClaudeCode 原生读取的格式它是给 CC Switch 这类多通道切换工具用的。你把 TaoToken 的地址和 Key 填进去CC Switch 就能在多个 API 通道之间切换而不用手动改环境变量。MCP 配置单独放.mcp.json项目根目录一份用户级~/.claude.json一份。项目级优先。一个 GitHub MCP 的示例{ mcpServers: { github: { command: npx, args: [-y, modelcontextprotocol/server-github], env: { GITHUB_TOKEN: ghp_你的GitHub令牌 } } } }这个配置让 ClaudeCode 能通过 MCP 协议调用 GitHub 的 API列出 PR、创建 Issue、读取文件内容。command和args是启动 MCP 服务端的命令env是传给服务端的环境变量。4. 逐项验证斜杠命令、子代理、MCP、钩子配置写完不算完得逐项验证。我按依赖顺序来先斜杠命令再子代理然后 MCP最后钩子。4.1 斜杠命令验证在项目根目录创建.claude/commands/optimize.md内容--- description: 分析当前文件的性能问题并给出优化建议 --- 请分析当前打开文件的性能瓶颈重点关注 1. 循环内的重复计算 2. 不必要的内存分配 3. 可以并行化的操作 输出格式问题描述 优化方案 预期收益保存后启动 ClaudeCode输入/optimize。如果命令列表里出现optimize说明加载成功。选中一个代码文件执行命令观察输出是否按你定义的格式返回。如果没出现检查文件路径和 frontmatter 格式description字段是必须的。4.2 子代理验证创建.claude/agents/code-reviewer.md--- name: code-reviewer description: 代码质量综合审查 tools: Read, Grep, Glob model: sonnet effort: high --- 你是一个代码审查专家。收到任务后 1. 读取目标文件 2. 检查安全漏洞、性能问题、代码风格 3. 按严重程度排序输出发现 不要修改代码只输出审查报告。启动 ClaudeCode输入/agents应该能看到code-reviewer在列表里。然后直接说“用 code-reviewer 审查 src/main.ts”ClaudeCode 会自动把任务委托给这个子代理。子代理有独立的上下文窗口不会污染主对话的历史。4.3 MCP 验证确保.mcp.json在项目根目录然后启动 ClaudeCode输入/mcp。如果配置正确会列出github服务端及其可用工具。尝试执行/mcp__github__list_prs如果返回 PR 列表或提示需要参数说明 MCP 通道打通了。如果报错“server not found”检查npx是否能正常执行以及GITHUB_TOKEN是否有效。4.4 钩子验证创建~/.claude/hooks/format-on-write.sh#!/bin/bash input$(cat) file_path$(echo $input | jq -r .tool_input.file_path) if [[ $file_path ~ \.(js|ts|jsx|tsx)$ ]]; then npx prettier --write $file_path 2/dev/null fi exit 0赋予执行权限chmod x ~/.claude/hooks/format-on-write.sh然后在 ClaudeCode 里让它创建一个.ts文件。写入完成后检查文件是否被 prettier 格式化过。如果格式变了说明钩子生效。如果没变检查jq是否安装以及脚本路径是否和settings.json里一致。5. 本篇常见错排查配置过程中最容易踩的坑集中在几个地方。我按报错信息分类整理。“command not found: claude”ClaudeCode 没装或者不在 PATH 里。用npm install -g anthropic-ai/claude-code重装然后which claude确认路径。“Invalid API key”TaoToken 的 Key 填错了或者环境变量没生效。先echo $ANTHROPIC_API_KEY确认输出再检查 Key 是否有多余空格。如果用的是config.toml确认 CC Switch 读取的是正确的配置文件路径。“MCP server failed to start”通常是npx下载包超时或权限问题。手动执行npx -y modelcontextprotocol/server-github看报错。如果是网络问题检查 npm 源配置。如果是权限问题确认GITHUB_TOKEN有repo权限。“Hook script exited with code 1”钩子脚本返回了非零退出码。ClaudeCode 会把非零退出视为钩子失败可能阻断后续操作。检查脚本里的命令是否都能正常执行特别是jq和prettier是否安装。在脚本末尾加exit 0可以强制返回成功但这样会掩盖真实错误建议先调试再决定。“Subagent not found”子代理文件路径不对或者 frontmatter 格式错误。确认文件在.claude/agents/下且name字段和文件名一致。tools字段用逗号分隔不要用数组语法。“Slash command not showing”斜杠命令文件不在.claude/commands/下或者缺少descriptionfrontmatter。ClaudeCode 只加载有description的命令。文件名不要有空格用连字符。“Permission denied”settings.json里的deny规则拦截了操作。检查deny列表里的正则是否过于宽泛。比如Bash(curl *)会拦截所有 curl 命令包括你正常需要的。建议把deny规则写具体只拦截真正危险的操作。6. 把四块能力串成一条工作流单独验证完每个能力后把它们串起来才是完整的工作流。我的做法是用斜杠命令做入口子代理做并行审查MCP 拉取外部数据钩子做自动校验。具体流程在项目里定义/review-pr斜杠命令触发后调用code-reviewer子代理子代理通过 MCP 读取 GitHub PR 的 diff审查完成后钩子自动运行 lint 和测试。这样一条命令就能完成从拉取代码到输出审查报告的全过程。如果你需要长期跑这套流程建议把配置固化到项目仓库里。.claude/目录、.mcp.json、config.toml都提交到 Git团队成员拉下来就能用。TaoToken 的 Key 通过环境变量注入不要写进仓库。对于需要频繁切换模型或通道的场景Coding Plan 提供了更灵活的额度管理适合长期编码和 Agent 任务。你可以到https://taotoken.net/api-keys管理你的 Key到https://taotoken.net/doc查看接入文档或者直接进https://taotoken.net/console控制台调整配置。模型对话入口在https://taotoken.net/chat需要快速验证模型响应时可以用。最后提醒一点钩子脚本里的命令尽量保持幂等和快速。我试过在PostToolUse里跑完整测试套件结果每次编辑文件都要等半分钟。后来改成只跑 lint 和类型检查完整测试放到 CI 里体验好很多。
返回列表