ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Claude Code 实用学习指南:从 CLI 到 MCP、SubAgent、Hooks 的进阶路线

Claude Code 实用学习指南:从 CLI 到 MCP、SubAgent、Hooks 的进阶路线

1. 刚装完 Claude Code 却只会聊天?先搞清这四层能力

很多人第一次打开 Claude Code,输入一句“帮我写个接口”,它确实能吐代码,但用两天就发现:改文件要反复确认、跑测试得自己复制命令、多个模块串行处理慢得离谱。问题不在模型,而在于你只用了它的“对话层”,没碰 CLI 参数、MCP、SubAgent、Hooks 这四层真正提效的能力。

Claude Code 是 Anthropic 推出的命令行 AI 编程工具,本质是一个跑在终端里的 Agent:它能读写你本地的文件、执行 shell 命令、调用外部工具,并通过自然语言驱动整个开发流程。适合谁?适合已经习惯终端、手上有真实项目、想让 AI 从“补全代码”升级到“执行任务”的开发者。如果你平时用 Cursor 或网页版对话,Claude Code 的差异在于批量文件操作和显式任务分发。

这篇按四层递进写:CLI 基础操作 → MCP 扩展 → SubAgent 分工 → Hooks 自动化。每一层都给可复制的配置片段和逐项验证动作,你照着敲就能跑通。中间会用到 TaoToken 作为模型接入层,把 Base URL、Key、Model ID 三件套配好,后面所有能力才有稳定的模型底座。我试过把四层拆开单独练,比一上来就堆配置清晰得多。

先明确一个认知:CLI 是入口,MCP 是手脚,SubAgent 是分身,Hooks 是自动开关。四者不是并列功能,而是从“能对话”到“能自动干活”的递进关系。下面逐层拆。

2. 前置准备:用 TaoToken 配好 Claude Code 的模型接入

在碰 MCP 和 Hooks 之前,得先让 Claude Code 能稳定调用模型。Claude Code 默认走 Anthropic 官方通道,但很多国内开发者会遇到网络和额度问题。TaoToken 提供兼容 Anthropic 协议的接入方式,把请求地址换掉即可,CLI 的其他行为不变。

你需要准备三样东西:Base URL、API Key、Model ID。Base URL 用https://taotoken.net/api,Key 在控制台的 API Keys 页面生成,Model ID 填你实际要用的模型名。这三件套在后面的 MCP、SubAgent、Hooks 里会反复出现,因为每个环节都可能需要独立指定模型。

第一步,生成 Key。打开 TaoToken 控制台的 API Keys 页面(deep link:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite),新建一个 Key 并复制。注意 Key 只显示一次,丢了就重建。

第二步,配置环境变量。Claude Code 读取ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY两个变量。在~/.zshrc或~/.bashrc里加:

export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_API_KEY="sk-你的Key"

改完执行source ~/.zshrc生效。如果你用 Windows,在系统环境变量里加同名项即可。

第三步,验证连通。运行claude进入交互,输入/status,看当前模型和连接状态。再输入一句“读取当前目录的 package.json 并总结依赖”,如果它能正确读文件并回答,说明接入成功。这一步别跳过,后面 MCP 报错十有八九是这里没通。

关于模型选择,Claude Code 支持/model切换。你可以先用一个通用模型跑通流程,等进入 SubAgent 阶段再按任务类型分配不同 Model ID。TaoToken 的模型列表在文档里能查到(deep link:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite),选一个支持长上下文的即可。

配好之后,CLI 的/init、/memory、/diff这些命令才有意义。下一节进入 CLI 基础操作,把日常高频命令过一遍。

3. 可复制配置:CLI 基础操作与 settings 片段

CLI 层是每天都要用的,核心是把斜杠命令和自然语言结合。Claude Code 的斜杠命令分几类:会话管理、项目操作、代码审查、配置。你不需要背全部,记住高频的十几个就够。

会话管理里,/clear清空历史、/compact压缩上下文、/cost看 Token 消耗、/rewind回退上一步。项目操作里,/init初始化项目生成 CLAUDE.md、/memory更新记忆文件、/diff看代码差异、/review做代码审查、/test生成并运行测试。配置里,/config改设置、/model切模型。

真正提效的是自然语言驱动文件操作。比如“读取 src/main.py 并把所有 print 改成 logging”,它会批量改;“运行 pytest 并总结失败用例”,它会执行命令再分析。这比手动复制粘贴快得多。

现在给一份可复制的 settings 配置。Claude Code 的配置放在~/.claude/settings.json,项目级放在.claude/settings.json。下面这份是入门可用的最小配置:

{ "model": "claude-sonnet-4-20250514", "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的Key" }, "permissions": { "allow": [ "Read", "Glob", "Grep" ], "ask": [ "Bash(git commit:*)", "Write" ] }, "includeCoAuthoredBy": false }

这份配置做了三件事:指定默认模型、把接入信息写进 env(这样不用依赖 shell 变量)、设置权限白名单。allow里的 Read/Glob/Grep 是只读操作,直接放行;ask里的 git commit 和 Write 会先问你,避免误改。includeCoAuthoredBy关掉后,提交信息不会带 Claude 署名。

路径要和原文一致:全局配置~/.claude/settings.json,项目配置<项目根>/.claude/settings.json。项目级会覆盖全局。改完重启claude生效。

验证动作:进入项目目录,运行claude,输入/config看当前配置是否加载。再输入“列出 src 下所有 Python 文件”,如果它直接返回列表而没弹权限确认,说明 allow 生效。然后输入“把 README 里的标题改成 XXX”,它应该弹确认,说明 ask 生效。

CLI 层练熟后,你会发现它只能操作本地文件和命令。要让它查数据库、调 API、读浏览器,就得靠 MCP。下一节进入 MCP 扩展。

4. MCP 扩展:让 Claude Code 接上外部工具与数据源

MCP 全称 Model Context Protocol,是 Anthropic 提出的开放协议,让 AI 工具能标准化地调用外部服务。你可以把它理解成“给 Claude Code 装插件”:装一个数据库 MCP,它就能查表;装一个浏览器 MCP,它就能测接口;装一个文件系统 MCP,它就能跨目录操作。

Claude Code 通过配置文件注册 MCP 服务器。配置放在~/.claude.json或项目级.mcp.json。下面是一个浏览器 MCP 的配置示例,用于测试 API 端点:

{ "mcpServers": { "browser": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-puppeteer"], "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的Key" } } } }

这里command是启动命令,args是参数,env是环境变量。注意 MCP 服务器本身可能也需要模型接入信息,所以三件套要写全。Base URL 用https://taotoken.net/api,Key 用你生成的,Model ID 在需要时通过参数传入。

注册后重启claude,输入/mcp查看已加载的服务器。如果看到 browser 在列表里且状态正常,说明注册成功。然后输入“用 browser 打开 http://localhost:8000/docs 并截图”,它会调用 Puppeteer 执行。

MCP 的价值在于把“AI 能做什么”从本地文件扩展到整个工具链。比如接一个 Postgres MCP,你可以直接说“查 users 表里最近注册的 10 个用户”,它会生成 SQL 并返回结果。接一个 GitHub MCP,你可以说“列出我仓库里所有 open 的 PR”。

踩过的坑:MCP 服务器启动失败最常见的原因是 npx 找不到包或网络超时。先手动跑一遍npx -y @modelcontextprotocol/server-puppeteer,看能否启动。如果卡住,检查 npm 源。另一个坑是权限,MCP 调用的工具默认需要确认,可以在 settings 的 permissions 里加白名单。

MCP 让 Claude Code 有了手脚,但一次只能干一件事。要并行处理多个模块,就得用 SubAgent。下一节进入任务分发。

5. SubAgent 分工与 Hooks 自动化:并行任务与自动触发

SubAgent 是 Claude Code 的显式任务分发机制。你通过 Task 工具把一个大任务拆成多个子任务,每个子任务由一个独立的 Agent 执行,可以并行。比如你要给一个 FastAPI 项目生成 CRUD,可以拆成“生成 User 模型”“生成 Order 模型”“生成 Product 模型”三个子任务,同时跑。

用法是在对话里描述任务并指定并行。比如:“用 Task 工具并行处理:任务一读取 src/models/user.py 并生成对应的 schema;任务二读取 src/models/order.py 并生成 schema;任务三读取 src/models/product.py 并生成 schema。”Claude Code 会为每个任务启动一个 SubAgent,各自独立上下文,最后汇总结果。

SubAgent 的关键是任务边界要清晰。如果两个子任务改同一个文件,会冲突。所以拆分时按文件或模块切分。每个 SubAgent 可以指定不同的 Model ID,比如简单任务用快模型,复杂任务用强模型。Model ID 通过 Task 参数传入,Base URL 和 Key 沿用全局配置。

Hooks 是自动化触发器。你可以在特定事件发生时自动执行命令,比如“每次 Claude Code 写完文件后自动跑格式化”“每次提交前自动跑测试”。Hooks 配置在 settings.json 的hooks字段:

{ "hooks": { "PostToolUse": [ { "matcher": "Write", "hooks": [ { "type": "command", "command": "npx prettier --write $CLAUDE_FILE_PATH" } ] } ], "PreToolUse": [ { "matcher": "Bash(git commit:*)", "hooks": [ { "type": "command", "command": "pytest --quiet" } ] } ] } }

这段配置做了两件事:PostToolUse 在 Write 之后跑 prettier 格式化;PreToolUse 在 git commit 之前跑 pytest。如果测试失败,提交会被拦截。$CLAUDE_FILE_PATH是 Claude Code 传入的环境变量,指向被操作的文件。

验证动作:改一个 Python 文件,看 prettier 是否自动执行。然后故意写一个失败的测试再提交,看是否被拦截。Hooks 的 matcher 支持工具名和命令模式,写错会导致不触发,用/config检查加载状态。

把 SubAgent 和 Hooks 结合,就能搭出自动化流水线:SubAgent 并行生成代码,Hooks 自动格式化和测试。这套组合在大型重构和批量操作里特别有用。

6. 常见报错排查:401、local proxy failed、reading choices、OAuth

接入和配置过程中,几个报错反复出现。下面按真实错误信息对照排查。

401 Unauthorized。最常见,Key 错了或没生效。检查ANTHROPIC_API_KEY是否和 TaoToken 控制台生成的一致,注意有没有多余空格。如果写在 settings.json 的 env 里,确认 JSON 格式正确,没有尾逗号。改完重启claude,用/status确认。

local proxy failed。通常是 Base URL 写错或网络不通。确认ANTHROPIC_BASE_URL是https://taotoken.net/api,不要带多余路径。用curl https://taotoken.net/api测连通性。如果返回 404 是正常的,说明域名可达;如果超时,检查本地网络。

reading choices 报错。这个多出现在模型返回格式异常时,通常是 Model ID 填错或模型不支持当前请求格式。检查 settings 里的 model 字段,确认是 TaoToken 支持的模型名。可以先用/model切换到一个已知可用的模型测试。

OAuth 相关报错。Claude Code 某些版本会尝试 OAuth 流程,如果你用 API Key 接入,需要在配置里禁用 OAuth。在 settings.json 里加"forceApiKeyAuth": true,或者确保没有残留的 OAuth token 文件。删除~/.claude/下的 token 缓存后重启。

还有一个隐蔽的坑:MCP 服务器报错但 CLI 不显示。用/mcp看状态,如果某个服务器是 failed,手动跑它的启动命令看报错。多数是 npx 包名写错或版本不兼容。

排查顺序建议:先确认三件套(Base URL + Key + Model ID)正确,再看 settings.json 格式,最后看 MCP 和 Hooks 的独立配置。每改一处就重启验证,别一次改多个地方。

7. 按阶段推进:从 CLI 到 Hooks 的实操闭环

四层能力不用一次全上。按阶段推进更稳。

第一阶段,只练 CLI。用/init生成 CLAUDE.md,用自然语言做文件读写和命令执行,把/diff、/review、/test用熟。目标是让 Claude Code 成为日常编码的默认入口。

第二阶段,加 MCP。先装一个浏览器 MCP 测接口,再装一个数据库 MCP 查数据。每装一个就用/mcp验证,确保独立可用。

第三阶段,上 SubAgent。找一个大任务拆成三个子任务并行跑,观察上下文隔离和结果汇总。注意任务边界,避免文件冲突。

第四阶段,配 Hooks。先加格式化,再加测试拦截,最后接 CI。Hooks 是自动化的最后一环,前面三层稳了再上。

如果你要长期跑编码和 Agent 任务,可以考虑 TaoToken 的 Coding Plan(deep link:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite),额度更适配高频调用。验证模型效果可以去模型对话页面(deep link:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=model-chat&utm_campaign=rewrite)先试。接入文档在 doc 页面(deep link:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite),Key 在 API Keys 页面(deep link:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite)。

最后给一个实用技巧:把 CLAUDE.md 当成项目记忆文件,每次/memory更新后,Claude Code 在新会话里会自动读取。把项目规范、常用命令、目录结构写进去,比每次重复描述省事得多。四层能力练完,你会发现 Claude Code 不再是“会聊天的补全工具”,而是一个能执行任务的开发搭档。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进