dsh-connect-qoder
Registers Qoder CN and international language models into DSH, fetching each model's rate automatically as it shifts with off-peak hours. It also provides a daily check-in, a usage pill and a credit lookup. Needs the Qoder login state on this machine, or one browser login.
What it is
Registers Qoder CN and international language models into DSH, fetching each model's rate automatically as it shifts with off-peak hours. It also provides a daily check-in, a usage pill and a credit lookup…
How to install
Run this in the DSH web profile, then refresh the page.
$ dsh plugin --profile web add @eghrhegpe/dsh-connect-qoder@0.7.6
DSH versions accepted
>=0.2.0-rc.0 <0.3
Author and traction
hdhgsysh · ★ 23 · Updated 2026-11-04
About this plugin
dsh-connect-qoder
把本机已登录的 Qoder 模型(国内版 / 国际版)接入 DeepSeek Harness,零配置用你的账号额度。
此项目已停更,最高支持dsh-0.21.5,相关功能已合并到[dingminhua版](https://github.com/dingminhua/dsh-connect-qoder)
安装 ·
工作原理 ·
更新日志 ·
问题反馈
把本机已登录的 Qoder 模型接入 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness),
零配置即可在 DSH 的模型选择器里使用你的 Qoder 账号额度。
国内版 Qoder CN 与国际版 Qoder 是两个并行的 provider(qoder-cn / qoder),
装哪个就出现哪一组模型,两个都装就两组并存,各自使用自己的账号与额度。
输入框旁的用量胶囊:工具栏上的 Qoder CN · 2,222 是区域前缀加主额度剩余 Credits,
点开就是同一份用量面板——套餐内额度与剩余、今日经本客户端的请求数与 token 消耗(含缓存命中)、
7 天用量趋势,以及今日签到状态——与 Plugins 页卡片同款(同一套读数与阈值)。
名册里出现了本机此前没记过的模型时,胶囊会多出第三段 · 3 新模型(没有就不画,宽度与从前
一致),点开面板能看到名字。这个「新」的口径是本机第一次见到,不是上游的上架时间:目录里
没有这个字段,插件能证明的只有「本机上次记下的名册里没有它」。所以首次运行只播种不宣布,
只列最近 7 天内首见的,见 docs/issues/25。
工作原理
DSH PiAiAdapter(每个区域一套) -> 安全 loopback shim(随机端口 + 进程内随机 secret) -> COSY 签名 + 自定义 base64 编码 -> 国内版 https://gateway.qoder.com.cn/ -> 国际版 https://api3.qoder.sh/ -> Qoder 双层包装 SSE -> OpenAI SSE -> DSH 本地执行工具并回传结果
Qoder 不是 OpenAI 兼容端点,所以需要三样东西:
1. COSY 签名头 —— 每个网关请求都带 Cosy-* 头与 Authorization: Bearer COSY..,
签名是对 base64 负载、RSA 包装的 AES 密钥、时间戳、请求体与签名路径做 MD5。
2. 置换 base64 请求体 —— 查询串里的 Encode=1 表示 JSON 体要先 base64、再按换过的字母表
逐字符替换、最后按三分之一旋转。
3. 双层 SSE —— 每个 data: 帧是一个信封对象,它的 body 字段本身又是 JSON 字符串,
里面才是 OpenAI 风格的 chunk。
凭据来源
插件有三个凭据来源,按优先级依次尝试(桌面应用优先):
1. Qoder 桌面应用自己的登录状态(下面几段描述的解密过程)。只要它在且没过期,用的就是它:
应用运行时自己保持登录新鲜,本机没有比它更新的凭据。
2. 插件自己的设备登录。在浏览器里批准一个码,插件把换回来的可刷新令牌存进
$DSH_HOME/.qoder-auth..json。这是没装桌面端(或不想装)的机器零配置登录的路径 ——
详见 [凭据安全](#凭据安全) 与 docs/issues/21-device-login-credential-source.md。
3. 环境变量 PAT(QODERCN_PAT 等)。最后的兜底,需要用户自己到后台造一个长期令牌。
桌面端那条过期了就不算数(2026-10-20):过期的 access token 什么都干不了——每个带它签名的
请求都会被拒,这个版本本身也不会被注册(region-gate 直接按"登录已过期"跳过发布)。所以它
不再压住后面两条:插件会继续往设备登录、再往 PAT 找一条还能用的凭据。只有三条都拿不出
东西时,那条过期的桌面端登录才作为"本机真实发生过的事"被报出去,而不是被一句含糊的"没登录"
盖过去。
无论走哪一条,都不写入应用的文件:桌面端的凭据文件始终以只读方式打开。
卡片按"真正在服务这个版本的是谁"说话(2026-10-20):宿主把桌面端登录与插件自有登录并列
上报(两条凭据两种寿命,不合并),但账号卡要回答的其实只有一个问题——"这个版本登录了吗"。
所以当插件自有凭据在服务、而桌面端那条不在服务(过期、读不到、或只是环境变量 PAT 在服务)时,
这个版本读作"已登录",并配一句"当前用的是插件自有登录(浏览器登录)——不需要桌面端
客户端";此时那条"本地登录信息读不到"的红字不再出现——它描述的是桌面端,不是这个版本能不能用。
只签浏览器登录的用户也因此第一次有了「在线校验登录」按钮可点(以前按钮只在 source 有值时
出现,而插件自有登录在账号行里没有 source)。
Qoder 把登录信息放在 Chromium OSCrypt 格式的凭据文件里(v10 + nonce + 密文 + tag,AES-256-GCM)。
新版(0.3.x)的凭据直接保存在 /auth.v1.dat,旧版(0.2.x 及更早)则放在
VS Code 风格的 state.vscdb SQLite 数据库里。两种布局都支持,新版优先尝试。
Compare in this category
The five most-starred plugins in the same category.
| Plugin | Author | Stars | Version | Updated |
|---|---|---|---|---|
| dsh-our-free-model | Ebony-Vinyl | 68K | 2.1.0 | 2026-11-10 |
| next-ai-draw-io | DayuanJiang | 36.9K | 0.4.10 | 2026-11-09 |
| MemOS | MemTensor | 12.3K | 0.0.0 | 2026-11-09 |
| bisheng | dataelement | 12.2K | 0.0.0 | 2026-11-10 |
| webnovel-writer | lingfengQAQ | 7.9K | 0.0.0 | 2026-11-07 |