
hdhgsysh/dsh-connect-qoder
dsh-connect-qoder
Bridge local Qoder / Qoder CN models into DeepSeek Harness
Install
npx @deepseek-ai/dsh plugin --profile web add @eghrhegpe/dsh-connect-qoderRestart `dsh web` after install. Bundle APIs can change during the developer preview.
README badge
[](https://dshhub.dev/plugins/dsh-connect-qoder)Paste this into your README. The star count updates with every catalog sync.
From the README
Excerpt from hdhgsysh/dsh-connect-qoder, cleaned of badges and images.
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 把登录信息放在 Chromium OSCrypt 格式的凭据文件里(v10 + nonce + 密文 + tag,AES-256-GCM)。
新版(0.3.x)的凭据直接保存在 <userData>/auth.v1.dat,旧版(0.2.x 及更早)则放在
VS Code 风格的 state.vscdb SQLite 数据库里。两种布局都支持,新版优先尝试。
密文用的密钥保存在应用的 Local State 中,由操作系统 keystore 包裹 —— Windows 上是当前用户
作用域的 DPAPI,因此同一用户下的进程都能解开它。
Node 没有内置 DPAPI 绑定,这一步交给 PowerShell,并通过临时文件交换结果(不使用管道),
这样在禁止管道 stdio 的沙箱里同样可用。
没有桌面应用登录时,可以用官方文档的 PAT 兜底:设置 QODERCN_PAT(国内版)或
QODER_PAT(国际版),插件会用它换取 job token。
平台边界:零配置路径只在 Windows 成立。 解密链路是 PowerShell + DPAPI(Crypt32.dll),
lib/ 里没有任何 macOS / Linux 解包分支——在其它平台上应用目录找得到(应用数据根目录
已按平台解析,见下),但凭据读不出来(loadCredential 返回 undefined,该区域不注册),
只剩上面的 PAT 兜底。
这不是"没有跨平台客户端",而是客户端已跨平台、插件尚未跟上:Qoder 桌面版在
macOS 12+ / Linux (.deb/.rpm) / HarmonyOS 上都有下载(qoder.com.cn/download),
但 lib/ 只实现了 Windows 这一条解密链。缺口在两处,全部登记在
docs/KNOWN_GAPS.md 第 6 条(跨平台凭据链未实现):
- OS keystore 封装(含 key 派生):Windows 走 DPAPI;macOS 需 Keychain(
security), 且 Chromium 在 macOS 上对encrypted_key还要做 PBKDF2-HMAC-SHA1 派生("peanuts" 常量 + 1003 次迭代)——与 DPAPI 直解是两种算法,不是换个命令;Linux 需 libsecret(secret-tool) 或 Chromium 在 Linux 上的peanuts硬编码 key 兜底。 - 跨平台 CI 与实机验证:GitHub Actions 的 macos / ubuntu runner 可以编译并跑单测,但
Keychain 弹窗、签名打包、
secret-tool的 D-Bus session 都得在实机或 runner 上验。
已修的两项(原缺口共四处):应用数据根目录现在按平台解析(Windows %APPDATA、
macOS ~/Library/Application Support、Linux $XDG_CONFIG_HOME/~/.config)——此前直接读
process.env.APPDATA,而该变量在 macOS 上不存在,于是探测得到空串、把"应用装着但读不出密钥"
谎报成"您没登录";MACHINE_OS 也补上了 darwin 档(本机实测过网关对
x86_64_darwin / aarch64_darwin 一律正常应答)。
剩下的是实机工作:service 名、PBKDF2 参数、Linux 的变体都必须实测确认,写出来就是盲代码。 macOS / Linux 用户只能走 PAT 兜底,或自行从本仓库移植。
CI 的 Ubuntu 绿灯说明测试在那边能跑,不等于零配置在 Linux 上存在。
安装
从 npm 安装(推荐)
dsh plugin --profile web add @eghrhegpe/dsh-connect-qoder
从 DSH 市场安装(DSH 桌面用户)
本仓库是 hdhgsysh/dsh-connect-qoder 的 fork。
可在 DSH 的「插件市场」里粘贴这个源:
github:eghrhegpe/dsh-connect-qoder
注意:npm 上不带 scope 的
dsh-connect-qoder由上游发布,装到的是上游那份; 本 fork 自己发的是 scoped 包@eghrhegpe/dsh-connect-qoder(上面那条),二者不是同一个包。
或本地开发模式:
dsh plugin --profile web add <本仓库路径>
安装后需要重启 DSH 进程:bundle 的 patch 在启动时读取。
凭据安全
插件不存储任何凭据:
- 复用本机已登录的 Qoder 桌面应用的凭据文件(新版
auth.v1.dat/ 旧版state.vscdb, 均以只读方式打开,不做任何写入)。 - 进程内随机 bearer token 绑定 loopback 端口;Qoder 真实的 RSA 包装 key 与 session key 不会离开本插件的沙箱。
已知行为
…

