
1. 为什么你的 Claude Code 用两周就“变笨”了Claude Code 是 Anthropic 推出的终端级 AI 编程代理能直接读写项目文件、跑命令、改代码适合已经在用命令行做开发、想让 AI 真正“进项目”的人。但很多人装完第一天很爽两周后开始抱怨回答越来越飘、改代码不看规范、Token 消耗像开了闸。问题通常不在模型而在三件事没做CLAUDE.md 没写、MCP 没接、statusLine 没开。我见过最典型的场景一个五人前端小组每个人本地都装了 Claude Code但有人让它用 Vue 写法改 React 组件有人让它把any塞满 TypeScript 文件还有人一个下午烧掉大半额度却不知道花在哪。根因是 Claude Code 默认只认“当前对话”它不知道你们团队的代码规范、不知道项目结构约定、也看不到你钱包的实时水位。这篇手册就围绕这三个抓手展开用CLAUDE.md把团队规范固化进项目用 MCP 把外部工具链接进来用statusLine把 Token 消耗摆在眼前。同时给出通过 TaoToken 统一 Key 和 API 通道接入的完整配置骨架每一步都有可复制的命令和验证动作。读完你应该能搭起一套可复用、可交接的 Claude Code 工作流而不是每次换项目都从零调教。2. TaoToken 前置统一 Key 与 API 通道2.1 为什么要在 Claude Code 前面加一层通道Claude Code 默认走官方端点但团队协作时经常遇到几个现实问题多人共用一个 Key 不好管理、想切换不同模型要改环境变量、Token 用量分散在各人本地没法统一看。TaoToken 在这里扮演的是统一入口的角色——你拿到一个 Key配好一个 Base URLClaude Code 的所有请求都从这里走模型切换、用量观察、Key 轮换都在一处完成。需要先说明TaoToken 是合规的 API 聚合通道不是任何形式的网络代理工具配置过程只涉及环境变量和配置文件不涉及系统网络层改动。2.2 拿到 Key 并写入环境变量先去控制台创建 API Key控制台入口https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteKey 管理页https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite创建后复制 Key写入 shell 配置。macOS/Linux 用~/.zshrc或~/.bashrcWindows 用系统环境变量# macOS / Linux写入 ~/.zshrc export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_API_KEYsk-你的TaoToken密钥 # 让配置立即生效 source ~/.zshrc # 验证变量已写入 echo $ANTHROPIC_BASE_URL echo $ANTHROPIC_API_KEY | head -c 8# Windows PowerShell写入用户级环境变量 [Environment]::SetEnvironmentVariable(ANTHROPIC_BASE_URL, https://taotoken.net/api, User) [Environment]::SetEnvironmentVariable(ANTHROPIC_API_KEY, sk-你的TaoToken密钥, User) # 重开终端后验证 $env:ANTHROPIC_BASE_URL注意ANTHROPIC_BASE_URL只写到/api不要在后面拼/v1或具体路径Claude Code 会自己补全。写错会导致 404这是新手最常见的坑。2.3 用 settings.json 固化项目级配置环境变量是全局的但团队项目最好把配置写进项目里的.claude/settings.json这样别人 clone 下来就能用同一套规则。在项目根目录创建{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的TaoToken密钥 }, model: claude-sonnet-4-5, permissions: { allow: [ Bash(npm run lint), Bash(npm run test:*), Read(./src/**), Edit(./src/**) ], deny: [ Bash(rm -rf *), Read(./.env), Read(./secrets/**) ] } }这里做了三件事把通道地址和 Key 固定下来、指定默认模型、用permissions白名单控制它能碰什么。deny里挡住.env和secrets目录避免 AI 把密钥读进上下文——这一点在团队项目里比什么都重要。提示如果不想把 Key 提交进 Git把ANTHROPIC_API_KEY从 settings.json 里删掉只保留ANTHROPIC_BASE_URLKey 继续走各人本地环境变量。团队共享的是通道和规则不是密钥。3. CLAUDE.md把团队规范写进项目3.1 CLAUDE.md 到底解决什么问题Claude Code 每次启动会读取项目根目录的CLAUDE.md把它作为“项目记忆”注入上下文。没有它AI 只能靠猜有了它AI 每次都知道你们用什么框架、目录怎么分、命名什么风格、哪些命令不能跑。这是投入产出比最高的一步——写一次全组受益。3.2 一份可直接抄的 CLAUDE.md 骨架在项目根目录创建CLAUDE.md内容按“技术栈 → 结构 → 规范 → 命令 → 禁区”组织# 项目电商后台管理前端 ## 技术栈 - 框架React 18 TypeScript 5 - 构建Vite 5 - 样式Tailwind CSS 3 - 状态Zustand - 请求Axios 自封装 request.ts - 测试Vitest Testing Library ## 目录约定 - src/components/ 通用组件PascalCase 命名 - src/pages/ 页面级组件按路由分目录 - src/hooks/ 自定义 Hookuse 前缀 - src/api/ 接口封装一个模块一个文件 - src/types/ TypeScript 类型按领域拆分 ## 编码规范 1. 组件一律函数式 Hooks禁止 class 组件 2. 禁止使用 any类型不确定用 unknown 再收窄 3. 样式只用 Tailwind 类名不写内联 style 4. 接口请求统一走 src/api/request.ts不直接调 axios 5. 提交信息遵循 Conventional Commits ## 常用命令 - 开发npm run dev - 构建npm run build - 测试npm run test - 检查npm run lint npm run type-check ## 禁区 - 不要修改 vite.config.ts 的 base 配置 - 不要动 src/api/request.ts 的拦截器逻辑 - 不要引入新的 UI 库现有组件够用3.3 用 /init 生成初稿再人工打磨如果项目已经存在不用从零写。在项目根目录启动 Claude Code 后执行# 进入项目目录 cd ~/projects/ecommerce-admin # 启动 Claude Code claude # 在交互界面里执行初始化 /init/init会扫描项目结构、读package.json、识别技术栈生成一份CLAUDE.md初稿。实测下来它生成的目录约定和命令部分基本可用但编码规范和禁区必须人工补——AI 不知道你们团队踩过哪些坑。把初稿当脚手架规范部分自己填。3.4 验证 CLAUDE.md 是否生效写完后要验证它真的被读进去了。在 Claude Code 里问一个只有读了规范才知道的问题 我们这个项目组件用什么命名风格样式怎么写如果回答里出现“PascalCase”“Tailwind 类名”说明CLAUDE.md已生效。如果它开始泛泛而谈“通常建议……”说明没读到检查文件是否在项目根目录、文件名是否大小写正确必须是CLAUDE.md。4. MCP把外部工具链接进来4.1 MCP 是什么为什么值得接MCPModel Context Protocol是让 Claude Code 调用外部工具和服务的协议。默认情况下它只能读写本地文件、跑 shell 命令接上 MCP 后它可以查数据库 schema、读 Figma 设计稿、调内部 API 文档。对团队来说MCP 的价值是把散落在各处的上下文接进 AI 的工作台。4.2 在 settings.json 里声明 MCP ServerMCP 配置写在.claude/settings.json的mcpServers字段。下面是一个接本地文件系统和一个 HTTP 型服务的骨架{ mcpServers: { filesystem: { command: npx, args: [ -y, modelcontextprotocol/server-filesystem, /Users/yourname/projects/ecommerce-admin ] }, company-docs: { type: http, url: https://internal.example.com/mcp, headers: { Authorization: Bearer ${DOCS_TOKEN} } } } }filesystem是官方提供的本地文件服务company-docs是假设的内部文档服务。注意${DOCS_TOKEN}这种写法会从环境变量读取不要把 token 明文写进配置文件。4.3 验证 MCP 是否连通配置后重启 Claude Code用/mcp命令查看已加载的服务# 在 Claude Code 交互界面执行 /mcp正常输出会列出每个 server 的名称、状态和可用工具数。如果某个 server 显示failed先单独在终端跑一遍它的启动命令看报错# 手动测试 filesystem server 能否启动 npx -y modelcontextprotocol/server-filesystem /Users/yourname/projects/ecommerce-admin能正常启动说明配置没问题问题多半在 Claude Code 没读到 settings.json——检查文件路径是不是.claude/settings.json项目级或~/.claude/settings.json用户级。注意MCP 工具会扩大 AI 的操作范围。接数据库类 MCP 时务必用只读账号不要给它生产库的写权限。这是团队落地时最容易忽略的安全边界。5. statusLine让 Token 消耗看得见5.1 为什么必须开 statusLineClaude Code 默认不显示 Token 用量你只能等到额度告急才知道烧超了。statusLine是终端底部的一行状态栏可以实时显示当前模型、上下文占用、Token 消耗。开了它你每次敲回车前都能看到水位自然就会在上下文快满时主动/compact。5.2 配置 statusLine在.claude/settings.json里加statusLine字段{ statusLine: { type: command, command: input$(cat); model$(echo \$input\ | jq -r .model.display_name); used$(echo \$input\ | jq -r .context.used_tokens); total$(echo \$input\ | jq -r .context.max_tokens); pct$((used * 100 / total)); echo \[$model] ${used}/${total} (${pct}%)\ } }这段脚本从 Claude Code 传入的 JSON 里取出模型名和 Token 数据拼成一行显示。jq是解析 JSON 的工具macOS 用brew install jq装Ubuntu 用apt install jq。5.3 验证 statusLine 显示重启 Claude Code终端底部应该出现类似[Claude Sonnet 4.5] 45230/200000 (22%)随便问一个问题数字应该会跳动。如果没显示先确认jq已安装which jq # 应输出 /opt/homebrew/bin/jq 或 /usr/bin/jq再确认 settings.json 是合法 JSONcat .claude/settings.json | jq . # 无报错说明格式正确5.4 用 statusLine 数据反推优化动作看到水位后动作就明确了。占用超过 70% 时执行/compact压缩上下文超过 90% 时用/clear清空重来把关键结论写进CLAUDE.md或临时笔记。实测下来养成看 statusLine 的习惯后同样的任务 Token 消耗能降三成左右因为你会主动避免把整个大文件塞进上下文。6. 本篇常见错排查6.1 报错 401Key 无效或没读到现象是每次请求都返回401 Unauthorized。先确认环境变量echo $ANTHROPIC_API_KEY如果为空说明 shell 配置没生效重新source一次。如果 Key 有值但仍 401去 TaoToken 控制台确认 Key 没过期、没被禁用。还有一种情况是 settings.json 里的 Key 覆盖了环境变量且写错了检查两处是否一致。6.2 报错 404Base URL 写错404 Not Found几乎都是ANTHROPIC_BASE_URL拼错。正确写法是https://taotoken.net/api不要加/v1、不要加/messages。Claude Code 会自己在后面补路径你多写一段它就找不到。6.3 CLAUDE.md 不生效AI 回答里没有体现项目规范先确认文件名是CLAUDE.md而不是claude.md或CLAUDE.MD——Linux 和 macOS 区分大小写。再确认它在项目根目录不是src/里。最后在 Claude Code 里执行/memory查看当前加载的记忆文件列表能看到你的文件才算读进去了。6.4 MCP server 启动失败/mcp显示failed时先看是不是npx找不到包。手动跑一遍启动命令如果报command not found说明 Node.js 没装或版本太低。MCP 官方 server 一般要求 Node 18 以上node -v # 应输出 v18.x 或更高如果手动能启动但 Claude Code 里失败多半是 settings.json 的 JSON 格式有误用jq .验证一遍。6.5 statusLine 不显示或显示乱码不显示先查jq是否安装。显示乱码通常是终端不支持某些字符把脚本里的方括号和斜杠换成纯 ASCII 即可。如果数字一直是 0说明 Claude Code 版本太旧statusLine是较新版本才支持的功能升级到最新版再试。7. 下一步把工作流跑成习惯配置搭好只是起点真正让 Claude Code 好用的是日常习惯。我的做法是每个新项目第一件事就是写CLAUDE.md把这次踩的坑补进去每周看一次 statusLine 的消耗趋势找出最烧 Token 的操作类型MCP 按需接不用的及时从 settings.json 里删掉减少启动开销。如果你还在调模型和通道可以先去模型对话页试试不同模型的实际表现https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite 。如果准备把 Claude Code 长期用在日常编码和 Agent 任务上Coding Plan 的额度模型更适合持续使用https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite 。接入过程中遇到报错先翻接入文档对照参数https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite 大部分 401/404 问题文档里都有对应说明。