CPA 安装及使用

安装,运行,停止,卸载及更新

安装

  • 克隆github仓库
  • cp config.example.yaml config.yaml,编辑config.yaml如本机文件
    • 注意这个里面的127.0.0.1指的是宿主机的localhost,也就是容器对应的端口只监听宿主机自己发出的消息
  • 编辑docker-compose.yaml如本机文件
    • 注意这个里面的host不要写成127.0.0.1,因为这是指容器的host,如果写成了127.0.0.1,代表容器的这个端口只监听来自容器自身的消息了,宿主机发消息就没用了
  • 关闭VS Code,docker compose up -d
  • 进入Web管理界面http://localhost:8317/management.html输入密码成功登陆即可

运行

  • 关闭VS Code(之后随便开)
  • docker compose start

停止

  • docker compose stop

卸载

  • docker compose down

更新

  • docker compose up -d

提供商

OAuth 登录

Codex OAuth

登录

  • 点击“OAuth”登录
  • 将链接复制到浏览器中完成登录即可

修改配置

  • 修改优先级

Bug 修复

  • OAuth认证的时候遇到了Failed to exchange authorization code for tokens?
    首先检查一下自己的浏览器是否可以打开auth.openai.com的网址,如果打不开,可能是IP被屏蔽了,修改***的配置文件,将IP换到美国,然后打开TUN模式(注意要先安装Service Mode),再进一下,如果可以登陆的话,就按照常规走就好了
  • 如何判断这篇帖子提到的降智问题?
    看我的L站里面的回答

AI 提供商

OpenAI 兼容

工作原理

将Base URL添加上chat/completions,同时请求头比较简洁,User-Agentcli-proxy-openai-comp
所以对方一下子就会看出来这是CPA的请求

Claude

工作原理

将Base URL添加上v1/messages,请求头直接透传,所以对方不一定看得出来是CPA

Codex

工作原理

将Base URL添加上/responses,请求头直接透传,所以对方不一定看得出来是CPA

Gemini

工作原理

发送{baseURL}/v1beta/models/{model}:{action},其中 actiongenerateContent(生成内容)或 countTokens(计算 token 数)
请求头似乎不是透传,而是自己构造(到时候看一看日志确定)

配置文件

参数

  • disable-cooling:是否禁止冷却。如果不禁止,冷却时间为半小时
  • request-log:是否记录详细日志。日志中的内容如下:
    • === REQUEST INFO ===:本次请求概览
    • === HEADERS ===:(下游应用)发送给CPA的请求头
    • === REQUEST BODY ===:(下游应用)发送给CPA的请求体
    • === API REQUEST x ===:CPA发送(给上游提供商)的请求头和请求体。x可能大于\(1\),因为这个请求在一些提供商中失败了,CPA会进行轮询
    • === API RESPONSE x ===:第x个提供商的返回内容
    • === RESPONSE ===:(给下游应用的)最终返回内容

请求策略

DeepWiki

使用

Codex

ssh -R 127.0.0.1:8317:127.0.0.1:8317 <hostname>

  • -R表示远程对应端口的流量转发到本地的映射端口

FAQ

如果在同一个渠道里面,用同一个 alias 映射了多个模型,那么会怎么办?

对于 OpenAI 兼容来说,会依次询问这个渠道里面的所有模型;对于 codex 来说,只会询问第一个模型
如果要在 codex 中达到类似的效果,那么需要手动编辑文件 config.yaml,在里面找到密钥部分,为每个模型创建一模一样的渠道(除了模型本名不一样其他都一样)

为什么 CPA 没有按照预期那样轮询所有可能的模型?

除了之前说的 codex,还有可能是,cpa 不会对所有的状态码都轮询,有一些状态码是会直接终止的

posted @ 2026-04-12 17:05  最爱丁珰  阅读(1205)  评论(0)    收藏  举报