这是一个 CLIProxyAPI(CPA)原生插件,用 CPA 已有的 ChatGPT/Codex OAuth 凭据直接请求。
在管理界面的「第三方插件源 → 插件源 registry URL (plugins.store-sources)」中添加以下地址并保存,然后刷新插件商店,搜索 CPA OpenAI Basis Points:
https://raw.githubusercontent.com/JaxsonWang/cpa-plugin-oai-basispoints/main/registry.json
也可合并到 CPA 宿主配置(config.yaml,与下方插件配置共用同一个 plugins 节点):
plugins:
enabled: true
store-sources:
- https://raw.githubusercontent.com/JaxsonWang/cpa-plugin-oai-basispoints/main/registry.json保留已有插件源,不要整体覆盖原有 plugins 配置;内置官方源由 CPA 自动保留。本源使用宿主原生的 github-release 安装方式,最新版本以本仓库已发布的 GitHub Release 为准,不在 registry 中另行维护版本号。CPA 会按运行平台下载 oai-basispoints_<version>_<goos>_<goarch>.zip,并使用同一 Release 的 checksums.txt 校验。
发行包覆盖 Linux、macOS、Windows 的 AMD64/ARM64。插件商店负责下载、校验和安装;更新已加载的动态库后仍需重启 CPA,使新代码及 OAuth 认证解析生效。
- 将
build/linux/amd64/oai-basispoints.so复制到 CPA 的 Linux amd64 插件目录。 - 将
config.example.yaml按需合并到 CPA 的config.yaml;它是完整的宿主配置示例,不会由插件自动读取。插件内置默认暴露gpt-6-astra-basispoints,示例同时配置 Astra 和 Sol,可继续增删模型。 - CPA 的
auth-dir中已有的type: codexOAuth 文件会被插件识别;插件只在内存中读取 token,不生成另一份 token 文件。 - 客户端使用 Responses 协议调用
gpt-6-astra-basispoints。模型目录声明图像输入,以及low、medium、high、xhigh、max、ultra思考等级;max映射为xhigh,ultra原样传递,未指定时默认medium。
插件的 auth.parse 会接管 CPA 中 type: codex 的 OAuth 文件,并为同一个文件展开两条内存认证:一条保留原生 codex,另一条是 oai-basispoints 虚拟认证。这样现有 Codex 模型继续使用 CPA 原生执行器,gpt-6-astra-basispoints 则使用本插件;不会生成或改写 OAuth 文件。原生 Codex 记录保留源 OAuth 元数据,供原生执行器读取访问令牌和刷新令牌。注意:当前 CPA 会把这两条记录都标记为虚拟认证,不持久化原生记录的刷新结果;Basis Points 记录也不会自动同步原生记录在内存中刷新的 JWT。源 JWT 过期时,需要先通过 CPA 更新或重新导入源 OAuth 凭据,再重新加载,单纯重载过期文件无效。流式响应遵循 Responses SSE 格式,但为保证工具调用可在完整 item 上做安全转换,当前会先读完上游 SSE 再回放给客户端,不是 token 级实时转发。
make test
make build-
Codex 模型目录为本插件别名同步对应规范模型的
apply_patch_tool_type,保留缺失与空值语义。更新后需让 Codex 刷新模型目录,再用新会话验测原生补丁及差异入口;不回填历史会话事件。 -
客户端实验工具仅按对应规范模型开放已接入的时钟和异步提问;不声明尚未实现密文消息契约的多代理 v2。旧缓存或显式启用 v2 的请求若包含代理密文会明确返回 400,不会强转明文。不会批量复制 Code Mode、审核策略或未知实验工具,也不会改写客户端个人配置。
-
结构化
text.format(json_object/json_schema)尚未实现,显式返回 400;不丢弃 Schema 后返回普通正文冒充成功。text.verbosity的上游映射仍未实现,本版保留既有行为以避免默认请求回归,不宣称详细程度参数已生效。 -
上游请求始终带
Authorization: Bearer <access_token>、chatgpt-account-id、x-openai-account-id和x-basispoints-auth-mode: chatgpt。 -
turn_id按会话和当前用户 turn 稳定生成;工具结果回合只递增agent_iteration,不会把同一 turn 重新当成新计划。 -
工具中继通过外层
references: [完整工具名]路由,code只承载该工具的载荷:function 工具为参数 JSON 对象,custom 工具为逐字保留的原始文本。不要再套{tool,args}内层包装;插件不执行其中代码。已有会话的原生历史调用原样回放,新调用按本次注入的协议生成。 -
非法函数 JSON、目录外工具或不符合 schema 的参数仍严格拒绝,最多重新生成一次,失败返回 422;不猜测修补引号、不丢弃坏调用,也不将失败响应部分交付。
-
未能从 OAuth JWT 或凭据字段得到账号 ID、token 过期、上游返回非 2xx、工具名不在客户端目录中时,插件会报告明确错误,不伪造成功。
本项目基于 MIT License 开源
感谢 LINUX DO 社区 的支持