dsh-plugin-subscriptions
Use ChatGPT (Codex), Claude, and Grok subscriptions as DeepSeek Harness LLM providers, with Settings login, model catalogs, usage, plus image_generate, video_generate, and x_search tools.
Install
dsh plugin --profile web add dsh-plugin-subscriptions
Sandbox test results
| Stage | Result |
|---|---|
| 1 install | ✓ |
| 2 list | ✓ |
| 3 mount | — |
| 4 boot | — |
Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).
README
dsh-plugin-subscriptions 
[English](README.md) | 中文
把你的 ChatGPT(Codex)、Claude、Grok(X Premium)、GitHub Copilot 和 Google Antigravity 订阅当作 DeepSeek Harness 的 LLM provider 使用 —— 不需要 API key。Codex、Grok 和 Antigravity 通过 dsh web 界面 OAuth 登录(设置 → 订阅);Copilot 使用 GitHub OAuth 设备码流程;Claude 在存在 Claude Code 会话时直接导入凭据(macOS Keychain 或 ~/.claude/.credentials.json),否则回退到同样的浏览器 OAuth 流程,因此不要求安装 Claude Code CLI。Token 保存在 ~/.dsh/plugins/subscriptions/auth.json(权限 0600),过期自动刷新。
订阅与模型显示名
在 设置 → 订阅 → 管理 顶部修改订阅显示名,在 编辑模型列表 中修改模型显示名;使用同一组保存/取消按钮,留空或恢复默认后保存可恢复原名。名称按服务商和模型 ID 存储在原有 provider-settings.json,跨重启和目录刷新保留。名称为最多 80 字符的单行文本,仅改变显示,不改变 provider、模型 ID、推理参数或账号路由;现有账号别名可继续独立使用。
订阅显示名也用于原生模型选择器的服务商分组标题;清空显示名并保存后,分组恢复为服务商默认名称。
演示
设置 → 订阅:每个 provider 的登录/退出,无需 API key。Claude 有 Claude Code 会话时导入凭据,否则和 Codex、Grok 一样走 OAuth(以下设置截图使用演示账号与目录数据):
模型显示、默认推理档和上下文已合并到 编辑模型列表,统一保存或取消:
按 provider 配置图片生成、视频生成和 X 搜索,工具开关仅影响保存后新建的会话:
已登录的 provider 会带着实时模型目录进入会话模型选择器:
声明了推理等级的模型会在同一菜单里多出推理等级选择 —— Codex 系列模型、Grok 4.6 / 4.5,以及 Copilot 的推理模型(档位和默认值来自各 provider 的实时目录,不是硬编码列表;Copilot 的 capabilities.supports.reasoning_effort 数组会按协议映射为 chat completions 的 reasoning_effort 或 Responses 的 reasoning.effort)。同时声明两个 Copilot 端点的模型(gpt-5.4、gpt-5-mini)默认走 chat completions,但请求同时携带函数工具和推理等级时会自动改走 /responses —— Copilot 在 chat 线路上拒绝这种组合:
目录声明了 fast tier(即 codex CLI 的 fast 模式)的 Codex 模型,会在输入框工具行(模型选择器旁)多出一个速度开关 —— 标准 / 快速(service_tier: priority),按会话生效。/fast 斜杠命令提供同样的弹窗选择;当前模型不支持快速档时会提示原因。
子代理的默认速度单独按模型设置:设置 → 订阅 → ChatGPT(Codex)→ 管理 → 编辑模型列表 → 子代理默认速度。点击「保存更改」后,对子代理的后续请求生效,正在运行的子代理也会采用新设置。该设置重启后保留,与父会话使用什么模型无关;主会话的速度不会传递给子代理。如果在某个子会话中明确选择了速度(包括标准档),则优先使用该会话的选择;会话内的明确选择重启后重置。快速档仍要求实际使用的 Codex 模型目录声明支持。宿主无法提供运行中 Agent 的来源元数据时,未明确设置速度的会话保持标准档。
输入框下方的统计行会多出一个订阅用量胶囊,显示当前会话所选模型对应服务商的已用百分比和重置窗口(选 Codex 模型时显示 Codex,选 Grok 模型时显示 Grok,以此类推)。状态栏最多显示一家:切到非订阅模型时,保留当前会话视图中最近选择的订阅;没有记录则隐藏。最近模型记录不会跨页面刷新保存。点击可展开查看所有已登录服务商及其全部账号 —— 默认账号带星标,当前服务商排在最前。Antigravity 仅预览当前模型的额度窗口(每个账号最多两个),其余模型窗口默认折叠,仍可点击展开。
在 设置 → 订阅 → 状态栏额度显示 中可选择 仅显示当前/最近使用的一家(默认)或 不显示。显示偏好自动保存到当前浏览器,立即生效、刷新后保留,并在同源标签页之间同步;不影响设置页的额度详情、模型选择或账号路由。
image_generate 工具生成的图片直接内联显示在对话里:
provider 参数可选择生图后端——同一条提示词分别走 GPT(gpt-image-2,上)和 Grok(grok-imagine-image-2.0,下):
video_generate 工具生成的视频直接内联播放:
Provider 一览
路由 · 订阅 · 模型
codex · ChatGPT Plus/Pro · 从 chatgpt.com/backend-api/codex/models 实时获取
claude · Claude Pro/Max · 订阅内所有可用模型(Opus、Sonnet、Haiku、Fable —— 静态目录,随插件更新)
grok · X Premium (xAI) · 从 api.x.ai/v1/models 实时获取(仅对话模型);推理等级来自 Grok CLI 目录(cli-chat-proxy.grok.com/v1/models)
copilot · GitHub Copilot · 从 api.githubcopilot.com/models 实时获取(两种 wire 的对话模型,含按模型的视觉标记与推理等级);登录使用 OAuth 设备码流程(在 github.com/login/device 输入页面显示的验证码)
antigravity · Google Antigravity · 从 Antigravity v1internal:fetchAvailableModels 实时获取;请求使用 generateContent / streamGenerateContent,支持文本、图片、流式推理与工具调用转换
只有已登录的 provider 才会出现在会话模型选择器里;登录/退出后列表自动刷新。支持视觉的模型会声明 ['text', 'image'] 输入模态,图片内容会被翻译成各 provider 的 wire 格式。
已登录的卡片还会显示订阅用量——按限额窗口(5 小时会话窗、每周窗,以及计划包含的按模型每周窗)展示已用百分比、进度条和重置时间,并带刷新按钮。Codex 用量来自 chatgpt.com/backend-api/wham/usage(同时报告计划类型),Claude 用量来自 api.anthropic.com/api/oauth/usage,Grok 用量来自 Grok Build CLI 代理的 cli-chat-proxy.grok.com/v1/billing(即 CLI /usage 面板的数据源,报告共享每周额度和订阅档位)。Antigravity 会在上游字段存在时从 loadCodeAssist 与 fetchAvailableModels 显示订阅档位、积分及按模型限额。Copilot 没有用量接口,其卡片不显示用量区块。
随 provider 启用自动注册的工具:
web_search搜索提供商(Codex)—— 通过 DSH 原生的web_search工具和引用界面使用 Codex 托管的网页搜索,复用默认 Codex 账号和插件的代理配置。它只是注册到宿主web能力位上的候选之一,不会独占:未挂载其他搜索提供商时 DSH 自动选中它,与其他提供商共存时由宿主自己的web.searchProvider配置决定优先级。在 Codex 的 Provider tools 里关闭 Web search 只会撤回本提供商,宿主的web_search工具仍归其余已注册的提供商使用。x_search(Grok)—— xAI 托管的 X 搜索,返回{ answer, citations }。image_generate(ChatGPT 或 Grok)—— 经 Codex 后端调用gpt-image-2,或经api.x.ai/v1/images/generations调用grok-imagine-image-2.0。provider参数指定首选提供方(gpt为默认值,可选grok);首选方未登录时自动回退到另一方。图片保存到~/.dsh/plugins/subscriptions/images/并返回路径。Grok 路径上size/quality参数会映射为 Grok 的aspect_ratio/quality。video_generate(Grok)—— 经api.x.ai/v1/videos调用grok-imagine-video-1.5(异步提交 + 轮询);MP4 保存到~/.dsh/plugins/subscriptions/videos/并返回路径,视频直接在对话里内联播放。支持时长(1–15 秒)、宽高比、分辨率,以及通过image_url做图生视频。
image_generate 也支持编辑:模型在需要修改或参考已有图片时传入可选的 referenceImages(1–5 张完整 DSH 附件引用),未传时继续文生图。参考图可以来自用户上传、read_image 的结果或之前生成的图片;本地文件需先调用 read_image,不能把文件路径当作引用。图片旁的引用文本和工具结构化结果可直
…(truncated)
Rendered from the README published on npm. Formatted only, not edited.
Versions
Published on npm::32,最后更新 2026-10-29