目标

把本机 cc-switch(~/.cc-switch,SQLite 存储)里 Claude CLI / Codex 的 API Key 导入本地 new-api(端口 8318),new-api 作为统一网关做协议映射,替代 cc-switch 本地代理。

cc-switch 数据模型(已实测)

  • 数据在 C:\Users\<user>\.cc-switch\cc-switch.db,SQLite。
  • providers 表:id, app_type(claude/codex/...), name, settings_config(JSON), meta(JSON), is_current。
  • 当前激活:settings.json 的 currentProviderClaude / currentProviderCodex(uuid)。
  • 协议映射规则:meta.apiFormat 字段(cc-switch 本地代理 127.0.0.1:15721 按此做 Anthropic/Responses → 上游协议转换)。常见值:

    • openai_chat → 上游是 OpenAI chat/completions 兼容
    • openai_responses → 上游是 OpenAI Responses API 兼容
    • anthropic → 上游原生 Anthropic
  • Claude provider 凭据在 settings_config.env.ANTHROPIC_BASE_URL / ANTHROPIC_AUTH_TOKEN / ANTHROPIC_MODEL。
  • Codex provider 凭据在 settings_config.auth.OPENAI_API_KEY + config(TOML 里的 base_url、wire_api、model)。

导入 new-api 的步骤

  1. 先登录拿 token(new-api 的 /api/setup 初始化 root;若已有 root 但不知密码,可改 SQLite one-api.db 的 users.password 为新的 bcrypt hash 再登录)。
  2. 建渠道(POST /api/channel/,嵌套结构 {"mode":"single","channel":{...}}):

    • Claude 上游(apiFormat=openai_chat)→ new-api 渠道 type: 1(OpenAI),base_url 填映射后协议地址,models 填 ANTHROPIC_MODEL。
    • Codex 上游(apiFormat=openai_responses)→ new-api 渠道 type: 1(OpenAI)。
    坑:OpenAI 类型渠道 new-api 会自动拼 /v1/chat/completions,所以 base_url 不能带 /v1 结尾(如 https://api.tirayai.com),否则报 Invalid URL (POST /v1/v1/chat/completions)。
  3. 更新渠道(PUT /api/channel/)是扁平结构(channel 字段直接平铺,无 mode/channel 包裹),且不能带 status 字段(源码显式拒绝,报 Invalid parameters)。
  4. 建 token(POST /api/token/,扁平结构 {name, unlimited_quota:true, expired_time:-1});完整 key 用 POST /api/token/:id/key 取(列表/详情返回掩码)。
  5. 端到端验证(都用 Authorization: Bearer sk-...):

    # Anthropic 协议(Claude CLI 用)
    curl -X POST http://localhost:8318/v1/messages -H "Authorization: Bearer sk-XXX" \
      -d '{"model":"deepseek-v4-flash","max_tokens":64,"messages":[{"role":"user","content":"hi"}]}'
    # Responses 协议(Codex 用)
    curl -X POST http://localhost:8318/v1/responses -H "Authorization: Bearer sk-XXX" \
      -d '{"model":"gpt-5.6-terra","input":"hi","max_output_tokens":64}'

本机已配置实例(2026-08)

  • 管理端:http://localhost:8318,账号 admin(密码已重置,见备注)。
  • 调用 token:sk-kV3AbxROoOyDcOhv1DEaWkoDsdittS3lly55H5XqIk3bUjTA(unlimited)。
  • 渠道 1 cc-opencode-go (claude):type OpenAI,上游 https://opencode.ai/zen/go,模型 deepseek-v4-flash(映射自 openai_chat),测试 3.1s。
  • 渠道 2 cc-tiray (codex):type OpenAI,上游 https://api.tirayai.com,模型 gpt-5.6-terra(映射自 openai_responses),测试 2.1s。
  • 若要在 cc-switch 里切到 new-api:Claude provider 设 ANTHROPIC_BASE_URL=http://127.0.0.1:8318 + ANTHROPIC_AUTH_TOKEN=sk-kV3A...;Codex provider 设 base_url=http://127.0.0.1:8318/v1 + wire_api=responses + key。

相关概念

  • New API 本地安装 (Windows).md):new-api 安装与端口定制。
  • cc-switch:管理 Claude Code / Codex 配置切换的桌面工具,本地代理 15721 做协议映射转发。

本文归档于个人知识库 · 领域:CS & AI · 模块:04 Project_CS_AI/AI apps