项目地址:https://github.com/router-for-me/CLIProxyAPI
教程开始
因教程代码比较长,所以就折叠起来了,点击下方展开即可查看
教程内容-点击展开
创建 docker-compose.yml 文件填写以下内容
version: '3.8'
services:
cli-proxy-api:
image: eceasy/cli-proxy-api:latest
container_name: cli-proxy-api
# 端口映射:与 config.yaml 中的 port 保持一致
ports:
- "8317:8317"
# 挂载配置:文件→文件,目录→目录(完全匹配配置文件路径)
volumes:
- ./config.yaml:/CLIProxyAPI/config.yaml
- ./auth-dir:/root/.cli-proxy-api
- ./logs:/CLIProxyAPI/logs
# 容器退出自动重启
restart: always
# 使用 root 用户运行,避免权限问题
user: root
# 环境变量配置
environment:
- TZ=Asia/Shanghai
# 强制指定配置文件路径(双重保障)
- CONFIG_FILE=/CLIProxyAPI/config.yaml
# 强制指定认证目录(匹配 config.yaml 中的配置)
- AUTH_DIR=/root/.cli-proxy-api同目录创建 onfig.yaml 文件,填写以下内容并修改 secret-key 密码位置,注意修改 secret-key: "",填写自己的密码,启动后会自动加密
# 服务器绑定主机/接口,默认空字符串同时绑定 IPv4/IPv6。
# 使用 "127.0.0.1" 或 "localhost" 可限制仅本机访问。
host: ""
# 服务器端口
port: 8317
# TLS 设置:启用后使用提供的证书与私钥监听 HTTPS。
tls:
enable: false
cert: ""
key: ""
# 管理 API 设置
remote-management:
# 是否允许远程(非 localhost)访问管理接口。
# 为 false 时仅允许 localhost,仍需管理密钥。
allow-remote: true
# 管理密钥。若填写明文,启动时会自动哈希后生效。
# 所有管理请求(包括本地)都需要该密钥。
# 留空则完全禁用管理 API(所有 /v0/management 路由返回 404)。
secret-key: ""
# 为 true 时禁用内置管理面板资源下载与路由。
disable-control-panel: false
# 管理面板的 GitHub 仓库,可填写仓库 URL 或 releases API URL。
panel-github-repository: "https://github.com/router-for-me/Cli-Proxy-API-Management-Center"
# 认证目录(支持 ~ 展开为主目录)
auth-dir: "~/.cli-proxy-api"
# 用于请求认证的 API 密钥
api-keys:
- "your-api-key-1"
- "your-api-key-2"
- "your-api-key-3"
# 是否启用调试日志
debug: false
# 为 true 时禁用高开销 HTTP 中间件以降低高并发下的内存占用
commercial-mode: false
# 为 true 时将应用日志写入滚动文件而非 stdout
logging-to-file: false
# 日志目录的最大总大小(MB);超过后会删除最旧的日志。0 表示不限制。
logs-max-total-size-mb: 0
# 为 false 时禁用内存用量统计聚合
usage-statistics-enabled: false
# 代理地址。支持 socks5/http/https,例如 socks5://user:pass@192.168.1.1:1080/
proxy-url: ""
# 为 true 时,无前缀模型请求只会匹配无前缀凭据(除非前缀与模型名相同)。
force-model-prefix: false
# 请求重试次数;当响应码为 403/408/500/502/503/504 时重试。
request-retry: 3
# 冷却中的凭据等待的最长时间(秒),超过则触发重试。
max-retry-interval: 30
# 配额超限时的处理
quota-exceeded:
switch-project: true # 配额超限时是否自动切换其他项目
switch-preview-model: true # 配额超限时是否自动切换预览模型
# 多凭据匹配时的路由策略
routing:
strategy: "round-robin" # 轮询(默认)或 fill-first
# 是否为 WebSocket API (/v1/ws) 启用认证
ws-auth: false
# 当 > 0 时,为非流式响应每隔 N 秒发送空行以防止空闲超时
nonstream-keepalive-interval: 0
# 当为 true 时,为 Codex API 请求启用官方 Codex 指令注入
# 当为 false(默认)时,CodexInstructionsForModel 立即返回而不修改
codex-instructions-enabled: false
# 流式传输行为(SSE keep-alive 与安全启动重试)
streaming:
keepalive-seconds: 15 # 默认:0(禁用);≤0 关闭 keep-alive。
bootstrap-retries: 1 # 默认:0(禁用);首字节前的重试次数。
# Gemini API 密钥
gemini-api-key:
- api-key: "AIzaSy...01"
prefix: "test" # 可选:需要以 "test/gemini-3-pro-preview" 访问
base-url: "https://generativelanguage.googleapis.com"
headers:
X-Custom-Header: "custom-value"
proxy-url: "socks5://proxy.example.com:1080"
models:
- name: "gemini-2.5-flash" # 上游模型名
alias: "gemini-flash" # 客户端别名
excluded-models:
- "gemini-2.5-pro" # 精确排除
- "gemini-2.5-*" # 前缀通配
- "*-preview" # 后缀通配
- "*flash*" # 子串通配
- api-key: "AIzaSy...02"
# Codex API 密钥
codex-api-key:
- api-key: "sk-atSM..."
prefix: "test" # 可选:需以 "test/gpt-5-codex" 访问
base-url: "https://www.example.com" # 自定义 Codex 端点
headers:
X-Custom-Header: "custom-value"
proxy-url: "socks5://proxy.example.com:1080" # 可选:单独代理
models:
- name: "gpt-5-codex" # 上游模型名
alias: "codex-latest" # 客户端别名
excluded-models:
- "gpt-5.1" # 精确排除
- "gpt-5-*" # 前缀通配
- "*-mini" # 后缀通配
- "*codex*" # 子串通配
# Claude API 密钥
claude-api-key:
- api-key: "sk-atSM..." # 使用官方 Claude API 时无需 base-url
- api-key: "sk-atSM..."
prefix: "test" # 可选:需以 "test/claude-sonnet-latest" 访问
base-url: "https://www.example.com" # 自定义 Claude 端点
headers:
X-Custom-Header: "custom-value"
proxy-url: "socks5://proxy.example.com:1080" # 可选:单独代理
models:
- name: "claude-3-5-sonnet-20241022" # 上游模型名
alias: "claude-sonnet-latest" # 客户端别名
excluded-models:
- "claude-opus-4-5-20251101" # 精确排除
- "claude-3-*" # 前缀通配
- "*-thinking" # 后缀通配
- "*haiku*" # 子串通配
cloak: # 可选:为非 Claude Code 客户端进行请求伪装
mode: "auto" # "auto"(默认):仅当客户端不是 Claude Code 时伪装
# "always":始终应用伪装
# "never":从不应用伪装
strict-mode: false # false(默认):将 Claude Code 提示前置到用户系统消息
# true:删除所有用户系统消息,仅保留 Claude Code 提示
sensitive-words: # 可选:用零宽字符混淆的词汇
- "API"
- "proxy"
# OpenAI 兼容提供商
openai-compatibility:
- name: "openrouter" # 提供商名称,用于 UA 等
prefix: "test" # 可选:需以 "test/kimi-k2" 访问
base-url: "https://openrouter.ai/api/v1" # 提供商基础 URL
headers:
X-Custom-Header: "custom-value"
api-key-entries:
- api-key: "sk-or-v1-...b780"
proxy-url: "socks5://proxy.example.com:1080" # 可选:单独代理
- api-key: "sk-or-v1-...b781" # 无代理
models: # 提供商支持的模型
- name: "moonshotai/kimi-k2:free" # 上游模型名
alias: "kimi-k2" # 客户端别名
# Vertex API 密钥(Vertex 兼容端点,使用 API key + base URL)
vertex-api-key:
- api-key: "vk-123..." # x-goog-api-key 头
prefix: "test" # 可选前缀
base-url: "https://example.com/api" # 例如 https://zenmux.ai/api
proxy-url: "socks5://proxy.example.com:1080" # 可选单独代理
headers:
X-Custom-Header: "custom-value"
models: # 可选:别名到上游模型
- name: "gemini-2.5-flash" # 上游模型名
alias: "vertex-flash" # 客户端别名
- name: "gemini-2.5-pro"
alias: "vertex-pro"
# Amp 集成
ampcode:
# Amp CLI OAuth 与管理功能的上游地址
upstream-url: "https://ampcode.com"
# 可选:覆盖 Amp 上游 API Key(否则使用环境变量或文件)
upstream-api-key: ""
# 按客户端的上游 API Key 映射
# 将顶层 api-keys 中的客户端密钥映射到不同的 Amp 上游密钥。
# 若未匹配到则回退到 upstream-api-key。
upstream-api-keys:
- upstream-api-key: "amp_key_for_team_a" # 供这些客户端使用的上游密钥
api-keys: # 使用该上游密钥的客户端密钥
- "your-api-key-1"
- "your-api-key-2"
- upstream-api-key: "amp_key_for_team_b"
api-keys:
- "your-api-key-3"
# 是否将 Amp 管理路由 (/api/auth, /api/user 等) 仅限 localhost(默认 false)
restrict-management-to-localhost: false
# 是否在检查本地 API 密钥前强制执行模型映射(默认 false)
force-model-mappings: false
# Amp 模型映射:当请求的模型不可用时路由到本地可用模型
# 适用于 Amp CLI 请求不可用模型(如 Claude Opus 4.5)但本地有相似模型的情况
model-mappings:
- from: "claude-opus-4-5-20251101" # Amp 请求的模型
to: "gemini-claude-opus-4-5-thinking" # 路由到的可用模型
- from: "claude-sonnet-4-5-20250929"
to: "gemini-claude-sonnet-4-5-thinking"
- from: "claude-haiku-4-5-20251001"
to: "gemini-2.5-flash"
# 全局 OAuth 模型名称别名(按渠道)
# 这些别名同时用于模型列表和请求路由的模型 ID 重命名。
# 支持的渠道:gemini-cli、vertex、aistudio、antigravity、claude、codex、qwen、iflow。
# 注意:别名不适用于 gemini-api-key、codex-api-key、claude-api-key、openai-compatibility、vertex-api-key 或 ampcode。
# 您可以使用不同的别名重复相同的名称,以暴露多个客户端模型名称。
oauth-model-alias:
antigravity:
- name: "rev19-uic3-1p"
alias: "gemini-2.5-computer-use-preview-10-2025"
- name: "gemini-3-pro-image"
alias: "gemini-3-pro-image-preview"
- name: "gemini-3-pro-high"
alias: "gemini-3-pro-preview"
- name: "gemini-3-flash"
alias: "gemini-3-flash-preview"
- name: "claude-sonnet-4-5"
alias: "gemini-claude-sonnet-4-5"
- name: "claude-sonnet-4-5-thinking"
alias: "gemini-claude-sonnet-4-5-thinking"
- name: "claude-opus-4-5-thinking"
alias: "gemini-claude-opus-4-5-thinking"
# gemini-cli:
# - name: "gemini-2.5-pro" # 该渠道下的原始模型名
# alias: "g2.5p" # 客户端可见别名
# fork: true # 为 true 时保留原名并同时增加别名作为额外模型(默认:false)
# vertex:
# - name: "gemini-2.5-pro"
# alias: "g2.5p"
# aistudio:
# - name: "gemini-2.5-pro"
# alias: "g2.5p"
# claude:
# - name: "claude-sonnet-4-5-20250929"
# alias: "cs4.5"
# codex:
# - name: "gpt-5"
# alias: "g5"
# qwen:
# - name: "qwen3-coder-plus"
# alias: "qwen-plus"
# iflow:
# - name: "glm-4.7"
# alias: "glm-god"
# OAuth 提供商的模型排除列表
oauth-excluded-models:
gemini-cli:
- "gemini-2.5-pro" # 精确排除
- "gemini-2.5-*" # 前缀通配
- "*-preview" # 后缀通配
- "*flash*" # 子串通配
vertex:
- "gemini-3-pro-preview"
aistudio:
- "gemini-3-pro-preview"
antigravity:
- "gemini-3-pro-preview"
claude:
- "claude-3-5-haiku-20241022"
codex:
- "gpt-5-codex-mini"
qwen:
- "vision-model"
iflow:
- "tstars2.0"
# 可选的 payload 配置
payload:
default: # 默认规则仅在 payload 中缺少参数时设置
- models:
- name: "gemini-2.5-pro" # 支持通配符(如 "gemini-*")
protocol: "gemini" # 将规则限制为特定协议,选项:openai、gemini、claude、codex、antigravity
params: # JSON 路径(gjson/sjson 语法)-> 值
"generationConfig.thinkingConfig.thinkingBudget": 32768
default-raw: # 默认原始规则在缺少时使用原始 JSON 设置参数(必须是有效的 JSON)
- models:
- name: "gemini-2.5-pro" # 支持通配符(如 "gemini-*")
protocol: "gemini" # 将规则限制为特定协议,选项:openai、gemini、claude、codex、antigravity
params: # JSON 路径(gjson/sjson 语法)-> 原始 JSON 值(字符串按原样使用,必须是有效的 JSON)
"generationConfig.responseJsonSchema": "{\"type\":\"object\",\"properties\":{\"answer\":{\"type\":\"string\"}}}"
override: # 覆盖规则总是设置参数,覆盖任何现有值
- models:
- name: "gpt-*" # 支持通配符(如 "gpt-*")
protocol: "codex" # 将规则限制为特定协议,选项:openai、gemini、claude、codex、antigravity
params: # JSON 路径(gjson/sjson 语法)-> 值
"reasoning.effort": "high"
override-raw: # 覆盖原始规则总是使用原始 JSON 设置参数(必须是有效的 JSON)
- models:
- name: "gpt-*" # 支持通配符(如 "gpt-*")
protocol: "codex" # 将规则限制为特定协议,选项:openai、gemini、claude、codex、antigravity
params: # JSON 路径(gjson/sjson 语法)-> 原始 JSON 值(字符串按原样使用,必须是有效的 JSON)
"response_format": "{\"type\":\"json_schema\",\"json_schema\":{\"name\":\"answer\",\"schema\":{\"type\":\"object\"}}}"
filter: # 过滤规则从 payload 中删除指定的参数
- models:
- name: "gemini-2.5-pro" # 支持通配符(如 "gemini-*")
protocol: "gemini" # 将规则限制为特定协议,选项:openai、gemini、claude、codex、antigravity
params: # 要从 payload 中删除的 JSON 路径(gjson/sjson 语法)
- "generationConfig.thinkingConfig.thinkingBudget"
- "generationConfig.responseJsonSchema"配置完成后
docker-compose up -d等待镜像构建完成,访问 ip:8317/management.html# 即可

接口使用方法
ip:8317/v1/chat/completions// 聊天补全接口(OpenAI 风格)
ip:8317/v1/completions// 文本补全接口
ip:8317/v1/models// 模型列表接口一般来说直接在 ip:8317/v1 即可使用
功能特性
功能特性
为 CLI 模型提供 OpenAI/Gemini/Claude/Codex 兼容的 API 端点
新增 OpenAI Codex(GPT 系列)支持(OAuth 登录)
新增 Claude Code 支持(OAuth 登录)
新增 Qwen Code 支持(OAuth 登录)
新增 iFlow 支持(OAuth 登录)
支持流式与非流式响应
函数调用 / 工具支持
多模态输入(文本、图片)
多账户支持与轮询负载均衡(Gemini、OpenAI、Claude、Qwen 与 iFlow)
简单的 CLI 身份验证流程(Gemini、OpenAI、Claude、Qwen 与 iFlow)
支持 Gemini AIStudio API 密钥
支持 AI Studio Build 多账户轮询
支持 Gemini CLI 多账户轮询
支持 Claude Code 多账户轮询
支持 Qwen Code 多账户轮询
支持 iFlow 多账户轮询
支持 OpenAI Codex 多账户轮询
通过配置接入上游 OpenAI 兼容提供商(例如 OpenRouter)
可复用的 Go SDK
使用方法
因教程使用方法比较长,所以就折叠起来了,点击下方展开即可查看
使用方法-点击展开
添加 通用接口 点击添加提供商



添加完成点击保存即可,就可以直接去调用了,模型别名,可随便自定义什么名字都可以
PS:使用模型别名之,调用时要填写 自定义的模型名称,程序会自动轮询这些接口。
要注意,后台设置路由策略是 轮询。


免费白嫖的地址
(后期长期添加,希望大家可以走我的邀请)
【推荐】硅基流动 - https://cloud.siliconflow.cn/i/FJWbIGiq
可直接注册:阿里百炼 - 火山方舟 - 智谱 (glm-4.7-flash)-魔搭社区
注意付费模型设置要额度限额
示例图 - 这是我自己使用配置的,这样只需要调用 GLM-5 一个模型名字,就可以轮询这些添加的模型。
因图片比较长,所以就折叠起来了,点击下方展开即可查看
示例图-点击展开查看图片




案例


评论区