Skip to content

Claude Code 相关问题

Claude Code CLI 接入 AnyDoAPI 时的高频问题、排错与省钱技巧。

配置前先看

基础配置:Claude Code 配置 · CC Switch 快速上手

令牌分组:cc-max / cc-max-open(详见 令牌分组介绍

本页目录

章节你可能在找
配置与登录VS Code 插件、无法连接 Anthropic、401
费用与 Prompt Cache 优化归因 Header、额度暴涨、模型分工
常用命令CLI / 会话内命令速查
上下文与使用建议长对话变差、压缩策略

配置与登录

如何在 VS Code Claude Code 插件中使用 AnyDoAPI?

Claude Code 2.0 起,VS Code 插件可能强制 OAuth 登录。中转站用户需额外写入 config.json 绕过。

前提:本机 claude CLI 已能正常对话。

bash
# Win + R 打开配置目录
%userprofile%\.claude
bash
~/.claude

若目录中没有 config.json,请手动创建并写入:

json
{
  "primaryApiKey": "AnyDoAPI"
}

说明

primaryApiKey 可为任意字符串,只用于跳过强制登录检查。真正的令牌仍在 settings.jsonenv 中配置。

保存后重启 VS Code 即可。

Claude Code 无法连接到 Anthropic 服务?

首次安装后启动 claude 若出现类似报错:

text
Unable to connect to Anthropic services
Failed to connect to api.anthropic.com: ERR BAD REQUEST
Please check your internet connection and network settings.

或要求登录 Anthropic 账号,通常是因为尚未跳过官方 onboarding。按系统执行:

powershell
powershell -Command "$f='%USERPROFILE%\.claude.json';$j=Get-Content $f|ConvertFrom-Json;$j|Add-Member -NotePropertyName 'hasCompletedOnboarding' -NotePropertyValue $true -Force;$j|ConvertTo-Json|Set-Content $f"
bash
jq '. + {"hasCompletedOnboarding": true}' ~/.claude.json > /tmp/tmp.json && mv /tmp/tmp.json ~/.claude.json

提示

macOS 若提示找不到 jq,可先执行 brew install jq。 也可用 CC Switch 开启「跳过 Claude Code 初次安装确认」。

完成后重启 Claude Code CLI。

推荐的 settings.json 基线配置

~/.claude/settings.json(Windows:%userprofile%\.claude\settings.json)写入:

json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://anydoapi.com",
    "ANTHROPIC_AUTH_TOKEN": "xxx",
    "CLAUDE_CODE_DISABLE_1M_CONTEXT": "1",
    "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
    "CLAUDE_CODE_DISABLE_TERMINAL_TITLE": "1",
    "CLAUDE_CODE_ATTRIBUTION_HEADER": "0",
    "DISABLE_TELEMETRY": "1",
    "DISABLE_ERROR_REPORTING": "1"
  }
}

无科学上网时,可将 ANTHROPIC_BASE_URL 换成 https://api-edge.anydoapi.com

注意

ANTHROPIC_BASE_URL 不要/v1。令牌请替换 xxx,分组使用 cc-max / cc-max-open

CLAUDE_CODE_ATTRIBUTION_HEADER=0 是中转站用户最重要的省钱配置,详见下方 费用与 Prompt Cache 优化

ANTHROPIC_API_KEY 和 ANTHROPIC_AUTH_TOKEN 用哪个?

走 AnyDoAPI 中转时,优先使用 ANTHROPIC_AUTH_TOKEN。不要同时设置两个,以免鉴权行为混乱。

报 401 Invalid bearer token?
  1. 确认 settings.json 里的令牌未过期、复制完整
  2. 确认分组为 Claude 专用分组
  3. 若刚用 CC Switch 切换过供应商,重启终端 / VS Code 后再试
  4. 检查本机是否另有旧的 ANTHROPIC_API_KEY / ANTHROPIC_AUTH_TOKEN 环境变量覆盖了配置

费用与 Prompt Cache 优化

单条最重要的配置

接入 AnyDoAPI 时,请务必设置:

bash
CLAUDE_CODE_ATTRIBUTION_HEADER=0

社区实测:开启前后单次费用可降约 90%,首包延迟从约 17 秒回到约 2 秒。不设这项,后面的省钱技巧效果都会大打折扣。

为什么必须设置 CLAUDE_CODE_ATTRIBUTION_HEADER=0?

Claude Code 2.1.36 起,会在每次请求的 system prompt 开头注入动态归因标识(x-anthropic-billing-header,内含随机 cch 字段)。

Anthropic 官方能识别并处理它;但第三方中转会把这段文字当成 prompt 前缀的一部分。前缀每次都变,会导致:

  • Prompt Cache 无法命中,每次都要完整处理 system prompt
  • 费用最高可暴涨数倍到约 10 倍
  • 首包延迟明显变长(例如从约 2 秒变成约 17 秒)

关闭方式(写入 settings.jsonenv):

json
{
  "env": {
    "CLAUDE_CODE_ATTRIBUTION_HEADER": "0"
  }
}

也可用环境变量:

bash
export CLAUDE_CODE_ATTRIBUTION_HEADER=0
为什么额度消耗这么快?只用了 20 分钟就跑完?

额度不按时间线性扣除,主要取决于:

因素影响
模型档位Opus ≫ Sonnet ≫ Haiku
上下文长度长对话每轮都会带上历史,费用叠加
Prompt Cache 是否命中未命中时,大段 system / 项目上下文按全价计
非必要流量遥测、标题更新等多余请求也会耗额度
任务粒度大而笼统的任务更容易反复读文件、反复试错

优先检查清单:

  1. 是否已设 CLAUDE_CODE_ATTRIBUTION_HEADER=0
  2. 是否已设 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
  3. 是否长时间挂着超大上下文会话不 /compact / 不开新会话
  4. 是否全程用最高档模型处理简单问题
Prompt Cache 实际怎么用?为什么感觉没省钱?

缓存命中的 token 通常只收正常输入价的约 10%(具体以控制台 / 模型广场计价为准)。

常见「感觉没省钱」原因:

  1. 没关归因 Header — 前缀每次变化,Cache 永远打不中(见上一题)
  2. 频繁改 system / CLAUDE.md 前缀 — 前缀一变,旧缓存失效
  3. 开新会话过勤 — 冷启动要重新写缓存;过频切换会话会削弱收益
  4. subagent 缓存 TTL 较短 — 长任务里子代理容易丢缓存,需合理拆分
  5. 上下文无意义膨胀 — 把无关大文件、日志反复塞进对话

建议验证方式:在 Claude Code 内用 /cost/usage 观察用量;理想情况下连续对话中,缓存读取应明显高于全价输入。

Sonnet / Opus / Haiku 怎么分工最省钱?
模型适合场景省钱建议
Haiku摘要、简单改写、格式整理、快速问答日常杂活优先
Sonnet大多数编码、重构、排错(默认主力)主力模型
Opus复杂架构决策、疑难 bug、多模块联动按需升级,用完切回

实操建议:

  • 默认用 Sonnet;卡住再临时 /model 切 Opus
  • 简单任务不要用 Opus「杀鸡」
  • 可在 settings.json 中为不同角色配置默认小模型,避免全程高档位
CLAUDE.md 写多长合适?写了规则也不遵守?

建议:

  1. 先短后长:先写 20–50 行真正会反复用到的硬约束(语言、目录结构、禁止事项)
  2. 可执行、可验证:写成「必须 / 禁止 + 例子」,少写空泛口号
  3. 分层放置:全局规则放用户级;项目特有规则放仓库根目录 CLAUDE.md;子目录只写该模块差异
  4. 避免前后矛盾:互相冲突的规则会让模型表现不稳定
  5. 定期修剪:过时规则会占用上下文并干扰 Cache 前缀稳定性

若规则「不生效」,优先检查:是否在错误目录、是否被更长历史对话淹没、是否与权限 / Hooks 冲突。


常用命令

命令功能说明
claude在当前目录启动交互式 REPL
claude "解释这个项目"启动 REPL 并带上初始问题
claude -p "解释这个函数"一次性问答(print 模式),适合脚本 / CI
cat logs.txt | claude -p "总结错误"管道喂入文件或命令输出做总结
claude -c继续当前目录最近一次会话
claude -c -p "检查类型错误"在最近会话上下文中执行一次性请求
claude -r "abc123" "把这个 PR 完成"通过会话 ID 恢复指定会话
claude update将 CLI 更新到最新版本
claude mcp管理 MCP 服务器
claude --add-dir ../apps ../lib额外添加可访问的代码目录
claude --model sonnet指定会话使用的模型
claude --verbose打开详细日志,便于调试
claude --append-system-prompt "始终使用 TypeScript"追加自定义系统提示
claude -p "生成接口文档" --output-format jsonJSON 格式输出,便于脚本解析
claude --dangerously-skip-permissions跳过权限确认(高风险,仅信任环境使用)

会话内常用:/compact · /clear · /context · /model · /cost · /usage


上下文与使用建议

长对话后回答变差?

上下文过长时模型更容易前后矛盾。建议:

  1. 把大任务拆成小步骤
  2. 关键节点开新会话,只携带必要上下文
  3. 需要压缩时用 /compact,压缩后核对关键约束是否仍在
还有哪些能顺便省钱的配置?
json
{
  "env": {
    "CLAUDE_CODE_DISABLE_1M_CONTEXT": "1",
    "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
    "CLAUDE_CODE_DISABLE_TERMINAL_TITLE": "1",
    "DISABLE_TELEMETRY": "1",
    "DISABLE_ERROR_REPORTING": "1"
  }
}
变量作用
CLAUDE_CODE_DISABLE_1M_CONTEXT=1切回更可控的 200K 上下文,降低无意中的超长上下文消耗
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1关闭非必要后台请求
CLAUDE_CODE_DISABLE_TERMINAL_TITLE=1减少终端标题相关额外开销
DISABLE_TELEMETRY=1关闭遥测
DISABLE_ERROR_REPORTING=1关闭错误上报

相关链接