把自有订阅凭证在本机转成 OpenAI 兼容接口
30.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/28 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add TheCarey/Dsh-gpt-auto-proxy该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · other
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 7 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 15 处,展示前 15 条)
- 发起网络请求lib/host.js:237
const 响应 = await fetch(url, { ...opts, signal: 控制器.signal }) - 发起网络请求lib/host.js:460
const 响应 = await fetch(`http://127.0.0.1:${配置.port}/v1/responses`, { - 发起网络请求lib/host.js:621
请求 = 选.request(请求选项) - 执行外部命令来自配置/变量lib/host.js:1111
child = spawn(NODE_BIN, [entry], { - 执行外部命令来自配置/变量lib/host.js:1342
child = spawn(NODE_BIN, [用量探针], { env, windowsHide: true, stdio: ['ignore', 'pipe', 'pipe'] }) - 发起网络请求lib/client.js:35
fetch(B + p, { cache: 'no-store' }) - 发起网络请求lib/client.js:39
fetch(B + p, { - 发起网络请求lib/client.js:248
fetch(url, { mode: 'no-cors', cache: 'no-store', ...(控制器 ? { signal: 控制器.signal } : {}) }) - 读取密钥环境变量bridge/bridge.mjs:144
tokensFile: overrides.tokensFile ?? process.env.CODEX_BRIDGE_TOKENS ?? path.join(ROOT, 'tokens.json'), - 发起网络请求bridge/bridge.mjs:221
response = await fetch(`${config.authBase}/oauth/token`, { - 发起网络请求bridge/bridge.mjs:485
upstreamResponse = await fetch(config.upstream, { - 发起网络请求bridge/bridge.mjs:793
response = await fetch(config.usageUrl, { - 执行外部命令来自配置/变量bridge/bridge.mjs:999
const child = spawn(process.execPath, process.argv.slice(1), { - 读取密钥环境变量lib/usage-probe.mjs:22
const TOKENS_FILE = process.env.GPT_PROXY_TOKENS || '' - 发起网络请求lib/usage-probe.mjs:78
response = await fetch(USAGE_URL, { method: 'GET', headers, signal: AbortSignal.timeout(20_000) })
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
展开完整介绍(59 字)↓
把自有订阅凭证在本机转成 OpenAI 兼容接口的 DSH 插件;非官方项目,与任何上游服务无关联,仅供个人学习研究。
README
由 DeepSeek 最新模型翻译生成dsh-gpt-auto-proxy
⚠️ 免责声明(请务必先读)
- 本项目是非官方的个人项目,与 OpenAI、ChatGPT、Codex 以及任何上游服务提供方均无任何隶属、合作、授权或背书关系。相关名称与商标归各自所有者。
- 仅供个人学习与技术研究(协议转换、SSE 透传、本地进程托管、配置界面等工程实现)。
- 本项目做的事是:把你自己的订阅凭证在本机转换成一个 OpenAI 兼容的本地接口,供你自己机器上的工具调用。这不是官方支持的能力。
- 使用本项目的一切后果由使用者自行承担,包括但不限于账号被限流、降级、暂停或封禁,以及由此产生的订阅费用与法律责任。
- 禁止商业转售、二次分发接口、对外提供付费/免费服务、批量滥用、账号池、凭证共享,以及任何形式的规避付费与计费。
- 是否遵守上游服务条款(ToS / AUP)完全由使用者自己负责。不确定自己的用法是否合规,就请不要使用。
一句话简介
把自己的 ChatGPT 订阅凭证,在本机转成一个 OpenAI 兼容的本地接口,并交给 DSH 插件托管:自动启停、额度只读展示、以及一次极小真实调用判断「现在到底能不能用」。
展开完整文档(README 剩余 1 节)
dsh-gpt-auto-proxy
⚠️ 免责声明(请务必先读)
- 本项目是非官方的个人项目,与 OpenAI、ChatGPT、Codex 以及任何上游服务提供方均无任何隶属、合作、授权或背书关系。相关名称与商标归各自所有者。
- 仅供个人学习与技术研究(协议转换、SSE 透传、本地进程托管、配置界面等工程实现)。
- 本项目做的事是:把你自己的订阅凭证在本机转换成一个 OpenAI 兼容的本地接口,供你自己机器上的工具调用。这不是官方支持的能力。
- 使用本项目的一切后果由使用者自行承担,包括但不限于账号被限流、降级、暂停或封禁,以及由此产生的订阅费用与法律责任。
- 禁止商业转售、二次分发接口、对外提供付费/免费服务、批量滥用、账号池、凭证共享,以及任何形式的规避付费与计费。
- 是否遵守上游服务条款(ToS / AUP)完全由使用者自己负责。不确定自己的用法是否合规,就请不要使用。
一句话简介
把自己的 ChatGPT 订阅凭证,在本机转成一个 OpenAI 兼容的本地接口,并交给 DSH 插件托管:自动启停、额度只读展示、以及一次极小真实调用判断「现在到底能不能用」。
适合谁用
- 有合法有效订阅、只想在自己这台机器上自用的个人开发者;
- 已经习惯本地代理(如 Clash 类工具)与 Node.js,能自己看懂配置文件的人;
- 想顺手在 DSH 设置页里看一眼 5 小时 / 7 天额度窗口的人。
不适合谁用
- 想把它做成对外 API、卖给别人、或给一群人共用的人(本项目不提供这些能力,也不允许这样用);
- 没有自己的订阅、想找一条绕过付费的路子的人;
- 期待「一键装完永久免维护」的人(上游接口是私有的,随时可能变化)。
它做什么 / 它不做什么
它做什么
- 在 127.0.0.1:<LOCAL_PORT> 起一个只监听本机回环地址的 HTTP 服务,把 OpenAI Responses 风格的请求清洗后转发到上游,SSE 原样流回;
- 凭证失效(401)时用 refresh_token 自动刷新,并按文件修改时间重载凭证;
- 提供一个只读的额度查询接口,供设置页显示 5 小时 / 7 天用量;
- 作为 DSH 插件:DSH 启动时拉起本地服务,DSH 退出时一并回收;端口已被占用时只复用、不抢占;
- 可选地发一次极小的真实调用判断链路是否真的通(会消耗极少量额度)。
它不做什么(明确划界)
- ❌ 不做账号池:凭证模型是单文件、单账号,没有多账号轮换、没有池化调度;
- ❌ 不做批量注册:不包含任何注册、验证码、批量开号相关的逻辑;
- ❌ 不提供凭证共享:不导出凭证、不中转他人凭证、没有「分享给别人用」的通道;
- ❌ 不代理他人流量:默认只监听回环地址,设计上不面向局域网/公网提供服务,严禁改成对外监听;
- ❌ 不绕过付费:不修改计费、不伪造用量、不规避额度限制;
- ❌ 不提供凭证获取流程:不包含登录/注册脚本,凭证必须你自己通过官方途径获得。
工作原理
你的客户端(curl / SDK / 编辑器插件 / DSH 模型连接) │ ① 发 OpenAI Responses 风格请求,Authorization: Bearer <任意占位串> ▼ 本机 dsh-gpt-auto-proxy —— 只监听 127.0.0.1:<LOCAL_PORT> │ ② 清洗请求:整理字段、把系统指令提到顶层、剔除上游不认的字段 │ ③ 读 <YOUR_TOKEN_FILE> 里的 access_token(只读,页面不显示内容) ▼ 可选的本机 HTTP 代理(默认 http://127.0.0.1:<PROXY_PORT>,可关闭) ▼ 上游服务(订阅所属的对话服务后端) │ ④ 鉴权、限流、生成 ▼ ▲ ⑤ SSE 分片原样流回客户端
要点:
- 凭证始终留在本机,不经过任何第三方服务器;
- 服务的入站请求只接受本机回环地址;
- 日志里的凭证一律打码(只留首尾若干位),不落明文。
安装与配置
环境要求
- Node.js ≥ 22(用到内置 fetch、AbortSignal.timeout);
- DSH(可选:bridge/bridge.mjs 也能脱离 DSH 单独运行);
- 你自己的订阅账号与对应的凭证文件;
- 能访问上游的网络环境;如需代理,自备本机 HTTP 代理。
一、准备凭证文件
本项目不提供登录流程。请按官方客户端的方式自行完成一次登录,得到一个形如下面的文件:
{
"access_token": "<ACCESS_TOKEN>",
"refresh_token": "<REFRESH_TOKEN>",
"account_id": "<ACCOUNT_ID>",
"expires_at": 0
}
- 路径建议:<YOUR_TOKEN_FILE>(例如放在你的用户目录下,不要放进任何代码仓库);
- 文件权限建议设为「仅本人可读」,因为它可以直接调用你的账号;
- 绝对不要公开、截图、贴进 issue 或聊天记录。
二、装进 DSH(插件形态)
1. 把本目录放到你的 DSH profile 下:
<DSH_HOME>/profiles/<PROFILE>/node_modules/dsh-gpt-auto-proxy
2. 在 profile 的 package.json 里登记两处:
"dependencies": {
"dsh-gpt-auto-proxy": "file:node_modules/dsh-gpt-auto-proxy"
},
"dsh": {
"profile": {
"bundles": ["dsh-gpt-auto-proxy"]
}
}
dsh.profile.bundles 才是真正的启用入口;组合包自带的 cordis.patch.yml 会在组合时被应用,因此不要再往 profile 的 cordis.patch.yml 里手写 insert(会重复注册)。
3. 重启 DSH,设置页出现 「订阅服务 / 用量」 即为成功。
三、配置文件
复制 config.example.json 为 <DSH_HOME>/gpt-auto-proxy.json,按需修改(缺省字段自动使用默认值):
| 字段 | 默认 | 说明 |
| autoStart | true | DSH 启动时是否自动拉起本地服务 |
| port | <LOCAL_PORT>(默认 8787) | 本地监听端口;被占用则复用,不抢 |
| proxy | http://127.0.0.1:<PROXY_PORT> | 出网代理;空字符串 = 不走代理 |
| tokensFile | <DSH_HOME>/gpt-auto-proxy/tokens.json | 凭证文件路径(只读,界面只显示路径) |
| bridgeEntry | 插件自带实现 | 想接外部实现时指过去 |
| usageUrl | 上游额度接口 | 额度查询地址 |
| usageCacheSeconds | 60 | 额度缓存秒数 |
| canaryModel | gpt-6-sol | 真实调用探活用的模型;账号不支持时换一个可用的 |
| canaryTimeoutMs | 20000 | 探活超时 |
| probeUrl / probeCacheSeconds | 上游首页 / 6 | 连通性探测,仅作辅助信息 |
外部路径也可用环境变量覆盖: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 | 转发到上游,SSE 流回 |
| GET | /v1/models | 可用模型列表 |
| GET | /v1/usage | 账号额度(5 小时 / 7 天窗口) |
| GET | /health | 健康检查与凭证状态(不含凭证原文) |
使用示例
以下 sk-local-dummy 是假 token,仅用于占位——本地服务不校验它,真正的凭证由服务自己去读 <YOUR_TOKEN_FILE>。
curl
curl http://127.0.0.1:<LOCAL_PORT>/v1/responses \
-H "Authorization: Bearer sk-local-dummy" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-6-sol",
"input": "用一句话解释什么是 SSE。", "stream": false }'
流式:
curl -N http://127.0.0.1:<LOCAL_PORT>/v1/responses \
-H "Authorization: Bearer sk-local-dummy" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-6-sol","input":"写一个三行的 Python 循环","stream":true}'
OpenAI 兼容客户端(任意语言)
from openai import OpenAI
client = OpenAI(
base_url="http://127.0.0.1:<LOCAL_PORT>/v1",
api_key="sk-local-dummy", # 占位串,随便填
)
resp = client.responses.create(model="gpt-6-sol", input="你好")
print(resp.output_text)
import OpenAI from 'openai'
const client = new OpenAI({
baseURL: 'http://127.0.0.1:<LOCAL_PORT>/v1',
apiKey: 'sk-local-dummy', // 占位串 })
const res = await client.responses.create({ model: 'gpt-6-sol', input: '你好' })
console.log(res.output_text)
在 DSH 里用
1. 确保插件已启用、本地服务在跑;
2. 在模型设置里添加一个自定义连接,地址填 http://127.0.0.1:<LOCAL_PORT>/v1;
3. 打开设置页「订阅服务 / 用量」看额度与主灯状态。
常见问题(FAQ)
为什么需要我自己准备凭证?
因为本项目不包含登录、注册或凭证获取流程——这是有意的设计。凭证代表你账号的授权,任何「自动帮你搞到凭证」的东西都意味着凭证经过第三方。本项目只做「拿到凭证之后的协议转换」,凭证从哪来、归谁所有,由你自己负责。
有没有被限流或封号的风险?
有,而且不小。 上游对这类非官方接入通常有明确条款限制,检测到异常调用模式(高频、异常 UA、多来源共用、超量并发)可能直接限流或封号。本项目无法、也不会替你规避这些检测。请自行评估风险,不要用重要账号尝试。
为什么不能公开分享 token?
tokens.json(或你的 <YOUR_TOKEN_FILE>)里的 access_token / refresh_token 等同于你账号的登录态。一旦泄露:别人可以用你的账号、消耗你的额度、看你的历史对话,且你无法分辨是谁在用。刷新令牌还可能让你自己的会话被踢下线。所以:不进仓库、不进截图、不进聊天记录、不放进同步盘。
支持哪些请求字段?
实现了 OpenAI Responses 风格的子集:
- 支持:model、input(字符串或消息数组)、instructions、stream、reasoning.effort、tools / 工具调用回传、图片输入(取决于账号与模型能力);
- 会被丢弃:max_output_tokens 等上游不接受的字段(不报错,直接剔除);
- 不保证支持:temperature 等采样参数、后台任务、文件上传等更冷门的字段——上游是否接受以实际返回为准。
模型清单是内置的静态列表,上游随时可能增删模型;遇到 400/404 说明该模型当前不可用,换一个即可。
端口被占用了怎么办?
设计上「不抢端口」:如果 <LOCAL_PORT> 上已经有一个同类服务,插件只复用它;如果被其它程序占用,会进入冲突状态并保持不动,不会去杀别人进程。改 port 即可。
界面上的「现在能不能用」是怎么判断的?
不是看端口通不通,而是真的发一次极小调用(约 20 多个 token),按返回结果分类成「可用 / 凭证失效 / 额度用尽 / 网络不通 / 本地服务未运行 / 上游故障 / 请求被拒」。结果缓存 60 秒,页面可见时最多每 5 分钟一次。这会消耗极少量额度,介意就别点。
许可证与致谢
本项目自有代码以 MIT 许可证发布,见 LICENSE。
第三方来源(详见 NOTICE):
- bridge/bridge.mjs 里的模型目录字段取自 pi-ai(@mariozechner/pi-ai,作者 Mario Zechner)的 openai-codex provider 数据;仅复制事实性字段,未复制其实现。使用/再分发前请自行核对其许可证。
- 请求头中的 OAuth 客户端标识与 originator / User-Agent 约定,来自 OpenAI 官方开源的 Codex CLI(Apache-2.0)及公开 API 行为;这些是公开常量,不构成任何授权。
- 本项目是 DSH 的第三方插件,依赖其 webServer 与客户端注入槽;本仓库不含 DSH 代码。
本仓库不包含上游服务提供方的任何源代码。
再次提醒:合规使用、封号风险、以及上游服务条款的责任,都在使用者本人。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
TheCarey/Dsh-gpt-auto-proxy
把自有订阅凭证在本机转成 OpenAI 兼容接口
相关插件 · 其他
模型破甲清洗HunYiSage/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,993已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,269已汉化DSH
70.8
这是你的仓库?认领条目