dsh-gpt-auto-proxy:在本机把订阅凭证转成 OpenAI 兼容接口

前言

在 DSH 里接模型,常见做法是填第三方或自建的 OpenAI 兼容 base_url。若你已有合法订阅,却希望在本机用 Responses 风格 API 调同一套后端,又不想把凭证交给中间服务,就需要一个只监听回环地址、凭证留在本地的转换层。下面介绍社区插件 dsh-gpt-auto-proxy(维护者 TheCarey,GitHub TheCarey/Dsh-gpt-auto-proxy):非官方个人项目,与 OpenAI、ChatGPT、Codex 及任何上游均无隶属关系,仅供个人学习研究;目录见 SkillHub 插件页。

这是什么

一句话:把自己的订阅凭证在本机转成 OpenAI 兼容的本地 HTTP 接口,并由 DSH 插件托管启停;设置页只读展示 5 小时 / 7 天额度,可选一次极小真实调用判断链路是否可用。

当前 package 版本为 0.3.0,许可证 MIT,分类属 模型推理。仓库说明强调:单文件单账号、不做账号池、不对外提供接口、不包含登录或凭证获取流程。

核心功能

本地代理与协议转换

在 127.0.0.1:<LOCAL_PORT>(配置默认端口 8787)起 HTTP 服务,只接受本机回环入站。客户端发 OpenAI Responses 风格请求时,服务清洗字段、把系统指令提到顶层、剔除上游不认识的字段,再读凭证文件中的 access_token 转发上游;SSE 分片原样流回。401 时用 refresh_token 刷新,并按文件修改时间重载凭证。

DSH 集成

作为 DSH 插件:DSH 启动时拉起本地服务,退出时回收;端口已被同类服务占用时只复用、不抢占。设置页出现 「订阅服务 / 用量」 表示 bundle 生效。客户端侧可注入 Web 槽位展示额度与状态灯。

额度与探活

提供只读额度查询(供 UI 展示 5 小时 / 7 天窗口)。「现在能不能用」依赖可选的极小真实模型调用(默认探活模型 canaryModel 为 gpt-6-sol,会消耗极少量额度),结果有缓存。

明确不做的事

不做多账号池、批量注册、凭证共享、局域网/公网对外监听,也不提供绕过计费或代他人代理流量的能力。上游条款与封号风险由使用者自行评估。

安装与启用

环境要求:Node.js ≥ 22(使用内置 fetch、AbortSignal.timeout);可选 DSH;自备凭证文件与出网环境(需要时可配本机 HTTP 代理)。

准备凭证

项目不提供登录流程。凭证 JSON 需自行通过官方客户端获得,形态如下(路径示例 <YOUR_TOKEN_FILE>,勿进仓库):

{
  "access_token": "<ACCESS_TOKEN>",
  "refresh_token": "<REFRESH_TOKEN>",
  "account_id": "<ACCOUNT_ID>",
  "expires_at": 0
}

装进 DSH profile

  1. 将插件目录放到:
<DSH_HOME>/profiles/<PROFILE>/node_modules/dsh-gpt-auto-proxy
  1. 在该 profile 的 package.json 登记依赖与 bundle(dsh.profile.bundles 为启用入口;勿在 profile 的 cordis.patch.yml 里重复手写 insert):
"dependencies": {
  "dsh-gpt-auto-proxy": "file:node_modules/dsh-gpt-auto-proxy"
},
"dsh": {
  "profile": {
    "bundles": ["dsh-gpt-auto-proxy"]
  }
}
  1. 重启 DSH,设置页出现 「订阅服务 / 用量」 即为成功。

配置文件

复制仓库内 config.example.json 为 <DSH_HOME>/gpt-auto-proxy.json。常用字段如下(缺省走默认值):

字段 默认 说明
autoStart true DSH 启动时是否自动拉起服务
port 8787 本地监听端口
proxy http://127.0.0.1:<PROXY_PORT> 出网代理;空字符串表示不走代理
tokensFile <DSH_HOME>/gpt-auto-proxy/tokens.json 凭证路径(只读,界面不显示内容)
usageCacheSeconds 60 额度缓存秒数
canaryModel gpt-6-sol 探活模型
canaryTimeoutMs 20000 探活超时

环境变量可覆盖:GPT_PROXY_BRIDGE_ENTRY、GPT_PROXY_TOKENS_FILE(留空即不启用)。

脱离 DSH 单独运行

CODEX_BRIDGE_PORT=<LOCAL_PORT> \
CODEX_BRIDGE_PROXY=http://127.0.0.1:<PROXY_PORT> \
CODEX_BRIDGE_TOKENS=<YOUR_TOKEN_FILE> \
node bridge/bridge.mjs

端点包括:POST /v1/responses、GET /v1/models、GET /v1/usage、GET /health。

典型用法

本地服务不校验客户端 Bearer,占位即可;真实凭证由服务从 tokensFile 读取。

curl 非流式

curl http://127.0.0.1:8787/v1/responses \
  -H "Authorization: Bearer sk-local-dummy" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-6-sol",
    "input": "用一句话解释什么是 SSE。",
    "stream": false
  }'

OpenAI SDK(Python)

from openai import OpenAI

client = OpenAI(
    base_url="http://127.0.0.1:8787/v1",
    api_key="sk-local-dummy",
)

resp = client.responses.create(model="gpt-6-sol", input="你好")
print(resp.output_text)

在 DSH 里接模型

  1. 确认插件已启用且本地服务在运行。
  2. 模型设置中添加自定义连接,base_url 填 http://127.0.0.1:8787/v1(端口以配置为准)。
  3. 在 「订阅服务 / 用量」 查看额度与主灯状态。

适用场景与注意

适合:有合法有效订阅、仅在本机自用;熟悉 Node.js 与本地代理;希望在 DSH 设置页查看额度窗口的个人开发者。

不适合:对外提供 API、多人共用、无自有订阅、或期望上游私有接口长期不变而零维护的场景。

插件以当前 DSH 进程权限 运行,凭证文件权限应限制为仅本人可读;安装前请自行阅读仓库源码、MIT 许可证及 README 中的免责声明。非官方接入存在限流、封号等风险,重要账号请谨慎评估。

结尾

dsh-gpt-auto-proxy 把「凭证留在本机 + OpenAI Responses 兼容 + DSH 启停与用量 UI」收在一个 0.3.0 的 bundle 里,适合在自有订阅前提下做本地协议转换实验。更多信息见 SkillHub 目录页 与 GitHub 仓库。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜