阿猫的博客

阿猫的博客

Clauce Code 使用第三方 API 并优雅地完成多个供应商切换(如 Kimi K2等)

2025-07-17

2025-08-06 更新:支持 kimi-k2-turbo-preview;优化环境变量逻辑;支持 claude 的默认命令

Claude Code 除了登录 Claude 账号使用,还可以通过设定 ANTHROPIC_BASE_URLANTHROPIC_AUTH_TOKEN / ANTHROPIC_API_KEY 来使用第三方的 API 或者其他兼容 Anthropic 接口格式的模型。

一般的使用方式:

ANTHROPIC_BASE_URL=<YOUR_URL> ANTHROPIC_AUTH_TOKEN=<YOUR_TOKEN> claude

也有用以下这种的,不建议,会把环境变量留在当前会话里:

export ANTHROPIC_BASE_URL=<YOUR_URL>; export ANTHROPIC_AUTH_TOKEN=<YOUR_TOKEN>; claude

于是我们可以写一个简单的 zsh 脚本来实现切换多个供应商的功能。

这个脚本也发布在 GitHub gist

function claude() {
    # 定义不同服务的配置
    local base_url=""
    local auth_token=""
    local api_key=""
    local model=""
    local small_fast_model=""
  
    case "$1" in
        "kimi")
            base_url="https://api.moonshot.cn/anthropic"
            auth_token="YOUR_AUTH_TOKEN"
            model="kimi-k2-turbo-preview"
            small_fast_model="kimi-k2-turbo-preview"
            shift
            ;;
        "aihubmix")
            base_url="https://aihubmix.com"
            api_key="YOUR_API_KEY"
            shift
            ;;
        "anthropic"|"")
            # 默认或显式指定 anthropic
            base_url="https://api.anthropic.com"
            auth_token="YOUR_ANTHROPIC_API_TOKEN"
            if [[ "$1" == "anthropic" ]]; then
                shift
            fi
            ;;
        *)
            # 如果第一个参数不在case里,那就是它原本的参数,照样运行
            # 不设置任何环境变量,直接传递所有参数给claude命令
            command claude "$@"
            return 0
            ;;
    esac
  
    # 构建环境变量字符串
    local env_vars=""
  
    # 设置基础URL
    if [[ -n "$base_url" ]]; then
        env_vars="$env_vars ANTHROPIC_BASE_URL=\"$base_url\""
    fi
  
    # 设置认证token
    if [[ -n "$auth_token" ]]; then
        env_vars="$env_vars ANTHROPIC_AUTH_TOKEN=\"$auth_token\""
    fi
  
    # 设置API key
    if [[ -n "$api_key" ]]; then
        env_vars="$env_vars ANTHROPIC_API_KEY=\"$api_key\""
    fi
  
    # 设置model环境变量
    if [[ -n "$model" ]]; then
        env_vars="$env_vars ANTHROPIC_MODEL=\"$model\""
    fi
  
    # 设置small_fast_model环境变量
    if [[ -n "$small_fast_model" ]]; then
        env_vars="$env_vars ANTHROPIC_SMALL_FAST_MODEL=\"$small_fast_model\""
    fi
  
    # 设置环境变量并调用实际的 claude 命令
    if [[ -n "$env_vars" ]]; then
        eval "$env_vars command claude \"\$@\""
    else
        command claude "$@"
    fi
}

使用时,只需要输入 claude kimi 或者 claude aihubmix 就可以切换不同的供应商,同时还能支持 claude 原来的各种命令参数。

第三方渠道推荐

gaccode

通过按 Token 计数的方式使用 Claude Code 非常贵,一次对话可能就要消耗掉五六刀。我目前自己在用的是 gaccode,它提供包月的方式,每天有一定的积分配额,且每天可以申请恢复一次。使用方式非常简单,能获得跟官方的 Claude Code 完全一样的体验。

只需要在上面的配置中加上下面的内容,然后运行 claude gaccode 即可。

        "gaccode")
            base_url="https://gaccode.com/claudecode"
            api_key="YOUR_API_KEY"
            shift
            ;;

你可以通过我的链接注册来获得一些免费的 10000 积分,如果你需要购买月卡,可以添加我的微信 _3verest,备注 gaccode 即可。

限时优惠:原价 ¥299,特价 ¥289,交个朋友。

其他方式

这种方式只能支持 Anthropic 接口格式的 API,如果你的供应商是 OpenAI 格式的,可以使用 musistudio/claude-code-router这个项目,同时还支持指定不同情况下使用的模型。但是毕竟这个方式是通过逆向接口、本地起代理来实现的,用起来并非 Claude Code 正宗的体验,也不是很优雅。

通过我这种方法,如果使用 aihubmix 或者 anyrouter 这种支持 Anthropic 接口格式的服务,就可以获得正宗的 Claude Code 体验啦。需要注意他们对应的接口不一定跟 OpenAI 格式的相同,具体可以参考使用文档。另外,aihubmix 使用 ANTHROPIC_API_KEY 而不是 ANTHROPIC_AUTH_TOKEN,脚本里已经做了兼容。

References

Claude Code settings - Anthropic
Kimi K2 详测|超强代码和 Agent 能力!内附 Claude Code 邪修教程
AiHubMix Documentation Hub