cortico-provider-chatgpt
v0.1.6
Published
Sign in with ChatGPT for Cortico, with account controls and remote callback completion in WebUI
Maintainers
Readme
cortico-provider-chatgpt — src/index.ts, src/auth.ts, src/client.ts, src/callback.ts, webui/client.ts
普通 Cortico 的 ChatGPT 账号登录扩展。安装后注册 kind: "chatgpt",在模型端点编辑页提供登录、状态、取消和退出。
独立安装即可使用;OAuth 与 Responses 实现改编自 [email protected],请求转换与模型元数据仍依赖该固定版本,无需另外安装或配置 Coo 扩展。
安装与登录
需要 Node.js 22+、provider 扩展契约 API 6 的 Cortico,以及有资格授权套餐用量的 ChatGPT 账号。 账号资格、可用模型和用量由 OpenAI 返回,扩展不保证所有账号可用。 登录、模型请求与 callback 已通过官方 npm Cortico 0.2.2 的本地模拟测试,无需修改宿主。
- WebUI → 扩展 → Provider → 手动安装,填写本包目录的绝对路径;npm 发布后可填写
cortico-provider-chatgpt。 - 重启 Cortico,在模型提供商页新建端点,类型选 ChatGPT,填写端点名和模型后保存。无需填写 API Key;登录后可以从套餐模型列表重新选择模型。
- 在 ChatGPT 账号 区域点击 Continue with ChatGPT,在新开的浏览器页面完成授权。浏览器拦截新窗口时,点击面板中的授权链接。
- 状态显示 已登录 后,点击端点编辑页的获取模型列表,选择模型并保存,测试连接后设为当前端点。
地址与 API Key 输入框由官方 Cortico 显示。服务地址固定,无需填写 API Key,认证由账号登录管理。 建议只修改模型;其他配置请保持默认,修改后可能导致请求失败。
不同账号或 workspace 使用不同端点。已注册端点重新登录时沿用原注册;换账号请新建端点。
Coopanion 已注册同名 chatgpt 模块,不需要安装此扩展。
远程运行
callback 监听地址跟随当前部署的 web.host:配置 0.0.0.0 时监听全部 IPv4 接口,配置具体 IP 时只监听该 IP;未配置时使用 127.0.0.1。
扩展按官方命令行启动方式,从部署名参数或 CORTICO_BOT 确定部署,使用 cortico/paths.ts 的 deploymentDir() 定位 config.json,每次登录读取 web.host。--host=<地址> 优先于文件配置。
未指定部署或 web.host 时使用 127.0.0.1;自定义程序内嵌 Cortico 时需要传入部署名或 CORTICO_BOT。此功能无需修改 Cortico。
通过非 127.0.0.1 / localhost 地址访问 WebUI 时,面板显示远程回调提示。
授权后若浏览器无法连接,将地址栏 URL 的 127.0.0.1 改成访问 WebUI 使用的服务器主机名,保留 HTTP、随机端口、/auth/callback 和所有查询参数。
例如访问 https://server.example:7791/,授权后地址为 http://127.0.0.1:45678/auth/callback?code=...&state=...,
则改成 http://server.example:45678/auth/callback?code=...&state=...。面板会显示当前登录所用的服务器 callback 地址。
随机 callback 端口需要能从浏览器直接访问;WebUI 的反向代理端口不会自动转发它。 如果不能直接访问该端口,可把原始完整 URL 粘贴到 完整回调地址,经当前 WebUI 提交;请通过 HTTPS 或 SSH 隧道访问 WebUI。 回调 URL 包含一次性授权码,不要发到聊天、日志或工单中。
OpenAI 授权请求和授权码交换仍使用原始 127.0.0.1 redirect URI;用户改写的地址只影响浏览器如何到达 callback 监听器。
直接回调校验本次登录的端口、Host、路径和 state;粘贴提交仅接受原始回环地址,由服务端转发到配置的监听接口。
授权码仍由服务端使用 PKCE 交换,ID token 仍校验签名、issuer、audience、nonce、有效期和套餐授权 scope。
登录十分钟内有效;取消或重新登录会关闭之前的监听器。关闭面板不会取消登录,重新打开可以继续。
OpenAI 的 远程 VM 文档 另有本地登录后经 SSH 转移凭据的流程。 本扩展提供直接回调和回调提交,无需手动复制令牌文件。
凭据与请求
端点目录 <部署根>/providers/<端点名>/.env 保存 CHATGPT_* 注册信息与令牌,文件权限为 0600,原子替换。
令牌即将过期或请求被拒绝时自动刷新;同一进程内共享端点的刷新请求合并。不要让两个 Cortico 进程同时刷新同一端点的凭据。
退出登录会删除本地令牌并尝试撤销 refresh token,保留 client id、host id 与账号身份供再次登录。
请求固定发送到 https://api.openai.com/v1/responses,使用流式响应和 store: false;端点填写的其他服务地址不会接收令牌。
流中的 response.metadata 不参与正文拼装;终止响应的空 output 由已完成的输出项补齐。
其他 Provider 历史中的 text 片段在发送时按角色转换为 input_text 或 output_text,不改写存档。
获取模型列表会读取套餐公开列出的模型。套餐用量达上限时,普通生成按 Coo 的实现等待五分钟后重试;测试连接仍报告上限错误。
本扩展使用自身面板的数据接口。 参考 OpenAI 登录协议 和 Coo Provider 实现。
开发与校验
pnpm install
pnpm test
pnpm typecheck
pnpm typecheck:webui
pnpm build:webui在 Cortico 根目录执行:
pnpm describe:extension packages/cortico-provider-chatgpt
pnpm check:extension packages/cortico-provider-chatgpt测试使用本地 OAuth、JWKS、模型列表与 Responses 服务,不登录真实账号,不访问公网。
许可证:AGPL-3.0-or-later。OAuth 与请求实现改编自 Pal AI Lab 的 Coo Provider 0.3.0,源代码见 src/auth.ts 与 src/client.ts。
