📑 目录(点击展开)
coding-proxy 是一个面向 Claude Code 的多**供应商(vendor)**智能代理服务。它在 Claude Code 和 API 供应商之间充当透明代理,具备以下核心能力:
- N-tier 自动故障转移(failover):支持多层供应商链式降级(默认活跃链路:智谱 → Anthropic → Copilot;Antigravity 默认禁用),恢复后自动切回
- 9 种供应商支持:Anthropic Claude、GitHub Copilot、Google Antigravity、智谱 GLM、MiniMax、阿里 Qwen、小米 MiMo、Kimi、豆包 Doubao
- 模型名称映射:自动将 Claude 模型名转换为各供应商对应的实际模型名
- 格式双向转换:自动转换 Anthropic ↔ Gemini 格式,支持非 Anthropic 兼容供应商
- Token 用量追踪与定价统计:记录每次请求的 Token 消耗、供应商选择、响应时间等指标;支持按 (vendor, model) 配置四维定价($ / ¥)
- 弹性设施保护:每层供应商独立配备熔断器(Circuit Breaker)、滑动窗口配额守卫(Quota Guard)(支持日级与周级双窗口)、Rate Limit 精确截止控制
- OAuth 认证管理:内置 GitHub Device Flow 与 Google OAuth 登录流程,支持运行时重认证与凭证自动刷新
- Web 可视化看板:内置 Dashboard 提供流量、用量、故障转移等指标的实时监控
graph TD
subgraph Client["客户端"]
CC["Claude Code"]
end
subgraph Proxy["coding-proxy<br/>FastAPI 代理层"]
Router["RequestRouter<br/>路由引擎"]
Mapper["ModelMapper<br/>模型映射"]
end
subgraph Tiers["N-tier 降级链路"]
direction LR
T0["Tier 0: 智谱 GLM<br/><span style='color:#2ecc71'>中间层</span>"]
T1["Tier 1: Anthropic<br/><span style='color:#f39c12'>中间层</span>"]
T2["Tier 2: Copilot<br/><span style='color:#f39c12'>中间层</span>"]
T3["Tier 3: Antigravity<br/><span style='color:#f39c12'>中间层</span>"]
end
CC -->|"POST /v1/messages"| Router
Router --> Mapper
Router --> T0
T0 -->|"故障转移"| T1
T1 -->|"故障转移"| T2
T2 -->|"故障转移"| T3
style Client fill:#2c3e50,color:#fff
style Proxy fill:#3498db,color:#fff
style T0 fill:#1a5276,color:#fff
style T1 fill:#1a5276,color:#fff
style T2 fill:#1a5276,color:#fff
style T3 fill:#1a5276,color:#fff
正常情况下,coding-proxy 将请求透传到 Tier 0(默认为智谱 GLM)。当检测到限流、配额耗尽或服务过载等错误时,按优先级链自动降级到下一层供应商。每层独立配备熔断器和配额守卫——未配置 circuit_breaker 的 vendor 自动成为终端层,始终接受请求且不触发进一步故障转移。供应商恢复后,代理会自动尝试切回更高优先级的层级。整个过程对用户透明。
tiers链路可通过配置自定义,不限于上图所示的 4 层。详见 供应商配置 — tiers。
每个请求经过 规范化 → 遍历 Tier 链 → 能力门控 → 三层恢复门控(Rate Limit / 熔断器 / 配额守卫)→ 发送请求 → 错误分类 的完整链路。
详细的请求生命周期流程图参见 架构文档 — 请求路由。
| 文档 | 说明 |
|---|---|
| 快速开始 | 环境要求、安装、最小配置、启动服务、Claude Code 集成 |
| 供应商配置 | 全部 9 种供应商配置详情、模型映射、定价 |
| CLI 命令参考 | start / status / usage / reset / auth 全部命令 |
| HTTP API 端点 | /v1/messages、health、status、reset、copilot、reauth、dashboard |
| Dashboard 看板 | Web 可视化看板功能与操作 |
| 监控·运维·排查 | 日志、用量统计、性能调优、常见场景、故障排查 |
| 配置字段参考 | 所有配置参数的完整字段定义(Single Source of Truth) |
| 架构设计文档 | 设计模式、熔断器状态机、配额守卫等架构细节 |
| 供应商模块文档 | Vendor 类层次结构与实现细节 |
| 请求路由文档 | 路由引擎工作原理 |
详细步骤参见 快速开始。
# 1. 安装
uv sync
# 2. 配置(仅需设置 API Key)
export ZHIPU_API_KEY="your-api-key-here"
cp config.default.yaml config.yaml
# 3. 启动
coding-proxy start
# 4. 配置 Claude Code
export ANTHROPIC_BASE_URL=http://127.0.0.1:3392
# 5. 验证
curl http://127.0.0.1:3392/health加载器先按以下顺序查找用户配置文件(找到第一个即停止):
--config参数指定的路径(最高优先级)./config.yaml(项目根目录)~/.coding-proxy/config.yaml(用户主目录)
找到用户配置后,以内置 config.default.yaml 为基础模板进行深度合并,用户配置覆盖模板默认值。未找到用户配置文件时,直接使用模板默认值。
vendors 以列表形式定义所有供应商及其弹性设施。支持 9 种供应商类型:
| 类型 | 类别 | 默认状态 |
|---|---|---|
anthropic |
直连 Anthropic | 启用 |
copilot |
协议转换(GitHub) | 启用(需 OAuth) |
antigravity |
协议转换(Google) | 禁用 |
zhipu |
原生 Anthropic 兼容 | 启用(Tier 0) |
minimax |
原生 Anthropic 兼容 | 禁用 |
alibaba |
原生 Anthropic 兼容 | 禁用 |
xiaomi |
原生 Anthropic 兼容 | 禁用 |
kimi |
原生 Anthropic 兼容 | 禁用 |
doubao |
原生 Anthropic 兼容 | 禁用 |
可选字段,显式指定故障转移时的供应商尝试顺序。默认值:
tiers: ["zhipu", "anthropic", "copilot", "antigravity"]详见 供应商配置 — tiers。
配置文件中可使用 ${VARIABLE_NAME} 语法引用环境变量:
- vendor: zhipu
api_key: "${ZHIPU_API_KEY}"启动时自动替换。如果环境变量未设置,保留原始文本。
auth:
token_store_path: "~/.coding-proxy/tokens.json"
# github_client_id: "..." # 可选,默认使用公开 ID
# google_client_id: "" # 可选,默认使用公开凭据
# google_client_secret: ""完整字段定义参见 配置字段参考 — AuthConfig。
server:
host: "127.0.0.1" # 设为 "0.0.0.0" 接受外部连接
port: 3392
database:
path: "~/.coding-proxy/usage.db"
logging:
level: "INFO" # DEBUG / INFO / WARNING / ERROR
# file: ".logs/coding-proxy.log" # 输出到文件
# max_bytes: 5242880 # 单文件 5 MB
# backup_count: 5 # 保留 5 个备份完整字段定义参见 配置字段参考。
coding-proxy 在 Claude Code 主链路 (/v1/messages) 之外,额外暴露 /api/{openai,gemini,anthropic}/** catch-all 透传通道,供直接调用 OpenAI / Gemini / Anthropic 官方 API 的客户端复用 proxy(认证头 Authorization / x-api-key / ?key= 全部由客户端透传,proxy 不保管凭据)。
native_api:
openai:
enabled: true # 默认开箱即用
base_url: "https://api.openai.com" # 或填入自选第三方代理
timeout_ms: 300000
connect_timeout_ms: 15000
gemini:
enabled: true
base_url: "https://generativelanguage.googleapis.com"
anthropic:
enabled: true
base_url: "https://api.anthropic.com"上游 base_url 三级优先级(env > yaml > 内置默认)由 NativeApiConfig._apply_env_overrides @model_validator(mode="after") 统一注入,空串/纯空白视作未设置:
| 变量名 | 方向(谁 → 谁) | 典型值 | 备注 |
|---|---|---|---|
ANTHROPIC_BASE_URL |
client → proxy | http://127.0.0.1:3392 |
Claude Code 等客户端指向本 proxy |
NATIVE_OPENAI_BASE_URL |
proxy → upstream | https://api.openai.com 或自选代理 |
覆写 OpenAI 上游 |
NATIVE_GEMINI_BASE_URL |
proxy → upstream | https://generativelanguage.googleapis.com 或自选代理 |
覆写 Gemini 上游 |
NATIVE_ANTHROPIC_BASE_URL |
proxy → upstream | https://api.anthropic.com 或自选代理 |
覆写原生 Anthropic 上游 |
ANTHROPIC_BASE_URL与NATIVE_ANTHROPIC_BASE_URL方向正交:前者是客户端指向 proxy(client → proxy),后者是 proxy 指向上游(proxy → upstream)。NATIVE_前缀用于彻底切分两者语义。
客户端用法示例:
# 1. 将 OpenAI SDK base_url 指向本 proxy
export OPENAI_BASE_URL="http://127.0.0.1:3392/api/openai/v1"
# 2. 或直接 curl
curl http://127.0.0.1:3392/api/openai/v1/chat/completions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{"model":"gpt-4o","messages":[{"role":"user","content":"ping"}]}'如需禁用某家 provider,将对应 enabled 改为 false 即可。完整字段定义参见 配置字段参考 — NativeApiConfig。
| 操作 | 命令 |
|---|---|
| 启动代理 | coding-proxy start |
| 查看状态 | coding-proxy status |
| 查看用量 | coding-proxy usage |
| 查看本周 | coding-proxy usage -w 1 |
| 查看本月 | coding-proxy usage -m 1 |
| 重置熔断器 | coding-proxy reset |
| 提升供应商 | coding-proxy reset -v anthropic |
| GitHub 登录 | coding-proxy auth login -p github |
| 重认证 | coding-proxy auth reauth github |
| 查看凭证 | coding-proxy auth status |
| Dashboard | 浏览器访问 http://127.0.0.1:3392/dashboard |
完整命令选项参见 CLI 命令参考。
| 术语 | 说明 |
|---|---|
| Vendor(供应商) | API 后端提供方,即 vendors 列表中的一个条目 |
| Tier(层级) | 一个 Vendor + 其关联弹性设施的路由单元 |
| Terminal Tier(终端层) | 未配置 circuit_breaker 的 Vendor,始终接受请求,不触发向下故障转移 |
| 故障转移(Failover) | 当前供应商不可用时自动切换到下一优先级供应商 |
| 熔断器(Circuit Breaker) | 连续失败达到阈值后暂时切断对该供应商的请求 |
| 配额守卫(Quota Guard) | 基于滑动窗口的 Token 用量预算管理,超限时跳过该供应商 |
| Rate Limit | 基于上游响应头的精确速率限制控制 |
| 模型映射(Model Mapping) | 将 Claude 模型名自动转换为各供应商实际模型名 |
| 原生 Anthropic 兼容(Native Anthropic Compatible) | 提供 Anthropic 兼容端点的供应商,仅需 api_key + base_url |