@eddyskywalker/dsh-chatgpt-subscription 0.2.9 → 0.2.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -24
- package/LICENSE +21 -21
- package/README.md +169 -169
- package/bin/antigravity-login.mjs +15 -4
- package/cordis.patch.yml +6 -6
- package/lib/client.js +42 -8
- package/lib/client.js.map +1 -1
- package/lib/index.js +206 -91
- package/lib/types/client/antigravity/AntigravityComposerQuota.d.ts.map +1 -1
- package/lib/types/client/antigravity/AntigravitySection.d.ts.map +1 -1
- package/lib/types/client/locales.d.ts +1 -1
- package/lib/types/host/antigravity/adapter.d.ts +4 -1
- package/lib/types/host/antigravity/adapter.d.ts.map +1 -1
- package/lib/types/host/antigravity/client.d.ts +23 -1
- package/lib/types/host/antigravity/client.d.ts.map +1 -1
- package/lib/types/host/antigravity/oauth.d.ts +9 -3
- package/lib/types/host/antigravity/oauth.d.ts.map +1 -1
- package/lib/types/host/antigravity/routes.d.ts.map +1 -1
- package/lib/types/host/antigravity/types.d.ts +6 -0
- package/lib/types/host/antigravity/types.d.ts.map +1 -1
- package/lib/types/host/model-catalog.d.ts.map +1 -1
- package/lib/types/index.d.ts +1 -1
- package/lib/types/index.d.ts.map +1 -1
- package/package.json +134 -134
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.2.10 - 2026-09-06
|
|
4
|
+
|
|
5
|
+
- 修复 Antigravity 模型元数据校验失败导致 Provider 整体消失的问题:在 `resolveModel` 中清洗并安全兜底 `defaultEffort`,确保透传给 DSH 内核的 `defaultEffort` 必定存在于当前模型的 `efforts` 清单内;解决 `gemini-3.1-pro` 等模型(仅支持 `low` / `high`)因默认回退 `medium` 触发 `@deepseek-ai/dsh-llm` 的 `INVALID_MODEL_REASONING` 校验异常导致 Provider 从模型选择列表中消失的问题(Issue #4)。
|
|
6
|
+
|
|
3
7
|
## 0.2.9 - 2026-09-06
|
|
4
8
|
|
|
5
9
|
- 修复在官方 DSH 0.1.2-rc.1 / dsh-llm 0.1.2-rc.1 上加载失败问题:移除 Antigravity 模块中对 `CallId` 的静态具名导入,统一采用 `toToolCallId` 兼容垫片,动态兼容 `ToolCallId` 与 `CallId`;解决启动(boot)阶段因缺失 `CallId` 导出抛出 SyntaxError 导致插件整树无法加载的问题(Issue #4)。
|
|
@@ -9,27 +13,27 @@
|
|
|
9
13
|
- Codex 订阅供应商新增 `gpt-6-astra`(6 Astra),支持文本、图片、工具调用和 `low` 至 `max` 思考档位,默认 `medium`;旧会话的 `none` / `minimal` 转为 `low`。
|
|
10
14
|
- 新增 Astra 上下文设置:默认 272K,订阅侧最高 872K,界面与服务端统一校验;保留已有模型选择与上下文配置。
|
|
11
15
|
|
|
12
|
-
## 0.1.28 - 2026-08-28
|
|
13
|
-
|
|
14
|
-
- 新增支持 1.5x 倍速快速模式(Fast Mode / Priority Service Tier):在设置页「增强功能」中提供开关,开启后向 Codex 后端请求自动注入 `service_tier: 'priority'`,以约 2x–2.5x 额度消耗换取约 1.5 倍的 Token 生成速度。
|
|
15
|
-
- 修复偏好设置更新白名单校验,支持持久化保存 `fastMode` 配置。
|
|
16
|
-
|
|
17
|
-
## 0.1.21 - 2026-08-22
|
|
18
|
-
|
|
19
|
-
- 修复 DSH 更新到 `0.1.1-rc.2` 后“本轮运行失败:registration.adapter.prepareCall is not a function”:新代理循环经 `ctx.llm.prepareCall()` 冻结每次调用,适配器必须实现 `prepareCall`;CodexChatGptAdapter 现显式绑定同一次解析的模型元数据与流分发(`PreparedAdapterCall`)。
|
|
20
|
-
- 将全部 `@deepseek-ai/*` peerDependencies 与 devDependencies 版本统一从 `^0.1.1-rc.1` 提升至 `^0.1.1-rc.2`,并重新生成 package-lock.json。
|
|
21
|
-
- 增强文件完整性与编码防御:确保 `package.json` 及全部工程文件均为无 BOM 的 UTF-8 编码,新增 `test/package-integrity.test.ts` 自动化防范 UTF-8 BOM 引入与依赖一致性。已在本机 rc.2 依赖集上验证:typecheck、69 项测试与 tsdown 构建全部通过。
|
|
22
|
-
|
|
23
|
-
## 0.1.20 - 2026-08-22
|
|
24
|
-
|
|
25
|
-
- 新增独立的“子代理”设置页;模型、思考深度和上下文预算改为所有 DSH 内置子代理的全局设置,不再要求父 Agent 使用 Codex 模型。
|
|
26
|
-
- 新增全局 0–3 最大嵌套深度和每个父 Agent 子树的活动子代理数量上限;新委派即时受限,现有运行不被中断。
|
|
27
|
-
- 子代理设置扩展为 DSH 全部已接入 Provider/模型;思考深度使用所选模型的真实 reasoning effort 目录,上下文在选定模型后展开并作为子 Agent 的有效压缩预算。
|
|
28
|
-
- 设置页新增 GPT-5.6 Sol / Terra / Luna 有效上下文窗口配置:默认 272K,可选最高 1M,并动态影响 DSH 的模型解析、压缩阈值与溢出判断。
|
|
29
|
-
|
|
30
|
-
## 0.1.12 - 2026-08-20
|
|
31
|
-
|
|
32
|
-
- 适配 DSH `0.1.0-rc.8`:peerDependencies / devDependencies 中全部 DSH 包范围从 `^0.1.0-rc.6` 提升至 `^0.1.0-rc.8`,并重新生成 package-lock.json。已在本机 rc.8 依赖集上验证:typecheck、55 项测试与 tsdown 构建全部通过,插件代码无需改动。
|
|
33
|
-
- 移除已无引用的 `@deepseek-ai/dsh-agent` peer 依赖(子代理报告去重兼容模块已于 0.1.11 移除)。
|
|
34
|
-
- 新增 `@deepseek-ai/dsh-client-connection` peer 依赖(客户端 `ContentBlock` 类型来源,符合 rc.8 客户端包 peer 声明惯例)。
|
|
35
|
-
- 说明:rc.8 中 `@deepseek-ai/dsh-client-ui-slots` 不再是 DSH 运行时依赖图成员(仅保留为各客户端包的 devDependency),插件继续将其声明为 peer 依赖以保证安装时解析(`^0.1.0-rc.6` 联网安装时解析到 rc.8;本地锁文件因离线环境暂固定 rc.7,API 与 rc.8 用法一致)。
|
|
16
|
+
## 0.1.28 - 2026-08-28
|
|
17
|
+
|
|
18
|
+
- 新增支持 1.5x 倍速快速模式(Fast Mode / Priority Service Tier):在设置页「增强功能」中提供开关,开启后向 Codex 后端请求自动注入 `service_tier: 'priority'`,以约 2x–2.5x 额度消耗换取约 1.5 倍的 Token 生成速度。
|
|
19
|
+
- 修复偏好设置更新白名单校验,支持持久化保存 `fastMode` 配置。
|
|
20
|
+
|
|
21
|
+
## 0.1.21 - 2026-08-22
|
|
22
|
+
|
|
23
|
+
- 修复 DSH 更新到 `0.1.1-rc.2` 后“本轮运行失败:registration.adapter.prepareCall is not a function”:新代理循环经 `ctx.llm.prepareCall()` 冻结每次调用,适配器必须实现 `prepareCall`;CodexChatGptAdapter 现显式绑定同一次解析的模型元数据与流分发(`PreparedAdapterCall`)。
|
|
24
|
+
- 将全部 `@deepseek-ai/*` peerDependencies 与 devDependencies 版本统一从 `^0.1.1-rc.1` 提升至 `^0.1.1-rc.2`,并重新生成 package-lock.json。
|
|
25
|
+
- 增强文件完整性与编码防御:确保 `package.json` 及全部工程文件均为无 BOM 的 UTF-8 编码,新增 `test/package-integrity.test.ts` 自动化防范 UTF-8 BOM 引入与依赖一致性。已在本机 rc.2 依赖集上验证:typecheck、69 项测试与 tsdown 构建全部通过。
|
|
26
|
+
|
|
27
|
+
## 0.1.20 - 2026-08-22
|
|
28
|
+
|
|
29
|
+
- 新增独立的“子代理”设置页;模型、思考深度和上下文预算改为所有 DSH 内置子代理的全局设置,不再要求父 Agent 使用 Codex 模型。
|
|
30
|
+
- 新增全局 0–3 最大嵌套深度和每个父 Agent 子树的活动子代理数量上限;新委派即时受限,现有运行不被中断。
|
|
31
|
+
- 子代理设置扩展为 DSH 全部已接入 Provider/模型;思考深度使用所选模型的真实 reasoning effort 目录,上下文在选定模型后展开并作为子 Agent 的有效压缩预算。
|
|
32
|
+
- 设置页新增 GPT-5.6 Sol / Terra / Luna 有效上下文窗口配置:默认 272K,可选最高 1M,并动态影响 DSH 的模型解析、压缩阈值与溢出判断。
|
|
33
|
+
|
|
34
|
+
## 0.1.12 - 2026-08-20
|
|
35
|
+
|
|
36
|
+
- 适配 DSH `0.1.0-rc.8`:peerDependencies / devDependencies 中全部 DSH 包范围从 `^0.1.0-rc.6` 提升至 `^0.1.0-rc.8`,并重新生成 package-lock.json。已在本机 rc.8 依赖集上验证:typecheck、55 项测试与 tsdown 构建全部通过,插件代码无需改动。
|
|
37
|
+
- 移除已无引用的 `@deepseek-ai/dsh-agent` peer 依赖(子代理报告去重兼容模块已于 0.1.11 移除)。
|
|
38
|
+
- 新增 `@deepseek-ai/dsh-client-connection` peer 依赖(客户端 `ContentBlock` 类型来源,符合 rc.8 客户端包 peer 声明惯例)。
|
|
39
|
+
- 说明:rc.8 中 `@deepseek-ai/dsh-client-ui-slots` 不再是 DSH 运行时依赖图成员(仅保留为各客户端包的 devDependency),插件继续将其声明为 peer 依赖以保证安装时解析(`^0.1.0-rc.6` 联网安装时解析到 rc.8;本地锁文件因离线环境暂固定 rc.7,API 与 rc.8 用法一致)。
|
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 DSH ChatGPT Subscription contributors
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 DSH ChatGPT Subscription contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,137 +1,137 @@
|
|
|
1
|
-
# DSH ChatGPT Subscription
|
|
2
|
-
|
|
3
|
-
让 DSH(DeepSeek Harness)通过 ChatGPT 订阅使用 Gpt 系列模型的插件。
|
|
4
|
-
|
|
5
|
-
插件注册 `codex-chatgpt` Provider(显示名 **“Codex(ChatGPT 订阅)”**),以当前 Host 用户的 ChatGPT OAuth 登录态访问模型,并在设置页展示账号信息、连接状态与订阅额度。支持 Windows 与 Linux。
|
|
6
|
-
|
|
7
|
-
## 目录
|
|
8
|
-
|
|
9
|
-
- [功能特性](#功能特性)
|
|
10
|
-
- [模型目录](#模型目录)
|
|
11
|
-
- [环境要求](#环境要求)
|
|
12
|
-
- [安装](#安装)
|
|
13
|
-
- [使用](#使用)
|
|
14
|
-
- [升级、降级与卸载](#升级降级与卸载)
|
|
15
|
-
- [安全边界](#安全边界)
|
|
16
|
-
- [插件路由](#插件路由)
|
|
17
|
-
- [开发与验证](#开发与验证)
|
|
18
|
-
- [故障排查](#故障排查)
|
|
19
|
-
|
|
20
|
-
## 功能特性
|
|
21
|
-
|
|
22
|
-
**登录与会话**
|
|
23
|
-
|
|
24
|
-
- Authorization Code + PKCE(S256)登录,一次性 localhost 回调;
|
|
25
|
-
- 支持 token 刷新、登录取消与账号注销;
|
|
26
|
-
- Windows 使用 CurrentUser DPAPI 加密存储 token;Linux 使用当前用户独占的 `0600` 文件存储;明文不发送给 Client;
|
|
27
|
-
- 设置页会明确显示当前存储类型,并在 Linux 上提示文件存储未额外加密。
|
|
28
|
-
|
|
29
|
-
**模型接入**
|
|
30
|
-
|
|
31
|
-
- 固定 Codex Responses 地址,支持流式文本、reasoning summary、图片输入与工具调用/结果;
|
|
32
|
-
- 原样转发 DSH 暴露的工具 schema;命令工具兼容 `pwsh` / `powershell`、`bash`、`sh` 与 `shell`,并按 PowerShell、Bash 或 POSIX sh 注入对应说明;
|
|
33
|
-
- 429/5xx 由 DSH retry policy 接管;401 只强制刷新并重试一次,支持 `AbortSignal`;
|
|
34
|
-
- Codex、Code review 及上游返回的额外窗口额度,支持 Credits、月度消费控制与 reset credits 展示;60 秒缓存、15 秒上游节流并遵守 `Retry-After`;
|
|
35
|
-
- 提供 ChatGPT 订阅侧 Codex 搜索 provider,可在设置页切换 DSH 默认搜索或 Codex 订阅搜索;
|
|
36
|
-
- 新增 `codex_image_generate` 工具,生成图片后通过 DSH 附件系统保存并在会话中渲染;
|
|
37
|
-
- 可选 composer 快捷用量徽标,按当前 `codex-chatgpt` 模型显示最紧张窗口的剩余额度。
|
|
38
|
-
|
|
39
|
-
**设置页**
|
|
40
|
-
|
|
41
|
-
- 展示账号(脱敏 email、套餐、账号 ID 后四位)、连接状态、额度与订阅增强功能开关;
|
|
42
|
-
- 独立的“子代理”设置页可全局选择 DSH 当前接入的任意 Provider/模型(如 DeepSeek V4 Flash);思考深度来自所选模型公开能力,上下文在选定模型后展开配置,并适用于所有 DSH 内置子代理,不受父 Agent 当前 Provider/模型影响;
|
|
43
|
-
- 可全局设置 0–3 的最大嵌套深度与每个父 Agent 子树的活动子代理数量上限;限制即时作用于新委派,不中断已运行的子代理;
|
|
1
|
+
# DSH ChatGPT Subscription
|
|
2
|
+
|
|
3
|
+
让 DSH(DeepSeek Harness)通过 ChatGPT 订阅使用 Gpt 系列模型的插件。
|
|
4
|
+
|
|
5
|
+
插件注册 `codex-chatgpt` Provider(显示名 **“Codex(ChatGPT 订阅)”**),以当前 Host 用户的 ChatGPT OAuth 登录态访问模型,并在设置页展示账号信息、连接状态与订阅额度。支持 Windows 与 Linux。
|
|
6
|
+
|
|
7
|
+
## 目录
|
|
8
|
+
|
|
9
|
+
- [功能特性](#功能特性)
|
|
10
|
+
- [模型目录](#模型目录)
|
|
11
|
+
- [环境要求](#环境要求)
|
|
12
|
+
- [安装](#安装)
|
|
13
|
+
- [使用](#使用)
|
|
14
|
+
- [升级、降级与卸载](#升级降级与卸载)
|
|
15
|
+
- [安全边界](#安全边界)
|
|
16
|
+
- [插件路由](#插件路由)
|
|
17
|
+
- [开发与验证](#开发与验证)
|
|
18
|
+
- [故障排查](#故障排查)
|
|
19
|
+
|
|
20
|
+
## 功能特性
|
|
21
|
+
|
|
22
|
+
**登录与会话**
|
|
23
|
+
|
|
24
|
+
- Authorization Code + PKCE(S256)登录,一次性 localhost 回调;
|
|
25
|
+
- 支持 token 刷新、登录取消与账号注销;
|
|
26
|
+
- Windows 使用 CurrentUser DPAPI 加密存储 token;Linux 使用当前用户独占的 `0600` 文件存储;明文不发送给 Client;
|
|
27
|
+
- 设置页会明确显示当前存储类型,并在 Linux 上提示文件存储未额外加密。
|
|
28
|
+
|
|
29
|
+
**模型接入**
|
|
30
|
+
|
|
31
|
+
- 固定 Codex Responses 地址,支持流式文本、reasoning summary、图片输入与工具调用/结果;
|
|
32
|
+
- 原样转发 DSH 暴露的工具 schema;命令工具兼容 `pwsh` / `powershell`、`bash`、`sh` 与 `shell`,并按 PowerShell、Bash 或 POSIX sh 注入对应说明;
|
|
33
|
+
- 429/5xx 由 DSH retry policy 接管;401 只强制刷新并重试一次,支持 `AbortSignal`;
|
|
34
|
+
- Codex、Code review 及上游返回的额外窗口额度,支持 Credits、月度消费控制与 reset credits 展示;60 秒缓存、15 秒上游节流并遵守 `Retry-After`;
|
|
35
|
+
- 提供 ChatGPT 订阅侧 Codex 搜索 provider,可在设置页切换 DSH 默认搜索或 Codex 订阅搜索;
|
|
36
|
+
- 新增 `codex_image_generate` 工具,生成图片后通过 DSH 附件系统保存并在会话中渲染;
|
|
37
|
+
- 可选 composer 快捷用量徽标,按当前 `codex-chatgpt` 模型显示最紧张窗口的剩余额度。
|
|
38
|
+
|
|
39
|
+
**设置页**
|
|
40
|
+
|
|
41
|
+
- 展示账号(脱敏 email、套餐、账号 ID 后四位)、连接状态、额度与订阅增强功能开关;
|
|
42
|
+
- 独立的“子代理”设置页可全局选择 DSH 当前接入的任意 Provider/模型(如 DeepSeek V4 Flash);思考深度来自所选模型公开能力,上下文在选定模型后展开配置,并适用于所有 DSH 内置子代理,不受父 Agent 当前 Provider/模型影响;
|
|
43
|
+
- 可全局设置 0–3 的最大嵌套深度与每个父 Agent 子树的活动子代理数量上限;限制即时作用于新委派,不中断已运行的子代理;
|
|
44
44
|
- 6 Astra 与 5.6 Sol / Terra / Luna 默认使用 272K 有效上下文;订阅侧 6 Astra 可配置最高 872K,5.6 系列最高 1M,用于 DSH 压缩与溢出判断;其他模型保持目录声明值;
|
|
45
|
-
- 可访问的进度条、窄窗口/200% 缩放布局、深浅主题与 reduced-motion。
|
|
46
|
-
|
|
47
|
-
## 模型目录
|
|
48
|
-
|
|
49
|
-
| 显示名 | 模型 slug |
|
|
50
|
-
| --- | --- |
|
|
45
|
+
- 可访问的进度条、窄窗口/200% 缩放布局、深浅主题与 reduced-motion。
|
|
46
|
+
|
|
47
|
+
## 模型目录
|
|
48
|
+
|
|
49
|
+
| 显示名 | 模型 slug |
|
|
50
|
+
| --- | --- |
|
|
51
51
|
| 5.6 Sol | `gpt-5.6-sol` |
|
|
52
52
|
| 6 Astra | `gpt-6-astra` |
|
|
53
|
-
| 5.6 Terra | `gpt-5.6-terra` |
|
|
54
|
-
| 5.6 Luna | `gpt-5.6-luna` |
|
|
55
|
-
| 5.5 | `gpt-5.5` |
|
|
56
|
-
| 5.4 | `gpt-5.4` |
|
|
57
|
-
| 5.4 Mini | `gpt-5.4-mini` |
|
|
58
|
-
| 5.3 Codex Spark | `gpt-5.3-codex-spark` |
|
|
59
|
-
|
|
53
|
+
| 5.6 Terra | `gpt-5.6-terra` |
|
|
54
|
+
| 5.6 Luna | `gpt-5.6-luna` |
|
|
55
|
+
| 5.5 | `gpt-5.5` |
|
|
56
|
+
| 5.4 | `gpt-5.4` |
|
|
57
|
+
| 5.4 Mini | `gpt-5.4-mini` |
|
|
58
|
+
| 5.3 Codex Spark | `gpt-5.3-codex-spark` |
|
|
59
|
+
|
|
60
60
|
> 目录只用于展示;账号实际可用的模型由 ChatGPT 套餐、workspace 策略与上游兼容状态决定。
|
|
61
61
|
|
|
62
62
|
6 Astra 支持文本、图片输入和工具调用,默认思考档位为 `medium`,可选 `low`、`medium`、`high`、`xhigh`、`max`。从旧会话带入的 `none` / `minimal` 会按 [OpenAI 官方迁移说明](https://developers.openai.com/api/docs/guides/latest-model) 转为 `low`。订阅侧 872K 上下文上限依据 2026-09-05 的 Codex 模型目录;[Codex Ultra](https://learn.chatgpt.com/zh-Hans/docs/models) 涉及客户端的子代理编排,本插件不将它作为 Responses 思考参数暴露。
|
|
63
63
|
|
|
64
64
|
新配置默认显示 6 Astra;已有配置保留原来的模型勾选,可在 **设置 → Codex 订阅 → 可用模型** 中勾选 **6 Astra**。
|
|
65
65
|
|
|
66
|
-
## 环境要求
|
|
67
|
-
|
|
68
|
-
- Windows 或 Linux;
|
|
69
|
-
- Windows:系统需提供 Windows PowerShell,以使用 CurrentUser DPAPI;
|
|
70
|
-
- Linux:Host 用户必须拥有可写的 `~/.dsh`(或 `$DSH_HOME`),凭据文件会强制使用 `0600`、目录使用 `0700`;
|
|
71
|
-
- 已安装 DSH;
|
|
72
|
-
- Node.js 与 npm。
|
|
73
|
-
|
|
74
|
-
## 安装
|
|
75
|
-
|
|
76
|
-
### 方式 1:通过 DSH CLI 安装(推荐)
|
|
77
|
-
|
|
78
|
-
直接从 npm 安装已发布的插件包:
|
|
79
|
-
|
|
80
|
-
```sh
|
|
81
|
-
# Windows PowerShell、Bash 和 POSIX sh 均可执行
|
|
82
|
-
# 如果全局安装了 dsh
|
|
83
|
-
dsh plugin --profile web add @eddyskywalker/dsh-chatgpt-subscription
|
|
84
|
-
|
|
85
|
-
# 或使用 npx 直接运行
|
|
86
|
-
npx @deepseek-ai/dsh plugin --profile web add @eddyskywalker/dsh-chatgpt-subscription
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
### 方式 2:通过 DSH 插件市场安装
|
|
90
|
-
|
|
91
|
-
1. 打开 DSH 界面中的 **插件市场** / **Plugin Market**;
|
|
92
|
-
2. 搜索 `@eddyskywalker/dsh-chatgpt-subscription` 或 `dsh-chatgpt-subscription`;
|
|
93
|
-
3. 点击 **安装**。
|
|
94
|
-
|
|
95
|
-
### 方式 3:本地开发调试(源码软链接)
|
|
96
|
-
|
|
97
|
-
如需进行二次开发或本地源码调试:
|
|
98
|
-
|
|
99
|
-
```sh
|
|
100
|
-
git clone https://github.com/Aa728848/dsh-chatgpt-subscription.git
|
|
101
|
-
cd dsh-chatgpt-subscription
|
|
102
|
-
npm install
|
|
103
|
-
npm run build
|
|
104
|
-
|
|
105
|
-
# Linux
|
|
106
|
-
npx @deepseek-ai/dsh plugin --profile web add "link:/absolute/path/to/dsh-chatgpt-subscription"
|
|
107
|
-
|
|
108
|
-
# Windows PowerShell
|
|
109
|
-
npx @deepseek-ai/dsh plugin --profile web add "link:C:\absolute\path\to\dsh-chatgpt-subscription"
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
## 使用
|
|
113
|
-
|
|
114
|
-
1. 重启 `dsh web`;
|
|
115
|
-
2. 打开 **设置 → Codex 订阅**;
|
|
116
|
-
3. 完成 ChatGPT 登录;
|
|
117
|
-
4. 执行 **测试连接**。
|
|
118
|
-
|
|
66
|
+
## 环境要求
|
|
67
|
+
|
|
68
|
+
- Windows 或 Linux;
|
|
69
|
+
- Windows:系统需提供 Windows PowerShell,以使用 CurrentUser DPAPI;
|
|
70
|
+
- Linux:Host 用户必须拥有可写的 `~/.dsh`(或 `$DSH_HOME`),凭据文件会强制使用 `0600`、目录使用 `0700`;
|
|
71
|
+
- 已安装 DSH;
|
|
72
|
+
- Node.js 与 npm。
|
|
73
|
+
|
|
74
|
+
## 安装
|
|
75
|
+
|
|
76
|
+
### 方式 1:通过 DSH CLI 安装(推荐)
|
|
77
|
+
|
|
78
|
+
直接从 npm 安装已发布的插件包:
|
|
79
|
+
|
|
80
|
+
```sh
|
|
81
|
+
# Windows PowerShell、Bash 和 POSIX sh 均可执行
|
|
82
|
+
# 如果全局安装了 dsh
|
|
83
|
+
dsh plugin --profile web add @eddyskywalker/dsh-chatgpt-subscription
|
|
84
|
+
|
|
85
|
+
# 或使用 npx 直接运行
|
|
86
|
+
npx @deepseek-ai/dsh plugin --profile web add @eddyskywalker/dsh-chatgpt-subscription
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### 方式 2:通过 DSH 插件市场安装
|
|
90
|
+
|
|
91
|
+
1. 打开 DSH 界面中的 **插件市场** / **Plugin Market**;
|
|
92
|
+
2. 搜索 `@eddyskywalker/dsh-chatgpt-subscription` 或 `dsh-chatgpt-subscription`;
|
|
93
|
+
3. 点击 **安装**。
|
|
94
|
+
|
|
95
|
+
### 方式 3:本地开发调试(源码软链接)
|
|
96
|
+
|
|
97
|
+
如需进行二次开发或本地源码调试:
|
|
98
|
+
|
|
99
|
+
```sh
|
|
100
|
+
git clone https://github.com/Aa728848/dsh-chatgpt-subscription.git
|
|
101
|
+
cd dsh-chatgpt-subscription
|
|
102
|
+
npm install
|
|
103
|
+
npm run build
|
|
104
|
+
|
|
105
|
+
# Linux
|
|
106
|
+
npx @deepseek-ai/dsh plugin --profile web add "link:/absolute/path/to/dsh-chatgpt-subscription"
|
|
107
|
+
|
|
108
|
+
# Windows PowerShell
|
|
109
|
+
npx @deepseek-ai/dsh plugin --profile web add "link:C:\absolute\path\to\dsh-chatgpt-subscription"
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## 使用
|
|
113
|
+
|
|
114
|
+
1. 重启 `dsh web`;
|
|
115
|
+
2. 打开 **设置 → Codex 订阅**;
|
|
116
|
+
3. 完成 ChatGPT 登录;
|
|
117
|
+
4. 执行 **测试连接**。
|
|
118
|
+
|
|
119
119
|
DSH 模型选择器应显示 **“Codex(ChatGPT 订阅)”**。6 Astra 与 GPT-5.6 系列的有效上下文窗口仍在“Codex 订阅 → 增强功能”中配置;子代理模型、思考深度、子代理上下文、最大嵌套深度和数量上限则统一位于独立的 **“子代理”** 设置页。模型路由适用于会话标记为 `origin: subagent` 的 DSH 内置子代理;运行限制在内置 spawn/fork 及已启用的原生子代理委派工具入口统一执行。
|
|
120
|
-
|
|
120
|
+
|
|
121
121
|
**设置 → Codex 订阅 → 网络代理** 同时控制 GPT 与 Antigravity(Gemini)的 Host 请求,可选择系统代理(自动检测)、自定义代理或直连。Gemini 模型生成、网页登录后的令牌交换、令牌刷新、账号信息、项目发现、配额与模型目录查询均使用此设置;修改后对后续请求生效,无需重启 DSH。浏览器中的 Google 授权页面使用浏览器自己的网络设置。
|
|
122
122
|
|
|
123
123
|
**搜索与抓取来源** 同时切换 DSH 的搜索和网页抓取后端。选择 ChatGPT 来源后,网页由本插件在 Host 抓取,并使用上述网络代理设置;纯 TUN 模式可使用直连,流量由虚拟网卡接管。来源切换即时生效,DSH web 服务重载后会重新注册插件后端,并保留切回 DSH 默认来源所需的配置。选择 DSH 默认来源时,抓取仍遵循 DSH 自身的代理及非公网地址校验策略。
|
|
124
124
|
|
|
125
125
|
卸载前建议先在设置页点击 **“注销”**,它会删除当前平台的凭据和 Host 内存中的额度缓存。
|
|
126
|
-
|
|
127
|
-
若 DSH 已异常退出,可在确认路径后手动处理凭据文件:
|
|
128
|
-
|
|
129
|
-
- Windows:`%DSH_HOME%\storages\dsh-chatgpt-subscription\oauth.dpapi`,未设置 `DSH_HOME` 时为 `%USERPROFILE%\.dsh\storages\dsh-chatgpt-subscription\oauth.dpapi`;
|
|
130
|
-
- macOS:凭据位于登录钥匙串,可执行 `security delete-generic-password -s dsh-chatgpt-subscription -a oauth` 删除;
|
|
131
|
-
- Linux:`$DSH_HOME/storages/dsh-chatgpt-subscription/oauth.json`,未设置 `DSH_HOME` 时为 `~/.dsh/storages/dsh-chatgpt-subscription/oauth.json`。
|
|
132
|
-
|
|
133
|
-
> Windows 文件只能由创建它的用户通过 DPAPI 解密。macOS 凭据由登录钥匙串在本机加密保存。Linux 文件是未额外加密的 JSON,依赖目录 `0700` 和文件 `0600` 隔离;不要复制、打印或提交该文件。跨平台迁移需要重新登录。
|
|
134
|
-
|
|
126
|
+
|
|
127
|
+
若 DSH 已异常退出,可在确认路径后手动处理凭据文件:
|
|
128
|
+
|
|
129
|
+
- Windows:`%DSH_HOME%\storages\dsh-chatgpt-subscription\oauth.dpapi`,未设置 `DSH_HOME` 时为 `%USERPROFILE%\.dsh\storages\dsh-chatgpt-subscription\oauth.dpapi`;
|
|
130
|
+
- macOS:凭据位于登录钥匙串,可执行 `security delete-generic-password -s dsh-chatgpt-subscription -a oauth` 删除;
|
|
131
|
+
- Linux:`$DSH_HOME/storages/dsh-chatgpt-subscription/oauth.json`,未设置 `DSH_HOME` 时为 `~/.dsh/storages/dsh-chatgpt-subscription/oauth.json`。
|
|
132
|
+
|
|
133
|
+
> Windows 文件只能由创建它的用户通过 DPAPI 解密。macOS 凭据由登录钥匙串在本机加密保存。Linux 文件是未额外加密的 JSON,依赖目录 `0700` 和文件 `0600` 隔离;不要复制、打印或提交该文件。跨平台迁移需要重新登录。
|
|
134
|
+
|
|
135
135
|
## 安全边界
|
|
136
136
|
|
|
137
137
|
Antigravity 的 access token / refresh token 使用独立的系统凭据存储:Windows 使用 CurrentUser DPAPI(`$DSH_HOME/storages/antigravity-oauth.json.dpapi`),macOS 使用登录钥匙串,Linux 使用 Secret Service。macOS / Linux 的服务名为 `dsh-antigravity`,账号键按旧凭据文件的绝对路径生成,隔离不同的 `DSH_HOME`。
|
|
@@ -142,54 +142,54 @@ Antigravity 的 Gemini 用量以流结束时的上游累计计数为准,缓存
|
|
|
142
142
|
|
|
143
143
|
以下为 Codex(ChatGPT 订阅)Provider 的存储与网络边界:
|
|
144
144
|
|
|
145
|
-
- OAuth 回调固定为 `http://localhost:1455/auth/callback`,登录任务五分钟超时,同一时刻只允许一个;
|
|
146
|
-
- OAuth token 只发送到 `https://auth.openai.com/oauth/token`;
|
|
147
|
-
- 模型、图片、搜索与额度地址分别固定为 `https://chatgpt.com/backend-api/codex/responses`、`https://chatgpt.com/backend-api/codex/images/generations`、`https://chatgpt.com/backend-api/codex/alpha/search` 和 `https://chatgpt.com/backend-api/wham/usage`,没有 endpoint override;
|
|
148
|
-
- Windows token bundle 使用 CurrentUser DPAPI;明文只经过 Host 内存和 PowerShell stdin/stdout;
|
|
149
|
-
- macOS token bundle 存入登录钥匙串,通过系统 `security` 命令读写;明文只经过 Host 内存和 `security` 命令行参数,Keychain 在本机加密保存;
|
|
150
|
-
- Linux token bundle 原子写入当前用户私有文件并在读取时校验普通文件、所有者与 `0600` 权限,同时拒绝符号链接;该文件没有应用层加密,同 UID 进程、root、备份和磁盘快照仍可读取;
|
|
151
|
-
- 所有平台的 token 都不会进入浏览器、`settings.yaml` 或日志;
|
|
152
|
-
- 工具调用只有在参数是完整 JSON 对象时才产生可执行的 `block-end`;畸形参数终止本次生成;
|
|
153
|
-
- 所有修改状态的路由只接受同源 JSON POST,并校验 `Origin` 与 `Host`。
|
|
154
|
-
|
|
155
|
-
## 插件路由
|
|
156
|
-
|
|
157
|
-
所有路由都以 `/api/dsh-chatgpt-subscription` 为前缀:
|
|
158
|
-
|
|
159
|
-
| 方法 | 路径 | 说明 |
|
|
160
|
-
| --- | --- | --- |
|
|
161
|
-
| GET | `/status` | 查询账号、连接状态与额度 |
|
|
162
|
-
| POST | `/login/start` | 开始 OAuth 登录 |
|
|
163
|
-
| GET | `/login/events?loginId=...` | SSE 订阅登录进度 |
|
|
164
|
-
| POST | `/login/cancel` | 取消登录任务 |
|
|
165
|
-
| POST | `/logout` | 注销并清除凭据与额度缓存 |
|
|
166
|
-
| POST | `/token/refresh` | 刷新 token |
|
|
167
|
-
| POST | `/quota/refresh` | 刷新额度 |
|
|
168
|
-
| POST | `/connection/test` | 测试连接 |
|
|
169
|
-
| POST | `/preferences/update` | 更新搜索来源和 composer 快捷用量偏好 |
|
|
170
|
-
|
|
171
|
-
状态响应只包含脱敏 email、套餐、账号 ID 后四位、token 到期时间和额度 DTO。
|
|
172
|
-
|
|
173
|
-
## 开发与验证
|
|
174
|
-
|
|
175
|
-
```sh
|
|
176
|
-
npm run typecheck
|
|
177
|
-
npm test
|
|
178
|
-
npm run build
|
|
179
|
-
npm pack --dry-run
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
测试使用 mock OAuth、Responses SSE 和 Wham usage,不需要真实 ChatGPT 凭据。真实账号的端到端登录与生成应在独立 DSH profile 中人工验收,避免影响日常 profile。
|
|
183
|
-
|
|
184
|
-
## 故障排查
|
|
185
|
-
|
|
186
|
-
| 现象 | 处理 |
|
|
187
|
-
| --- | --- |
|
|
188
|
-
| 1455 端口占用 | 结束旧登录任务或占用该端口的进程后重试;插件卸载会关闭 listener |
|
|
189
|
-
| 登录后仍是 401 | 刷新 token;若刷新 token 已失效,注销并重新登录,不会循环请求 |
|
|
190
|
-
| 额度显示旧数据 | 设置页会保留最后成功值;等待 15 秒节流窗口后手动刷新 |
|
|
191
|
-
| 429 | 插件遵守 `Retry-After`,不会高频轮询;模型请求由 DSH retry policy 有界重试 |
|
|
192
|
-
| 模型不可用 | 检查 ChatGPT 套餐、workspace 权限与当前模型可用性 |
|
|
193
|
-
| DPAPI 读取失败 | 确认 DSH 以创建凭据时的同一 Windows 用户运行;必要时清理凭据后重新登录 |
|
|
194
|
-
| Linux 凭据存储不可用 | 确认凭据属于当前用户且权限为 `0600`,父目录权限为 `0700`;修复权限或注销后重新登录 |
|
|
145
|
+
- OAuth 回调固定为 `http://localhost:1455/auth/callback`,登录任务五分钟超时,同一时刻只允许一个;
|
|
146
|
+
- OAuth token 只发送到 `https://auth.openai.com/oauth/token`;
|
|
147
|
+
- 模型、图片、搜索与额度地址分别固定为 `https://chatgpt.com/backend-api/codex/responses`、`https://chatgpt.com/backend-api/codex/images/generations`、`https://chatgpt.com/backend-api/codex/alpha/search` 和 `https://chatgpt.com/backend-api/wham/usage`,没有 endpoint override;
|
|
148
|
+
- Windows token bundle 使用 CurrentUser DPAPI;明文只经过 Host 内存和 PowerShell stdin/stdout;
|
|
149
|
+
- macOS token bundle 存入登录钥匙串,通过系统 `security` 命令读写;明文只经过 Host 内存和 `security` 命令行参数,Keychain 在本机加密保存;
|
|
150
|
+
- Linux token bundle 原子写入当前用户私有文件并在读取时校验普通文件、所有者与 `0600` 权限,同时拒绝符号链接;该文件没有应用层加密,同 UID 进程、root、备份和磁盘快照仍可读取;
|
|
151
|
+
- 所有平台的 token 都不会进入浏览器、`settings.yaml` 或日志;
|
|
152
|
+
- 工具调用只有在参数是完整 JSON 对象时才产生可执行的 `block-end`;畸形参数终止本次生成;
|
|
153
|
+
- 所有修改状态的路由只接受同源 JSON POST,并校验 `Origin` 与 `Host`。
|
|
154
|
+
|
|
155
|
+
## 插件路由
|
|
156
|
+
|
|
157
|
+
所有路由都以 `/api/dsh-chatgpt-subscription` 为前缀:
|
|
158
|
+
|
|
159
|
+
| 方法 | 路径 | 说明 |
|
|
160
|
+
| --- | --- | --- |
|
|
161
|
+
| GET | `/status` | 查询账号、连接状态与额度 |
|
|
162
|
+
| POST | `/login/start` | 开始 OAuth 登录 |
|
|
163
|
+
| GET | `/login/events?loginId=...` | SSE 订阅登录进度 |
|
|
164
|
+
| POST | `/login/cancel` | 取消登录任务 |
|
|
165
|
+
| POST | `/logout` | 注销并清除凭据与额度缓存 |
|
|
166
|
+
| POST | `/token/refresh` | 刷新 token |
|
|
167
|
+
| POST | `/quota/refresh` | 刷新额度 |
|
|
168
|
+
| POST | `/connection/test` | 测试连接 |
|
|
169
|
+
| POST | `/preferences/update` | 更新搜索来源和 composer 快捷用量偏好 |
|
|
170
|
+
|
|
171
|
+
状态响应只包含脱敏 email、套餐、账号 ID 后四位、token 到期时间和额度 DTO。
|
|
172
|
+
|
|
173
|
+
## 开发与验证
|
|
174
|
+
|
|
175
|
+
```sh
|
|
176
|
+
npm run typecheck
|
|
177
|
+
npm test
|
|
178
|
+
npm run build
|
|
179
|
+
npm pack --dry-run
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
测试使用 mock OAuth、Responses SSE 和 Wham usage,不需要真实 ChatGPT 凭据。真实账号的端到端登录与生成应在独立 DSH profile 中人工验收,避免影响日常 profile。
|
|
183
|
+
|
|
184
|
+
## 故障排查
|
|
185
|
+
|
|
186
|
+
| 现象 | 处理 |
|
|
187
|
+
| --- | --- |
|
|
188
|
+
| 1455 端口占用 | 结束旧登录任务或占用该端口的进程后重试;插件卸载会关闭 listener |
|
|
189
|
+
| 登录后仍是 401 | 刷新 token;若刷新 token 已失效,注销并重新登录,不会循环请求 |
|
|
190
|
+
| 额度显示旧数据 | 设置页会保留最后成功值;等待 15 秒节流窗口后手动刷新 |
|
|
191
|
+
| 429 | 插件遵守 `Retry-After`,不会高频轮询;模型请求由 DSH retry policy 有界重试 |
|
|
192
|
+
| 模型不可用 | 检查 ChatGPT 套餐、workspace 权限与当前模型可用性 |
|
|
193
|
+
| DPAPI 读取失败 | 确认 DSH 以创建凭据时的同一 Windows 用户运行;必要时清理凭据后重新登录 |
|
|
194
|
+
| Linux 凭据存储不可用 | 确认凭据属于当前用户且权限为 `0600`,父目录权限为 `0700`;修复权限或注销后重新登录 |
|
|
195
195
|
| Linux 上工具调用语法错误 | 确认 DSH 暴露的是 `bash`、`sh` 或 `shell`,并使用相应的 Bash/POSIX 语法与 `/` 路径 |
|
|
@@ -22,12 +22,23 @@ try {
|
|
|
22
22
|
console.log(`Removed Antigravity credentials from ${store.path()}`)
|
|
23
23
|
process.exit(0)
|
|
24
24
|
}
|
|
25
|
-
const credentials = await loginAndSave(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
const credentials = await loginAndSave(
|
|
26
|
+
store,
|
|
27
|
+
controller.signal,
|
|
28
|
+
(url) => {
|
|
29
|
+
console.log('Open the following URL in your browser to sign in:')
|
|
30
|
+
console.log(url)
|
|
31
|
+
},
|
|
32
|
+
fetch,
|
|
33
|
+
(stage) => {
|
|
34
|
+
console.log(`[Antigravity] ${stage}`)
|
|
35
|
+
},
|
|
36
|
+
)
|
|
29
37
|
const suffix = credentials.email ? ` for ${credentials.email}` : ''
|
|
30
38
|
console.log(`Antigravity login complete${suffix}.`)
|
|
39
|
+
if (credentials.projectId) {
|
|
40
|
+
console.log(`Discovered project: ${credentials.projectId}`)
|
|
41
|
+
}
|
|
31
42
|
console.log(`Credentials saved to ${store.path()}`)
|
|
32
43
|
} catch (error) {
|
|
33
44
|
const detail = error instanceof Error ? error.message : String(error)
|
package/cordis.patch.yml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Add exactly one dual-face plugin row to the DSH web profile. The host half
|
|
2
|
-
# mounts OAuth/status routes; package.json's dsh.client declaration loads the
|
|
3
|
-
# browser half from exports["./client"].
|
|
4
|
-
- insert:
|
|
5
|
-
- id: dsh-chatgpt-subscription
|
|
6
|
-
name: '@eddyskywalker/dsh-chatgpt-subscription'
|
|
1
|
+
# Add exactly one dual-face plugin row to the DSH web profile. The host half
|
|
2
|
+
# mounts OAuth/status routes; package.json's dsh.client declaration loads the
|
|
3
|
+
# browser half from exports["./client"].
|
|
4
|
+
- insert:
|
|
5
|
+
- id: dsh-chatgpt-subscription
|
|
6
|
+
name: '@eddyskywalker/dsh-chatgpt-subscription'
|