1. 国内开发者第一次跑 Claude Code,为什么总卡在“配置”这一步
Claude Code 是 Anthropic 推出的终端级开发 Agent,它和普通代码补全工具最大的区别在于:它能直接读取你的项目目录、跨文件修改代码、执行 shell 命令、跑测试并根据结果继续修正。适合谁?适合已经有一定工程经验、想让 AI 真正进入开发流程而不是只做“聊天问答”的后端、全栈、DevOps 开发者。但国内开发者第一次上手时,真正卡住的往往不是模型能力,而是三件事:CLI 装完之后连不上、CLAUDE.md 不知道写什么、ADK(Agent Development Kit,智能体开发套件)那套目录结构看不懂怎么落地。
我自己第一次配的时候,终端里claude命令能起来,但一发起请求就报local proxy failed,排查了半天才发现是环境变量里的 Base URL 没配对。后来把 CLAUDE.md、skills、hooks、subagents、plugins 这五层结构跑通之后,才意识到这套东西本质上不是“配置”,而是给 Claude Code 装一套可复用的工程规范。这篇手册就按“从零到跑通一个最小智能体开发流程”的顺序写,每一步都给可复制的命令和配置片段,你照着敲就能验证。
核心检索词先明确:Claude Code 开发配置、CLAUDE.md 模板、ADK 智能体开发套件、国内接入 Base URL 配置。下面从环境准备开始,一路走到 ADK 五层目录落地和请求验证。
2. TaoToken 前置准备:Base URL、API Key 与模型 ID 三件套
Claude Code 的 CLI 本身是官方工具,但它的请求要发到一个兼容 Anthropic Messages API 的 endpoint。国内开发者直接用官方地址经常遇到网络层问题,所以常见做法是配置一个兼容的 Base URL。TaoToken 提供的就是这种兼容入口,官网是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 地址是 https://taotoken.net/api (这个不加 UTM)。
在动手配 Claude Code 之前,你需要先拿到三样东西,我把它叫做“三件套”:
第一件是 Base URL。Claude Code 读取的是ANTHROPIC_BASE_URL这个环境变量,值填https://taotoken.net/api。注意结尾不要多加/v1,Claude Code 会自己拼路径,多写反而会 404。
第二件是 API Key。到控制台的 API Keys 页面创建一个,格式通常是一串以sk-开头的字符串。创建后立刻复制保存,页面刷新后就看不全了。入口在这里:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite
第三件是 Model ID。Claude Code 默认会用一个模型名去请求,你需要确认这个模型名在你的账号下可用。常见的比如claude-sonnet-4-6这类。如果你不确定用哪个,可以先到模型对话页面发一条测试消息确认模型可用:https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite
把这三件套写进环境变量,是后面所有步骤的前提。我建议直接写进 shell 配置文件,而不是每次手动 export。macOS 或 Linux 用~/.zshrc或~/.bashrc,Windows 用系统环境变量或者 PowerShell 的$PROFILE。
# 写入 ~/.zshrc(macOS 默认)或 ~/.bashrc(Linux) export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_API_KEY="sk-你的key" export ANTHROPIC_MODEL="claude-sonnet-4-6"写完执行source ~/.zshrc让它生效,然后echo $ANTHROPIC_BASE_URL确认输出正确。这一步看起来简单,但后面 90% 的401和local proxy failed都跟这里有关。如果你用的是 Claude Code 的 settings 文件方式而不是环境变量,那配置要写在~/.claude/settings.json里,格式是 JSON:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的key", "ANTHROPIC_MODEL": "claude-sonnet-4-6" } }这两种方式选一种就行,不要同时配,否则环境变量和 settings 冲突时排查起来很痛苦。我实测下来,环境变量方式对 CLI 更直接,settings 方式对团队统一配置更友好。如果你后面要用 Coding Plan 做长期编码任务,建议用 settings 方式,方便和团队共享:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite
3. 可复制配置:CLAUDE.md 模板与 ADK 五层目录落地
这一节是整篇的核心,给你可以直接复制粘贴的配置。先说 CLAUDE.md,它是 Claude Code 每次会话开始时自动读取的项目记忆文件。位置有两个:~/.claude/CLAUDE.md对你电脑上所有项目生效,项目根目录的.claude/CLAUDE.md只对当前仓库生效。我一般把通用规范放全局,把业务背景放项目级。
下面这个模板可以直接用,改掉项目名和技术栈就行:
# 项目:我的电商平台 ## 技术栈 - 前端:Next.js 14(App Router) - 样式:Tailwind CSS - 数据库:PostgreSQL + Prisma - 语言:TypeScript 严格模式 ## 命名规范 - 组件文件:大驼峰,如 `UserCard.tsx` - 工具函数:小驼峰,如 `formatPrice.ts` - API 路由:短横线,如 `/api/user-profile` ## 注意事项 - 禁止使用 `any` 类型 - 所有异步函数必须有 try/catch - 提交代码前必须通过 ESLint 检查 - 不要直接操作 `main` 分支 ## 代码风格 - 缩进:2 个空格 - 引号:单引号 - 函数优先用箭头函数写完这个文件,你新开会话时 Claude Code 就会自动带上这些约束,不用每次开头粘贴一大段背景。
接下来是 ADK 五层目录。ADK 不是某个需要安装的包,而是一套约定俗成的目录结构,放在项目根目录的.claude/下。五层分别是:CLAUDE.md(记忆)、skills/(知识)、hooks/(护栏)、subagents/(分工)、plugins/(复制)。先建目录:
mkdir -p .claude/skills .claude/hooks .claude/subagents .claude/pluginsskills 目录放技能文件,一个技能一个 md,头部用 YAML front matter 描述触发条件:
--- name: create-react-component description: > 当用户说"创建组件"、"新建页面"、"写一个 UI"时自动调用。 --- # 创建 React 组件的标准流程 ## 步骤 1. 检查 `src/components/` 下是否已存在同名组件 2. 用大驼峰命名新建 `.tsx` 文件 3. 必须定义 TypeScript interface,不允许 any 4. 同步在 `src/stories/` 下新建 Storybook 故事 5. 在 `__tests__/` 下新建单元测试文件hooks 目录放 shell 脚本,PreToolUse.sh 在工具调用前执行,用来拦截危险命令:
#!/bin/bash TOOL_INPUT="$2" if echo "$TOOL_INPUT" | grep -qE "rm\s+-rf\s+/"; then echo "已拦截:禁止执行破坏性删除命令" >&2 exit 1 fi exit 0记得chmod +x .claude/hooks/*.sh给执行权限。subagents 目录放子代理定义,每个子代理有独立上下文和工具权限:
--- name: code-reviewer description: PR 需要代码审查时调用 tools: - read_file permissions: - read_only --- # 代码审查专用代理 你是一名资深代码审查员,只收到 git diff,没有写入权限。 ## 审查清单 - 有没有硬编码的密钥? - 新函数有没有单元测试? - TypeScript 类型是否明确? - 异步操作有没有错误处理?plugins 目录放打包脚本,让新同事一条命令同步整套配置。team.install 示例:
#!/bin/bash echo "正在安装团队 ADK 配置..." cp ./CLAUDE.md/project.md ./.claude/CLAUDE.md mkdir -p ./.claude/skills && cp -r ./skills/* ./.claude/skills/ mkdir -p ./.claude/hooks && cp -r ./hooks/* ./.claude/hooks/ chmod +x ./.claude/hooks/*.sh mkdir -p ./.claude/subagents && cp -r ./subagents/* ./.claude/subagents/ echo "安装完成!"这套结构落地后,你的项目里就有了一个可复制的智能体开发环境。如果你还想把 Claude Code 接到更复杂的 Agent 工作流里,可以看接入文档了解 endpoint 和参数细节:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite
4. 验证请求:从 CLI 到最小智能体流程跑通
配置写完必须验证,不然你不知道是配置错了还是模型不可用。验证分三步走,从最底层往上测。
第一步,验证 API 连通性。用 curl 直接打 Messages 接口,这一步能排除 Claude Code 本身的干扰:
curl https://taotoken.net/api/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-6", "max_tokens": 128, "messages": [{"role": "user", "content": "回复 OK 两个字母"}] }'如果返回 JSON 里content数组有内容,说明 Base URL、Key、Model 三件套都对。如果返回401,是 Key 问题;返回404,多半是 Base URL 多写了/v1;返回model not found,是 Model ID 写错。
第二步,验证 Claude Code CLI。在项目根目录执行:
claude进入交互界面后输入一句读取当前目录结构并总结,看它能不能正常调用工具。如果这里报local proxy failed,说明 CLI 没读到你的环境变量,检查echo $ANTHROPIC_BASE_URL是否有输出,或者 settings.json 的 JSON 格式有没有写错(比如多了逗号)。
第三步,验证 ADK 是否生效。在项目里输入帮我创建一个用户卡片组件,观察 Claude Code 是否自动匹配到 skills 里的create-react-component技能,是否按你定义的步骤走。如果它没调用技能,检查 SKILL.md 的 front matter 里description是否包含了你说的关键词。
三步都通过后,你就跑通了一个最小智能体开发流程:CLAUDE.md 提供记忆,skills 提供标准流程,hooks 提供安全护栏,subagents 提供分工,plugins 提供复制能力。这套流程跑顺之后,日常开发里最明显的变化是——你不用再每次重复解释项目规范,Claude Code 自己就知道该怎么做。
5. 本篇常见错误排查:401、local proxy failed、reading choices、OAuth
这一节把最常见的四类报错逐个拆开,对照真实错误信息给排查路径。
401 Unauthorized。错误信息通常是{"error":{"type":"authentication_error","message":"invalid x-api-key"}}。原因有三个:Key 复制时带了空格或换行、Key 已经被删除、环境变量没生效。排查顺序:先echo $ANTHROPIC_API_KEY看输出是否完整,再确认 Key 在控制台里状态是启用。如果用的是 settings.json,检查 JSON 里 Key 有没有被转义字符污染。
local proxy failed。这个报错在 Claude Code CLI 里很常见,本质是 CLI 发请求时连接不上你配的 Base URL。原因通常是ANTHROPIC_BASE_URL没设置、设置成了http而不是https、或者结尾多了/v1。正确值就是https://taotoken.net/api,不带路径后缀。另外如果你同时配了环境变量和 settings.json,两者值不一致也会触发这个错,建议只保留一种。
reading choices 相关报错。这类错误一般出现在你用了 OpenAI 兼容格式去请求 Anthropic 接口时,返回体里没有choices字段。Claude Code 走的是 Anthropic Messages 格式,返回的是content数组,不是choices。如果你在某个第三方工具里看到reading choices报错,说明那个工具按 OpenAI 格式解析了响应,需要把它的 API 类型改成 Anthropic 兼容模式。
OAuth 相关报错。Claude Code 某些版本会尝试走 OAuth 登录流程,如果你用的是 API Key 方式,可能会看到OAuth token exchange failed之类的提示。解决办法是确认你用的是 API Key 模式而不是登录模式,环境变量里ANTHROPIC_API_KEY存在时 CLI 会优先走 Key 认证。如果还是报 OAuth 错,检查~/.claude/下有没有残留的凭据文件,清掉后重试。
排查完这些,如果还有问题,最直接的办法是回到 API Keys 页面重新生成一个 Key,然后只配环境变量这一种方式,最小化变量。接入文档里有完整的参数说明和错误码对照:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite
6. 从最小流程到长期编码:把 ADK 用成日常习惯
跑通最小流程只是起点,真正让 Claude Code 产生复利的是把它变成日常习惯。我的做法是:每完成一类重复任务,就把它沉淀成一个 skill 文件;每遇到一次危险操作,就往 PreToolUse.sh 里加一条拦截规则;每调教出一套好用的子代理,就通过 plugins 同步给团队。这样三个月下来,你的.claude/目录会变成一份活的工程规范,新同事入职第一天跑一遍 team.install 就能拥有和你一样的环境。
如果你打算把 Claude Code 用在长期编码任务或者 Agent 开发上,Coding Plan 会比按量调用更划算,适合持续性的开发场景:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite
最后给一个实用技巧:CLAUDE.md 不要一次写太满,先写最常重复的三五条规范,用一周后再补充。写太多反而会让模型在每次会话里加载过多无关上下文,拖慢响应。skills 也一样,从你最常做的那一类任务开始,一个文件一个文件加。ADK 这套东西的价值不在于一次配全,而在于持续积累。