13 KiB
两天流程复盘 · 大白话版
目的:把 2026-11-04 ~ 11-05 这两天做的事,用不懂技术也能看懂的方式讲清楚。 读完你应该能回答:我搭了什么?每一块是干嘛的?哪些是 AI 替我做的?出问题我该看哪里?
〇、先用一个比喻把整件事说清
把这件事想象成**"把一张只能在自家店里刷的会员卡,改造成任何 ATM 都能取钱的银行卡"**:
| 现实世界 | 我们的系统 |
|---|---|
| 你的 Google AI Pro 会员卡 | Google 订阅账号(有额度,但只能在 Google 自己店里用) |
| 改装刷卡机 | CPA —— 让这张会员卡能在任何地方被"读" |
| 自家开的银行柜台 | New API —— 统一对外、记账、发副卡给你各个工具 |
| 银行门口的正式管道 | 你的域名 api.trivoo.website(HTTPS 加密) |
| 你家里的水龙头 | Codex / Claude Code(只会用标准接口) |
| 临时挖的运钞暗道 | tunnel.bat(SSH 隧道,只在需要时打开) |
一句话总结:你花钱买的 Google 订阅,被改造成了"标准 API",现在你的编程工具能直接白嫖它。
一、起点 vs 终点
起点(11月4日之前)
- ✅ 有一台腾讯云新加坡服务器(Ubuntu 24.04,43.156.118.130)
- ✅ 上面已经跑着 New API 网关(域名
api.trivoo.website,能调 DeepSeek 等) - ❌ 有一个 Google AI Pro 订阅,但只能在网页上用,编程工具调不了
终点(11月5日之后)
- ✅ 同一个域名、同一把钥匙,现在多了 Google 的 Gemini / Claude 模型可用
- ✅ Codex、Claude Code 换一下配置就能用上
- ✅ 全部跑在你自己的服务器上,数据不经过任何第三方
二、7 个关键名词,一句话一个
| 名词 | 一句话解释 | 生活比喻 |
|---|---|---|
| 反代 | 用你的账号凭证,伪装成官方客户端去调上游,对外输出标准 API | 改装刷卡机 |
| CPA(CLIProxyAPI) | 一个开源软件,专门干上面这件事(支持 Google/Claude/Codex/Grok/Kimi/Meta 等) | 那台改装机的品牌型号 |
| New API | 一个网关软件:统一入口、发钥匙、记账、看日志 | 银行柜台 |
| Docker / 容器 | 把软件连它的环境一起打包成"盒子",跑起来互不干扰 | 一个个集装箱 |
| SSH 隧道 | 在你电脑和服务器之间临时架一条加密通道,让本地能访问服务器内部服务 | 运钞暗道 |
| OAuth | "用 Google 账号授权",不交出密码,只给一张有期限的通行证 | 刷脸进店,不给家里钥匙 |
| API Key / 令牌 | 一串密码字符串,证明"你有权调用" | 银行卡 + 密码 |
三、三把钥匙别搞混(最容易糊的地方)
你的系统里现在有三把不同的钥匙,用途完全不同:
| 钥匙 | 长什么样 | 谁用它 | 用来干什么 |
|---|---|---|---|
| ① New API 令牌 | sk-xxxxxx |
你的 Codex / ccswitch | 客户端 → 连你的银行柜台(New API) |
| ② CPA_API_KEY | sk-cpa-xxxxxx |
New API | 银行柜台 → 连改装机(CPA) |
| ③ MGMT_KEY | 一串随机字符 | 你本人(浏览器) | 登录 CPA 管理面板,改配置、看凭证 |
打款路径就是:
Codex(拿①)→ New API(拿②)→ CPA → Google(用 OAuth 通行证)
① 和 ② 都存在服务器上(/opt/cpa/KEYS.txt 里是 ② 和 ③),① 在 New API 后台建。
四、这两天实际发生了什么(时间线)
【第 1 天 · 11月4日】搞清楚 + 做准备
| 时间 | 发生了什么 |
|---|---|
| 上午 | 你贴了和茨米的聊天记录,我帮你按时间重排整理 |
| 上午 | 明确"反代"是什么、和 CPA 什么关系、三层生态(账号层 / 网关层 / 中转站层) |
| 上午 | 你问"反代和 CPA 是不是同一个东西"——结论:反代是概念,CPA 是软件 |
| 中午 | 读了你自己的《NewAPI 实战指南》,把你的现状对号入座 |
| 下午 | 明确目标:Gemini Pro 账号 → API → 给 Claude Code 用,装在乌班图(新加坡服务器) |
| 下午 | 我先做了一版"我远程全自动部署"方案,你拒绝了权限(很对,服务器是你的) |
| 傍晚 | 改成"我出脚本、你动手"模式 |
| 傍晚 | 查官方文档,确认 CPA 的镜像、端口、面板地址、登录命令 |
| 晚上 | 产出部署包:deploy-cpa.sh(部署脚本)+ tunnel.bat(隧道)+ 01-部署操作手册.md |
【第 2 天 · 11月5日】部署 + 踩坑 + 跑通
| 时间 | 发生了什么 | 结果 |
|---|---|---|
| 08:31 | 你要操作步骤,我给了完整 6 步 | — |
| 08:47 | 你跑完脚本,打开面板 | ❌ 报 403 |
| 08:50 | 我诊断:allow-remote: false 把管理 API 关了 |
给你两条命令改掉 |
| 09:10 | 改完重启,面板登录成功 | ✅ |
| 09:26 | OAuth 登录 Google 账号(Antigravity 渠道) | ✅ 凭证落盘,模型列表出来 |
| 10:12 | New API 加渠道、拉模型、测速 | ✅ 全链路通 |
| 10:52 | 你确认跑通,我做了复盘对比 | ✅ |
| 11:05 | 你想试 Meta Muse | 查文档确认支持 |
| 11:19 | 走到 Meta 绑卡页面:要按 token 付费,无免费层 | ❌ 放弃 |
| 11:41 | 检查 Meta 账号有没有社交资产(担心封号连坐) | 干净,但已无必要 |
五、"AI 帮你做的" 到底做了什么(消除黑箱感)
你说"有些都是 AI 帮我实现"——下面把它们全部拆开,白纸黑字,随时可查:
1️⃣ deploy-cpa.sh(部署脚本)做了 7 件事
| 段落 | 干了什么 |
|---|---|
| [1] 预检 | 确认是 root 权限、列出当前容器 |
| [2] 建目录 | 新建 /opt/cpa/(含 auths=存凭证 / logs=日志 / plugins=插件) |
| [3] 生成配置 | 用 openssl rand 随机生成两把钥匙,写进 config.yaml + KEYS.txt |
| [4] 写 compose | 定义"用哪个镜像、开哪些端口、挂哪些目录" |
| [5] 建网络 | 建 ai-net 内网,把已有的 new-api 容器拉进来 |
| [6] 启动 | docker compose up -d 把容器跑起来 |
| [7] 自检 | 不带钥匙应得 401、带钥匙应得 200、测容器互通、打印钥匙 |
它没做的事(很重要):没碰你的 new-api 文件、没碰 nginx、没碰 Xray、没在防火墙开任何端口。
2️⃣ tunnel.bat(隧道)就是一条命令
ssh -N -L 8317:127.0.0.1:8317 ... ubuntu@43.156.118.130
拆开看:
ssh= 连到服务器-N= 只做端口转发,不执行远程命令-L 8317:127.0.0.1:8317= "把我本地的 8317 端口,接到服务器的 8317 端口"
为什么要它:CPA 的面板和授权回调端口只对服务器自己开放(安全设计),你本地浏览器想访问,就得有这么一条通道。就像银行金库不对大街开门,但给你留了条内部通道。
3️⃣ 那两条排障命令
sed -i 's/allow-remote: false/allow-remote: true/' /opt/cpa/config.yaml # 改一个开关
docker compose restart # 重启生效
为什么必须改:原本关掉远程管理是出于安全,但请求经过 Docker 内部转发后,CPA 把来源 IP 看成内网地址,误判为"远程访问"而拦截。因为端口本来就绑死 127.0.0.1(公网根本进不来),所以打开这个开关不降低安全性。
4️⃣ New API 里点的那几下
你在界面里做的操作,本质是往数据库里写了一条记录:
"有一个叫
CPA-Gemini-OpenAI的上游,地址是http://cli-proxy-api:8317,钥匙是sk-cpa-xxx,它支持这些模型:gemini-3-flash…"
以后任何客户端拿着 New API 的令牌来,New API 就按这条记录转发给 CPA。
六、现在的系统长什么样(数据怎么流)
【你的 Windows 电脑】
Codex / Claude Code / ccswitch
│ ① 用 New API 令牌(sk-xxx)
│ ② HTTPS 加密
▼
【腾讯云新加坡服务器 · Ubuntu 24.04】
┌─────────────────────────────────────────┐
│ Nginx(已有):管 HTTPS 证书、转发 │
│ ▼ │
│ New API 容器(已有):发钥匙、记账、看日志 │
│ │ 用 CPA_API_KEY(sk-cpa-xxx) │
│ │ 走 Docker 内部网络 ai-net │
│ ▼ │
│ CPA 容器(新装):账号→API 转换 │
│ │ OAuth 通行证(存在 auths/ 里) │
└────────┼────────────────────────────────┘
▼
Google(Gemini 模型 + 反重力渠道的 Claude 模型)
一次请求的完整旅程(跟着数据走一遍):
- 你在 Codex 里输入一句话
- Codex 拿 New API 令牌,把请求发到
https://api.trivoo.website - Nginx 解密 HTTPS,转给 New API 容器
- New API 查令牌 → 合法 → 查模型 → 找到
CPA-Gemini-OpenAI渠道 - New API 拿 CPA_API_KEY,通过内网发给 CPA
- CPA 从
auths/里挑一个 Google 凭证,把 OpenAI 格式的请求翻译成 Google 能懂的格式 - Google 返回结果,CPA 再翻译回标准格式,原路返回
- Codex 显示回答;同时 New API 记了一笔账(模型、token、耗时)
七、为什么这么设计(每个决定的理由)
| 决定 | 理由 |
|---|---|
| 为什么不装在你本地电脑 | ① Google 对中国大陆 IP 有风控 ② 你的电脑不会 24 小时开机 ③ 服务器出口是新加坡,天然绕开限制 |
为什么端口只绑 127.0.0.1 |
让服务"只有服务器自己能用",公网谁都摸不到,连防火墙规则都不用改 |
| 为什么用隧道而不是把面板开放到公网 | 面板能改配置、看凭证,等于系统总闸,绝不能暴露 |
| 为什么还要过一层 New API | 统一入口(所有工具记一个地址)、记账、看日志、方便以后加别的上游 |
| 为什么不直连 CPA 就完事 | 直连也行(少一跳、延迟低),但需要一直开着隧道;两条路可以并存 |
| 为什么要两把钥匙 | 分离权限:管理钥匙只给你本人,API 钥匙只给程序,泄一个不牵连另一个 |
八、日常你自己能做的事(速查)
在 OrcaTerm 里(或 SSH 上去):
# 看 CPA 活着没
sudo docker ps | grep cli-proxy-api
# 看 CPA 日志(实时)
cd /opt/cpa && sudo docker compose logs -f --tail=50
# 重启 CPA(改完配置必须重启)
cd /opt/cpa && sudo docker compose restart
# 看两把钥匙
sudo cat /opt/cpa/KEYS.txt
# 看已登录的账号凭证
sudo ls /opt/cpa/auths
# 看 CPA 当前提供哪些模型
curl -s http://127.0.0.1:8317/v1/models -H "Authorization: Bearer $(sudo grep -oE 'sk-cpa-[0-9a-f]+' /opt/cpa/config.yaml | head -1)"
铁律两条:
- 改了
/opt/cpa/config.yaml→ 一定要docker compose restart - 如果哪天重建了 new-api 容器 → 补一句
sudo docker network connect ai-net new-api
九、出问题看哪里(排错路线图)
| 现象 | 先看这里 |
|---|---|
| Codex 报 404 | 模型名对不对(去 New API 渠道里重新拉列表) |
| 报 401 | 令牌对不对(Codex 里的 sk-xxx / New API 里的 sk-cpa-xxx) |
| 报 429 | Google 限流,等几分钟,不是坏了 |
| 面板打不开 | tunnel.bat 窗口是不是关了 |
| New API 渠道测试失败 | docker logs --tail=50 cli-proxy-api 看 CPA 说什么 |
| 模型列表是空的 | sudo ls /opt/cpa/auths 有没有凭证,没有就重新 OAuth 登录 |
| 全部都不对 | 从上往下查:容器活着吗 → 面板能进吗 → 凭证在吗 → 渠道测速过吗 |
十、术语中英对照(以后搜索用)
| 中文 | 英文 | 说明 |
|---|---|---|
| 反代 | reverse proxy | 转发/转换请求的中间服务 |
| 上游 | upstream | 最终提供模型的一方(这里是 Google) |
| 渠道 | channel | New API 里的一条上游配置 |
| 凭证 / 认证文件 | auth / auth file | OAuth 登录后存下来的通行证 |
| 令牌 | token / API key | 调用凭证 |
| 管理密钥 | management key | 管理面板登录用 |
| 限流 | rate limit / 429 | 请求太快的临时拒绝 |
| 容器 | container | Docker 里的运行单元 |
十一、最后一句话总结
你这两天做的事情,本质是给自己的 AI 工具链加了一条"免费高速通道":
- 过去:Google 订阅只能在网页用 → 浪费
- 现在:同一个订阅变身 API → Codex / Claude Code 都能用
- 全程:数据在你自己的服务器上跑,不经过任何第三方中转
- 成本:只花服务器钱(本来就在付),模型额度用的是你已付费的订阅
唯一的代价:这是一条"非官方"路径(属于灰色地带),上游随时可能调整。所以随时记住——这套东西是可拆的、可放弃的,不会绑架你。