dsh-providers-hub
使用声明:本项目仅供学习研究使用,请遵守各服务提供方的服务条款。
deepseek-harness(DSH)插件:统一管理多个 AI 编程服务的账号,并把它们的模型接入 DSH 的模型选择器。支持多账号池(同一服务登录多个账号,按可用性自动选号)与凭据静默续期(到期前自动刷新,无需再次打开浏览器)。
- 18 个 provider 路由 + 1 个聚合路由(临期额度优先消耗)
- 登录、状态、续期、积分领取全部在 Jet Hub 设置页完成,不注册任何斜杠命令
- 附带本机 OpenAI 兼容网关,供其它客户端复用已登录账号
各 provider 的协议、端点、登录流程、实测数据与事故史等实现细节见 docs/ 内部文档。
安装
npm 包名:@xixka/dsh-hub(prepare 脚本自动构建 lib/,无需手动 build)。
dsh plugin --profile <name> add "https://gitee.com/iJetLi/deepseek-harness-codearts.git"
- pnpm 10+ 会拦截依赖构建脚本:按安装报错提示在 profile 的
pnpm-workspace.yaml 放行(pnpm 10 用纯包名键 @xixka/dsh-hub: true;pnpm 11 的 git 依赖需带 #<commit> 的完整键,升级后按新报错替换)。
- 旧 profile 若还锁着历史包名(
dsh-codearts-auth / dsh-providers-hub):先 remove 旧名再重新 add,不要手改 profile JSON —— dependencies 与 dsh.profile.bundles 两处必须一致,手改漏一处会静默失效。
本地开发(link: 方式,pnpm 不会运行 prepare,需先构建):
pnpm build:all
dsh plugin --profile <name> install <path-to-this-repo>
用法
- 打开 Jet Hub(主导航「Jet Hub」;也可在插件详情页的「面板入口」切换入口位置);
- 点「+ 新建账号」→ 浏览器完成授权登录;多账号重复此步(账号池自动选号,卡片顺序即优先级);
- 回到模型选择器,选中该渠道的模型即可开始对话。
账号卡片支持测试 / 重测 / 重置 / 停用 / 代理 / 指纹 / 删除与拖拽排序;停用只影响自动选号,不影响续期与积分领取。面板标题栏「一键领取积分」顺序处理该面板所有账号并逐个显示结果(汇总按单位分列,token 与积分不折算)。
支持的渠道
| id | 渠道 | 登录方式 | 积分能力 |
|---|
codearts | CodeArts(华为云) | 浏览器回调 | 余额 + 每日签到 |
buddy | CodeBuddy(腾讯) | 浏览器授权 + 轮询 | 余额 + 每日签到 + 成长任务 + 锁定永久积分 |
workbuddy | WorkBuddy(国际版) | 同上 | 余额 + 锁定永久积分(无签到) |
lobsterai | LobsterAI(有道) | 浏览器回调 | 余额 + 每日签到 |
qoder | Qoder(阿里系) | 设备码轮询 | 余额 + 每日领取 |
qodercn | Qoder 中国版 | 同上(共用实现) | 余额 + 每日领取 |
trae | TRAE(字节跳动) | 浏览器回调 | 余额 + 签到 |
cline | Cline | WorkOS 设备码轮询 | 余额 |
loomy | Loomy(讯飞) | 短信验证码 | 余额(两个池)+ 每日额度 + 新手任务 |
raccoon | Raccoon Work(商汤) | 微信扫码 / 短信 | 余额 + 一次性登录奖励 |
minimax | MiniMax Code (中国版) | OAuth 设备码 + PKCE | 余额 + 每日签到 |
minimaxintl | MiniMax Code (国际版) | 同上(共用实现) | 余额 + 每日签到 |
zcode | ZCode(智谱 z.ai) | OAuth 设备码 | 余额 + 每日领取(含营销活动) |
opencode | OpenCode | — | 余额 |
gemini | Gemini Code Assist | 浏览器回调 | 余额 |
officeace | OfficeAce(华为 MaaS / 果办) | 华为云 OAuth PKCE | 余额 + 自动领取 |
accio | Accio(阿里) | 浏览器回调 | 余额(三类桶;无签到) |
qiniu | Qiniu(七牛云) | 粘贴 API Key | 无(用量只在控制台可见) |
要点:
- 图片输入:
buddy / workbuddy / trae / minimax / minimaxintl / accio 支持(部分逐模型声明);lobsterai、zcode 不支持;其余以模型声明为准。
trae 前缀缓存:2026-10-26 起实测 cache_read_input_tokens 恒为 0(同前缀连发两次、对照组 buddy 97.6%),判断为上游服务端变更。长上下文会话每步全量重算(单步可达数分钟),不建议把 trae 当长跑主力;prompt_cache_key 实测无效。
qoder 多账号同机:上游有物理单设备每日限领锁 —— 同一台机器上第一个账号领完后,其余账号收到 SAME_PERSON_ALREADY_CLAIMED(显示「同一设备今日已由其它 Qoder 账号领取」),重登无法绕过;多账号请分设备。
loomy 是唯一用短信验证码登录、且不能自动续期的渠道。
zcode 的领取路径需要本机浏览器产出一次性验证参数;找不到浏览器时用 ZCODE_CHROME_PATH 指定 chromium 内核浏览器的绝对路径(设完重启 dsh web)。
accio 新建账号时必须先选登录区域(中国版 / 国际版,选错打不开登录页);模型倍率跨度极大,已写进模型展示名。
gemini 必须过墙:浏览器能打开授权页 ≠ 插件能连接(插件进程不读系统代理)。给账号卡片配出口代理,或启动前导出 HTTPS_PROXY / HTTP_PROXY。
qiniu 模型 id 由平台动态下发、原样透传,手填时必须与七牛云模型广场逐字一致。
qoder/qodercn、minimax/minimaxintl 各自共用实现、账号不互通,是独立面板。
聚合路由(aggregate)
同一真实模型在多个渠道可用时,聚合路由把它们归到一个规范名下,请求时按「临期额度最早作废优先」自动排序,某渠道失败时自动切换候选(仅在尚未输出内容时切换)。
用法:模型选择器选 聚合(跨渠道临期优先) 分组 → auto(不挑模型)或具体规范名。
- 九家渠道参与轮换;其余渠道可直连,也可在 Jet Hub「聚合」面板逐条手工打开(默认不参与,配额未知时放行会把失败留给你)。
- 排序支持「按临期」(面板打开时每 2 分钟自动重查)与「按手工」(拖动、松手即保存)两种模式。
- ⚠️ 选择器里另有一组「Jet Hub 自动(临期优先)」是旧实现(候选少、失败不切换),日常请用
聚合 分组下的 Auto。
本机 OpenAI 网关
默认 127.0.0.1:8326,供 OpenAI 兼容客户端(Cline、Codex、Continue 等)复用已登录账号,不复制上游凭据:
GET /v1/models
GET /v1/reasoning-efforts
POST /v1/chat/completions
POST /v1/responses
鉴权 Authorization: Bearer <API Key>:优先读 DSH_OPENAI_GATEWAY_API_KEY,未设置时自动生成并持久化。浏览器直接打开这些地址返回 401 是预期行为。
- 关闭:
DSH_OPENAI_GATEWAY_ENABLED=0(完全不启动)或设置页开关;网关是旁路功能,关闭不影响插件其余功能。
- 监听地址拒绝
0.0.0.0 / :: 通配地址;容器 / 端口映射场景填容器自身 IP(hostname -i)。改非回环地址后暴露面包含宿主,隔离只剩 API Key,请妥善保管。
- 请求体上限 300 MiB(超限返回 413);空闲连接 120 秒后由服务端断开。
用量徽标与 Token 用量
- 用量徽标:会话输入区右侧显示当前渠道的可用额度合计(多账号只显示一个数字);点开浮层看逐账号明细、订阅窗口、刷新与签到。读不到的账号会静默少报,胶囊挂警示角标。
- Token 用量:Jet Hub 页头「Token 用量」按钮。实时明细存内存(重启清空);历史日聚合存
~/.dsh/jet-hub/token-ledger.json(UTC+8 日界,保留 90 天)。
常见环境变量
| 变量 | 默认 | 说明 |
|---|
DSH_HIDE_MODELS_WITHOUT_ACCOUNT | 关闭 | 无已登录账号的渠道在模型选择器里整体隐藏 |
DSH_OPENAI_GATEWAY_ENABLED | 1 | 设为 0 / false 完全不启动网关 |
DSH_OPENAI_GATEWAY_HOST | 127.0.0.1 | 网关监听地址(拒绝通配地址) |
DSH_OPENAI_GATEWAY_PORT | 8326 | 网关监听端口 |
DSH_OPENAI_GATEWAY_API_KEY | 自动生成 | 网关 Bearer 密钥 |
DSH_ZCODE_SESSION_BALANCE_OVERFLOW_REQUESTS | 300 | zcode 会话亲和溢出阈值(0 = 关闭) |
DSH_TRAE_CHANNELS | solo_work_lite,solo_agent_remote | TRAE 通道(顺序即优先级) |
DSH_TRAE_MAX_COMPLETION_TOKENS | 64000 | TRAE 单次输出上限(0 关闭收敛) |
更多 provider 专属变量与账号池 / 网关状态存储位置见 docs/。
账号备份与迁移
Jet Hub 设置页底部「备份」区提供导出 / 导入:备份是自包含 JSON(账号 + 凭据 + 模型黑名单 + 永久积分锁定表),可选浏览器侧加密(PBKDF2 + AES-GCM)。导入分两种模式:replace(整体还原)与 merge(只追加账号、不碰黑名单)。第三方工具导出的账号列表文件会被自动识别并转换(默认 merge)。备份文件含 refresh_token,等同明文密钥,请妥善保管。
Windows 服务器部署
service.bat package 产出两种部署产物:
| 模式 | 命令 | 体积 | 目标机要求 |
|---|
| 引导式(推荐) | package -Mode bootstrap | 约 20 MB | 能联网;install.cmd 自动备 Node 与依赖 |
| 离线式 | package -Mode standalone | 约 800 MB | 无任何要求,解压即跑 |
两者都不含账号与设置数据(用备份导入恢复),产物根目录随附 service.bat 供注册 Windows 服务。详见产物内 README.txt 与 MANIFEST.json。
开发
pnpm test # 单元测试(无网络,全 mock)
pnpm typecheck # 只做类型检查
pnpm build:all # 完整构建(宿主 tsc + 资源拷贝 + 客户端 esbuild)
E2E 探针按 provider 分列、默认跳过,见 tests/e2e/README.md。项目结构:src/(宿主侧 TS)、plugin-src/client/(Jet Hub 客户端)、lib/(构建产物,已 gitignore)、tests/、docs/(实现细节与事故史,不入库)。