Aekor

Aekor
专注于用户阅读体验的响应式博客主题
  1. 首页
  2. Blog
  3. 正文

用 CLIProxyAPI + CPA Manager Plus 搭建 AI CLI 网关:统一接入多家模型服务

2026-01-13 81点热度 1人点赞 0条评论

最近两年,AI 编程工具像雨后小蘑菇一样越长越多:从 VS Code 里的 AI 插件,到 Cursor、Codex、Claude Code 这类独立工具,各家都有自己的认证方式、模型配置和用量记录。只用一个服务时还算轻松;一旦手里有多个模型提供商、多个账号,又想让不同 CLI 共用同一个 API 入口,配置文件、费用统计和故障排查很快就会搅成一团。更麻烦的是,Token 到底被哪个工具、哪个账号用掉了,往往也说不清楚。

我这次采用的思路,是用 CLIProxyAPI(下文简称 CPA)把多个 AI 提供商收进同一个入口,再用 CPA Manager Plus(下文简称 CPAMP)查看用量、费用与账号状态,最后借助 Cloudflare Tunnel 对外提供访问地址。这样一来,Codex、Claude Code 等工具都可以走同一套网关,日常不必反复切换 Provider 配置,用量也能看得明明白白,省心不少。

CLIProxyAPI 是一个面向 CLI 工具的代理服务,可提供 OpenAI、Anthropic、Gemini 等兼容接口,把多个模型提供商汇总为统一的 API Base URL,并按需分发多个 API Key。CPA Manager Plus 则负责持久化请求监控、汇总用量,并可巡检 Codex 账号状态。它带有独立管理面板,效果如下:

CPA Manager Plus 用量统计面板

先简单分清两个面板:CPA 自带的面板主要负责网关配置;CPAMP 更擅长用量分析、请求监控和账号巡检。它们都可以用 Docker 部署,职责互补,不会互相打架。

整体路线并不绕,跟着下面的步骤来搭积木就好,我们开工啦。

1. 配置需求与本次部署环境

先说清楚这套方案在做什么:CPA 与 CPAMP 并不会在服务器上运行大模型,它们承担的是 API 网关、协议兼容、认证、日志与用量统计。模型推理仍由上游服务商完成,所以服务器不需要显卡,CPU 和内存压力也比本地部署 LLM 小得多。主机资源主要花在请求转发、流式连接、SQLite 写入、日志记录和 Cloudflare Tunnel 上。若要接入 OpenAI、Anthropic 等海外服务,请把服务器放在能够稳定访问相应服务的地区,并自行确认当地网络条件及服务条款。

本文默认你已经注册 Cloudflare,并将一个可用域名托管到 Cloudflare;这是后续创建 Cloudflare Tunnel 公网入口的前提。

服务器不用堆得很豪华。下面是按使用规模整理的参考配置,实际资源占用会受并发量、日志保留周期和账号数量影响,建议先从小规格起步,再根据监控数据调整:

使用规模典型场景并发流式请求推荐配置说明
个人使用1 人
偶尔使用 Codex / Claude Code
1–51 vCPU / 2 GB RAM / 20 GB足够运行 CPA、管理面板和 cloudflared
轻度小团队2–5 人
共用一个 AI 网关
5–152 vCPU / 4 GB RAM / 40 GB建议限制日志保留时间,开启基础监控
重度小团队5–15 人
经常同时运行 Coding Agent
15–504 vCPU / 8 GB RAM / 80 GB SSDSQLite 写入、日志查询和长连接会更明显
更大规模20 人以上
公开给多人使用
50+不建议直接照搬本文方案应考虑反代限流、独立监控、备份策略和压测

我的演示环境是一台运行在 PVE 中的虚拟机:Ubuntu Server 24.04 LTS、2 核 CPU、2 GB 内存和 20 GB 硬盘。个人使用足够,后面也方便按需扩容。

2. 安装 Docker

使用具备 sudo 权限的账号通过 SSH 登录服务器,先更新软件索引和系统组件:

sudo apt update
sudo apt full-upgrade

接着添加 Docker 官方软件源并安装 Docker Engine 与 Compose 插件。下面的命令保持原样执行即可:

# Add Docker's official GPG key (添加 Docker 官方 GPG 密钥):
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources(将 Docker 软件源添加到 Apt 源中):
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

# 更新软件源
sudo apt update
# 安装 Docker
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

安装完成后,运行官方的 hello-world 容器做一次小体检:

sudo docker run hello-world

3. 配置 Cloudflare Tunnel

如果还没有账号,可以前往 Cloudflare 注册页面完成注册。本文不展开域名托管流程,后续操作默认 Cloudflare 中已经有一个状态正常的域名。

登录 Cloudflare 控制台,在侧边栏进入“联网”,然后打开“Tunnels”:

Cloudflare 控制台中的 Tunnels 入口

点击右上角的“创建隧道”,给它取一个容易辨认的名字,再选择服务器对应的操作系统。本例使用 Ubuntu,Debian 用户也可选择相应选项;架构通常为 64-bit,请以自己的服务器为准。页面生成命令后,将前两条命令复制到服务器执行:

Cloudflare Tunnel 安装命令页面

命令执行成功后,页面会显示隧道已经连接。看到绿色状态,就说明这一步顺利过关啦:

Cloudflare Tunnel 连接成功状态

进入刚创建的隧道,在页面下方选择“添加路由”:

Cloudflare Tunnel 添加路由入口

选择“已发布的应用程序”,设置准备给 CPA 使用的域名,子域名或根域名均可。“路径”保持为空,服务 URL 填写 http://localhost:8317:

CPA 的 Cloudflare Tunnel 路由配置

确认无误后点击“添加路由”,CPA 的入口就准备好了。

Cloudflare Tunnel 路由添加成功提示

再为 CPAMP 重复一次上述操作。请使用另一个子域名,避免与 CPA 混淆,并把服务 URL 改为 http://localhost:18317。

4. 安装与配置 CPA

4.1 安装 CPA

这里使用 Docker Compose 部署 CPA,运行环境为公网 VPS,并通过 Cloudflare Tunnel 提供 HTTPS 访问入口。Compose 文件也更方便日后更新、重启和迁移。

你可能会问:VPS 已经有公网 IP,为什么还要加一层 Tunnel?对我来说,最直接的好处是不用单独维护 SSL 证书,也不必把本地服务端口直接暴露在公网。至于速度是否更快,要看具体线路,别把它当成必然加速器哦。

先创建 CPA 的工作目录并进入其中:

mkdir -p ~/cpa
cd ~/cpa

接下来生成 CPA API Key 和管理密钥。请立即把管理密钥保存在密码管理器中,并在同一个终端会话里继续操作,否则临时变量不会自动带到新终端:

# 生成 CPA API key (后期可以更改)
CPA_API_KEY="sk-$(tr -dc 'a-z0-9' </dev/urandom | head -c 32)"

# 生成 CPA 管理密钥
CPA_MNG_KEY="mng-pnl-$(tr -dc 'a-z0-9' </dev/urandom | head -c 32)"

# 查看 CPA API key:
echo "API Key: ${CPA_API_KEY}"

# 查看 CPA 管理密钥
echo "Management Key:${CPA_MNG_KEY}"

写入 CPA 配置文件,并用文件权限限制其他系统用户读取敏感内容:

# 限制新建文件权限,避免配置文件被其他用户读取 
umask 077 

# 写入 CLIProxyAPI 配置文件 
cat > config.yaml <<EOF
host: "127.0.0.1"
port: 8317

auth-dir: "/root/.cli-proxy-api"

request-retry: 3

quota-exceeded:
  switch-project: true
  switch-preview-model: true

api-keys:
  - "${CPA_API_KEY}"

remote-management:
  allow-remote: true
  # 首次启动时这里会被 CLIProxyAPI 自动 hash
  secret-key: "${CPA_MNG_KEY}"
  disable-control-panel: false

logging-to-file: true
usage-statistics-enabled: true
logs-max-total-size-mb: 100
EOF

chmod 600 config.yaml

创建 Docker Compose 配置:

cat <<'EOF' > docker-compose.yml
services:
  cli-proxy-api:
    image: eceasy/cli-proxy-api:latest
    pull_policy: always
    container_name: cli-proxy-api
    network_mode: host
    volumes:
      - ./config.yaml:/CLIProxyAPI/config.yaml
      - ./auths:/root/.cli-proxy-api
      - ./logs:/CLIProxyAPI/logs
    restart: unless-stopped
EOF

启动 CPA 容器:

sudo docker compose up -d

容器启动后,访问 https://你的-CPA-域名/management.html。如果管理页面能正常打开,说明 CPA 已经成功通过 Tunnel 对外提供服务:

CLIProxyAPI 管理面板登录页面

使用前面生成、以 mng-pnl- 开头的管理密钥登录。这里用的是管理密钥,可别和提供给客户端的 API Key 拿混啦。

4.2 配置 CPA

本节只处理最常用的三件事:添加模型提供商、管理 API Key,以及选择路由策略。其余高级选项先保持默认,等熟悉整体流程后再慢慢探索。

4.2.1 添加模型提供商

CPA 支持多种接入方式,包括 Codex、Anthropic 等服务的 OAuth 认证、上传 JSON 凭证文件,以及添加上游 API。根据自己已有的账号或密钥选择即可。

4.2.1.1 通过 OAuth 添加

进入管理面板,在侧栏打开“OAuth 登录”,再选择需要授权的提供商:

CLIProxyAPI OAuth 登录选项

以 Anthropic 为例:点击“开始 Anthropic 登录”,面板会生成授权链接;在新标签页或无痕窗口中打开链接并登录 Claude,完成验证后,将浏览器中的回调地址复制到“回调 URL”,再提交。通过第三方网关或反向代理使用账号可能触发服务商风控,甚至导致账号受限,请先阅读并遵守对应服务条款,重要账号尤其要谨慎。

Codex 的授权流程与之类似,按照面板提示完成登录和回调即可。

4.2.1.2 添加上游 API

如果手里有官方 API Key,也可以把它接入 CPA。以 DeepSeek 为例:先在侧栏选择“AI 提供商”,进入“OpenAI 兼容”并点击“新建”;名称可自行填写,服务地址设为 https://api.deepseek.com,再添加从开放平台获取的 API Key。展开“自定义模型”后点击“从端点拉取”,勾选实际返回的模型并应用,最后点击“创建”。模型名称可能随服务端调整,请以页面实时拉取结果为准,不必照抄截图中的名称。

CLIProxyAPI 新建 OpenAI 兼容提供商
CLIProxyAPI 拉取并选择上游模型

4.2.2 添加或删除 API Key

在侧栏打开“配置面板”,即可查看当前生效的 API Key。你可以手动添加、自动生成或删除密钥:

CLIProxyAPI API Key 配置列表

修改完成后,记得点击下方的对钩图标保存。这个按钮不太抢眼,漏点的话配置可不会自己长腿跑进去哦:

CLIProxyAPI 保存配置按钮

4.2.3 更改路由策略

默认路由策略为“轮询”:当多个 OAuth 账号可用时,CPA 会依次分发请求,各账号的消耗通常比较平均。“填充优先”则会先集中使用一个账号,额度用完后再切换到下一个。前者适合均衡负载,后者更便于按账号顺序管理额度。

若要调整策略,请依次进入“配置面板”→“完整”→“网络配置”,在“路由策略”中选择需要的模式,最后保存配置。

CLIProxyAPI 路由策略设置

4.3 更新 CPA

CPA 更新较频繁。需要升级时,通过 SSH 回到部署目录,再拉取最新镜像并重建容器:

cd cpa  # 进入部署 CPA 的文件夹

# 更新 CPA
sudo docker compose up -d --pull always

5. 安装与配置 CPAMP

CPAMP 虽然可以通过 docker run 快速启动,但我更推荐 Docker Compose:服务定义、环境变量和数据目录都集中在一个文件里,日后更新、重启与备份会清爽许多。

回到 SSH 终端,为 CPAMP 创建工作目录和数据目录:

mkdir -p ~/cpamp/data
cd ~/cpamp

生成 CPAMP 管理密钥,并立即妥善保存。接下来的命令仍需在同一个终端会话执行:

CMP_ADMIN_KEY="cmp-admin-$(tr -dc 'a-z0-9' </dev/urandom | head -c 32)"

# 查看 CPAMP 管理密钥
echo "${CMP_ADMIN_KEY}"

创建 Docker Compose 配置:

cat > docker-compose.yml <<EOF
services:
  cpa-manager-plus:
    image: seakee/cpa-manager-plus:latest
    container_name: cpa-manager-plus
    restart: unless-stopped
    network_mode: host

    environment:
      HTTP_ADDR: "127.0.0.1:18317"
      USAGE_DB_PATH: "/data/usage.sqlite"
      CPA_MANAGER_DATA_KEY_PATH: "/data/data.key"
      USAGE_COLLECTOR_MODE: "auto"
      USAGE_BATCH_SIZE: "100"
      USAGE_POLL_INTERVAL_MS: "500"
      USAGE_QUERY_LIMIT: "50000"
      CPA_MANAGER_ADMIN_KEY: "${CMP_ADMIN_KEY}"

    volumes:
      - ./data:/data
EOF

启动 CPAMP 容器:

sudo docker compose up -d

打开此前为 CPAMP 设置的地址 https://你的-CPAMP-域名/management.html,先输入 CPAMP 管理密钥。“CPA 连接地址”推荐填写 http://127.0.0.1:8317,因为两个服务都使用主机网络,无需绕到公网再回来。随后填写 CPA 管理密钥,其余两项保持默认;如果这是可信的个人设备,可以勾选“记住凭证”:

CPA Manager Plus 初始化配置

点击“初始化”后,即可进入 CPAMP 主界面:

CPA Manager Plus 主界面

CPAMP 也能承担一部分 CPA 管理工作。是否保留 CPA 原生面板,可以根据自己的使用习惯和安全策略决定。

侧栏中的“用量分析”和“请求监控”会汇总调用情况;“请求监控”还能估算消费金额。你可以手动维护模型价格,也可以尝试一键拉取。价格数据可能变化,涉及账单时请以上游服务商的实际结算为准。

CPAMP 的更新方式与 CPA 相同:进入对应目录,执行 sudo docker compose up -d --pull always 即可。更新前顺手备份 data 目录,会更安心。

6. 在 CLI 中配置模型提供商

网关已经搭好,最后一步是让客户端知道该去哪里。先以 Claude Code 为例:在 Windows 终端中设置以下环境变量:

setx ANTHROPIC_BASE_URL "https://CPA 域名"
setx ANTHROPIC_AUTH_TOKEN "your-api-key"

在 macOS 中,将变量写入 Zsh 配置:

echo 'export ANTHROPIC_BASE_URL=https://CPA 域名' >> ~/.zshrc
echo 'export ANTHROPIC_AUTH_TOKEN=your-api-key' >> ~/.zshrc
source ~/.zshrc

在使用 Bash 的 Linux 中,将变量写入 Bash 配置:

echo 'export ANTHROPIC_BASE_URL=https://CPA 域名' >> ~/.bashrc
echo 'export ANTHROPIC_AUTH_TOKEN=your-api-key' >> ~/.bashrc
source ~/.bashrc

如果使用 Codex,需要编辑 ~/.codex/config.toml,添加一个指向 CPA 的模型提供商:

# ~/.codex/config.toml
model_provider = "cpa"
model = "在 CPA 中配置的模型名"
model_reasoning_effort = "high"

[model_providers.cpa]
name = "cpa"
base_url = "https://CPA 域名/v1"
wire_api = "responses"
requires_openai_auth = true
env_key = "CPA_API_KEY"

然后为 Codex 设置 CPA API Key 环境变量:

# Windows
setx CPA_API_KEY "your-api-key"

# macOS
echo 'export CPA_API_KEY=your-api-key' >> ~/.zshrc
source ~/.zshrc

# Linux
echo 'export CPA_API_KEY=your-api-key' >> ~/.bashrc
source ~/.bashrc

Windows 使用 setx 写入变量后,需要关闭并重新打开终端才会生效。配置完成后,建议先发起一个简单请求,确认模型名、Base URL 与 API Key 都匹配。

7. 安全提示

CPAMP 是管理面板,不建议直接裸露在公网。可以在 Cloudflare Zero Trust 中为 CPAMP 子域名单独创建 Access Application,只允许指定邮箱访问。CPA 的 API 域名若不使用 Access,则必须启用 CPA API Key 鉴权,并为不同用户分配独立密钥,方便撤销和审计。

不要只靠页面自身的 Admin Key 保护公网管理面板。建议叠加 Cloudflare Access、使用高强度且唯一的管理密钥,并定期备份数据与检查日志。如果后续主要通过 CPAMP 管理 CPA,可以考虑关闭 CPA 原生 Control Panel;无论如何,管理密钥都不应写入客户端配置,也不要与普通 API Key 共用。到这里,这套小巧的 AI CLI 网关就搭建完成啦:入口统一、用量可查,后续添模型也更从容。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2026-07-13

Aekor

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

使用AI教程

  • API报错解决方案
  • API 基础知识
  • API Key 获取

分类

  • Blog
  • TradingAgents-CN
  • 使用教程

COPYRIGHT © 2026 Aekor. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang