dsh-connect-qoder
Verifieddsh-connect-qoder · v0.2.0 · MIT · Web UI
将本机已登录的 Qoder(国内版 Qoder CN / 国际版 Qoder)模型接入 DeepSeek Harness —— bring locally signed-in Qoder models into DeepSeek Harness with zero configuration.
Install
dsh plugin add dsh-connect-qoder Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Creators
Readme
DSH Connect Qoder
把本机已登录的 Qoder 模型接入 DeepSeek Harness, 零配置即可在 DSH 的模型选择器里使用你的 Qoder 账号额度。
国内版 Qoder CN 与国际版 Qoder 是两个并行的 provider(qoder-cn / qoder),
装哪个就出现哪一组模型,两个都装就两组并存,各自使用自己的账号与额度。
工作原理
DSH PiAiAdapter(每个区域一套)
-> 安全 loopback shim(随机端口 + 进程内随机 secret)
-> COSY 签名 + 自定义 base64 编码
-> 国内版 https://gateway.qoder.com.cn/
-> 国际版 https://api3.qoder.sh/
-> Qoder 双层包装 SSE
-> OpenAI SSE
-> DSH 本地执行工具并回传结果
Qoder 不是 OpenAI 兼容端点,所以需要三样东西:
- COSY 签名头 —— 每个网关请求都带
Cosy-*头与Authorization: Bearer COSY.<payload>.<sig>, 签名是对 base64 负载、RSA 包装的 AES 密钥、时间戳、请求体与签名路径做 MD5。 - 置换 base64 请求体 —— 查询串里的
Encode=1表示 JSON 体要先 base64、再按换过的字母表 逐字符替换、最后按三分之一旋转。 - 双层 SSE —— 每个
data:帧是一个信封对象,它的body字段本身又是 JSON 字符串, 里面才是 OpenAI 风格的 chunk。
凭据来源
插件复用 Qoder 桌面应用自己的登录状态,不启动额外的 OAuth 流程,也不写入应用的文件 (数据库以只读方式打开)。
Qoder 把登录信息放在 VS Code 风格的 state.vscdb 里,密文是 Chromium OSCrypt 格式
(v10 + nonce + 密文 + tag,AES-256-GCM)。解密用的密钥保存在应用的 Local State 中,
由操作系统 keystore 包裹 —— Windows 上是当前用户作用域的 DPAPI,因此同一用户下的进程都能解开它。
Node 没有内置 DPAPI 绑定,这一步交给 PowerShell,并通过临时文件交换结果(不使用管道),
这样在禁止管道 stdio 的沙箱里同样可用。
没有桌面应用登录时,可以用官方文档的 PAT 兜底:设置 QODERCN_PAT(国内版)或
QODER_PAT(国际版),插件会用它换取 job token。
安装
从 DSH 市场安装(推荐给 DSH 桌面用户)
在 DSH 的「插件市场」里粘贴这个源:
github:hdhgsysh/dsh-connect-qoder
或本地开发模式:
dsh plugin --profile web add <本仓库路径>
安装后需要重启 DSH 进程:bundle 的 patch 在启动时读取。
凭据安全
插件不存储任何凭据:
- 复用本机已登录的 Qoder 桌面应用的本地数据库(只读打开,临时副本在
os.tmpdir()), 关闭后立即删除。 - 进程内随机 bearer token 绑定 loopback 端口;Qoder 真实的 RSA 包装 key 与 session key 不会离开本插件的沙箱。
已知行为
- 始终思考的模型:部分模型(如
GLM-5.3-Flash、Kimi-K3)声明了推理档位但不允许关闭思考, 对它们发送enable_thinking: false会被上游以provider_error 1210拒绝。插件从模型目录 识别这类模型并完全省略该字段,让模型使用自己的默认档位。 - 上游错误可见:上游失败时返回的是普通 200 帧里的错误对象,而不是 chunk。插件把它翻译成 一条可读的错误,而不是让用户看到一个空的助手回合。
- 国际版额度:国际版的试用额度可能已用尽(
isQuotaExceeded),此时目录请求会返回 403Login expired,该区域就不会显示模型;国内版不受影响。 - 依赖 Qoder 客户端接口(非官方开放 API),Qoder 更新后插件可能需要随之调整。
目录
| 文件 | 作用 |
|---|---|
lib/credentials.js |
从 Qoder 应用读取并解密登录凭据 |
lib/upstream.js |
COSY 签名、请求体编码、目录与对话流 |
lib/shim.js |
面向 pi-ai 的 OpenAI 兼容回环端点 |
lib/adapter.js |
pi-ai provider 与 PiAiAdapter profile |
lib/index.js |
按区域注册 provider 的插件入口 |
免责声明
仅供个人学习研究使用,仅驱动使用者自己的 Qoder 账号在本机调用。使用者需遵守 Qoder 的服务条款, 因使用本项目产生的后果由使用者自行承担。本项目与 Qoder、DeepSeek 均无关联。
许可证
MIT