1. 从零上手 Claude Code 的真实卡点
Claude Code 是 Anthropic 推出的终端 AI 编程智能体,它和代码补全插件最大的区别在于:它能自己读文件、跑命令、改代码、验证结果,你只需要给方向和验收。适合谁?适合已经会用命令行、想让 AI 真正参与项目而不是只补全几行代码的开发者。但很多人第一次装完就卡住了:模型通道怎么配、CLAUDE.md 写什么、Plan 模式和 Auto 模式什么时候切换、Sub-agent 和 MCP 到底解决什么问题。这篇就把这条路径一次跑通。
我试过在三个不同规模的项目里从零配置 Claude Code,踩过的坑集中在两处:一是 API 通道没配好导致请求直接 401,二是 CLAUDE.md 写得太空导致每次会话都要重复解释项目结构。下面按“先接通、再记忆、再拆任务、再扩展”的顺序,把每一步的可复制配置和验证动作都列出来。
核心检索词先对齐:Claude Code 是终端智能体,CLAUDE.md 是项目记忆文件,Plan 模式是先出计划再执行,Sub-agent 是分工子智能体,MCP 是外部工具扩展协议。这五个概念串起来,就是本篇的完整路径。
2. TaoToken 统一 Key 与 API 通道前置配置
Claude Code 默认走 Anthropic 官方通道,但很多国内开发者在网络和计费上会遇到麻烦。TaoToken 提供统一 Key 和 API 通道,把模型调用收敛到一个入口,配置一次就能在 Claude Code、Coding Plan、模型对话之间复用。官网入口在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 基址是 https://taotoken.net/api 。
你需要先拿到两样东西:API Key 和可用的模型名。Key 在控制台的 API Keys 页面创建,地址是 https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite 。创建后复制保存,页面只显示一次。
Claude Code 读取环境变量的方式有两种:一种是直接 export,一种是写进 settings.json 的 env 字段。推荐后者,因为项目级配置可以提交到 Git,团队复用。下面这个 settings.json 骨架可以直接抄:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_AUTH_TOKEN": "sk-你的TaoToken密钥", "ANTHROPIC_MODEL": "claude-sonnet-4-5-20250929", "ANTHROPIC_SMALL_FAST_MODEL": "claude-haiku-4-5-20251001" }, "permissions": { "allow": ["Read", "Write", "Edit", "Bash(git status)", "Bash(npm test)"], "deny": ["Bash(rm -rf *)"], "ask": ["Bash(git push)"] } }这里有两个关键点。第一,ANTHROPIC_BASE_URL 指向 TaoToken 的 API 地址,末尾不要带斜杠,否则部分版本会拼接出双斜杠导致 404。第二,ANTHROPIC_AUTH_TOKEN 用 TaoToken 的 Key,不要写成 ANTHROPIC_API_KEY,Claude Code 对这两个变量的读取优先级不同,混用会出现“Key 明明对了却报鉴权失败”的情况。
如果你更习惯用 config.toml 管理(部分封装工具链会读这个文件),可以这样写:
[anthropic] base_url = "https://taotoken.net/api" auth_token = "sk-你的TaoToken密钥" model = "claude-sonnet-4-5-20250929" small_fast_model = "claude-haiku-4-5-20251001" [permissions] allow = ["Read", "Write", "Edit"] deny = ["Bash(rm -rf *)"]配置文件放哪里?项目级放.claude/settings.json,个人级放~/.claude/settings.json。项目级优先级更高,适合团队统一通道;个人级适合放自己的 Key,避免提交到仓库。如果你把 Key 写进了项目级配置,记得在.gitignore里加上.claude/settings.local.json,把敏感信息隔离出去。
3. CLAUDE.md 项目记忆与 Plan 模式任务拆解
通道接通后,第一件事是让 Claude Code 认识你的项目。运行/init,它会扫描目录结构、识别技术栈、生成一份初始 CLAUDE.md。但初始版本通常很空,需要你手动补三类信息:约定、架构、坑。
# CLAUDE.md - order-service ## Conventions - TypeScript strict,禁止 any - 单元测试用 Vitest,测试文件与源文件同目录 - 提交信息用 conventional commits(feat: / fix: / chore:) - 使用 ES modules,不用 require ## Architecture - /src/api - 路由层,只做参数校验和转发 - /src/service - 业务逻辑,禁止直接操作数据库 - /src/repo - 数据访问层,所有 SQL 集中在这里 - /src/lib - 工具函数,纯函数优先 ## Commands - `npm run dev` 启动开发服务 - `npm test` 跑单元测试 - `npm run typecheck` 类型检查 ## Gotchas - 订单状态机不允许从 pending 直接跳到 completed,必须经过 paid - 支付回调必须幂等,同一订单可能收到多次通知 - 金额字段统一用整数分,禁止浮点这份文件的价值在于:Claude Code 每次会话启动都会读它,相当于把“老员工口口相传的经验”固化成了 AI 的长期记忆。实测下来,一份结构良好的 CLAUDE.md 能减少约 30% 的重复解释成本,因为 Claude 不再需要每次重新发现项目上下文。
接下来是 Plan 模式。按两下 Shift+Tab 切换到 Plan 模式,Claude 不会直接改代码,而是先输出执行计划。你可以和它来回讨论,确认后再切到 Auto 模式执行。这个习惯能省掉大量返工。
# Plan 模式下输入 实现订单退款功能,包括: 1. 退款申请接口 2. 退款状态查询 3. 退款成功后的库存回滚 4. 单元测试覆盖部分退款和全额退款Claude 会先输出一份计划,列出要改哪些文件、新增哪些函数、测试怎么组织。你确认没问题后,再切 Auto 模式让它一次性执行。如果计划里有偏差,比如它打算把库存回滚放在 API 层而不是 service 层,你在 Plan 阶段就能纠正,不用等代码写完再推倒重来。
4. Sub-agent 分工与 MCP 扩展接入
当项目变大,单个会话的上下文会不够用。Sub-agent 的思路是把重复性任务拆出去,让主 Claude 专注核心逻辑。创建方式很简单,运行/agents,按提示起名字、描述职责、选工具权限。
/agents # 名称:test-writer # 职责:专门为 service 层函数生成单元测试,覆盖边界条件 # 工具:Read, Write, Bash(npm test)创建后,用@test-writer就能调用它。比如主 Claude 写完一个函数后,你直接说“让 @test-writer 补测试”,它就会独立完成测试生成,不占用主会话的上下文。另一个常用的是code-simplifier,在主逻辑完成后自动简化代码,去掉冗余分支和重复判断。
MCP 是外部工具扩展协议,让 Claude Code 能调用数据库、文档、设计稿等外部资源。配置写在项目根目录的.mcp.json:
{ "mcpServers": { "context7": { "command": "npx", "args": ["-y", "@upstash/context7-mcp@latest"] }, "cloudbase": { "command": "npx", "args": ["-y", "@cloudbase/cloudbase-mcp@latest"] } } }context7 用来查最新 API 文档,cloudbase 用来操作云开发资源。配置完成后重启 Claude Code,运行/mcp能看到已连接的服务器列表。如果某个服务器显示 failed,先检查 npx 是否能正常拉包,再检查网络是否能访问对应服务。
MCP 的接入原则是:只接你真正会用的。接太多会导致启动变慢,而且每个 MCP 的工具描述都会占用上下文。建议从 context7 开始,确认工作流顺畅后再逐步加。
5. 逐项验证请求与成功结果
配置写完必须验证,否则你永远不知道是通道问题还是配置问题。第一步验证通道:
curl https://taotoken.net/api/v1/messages \ -H "x-api-key: sk-你的TaoToken密钥" \ -H "anthropic-version: 2023-06-01" \ -H "content-type: application/json" \ -d '{ "model": "claude-sonnet-4-5-20250929", "max_tokens": 64, "messages": [{"role": "user", "content": "回复 ok"}] }'返回里如果有content字段且文本是 ok,说明 Key 和通道都正常。如果返回 401,检查 Key 是否复制完整;如果返回 404,检查 base_url 是否多了斜杠。
第二步验证 Claude Code 能读到配置:
claude --version # 应显示 2.x 或更高 claude # 进入交互后输入 /status # 能看到当前 model、base_url、权限配置第三步验证 CLAUDE.md 生效。在项目里问一个只有 CLAUDE.md 里才有的信息,比如“订单状态机允许从 pending 直接跳到 completed 吗”,如果 Claude 回答“不允许,必须经过 paid”,说明记忆文件已加载。
第四步验证 Plan 模式。按两下 Shift+Tab,输入一个中等复杂度的需求,观察它是否先输出计划而不是直接改文件。如果它直接开始写代码,说明模式没切换成功,再按一次 Shift+Tab 确认状态栏显示 Plan。
第五步验证 Sub-agent。输入@test-writer 为 orderService 的 refund 方法生成测试,观察它是否独立完成测试文件创建并运行npm test。如果它报“找不到 agent”,检查.claude/agents/目录下是否有对应的 md 文件。
6. 本篇常见错排查
报错一:401 Unauthorized。最常见原因是 Key 写错或用了 ANTHROPIC_API_KEY 而不是 ANTHROPIC_AUTH_TOKEN。Claude Code 对这两个变量的处理逻辑不同,前者会被某些版本忽略。解决方法是统一用 ANTHROPIC_AUTH_TOKEN,并确认 Key 没有多余空格。
报错二:404 Not Found。检查 ANTHROPIC_BASE_URL 是否写成https://taotoken.net/api/,末尾斜杠会导致路径拼接错误。正确写法是不带斜杠。另外确认模型名拼写正确,模型名错了也会返回 404 而不是 400。
报错三:CLAUDE.md 不生效。确认文件在项目根目录,且文件名大小写正确。Claude Code 只读根目录的 CLAUDE.md,子目录里的不会被自动加载。如果项目是多包结构,可以在根目录 CLAUDE.md 里用@引用子目录文件。
报错四:Plan 模式不输出计划。检查是否真的切换到了 Plan 模式。状态栏会显示当前模式,如果显示 Auto 就再按 Shift+Tab。另外,如果需求太简单(比如“改个变量名”),Claude 可能直接执行,这是正常行为。
报错五:MCP 服务器启动失败。先手动运行npx -y @upstash/context7-mcp@latest看是否能启动。如果卡住,检查网络是否能访问 npm registry。如果报权限错误,检查.mcp.json的 JSON 格式是否正确,多余逗号会导致解析失败。
报错六:Sub-agent 调用无响应。检查.claude/agents/目录是否存在,以及 agent 文件是否有正确的 frontmatter。一个常见的坑是 agent 文件里写了tools字段但格式不对,导致 agent 加载失败。可以先删掉 tools 字段,用默认权限测试。
排障时如果拿不准是通道问题还是配置问题,可以先用模型对话页面单独验证 Key 是否可用,地址是 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite 。如果那边能正常对话,说明 Key 没问题,问题在 Claude Code 的配置层。
7. 长期编码与 Agent 工作流的下一步
如果你打算把 Claude Code 用在日常编码里,下一步是把它接入 Coding Plan,让模型调用和任务编排统一管理。Coding Plan 的入口在 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite ,适合需要长期跑 Agent 任务、多项目并行、统一计费的场景。
接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,里面有完整的参数说明和示例。如果你用的是 Claude Code 的 Anthropic 兼容模式,文档里也有对应的配置片段。
最后给一个实用建议:把每次 Claude 犯错的场景记下来,补进 CLAUDE.md 的 Gotchas 段。这个动作看起来小,但积累一个月后,你会发现 Claude 在你项目里的表现明显变好。工具是越用越顺手的,关键是你愿不愿意把纠错变成资产。