dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
通过个人访问令牌将 Qoder(国内版与国际版)接入 DSH,两版各自独立的凭证与模型目录,支持多令牌切换、侧栏额度卡、按模型开关、上下文窗口偏好与每日自动签到。
English | 简体中文
把 Qoder 订阅的模型以个人访问令牌(PAT)接入 DeepSeek Harness(DSH)的社区插件。一个插件同时服务两条 Qoder 产品线,各自一张设置卡片、一个 provider、一套凭证与模型目录,互不混用:
变体 · provider id · 卡片标题(中文界面) · PAT 生成站点 国内版 · qoder · Qoder(国内版) · qoder.com.cn 国际版 · qoder-global · Qoder Global(国际版) · qoder.com
只需要哪一版就只配哪一版:未保存 PAT 的变体不显示模型分组,另一版完全不受影响。流式输出、推理内容、工具调用走插件内置的 Qoder 传输层;对话循环、压缩与权限始终由 DSH 本体掌控。
qoder(china)与 qoder-global(global)各有自己的凭证文件、路由与已保存目录——qoder.com 生成的令牌对中国区无效,反之亦然,两套永不互串。某模型 · x0.79,免费为 x0),来自目录接口的 price_factor 字段,仅作展示、不影响请求;上游未报倍率的模型不显示后缀,不会凭空补一个数。retryAfterSeconds 时(401/403/429 的 body),插件把它转成本机 Retry-After 响应头,并作为 failure.providerRetryAfterMs 交给 DSH 的重试策略;宿主重试引擎因此会等到上游要求的时刻再发起下一次请求,而不是用本地退避提前撞回同一个未打开的窗口。在「Qoder 侧栏展示」卡片开启后,侧栏底部出现该变体的额度小卡;点击小卡在中间面板打开「Qoder 额度」明细,按套餐逐行展示,可随时在两版之间切换。
国内版(侧栏点击后):
国际版(侧栏点击后):
「Qoder 侧栏展示」卡片控制两张侧栏小卡的显隐与刷新间隔(间隔对两卡同时生效):
同一张 Qoder 设置卡片还有第二个入口:左侧边栏「插件」面板 → 已安装 → 「Qoder 连接器」卡片,点开卡片详情页,完整设置就挂在插件的描述与组件列表之间(PAT、双区域开关、上下文窗口、模型开关、签到与侧栏额度设置,与「设置 → 插件设置」里完全一致,两处共用同一份配置)。宿主不提供该槽位时(旧版 DSH)只用「设置 → 插件设置」一个入口,功能不受影响。
保存 PAT 后,模型选择器出现 Qoder 分组,模型名后跟随价格倍率(x0.5、x0 等):
「上下文窗口」页按模型列出容量与最大声明值,顶部是「使用上游声明的最大上下文窗口」开关:
国内版:
国际版:
两张变体卡片均提供「模型开关」页(位于「上下文窗口」与「额度明细」之间):支持即时搜索模型、单独开启/关闭指定模型,以及全选后一键「批量开启」或「批量关闭」;关闭的模型不会出现在模型选择器中。
支持在设置卡片中开启每日自动签到,并自定义各版本的签到时刻(默认 10:00,按 UTC+8);在卡片底部的「签到日志」面板中查看签到流水、立即签到或清空日志:
前置条件:
0.2.1-rc.1 及以上(本插件 peer 依赖 @deepseek-ai/* >=0.2.1-rc.1 线);^22.19.0 || >=24.0.0(package.json engines);# 从 GitHub 安装(推荐)
dsh plugin --profile web add github:masknull/dsh-qoder-connect
# 或从 npm 安装
dsh plugin --profile web add dsh-qoder-connect按你使用的 profile 换 --profile 的值(web / desktop / tui,如 dsh plugin --profile desktop add dsh-qoder-connect)。装到哪个 profile,数据就落在哪个 profile 目录里,web / desktop / tui 各自独立。没有浏览器卡片的终端环境(TUI)下依旧可用 CLI 保存 PAT 并驱动模型;设置卡片与侧栏额度卡需要 Web/Desktop 界面。
DSH 低于 `0.2.1-rc.1`? 请改用最后一个支持 0.1.7 线的版本 v0.2.5(要求 DSH ≥ 0.1.7-rc.1):```sh
# GitHub(推荐,指定 tag)
dsh plugin --profile web add github:masknull/dsh-qoder-connect#v0.2.5
# 或从 npm 安装
dsh plugin --profile web add dsh-qoder-connect@0.2.5
`DSH 低于 `0.1.7-rc.1`? 请改用最后一个支持 0.1.5 线的版本 v0.2.0(要求 DSH ≥ 0.1.5-rc.2):```sh
# GitHub(推荐,指定 tag)
dsh plugin --profile web add github:masknull/dsh-qoder-connect#v0.2.0
# 或从 npm 安装
dsh plugin --profile web add dsh-qoder-connect@0.2.0
`从 0.1.5 升级上来的老用户:新版本已移除旧宿主 settings.yaml 的自动迁移;如需保留旧配置,请先经 v0.1.9(首个带数据迁移的版本)完成迁移后,再升级。(卡片内也有同样指引:「请先在 qoder.com.cn 的账号设置(账号 → 个人访问令牌)中生成 PAT,再粘贴到下方输入框。」)
DSH → 设置 → 插件设置 → Qoder 卡片,展开后把 PAT 粘贴进密码输入框,点「保存」(期间显示「校验并保存中…」)。保存动作会先经 Qoder 校验令牌对该变体的区域有效,失败则不落盘并提示「PAT 无效或已过期 — 请到账号设置重新生成后再试。」
每个变体可以保存多枚 PAT:保存第二枚后,账号行出现下拉框,选中即切换;「添加 PAT」继续追加(可填一个仅本机显示的备注名),「删除当前」只删当前这一枚,「清除全部」一次清空。配置永远共享:模型开关、上下文窗口、签到时刻与侧栏额度设置都属于该变体的全局配置,切换账号不会改变;额度与签到作用于当前激活的账号。签到记录按变体保存,切换后不会自动为新账号补签当天,需要时可点「立即签到」。两版各填各的卡片即可两组并存。
终端环境可用 CLI 管理同一份多 PAT 列表(--provider 缺省为 qoder):
dsh-qoder-connect pat set <token> --provider qoder # 校验、保存并设为当前
dsh-qoder-connect pat list --provider qoder # 列出已保存(* = 当前)
dsh-qoder-connect pat use <id> --provider qoder # 切换
dsh-qoder-connect pat rm <id> --provider qoder # 删除
dsh-qoder-connect pat clear --provider qoder # 清除全部(logout 同义)不方便走卡片的场景可用环境变量:未保存过凭证文件时插件读取 env 兜底——
变体 · 环境变量 qoder(china) · QODER_CN_PERSONAL_ACCESS_TOKEN qoder-global · QODER_PERSONAL_ACCESS_TOKEN
优先级为 文件 > env:只要该变体保存过有效的凭证文件,环境变量就不再生效(保存的令牌永远压过游离的 env)。env 来源的令牌在卡片上标为「来源:环境变量」,且没有保存时间。
插件的全部自有文件收在数据目录一处:/.dsh-qoder-connect/(凭据在根,可重建的缓存在 state/ 子目录,「清缓存」永远碰不到凭据):
<profile>/.dsh-qoder-connect/
├── .qoder-auth.json # 国内版 PAT 列表({version:3, activeId, credentials:[{id,pat,region,savedAt,label?}]})
├── .qoder-global-auth.json # 国际版 PAT 列表
├── checkin-status.json # 签到状态与历史日志记录
└── state/
├── .qoder-catalog.json # 国内版按账号保存的模型目录
├── .qoder-global-catalog.json
├── .qoder-probe.json # 国内版推理档位探测记录
├── .qoder-global-probe.json
├── .qoder-host-heartbeat.json # host 心跳(doctor 判断宿主是否在跑)
└── .qoder-machine-id # 传输层机器标识种子(不落 ~/.qoder)数据目录按 profile 归属(在 $DSH_HOME/profiles/ 下找声明本插件的 profile),无法确定时回落到 Harness home;环境变量 DSH_QODER_DATA_DIR 可显式覆盖。
pnpm install
pnpm run build # tsdown 产出 lib/(宿主 bundle + client bundle)
pnpm test # vitest run(tests/**/*.spec.ts)
pnpm run test:qoder # node --test(tests/qoder/*.test.ts,Qoder 传输层用例)
pnpm run typecheck # tsc:宿主 + client 两份 tsconfig
pnpm run check # typecheck + test + test:qoder + build 一条命令全过Qoder 传输层的上游 node:test 用例已移植进 tests/qoder/(用 pnpm run test:qoder 跑,原件 reference-qoder-tests/ 已移除);命令以 package.json scripts 为准。
本项目按 MIT 许可发布,双上游出处详见 NOTICE。本仓库与 Qoder、DeepSeek 官方均无关联,是社区适配器——非官方实现。