{"id":"9b3945fd-c701-4f3a-82c8-5d87fc7c5f38","shortId":"Pz54dE","kind":"skill","title":"cliproxy-newapi-stack","tagline":"在 Linux VPS 上部署 CLIProxyAPI + NewAPI 组合栈，把 Codex/Claude/Gemini/Qwen 等订阅账号包装成可计费的 OpenAI 兼容 API。负责 NewAPI Docker 部署、容器→宿主桥接、模型计费倍率（ModelRatio/CacheRatio/CompletionRatio）、SQLite 直写额度、CLIProxyAPI 408 冷却补丁、多账号 OAuth 凭据热加载、双路径验证。当用户说\"部署 cliproxy + newapi\"、\"加 OpenAI 计费层\"、\"配置 newapi 渠道接","description":"# CLIProxyAPI + NewAPI Metering Stack\n\n把 OAuth 订阅账号 (`codex`/`claude`/`gemini`/`qwen`/`iflow`) 通过 **CLIProxyAPI** 暴露为\nOpenAI 兼容 API，再用 **NewAPI** (`calciumion/new-api`) 在前面套一层计费/限流/多用户 token。\n姊妹 skill `cliproxy-deploy` 只负责裸 CLIProxyAPI；本 skill 在其上加 metering 层并补全踩过的坑。\n\n所有\"完成\"结论必须基于**本会话**命令输出（W-16）。价格和额度变更后必须真发一次请求并查\n`logs.quota` 不为 0。\n\n---\n\n## 0. 前置确认（必问）\n\n- **SSH 目标**：`root@HOST` 是否能免密\n- **端口分配**：`CLIPROXY_PORT`（默认 `8317`）、`NEWAPI_PORT`（默认 `8200`）\n- **裸部署是否就绪**：CLIProxyAPI 已经在 `<HOST>:<CLIPROXY_PORT>` 跑通？没就先跑\n  `cliproxy-deploy` skill\n- **登录账号供应商**：`codex` / `claude` / `qwen` / `iflow` / `gemini`\n- **价格输入格式**：每个虚拟模型给我 input / cached / output 三个 USD per 1M 数字\n- **客户端机器**：要在哪些机器上落 `BASE_URL` 环境变量\n\n降级路径：默认走\"本地 OAuth + scp 同步 + UFW 开 NewAPI 端口 + SQLite 直写价格\"。\n\n---\n\n## Phase 1 — CLIProxyAPI（委托给姊妹 skill）\n\n裸部署已在 `cliproxy-deploy` skill 完成；本 skill 不重复其内容，只补丁两个点：\n\n1. **加稳定性开关**到 `/root/CLIProxyAPI/config.yaml`：\n   ```yaml\n   disable-cooling: true\n   ```\n   原因见 `references/troubleshooting.md` \"CLIProxyAPI cooldown 原理\"。\n   若漏改，30 并发 5KB payload 会出现混合 ~50% 503。\n\n2. **不要把 CLIProxyAPI 端口暴露到公网**（与裸部署不同）：\n   - `host: \"\"` 仍可，但仅给容器访问，外部公网走 NewAPI 入口即可\n   - 如果之前已经 `ufw allow <CLIPROXY_PORT>` 想保留作为 admin 后门也行，但要换强 key\n\n---\n\n## Phase 2 — 部署 NewAPI 容器\n\n```bash\nSSH_TARGET=root@<HOST> SSH_KEY=~/.ssh/id_ed25519 NEWAPI_PORT=8200 \\\n  scripts/deploy_newapi.sh\n```\n\n脚本完成后 UFW 放行：\n```bash\nssh -i <KEY> <SSH_TARGET> \"ufw allow <NEWAPI_PORT>/tcp && ufw status | grep <NEWAPI_PORT>\"\n```\n\n首次访问 `http://<HOST>:<NEWAPI_PORT>` 完成 root 账号注册（NewAPI 不预置默认密码）。\n保存账号密码到密码管理器（不要写进 skill / 日志 / 提交）。\n\n---\n\n## Phase 3 — 渠道 + Token\n\n### 3a. 创建渠道（CLIProxyAPI as upstream）\n\nNewAPI 后台 → \"渠道\" → 新建 → OpenAI 类型：\n\n- **base_url**：`http://172.17.0.1:<CLIPROXY_PORT>`\n  ⚠️ **不能写 `127.0.0.1`** — 容器里的 127.0.0.1 是容器自己。详见\n  `references/troubleshooting.md` \"容器网络速记\"。\n- **密钥**：CLIProxyAPI 的 `cpa_xxx` key\n- **模型**：以逗号分隔填 CLIProxyAPI 暴露的虚拟模型名，例如：\n  `gpt-5.4,gpt-5.3-codex,gpt-5.3-codex-spark,gpt-5.4-mini,gpt-5.2`\n- 测试按钮应当 200 OK；失败先查 `references/troubleshooting.md`。\n\n### 3b. 创建 Token（客户端用）\n\nNewAPI 后台 → \"令牌\" → 新建：\n- **名称**：`client-default` 之类标识\n- **额度**：先放 `unlimited` 或一个大数（实际计费由 user.quota 控制）\n- **可用模型**：勾上你给客户端开放的模型\n- 复制生成的 `sk-xxx`（这是客户端的 BASE_API_KEY）\n\n---\n\n## Phase 4 — 写价格 + 充额度\n\n### 4a. 写价格\n\n用 `scripts/set_pricing.py`（基于实测 USD/1M 自动算出三个倍率）：\n\n```bash\nSSH_TARGET=root@<HOST> SSH_KEY=~/.ssh/id_ed25519 \\\n  scripts/set_pricing.py \\\n    --model gpt-5.4       --input 2.5  --cached 0.25  --output 15 \\\n    --model gpt-5.3-codex --input 1.75 --cached 0.175 --output 14\n```\n\n脚本会：合并写入 `options` 表的 `ModelRatio` / `CacheRatio` / `CompletionRatio`，重启容器。\n\n⚠️ 倍率语义见 `references/newapi-pricing.md` —— `CacheRatio` / `CompletionRatio` 是**相对\n输入价的倍数**，不是绝对单价。`ModelRatio` 在不同 fork 里可能除以 2，第一次配置务必发请求\n看 `logs.quota` 实际值匹配预期。\n\n### 4b. 充额度\n\nNewAPI 在线充值通常未配，最快走 SQLite 直写：\n```bash\nSSH_TARGET=root@<HOST> SSH_KEY=~/.ssh/id_ed25519 \\\n  scripts/topup.sh <user_id> <quota>\n# 例：1 1000000000  → 1B quota ≈ USD 2000 (默认 QuotaPerUnit=500000)\n```\n\n### 4c. 配置在线充值（可选）\n\n如果要让用户自助充值，NewAPI 后台 → 系统 → 支付：\n- Stripe / 易支付 / 自定义 → 填 `TopUpLink` 等字段\n- 不配也行，管理员手动加额度 (`scripts/topup.sh`) 是合法主路径\n\n---\n\n## Phase 5 — 客户端环境变量\n\n把以下三行追加到客户端的 `~/.zshrc` 或 `~/.bashrc`：\n\n```bash\nexport BASE_URL=\"http://<HOST>:<NEWAPI_PORT>/v1\"\nexport BASE_API_KEY=\"<NEWAPI_TOKEN>\"   # sk-xxx\nexport BASE_MODEL=\"<虚拟模型名>\"       # 如 gpt-5.4\n```\n\n`source` 一下生效。\n\n跨多台机器同步时（W-14 文件归属）：单台单台手动 SSH 改各自的 rc 文件，避免并行写覆盖。\n\n---\n\n## Phase 6 — 加新账号（OpenAI/Anthropic/etc）\n\n不需要重启服务，CLIProxyAPI 有 file watcher。\n\n最简单：\n```bash\nPROVIDER=codex \\\n  SSH_TARGET=root@<HOST> SSH_KEY=~/.ssh/id_ed25519 \\\n  CLIPROXY_LOCAL=<本地 CLIProxyAPI 仓库路径> \\\n  scripts/add_codex_account.sh\n```\n\n脚本流程：\n1. 本地启 `go run ./cmd/server -<provider>-login -config config.yaml`\n2. 浏览器**用新账号**登录（先在浏览器登出旧账号或用无痕窗口 — 否则会复用旧 session 把旧凭据\n   覆盖回去）\n3. 自动 diff `~/.cli-proxy-api/<provider>-*.json`，把新文件 `scp` 到 VPS\n4. tail VPS 日志确认 `auth file changed (CREATE)`\n\n详见 `references/multi-account.md`（含订阅条件、轮询语义、删除账号、验证方法）。\n\n---\n\n## 验证（Phase 4/5/6 之后必跑）\n\n```bash\nHOST=<HOST> SSH_TARGET=root@<HOST> SSH_KEY=~/.ssh/id_ed25519 \\\n  CLIPROXY_PORT=<CLIPROXY_PORT> NEWAPI_PORT=<NEWAPI_PORT> \\\n  CLIPROXY_KEY=<cpa_xxx> NEWAPI_TOKEN=<sk-xxx> MODEL=<虚拟模型> \\\n  scripts/verify_stack.sh\n```\n\n通过判定：\n- 直连 CLIProxyAPI HTTP 200\n- 经 NewAPI HTTP 200\n- 最近 `logs` 里对应 `request_id` 行 `quota > 0`\n\n任一不满足都不得声称\"部署完成\"。\n\n---\n\n## 资源索引\n\n| 文件 | 用途 |\n|---|---|\n| `scripts/deploy_newapi.sh` | NewAPI 容器一键部署 + 健康自检 |\n| `scripts/set_pricing.py` | 用 USD/1M 三参数自动写 NewAPI ratios |\n| `scripts/topup.sh` | 直接 SQLite 改 `users.quota` |\n| `scripts/verify_stack.sh` | 双路径 + 计费日志验证 |\n| `scripts/add_codex_account.sh` | OAuth 登录 + 同步凭据 + watcher 校验 |\n| `references/newapi-pricing.md` | ModelRatio / CacheRatio / CompletionRatio / QuotaPerUnit 完整语义 + 计算示例 |\n| `references/troubleshooting.md` | 容器网络、cooldown、PUT 不生效、UFW 等踩坑表 |\n| `references/multi-account.md` | 多账号轮询语义 + 加号 / 删号 / 订阅条件 |\n\n---\n\n## 不要做的事\n\n- ❌ NewAPI 渠道 base_url 写 `http://127.0.0.1:<port>`（容器内自指）\n- ❌ 把 `CacheRatio` 当绝对单价（实际是相对输入的倍数）\n- ❌ 价格只走 `/api/option/` PUT 不验证（已知该接口可能静默失败）\n- ❌ 远端 OAuth 隧道折腾（5 分钟窗口 + 隧道配合，已踩过坑，统一用本地登录 + scp）\n- ❌ 把 CLIProxyAPI 公网端口的 `cpa_` key 和 NewAPI 的 `sk-` token 共享给同一类客户端\n- ❌ 跨会话声称\"价格生效\"——必须本会话发请求 + 看 `logs.quota`\n- ❌ 在没有 `disable-cooling: true` 的情况下做高并发压测","tags":["cliproxy","newapi","stack","claude","arsenal","majiayu000","agent-skills","ai-agents","ai-coding-assistant","automation","claude-code","code-review"],"capabilities":["skill","source-majiayu000","skill-cliproxy-newapi-stack","topic-agent-skills","topic-ai-agents","topic-ai-coding-assistant","topic-automation","topic-claude","topic-claude-code","topic-code-review","topic-developer-tools","topic-devops","topic-productivity","topic-prompt-engineering","topic-python"],"categories":["claude-arsenal"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/majiayu000/claude-arsenal/cliproxy-newapi-stack","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add majiayu000/claude-arsenal","source_repo":"https://github.com/majiayu000/claude-arsenal","install_from":"skills.sh"}},"qualityScore":"0.466","qualityRationale":"deterministic score 0.47 from registry signals: · indexed on github topic:agent-skills · 33 github stars · SKILL.md body (5,250 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:04:14.304Z","embedding":null,"createdAt":"2026-04-27T07:01:03.931Z","updatedAt":"2026-05-18T19:04:14.304Z","lastSeenAt":"2026-05-18T19:04:14.304Z","tsv":"'-14':470 '-16':88 '-5.2':298 '-5.3':287,290,364 '-5.4':285,295,355,465 '/.bashrc':446 '/.cli-proxy-api':524 '/.ssh/id_ed25519':219,351,410,496,555 '/.zshrc':444 '/api/option':645 '/cmd/server':508 '/root/cliproxyapi/config.yaml':170 '/tcp':232 '/v1':451 '0':92,93,583 '0.175':369 '0.25':359 '1':153,167,413,504 '1.75':367 '1000000000':414 '127.0.0.1':266,268,638 '14':371 '15':361 '172.17.0.1':264 '1b':415 '1m':133 '2':189,209,392,512 '2.5':357 '200':300,571,575 '2000':418 '3':248,521 '30':182 '3a':251 '3b':304 '4':335,530 '4/5/6':546 '408':29 '4a':338 '4b':397 '4c':422 '5':441,652 '50':187 '500000':421 '503':188 '5kb':184 '6':479 '8200':109,222 '8317':105 'admin':204 'allow':202,231 'api':17,62,332,454 'auth':534 'base':137,262,331,449,453,460,635 'bash':213,227,345,404,447,488,548 'cach':128,358,368 'cacheratio':377,382,615,641 'calciumion/new-api':65 'chang':536 'claud':53,121 'client':314 'client-default':313 'cliproxi':2,37,73,102,116,159,497,556,560 'cliproxy-deploy':72,115,158 'cliproxy-newapi-stack':1 'cliproxyapi':9,28,45,58,76,111,154,178,191,253,274,281,483,500,569,659 'codex':52,120,288,292,365,490 'codex-spark':291 'codex/claude/gemini/qwen':13 'completionratio':378,383,616 'config':510 'config.yaml':511 'cool':174,677 'cooldown':179,622 'cpa':276,661 'creat':537 'default':315 'deploy':74,117,160 'diff':523 'disabl':173,676 'disable-cool':172,675 'docker':20 'export':448,452,459 'file':485,535 'fork':390 'gemini':54,124 'go':506 'gpt':284,286,289,294,297,354,363,464 'grep':235 'host':99,194,549 'http':570,574 'id':580 'iflow':56,123 'input':127,356,366 'json':525 'key':207,218,278,333,350,409,455,495,554,561,662 'linux':6 'local':498 'log':577 'login':509 'logs.quota':90,395,673 'meter':47,80 'mini':296 'model':353,362,461,564 'modelratio':376,388,614 'modelratio/cacheratio/completionratio':25 'newapi':3,10,19,38,43,46,64,106,148,198,211,220,240,256,308,399,426,558,562,573,590,597,633,664 'oauth':32,50,143,608,650 'ok':301 'openai':15,40,60,260 'openai/anthropic/etc':481 'option':374 'output':129,360,370 'payload':185 'per':132 'phase':152,208,247,334,440,478,545 'port':103,107,221,557,559 'provid':489 'put':623,646 'quota':416,582 'quotaperunit':420,617 'qwen':55,122 'ratio':598 'rc':475 'references/multi-account.md':539,627 'references/newapi-pricing.md':381,613 'references/troubleshooting.md':177,271,303,620 'request':579 'root':98,216,238,348,407,493,552 'run':507 'scp':144,527,657 'scripts/add_codex_account.sh':502,607 'scripts/deploy_newapi.sh':223,589 'scripts/set_pricing.py':341,352,593 'scripts/topup.sh':411,438,599 'scripts/verify_stack.sh':566,604 'session':518 'sk':328,457,666 'sk-xxx':327,456 'skill':71,78,118,156,161,164,244 'skill-cliproxy-newapi-stack' 'sourc':466 'source-majiayu000' 'spark':293 'sqlite':26,150,402,601 'ssh':96,214,217,228,346,349,405,408,473,491,494,550,553 'stack':4,48 'status':234 'stripe':430 'tail':531 'target':215,347,406,492,551 'token':69,250,306,563,667 'topic-agent-skills' 'topic-ai-agents' 'topic-ai-coding-assistant' 'topic-automation' 'topic-claude' 'topic-claude-code' 'topic-code-review' 'topic-developer-tools' 'topic-devops' 'topic-productivity' 'topic-prompt-engineering' 'topic-python' 'topuplink':434 'true':175,678 'ufw':146,201,225,230,233,625 'unlimit':319 'upstream':255 'url':138,263,450,636 'usd':131,417 'usd/1m':343,595 'user.quota':322 'users.quota':603 'vps':7,529,532 'w':87,469 'watcher':486,611 'xxx':277,329,458 'yaml':171 '一下生效':467 '三个':130 '三参数自动写':596 '上部署':8 '不为':91 '不是绝对单价':387 '不生效':624 '不能写':265 '不要做的事':632 '不要写进':243 '不要把':190 '不配也行':436 '不重复其内容':165 '不需要重启服务':482 '不预置默认密码':241 '不验证':647 '与裸部署不同':193 '之后必跑':547 '之类标识':316 '仍可':195 '仓库路径':501 '令牌':310 '以逗号分隔填':280 '价格只走':644 '价格和额度变更后必须真发一次请求并查':89 '价格生效':670 '价格输入格式':125 '任一不满足都不得声称':584 '会出现混合':186 '但仅给容器访问':196 '但要换强':206 '例':412 '例如':283 '保存账号密码到密码管理器':242 '倍率语义见':380 '健康自检':592 '充额度':337,398 '先在浏览器登出旧账号或用无痕窗口':516 '先放':318 '入口即可':199 '公网端口的':660 '共享给同一类客户端':668 '兼容':16,61 '再用':63 '写':637 '写价格':336,339 '冷却补丁':30 '凭据热加载':33 '分钟窗口':653 '创建':305 '创建渠道':252 '删号':630 '删除账号':542 '到':169,528 '前置确认':94 '加':39 '加号':629 '加新账号':480 '加稳定性开关':168 '勾上你给客户端开放的模型':325 '单台单台手动':472 '原因见':176 '原理':180 '双路径':605 '双路径验证':34 '只补丁两个点':166 '只负责裸':75 '可用模型':324 '可选':424 '合并写入':373 '同步':145 '同步凭据':610 '名称':312 '后台':257,309,427 '后门也行':205 '否则会复用旧':517 '含订阅条件':540 '命令输出':86 '和':663 '在':5 '在不同':389 '在其上加':79 '在前面套一层计费':66 '在没有':674 '在线充值通常未配':400 '基于实测':342 '填':433 '复制生成的':326 '外部公网走':197 '多用户':68 '多账号':31 '多账号轮询语义':628 '失败先查':302 '如':463 '如果之前已经':200 '如果要让用户自助充值':425 '姊妹':70 '委托给姊妹':155 '完成':83,162,237 '完整语义':618 '实际值匹配预期':396 '实际是相对输入的倍数':643 '实际计费由':321 '客户端机器':135 '客户端环境变量':442 '客户端用':307 '容器':22,212 '容器一键部署':591 '容器内自指':639 '容器网络':621 '容器网络速记':272 '容器里的':267 '宿主桥接':23 '密钥':273 '层并补全踩过的坑':81 '已知该接口可能静默失败':648 '已经在':112 '已踩过坑':655 '并发':183 '开':147 '当用户说':35 '当绝对单价':642 '必问':95 '必须本会话发请求':671 '想保留作为':203 '或':445 '或一个大数':320 '所有':82 '把':12,49,640,658 '把以下三行追加到客户端的':443 '把新文件':526 '把旧凭据':519 '控制':323 '提交':246 '支付':429 '改':602 '改各自的':474 '放行':226 '数字':134 '文件':476,587 '文件归属':471 '新建':259,311 '日志':245 '日志确认':533 '易支付':431 '是':384 '是合法主路径':439 '是否能免密':100 '是容器自己':269 '暴露为':59 '暴露的虚拟模型名':282 '最快走':401 '最简单':487 '最近':576 '有':484 '本':77,163 '本会话':85 '本地':142,499 '本地启':505 '校验':612 '模型':279 '模型计费倍率':24 '每个虚拟模型给我':126 '没就先跑':114 '测试按钮应当':299 '浏览器':513 '渠道':249,258,634 '渠道接':44 '环境变量':139 '用':340,594 '用新账号':514 '用途':588 '登录':515,609 '登录账号供应商':119 '的':275,665 '的情况下做高并发压测':679 '目标':97 '直写':403 '直写价格':151 '直写额度':27 '直接':600 '直连':568 '相对':385 '看':394,672 '端口':149 '端口分配':101 '端口暴露到公网':192 '第一次配置务必发请求':393 '等字段':435 '等订阅账号包装成可计费的':14 '等踩坑表':626 '管理员手动加额度':437 '类型':261 '系统':428 '组合栈':11 '经':572 '结论必须基于':84 '统一用本地登录':656 '脚本会':372 '脚本完成后':224 '脚本流程':503 '自动':522 '自动算出三个倍率':344 '自定义':432 '若漏改':181 '虚拟模型':565 '虚拟模型名':462 '行':581 '表的':375 '裸部署已在':157 '裸部署是否就绪':110 '要在哪些机器上落':136 '覆盖回去':520 '计算示例':619 '计费层':41 '计费日志验证':606 '订阅条件':631 '订阅账号':51 '详见':270,538 '负责':18 '账号注册':239 '资源索引':586 '跑通':113 '跨会话声称':669 '跨多台机器同步时':468 '轮询语义':541 '输入价的倍数':386 '这是客户端的':330 '远端':649 '通过':57 '通过判定':567 '避免并行写覆盖':477 '部署':21,36,210 '部署完成':585 '配置':42 '配置在线充值':423 '里可能除以':391 '里对应':578 '重启容器':379 '降级路径':140 '限流':67 '隧道折腾':651 '隧道配合':654 '额度':317 '首次访问':236 '验证':544 '验证方法':543 '默认':104,108,419 '默认走':141","prices":[{"id":"4c56d7e1-58fb-4b5d-aea7-9d6c08e4962f","listingId":"9b3945fd-c701-4f3a-82c8-5d87fc7c5f38","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"majiayu000","category":"claude-arsenal","install_from":"skills.sh"},"createdAt":"2026-04-27T07:01:03.931Z"}],"sources":[{"listingId":"9b3945fd-c701-4f3a-82c8-5d87fc7c5f38","source":"github","sourceId":"majiayu000/claude-arsenal/cliproxy-newapi-stack","sourceUrl":"https://github.com/majiayu000/claude-arsenal/tree/main/skills/cliproxy-newapi-stack","isPrimary":false,"firstSeenAt":"2026-04-27T07:01:03.931Z","lastSeenAt":"2026-05-18T19:04:14.304Z"}],"details":{"listingId":"9b3945fd-c701-4f3a-82c8-5d87fc7c5f38","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"majiayu000","slug":"cliproxy-newapi-stack","github":{"repo":"majiayu000/claude-arsenal","stars":33,"topics":["agent-skills","ai-agents","ai-coding-assistant","automation","claude","claude-code","code-review","developer-tools","devops","productivity","prompt-engineering","python","software-development","typescript","workflows"],"license":"mit","html_url":"https://github.com/majiayu000/claude-arsenal","pushed_at":"2026-05-15T16:33:53Z","description":"52 production-ready Claude Code skills and 7 specialized agents for software development, DevOps, product workflows, and automation.","skill_md_sha":"b8cfaeeaf816539349f7fe0d24216b4c7c7d0ee8","skill_md_path":"skills/cliproxy-newapi-stack/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/majiayu000/claude-arsenal/tree/main/skills/cliproxy-newapi-stack"},"layout":"multi","source":"github","category":"claude-arsenal","frontmatter":{"name":"cliproxy-newapi-stack","description":"在 Linux VPS 上部署 CLIProxyAPI + NewAPI 组合栈，把 Codex/Claude/Gemini/Qwen 等订阅账号包装成可计费的 OpenAI 兼容 API。负责 NewAPI Docker 部署、容器→宿主桥接、模型计费倍率（ModelRatio/CacheRatio/CompletionRatio）、SQLite 直写额度、CLIProxyAPI 408 冷却补丁、多账号 OAuth 凭据热加载、双路径验证。当用户说\"部署 cliproxy + newapi\"、\"加 OpenAI 计费层\"、\"配置 newapi 渠道接 cliproxy\"、\"newapi 价格不对\"、\"加新的 codex/claude 账号到现有部署\"、\"172.17.0.1 容器网络\"、\"408 冷却放大故障\"时触发。"},"skills_sh_url":"https://skills.sh/majiayu000/claude-arsenal/cliproxy-newapi-stack"},"updatedAt":"2026-05-18T19:04:14.304Z"}}