dsh-qwen-connect:复用千问办公登录态的 DSH 模型 Provider

前言

在 DeepSeek Harness(DSH)里接第三方模型,常见做法是自备 API Key、在 profile 里填 baseUrl 和密钥。千问办公(QwenWorkCN)桌面 App 本身已有账号登录与额度体系,若再单独申请开放平台 Key,等于维护两套凭据。

下面介绍的 dsh-qwen-connect(npm 包名 @xiao-hans/dsh-qwen-connect)走另一条路:从本机已安装的千问办公 App 读取登录态(含 Windows DPAPI 解密 Chromium 凭据),在本机环回地址上挂 OpenAI 兼容 shim,再注册为 DSH 的模型 Provider。维护者为 xiao-hans,分类属于模型推理;仓库在 GitHub 上当前星标为 0,许可证 MIT。本仓库衍生自 gaoqiaoliangjie666/dsh-qwen-connect,上游的协议逆向与 WASM 签名设计归属原作者;xiao-hans fork 在 2026-10 前后增加了企业 VPC 租户支持、输入框实时积分读数,以及 DSH 0.2.x 下 @deepseek-ai/dsh-llm-pi-ai peer 声明修复等改动。

这是什么

一句话:零配置(相对 API Key 而言)把千问办公桌面 App 的登录态接到 DSH,让模型选择器里出现带倍率标注的千问模型,对话走官方网关签名链路,不需要你在 DSH 里再填千问 API Key。

数据流可以概括为:

DSH / pi-ai ──OpenAI 协议──▶ 127.0.0.1 环回 shim ──WASM 签名──▶ gateway.qwenwork.cn
            ◀──OpenAI SSE──                    ◀──上游 SSE──

Host 侧入口在 lib/index.js,浏览器侧设置卡片在 lib/client.js;凭据解密只通过 lib/credentials-seam.js 接缝消费,集成层不重复实现 DPAPI 逻辑。

核心功能

以下能力与 README 能力表及架构说明一致,未在资料中出现的项不写。

能力 说明
Provider 注册 模型出现在 DSH 模型选择器,名称含倍率
设置卡片 账号、积分、套餐、模型列表(含配额进度条);会话输入栏插槽可显示剩余积分
真实对话 WASM 签名 + SSE 聊天端点
流式与多轮 流式输出,保留上下文
工具调用 tools 透传,tool_calls 与 OpenAI 形状互转;收尾时纠正上游误标为 stop 的情况
图片输入 需模型声明 image 模态、DSH 附件服务可用,且上游同时收到 chat_context.imageUrls 与 messages 中含 image_url 的多模态 content(详见仓库「图片输入」专节)
Token 统计 上游 raw_usage 转为 OpenAI usage
重试与流收尾 限流/网关瞬时故障最多重试 3 次;shim 对静默断流、无 finish 帧、空回答等有多条明确收尾规则,避免界面一直转圈无报错

静态模型目录(取自 App 日志 rawModels,不动态拉 /api/v2/model/list,该接口需签名会 403):

id 名称 倍率 视觉 上下文
pro 高级 1.00x 支持 1M(默认,可选 200K / 400K / 1M)
flash 标准|Qwen3.8-Flash 0.10x 支持 1M
qwen3.8-max-preview Qwen3.8-Max 1.10x 支持 1M

maxOutputTokens 为 32000。

安全边界(资料原文要点):状态路由仅环回访问;JWT/Bearer 等敏感串脱敏后才进浏览器 DOM;凭据不下发到前端;额度字段为 null 时不伪装成 0。

安装与启用

官方 README 给出的方式是 Windows 下用 Junction 把源码挂进 DSH web profile,便于改代码即时生效,而不是一条 dsh plugin add github:... 命令。包名使用 scoped 全名 @xiao-hans/dsh-qwen-connect;示例路径需改成你本机 clone 或解压后的目录。

先做依赖桥(可选,便于 CLI 自检解析 peer),再把插件 junction 到 profile,最后在 package.json 里登记三处:dependencies、dsh.profile.bundles、pnpm.overrides。

$d = "E:\Codex开发\DHS开发\dsh-qwen-connect"
$w = "$env:APPDATA\dsh-desktop\harness\profiles\web"
$pkg = "@xiao-hans/dsh-qwen-connect"

# 1) 依赖桥:让 CLI 侧自检可解析(运行时解析由 DSH 宿主接管,非必需)
foreach ($ns in @("@deepseek-ai", "@earendil-works")) {
  cmd /c mklink /J "$d\node_modules\$ns" `
         "$env:APPDATA\dsh-desktop\harness\profiles\node_modules\$ns"
}

# 2) 挂进 profile(scoped 包:junction 放在 node_modules\@xiao-hans\ 下)
New-Item -ItemType Directory -Force "$w\node_modules\@xiao-hans" | Out-Null
cmd /c mklink /J "$w\node_modules\$pkg" "$d"

# 3) 在 profile 的 package.json 里登记(三处,包名用 scoped 全名)
#    dependencies:      "@xiao-hans/dsh-qwen-connect": "file:./node_modules/@xiao-hans/dsh-qwen-connect"
#    dsh.profile.bundles: "@xiao-hans/dsh-qwen-connect"
#    pnpm.overrides:    "@xiao-hans/dsh-qwen-connect": "link:./node_modules/@xiao-hans/dsh-qwen-connect"

package.json 中声明 Node 引擎为 ^22.19.0 || >=24.0.0,当前资料中的插件版本为 0.1.5。安装前应在 GitHub 阅读 LICENSE 与完整 README,确认你愿意以 DSH 进程权限运行该插件逻辑(含读取本机 App 凭据、启动环回 shim)。

回滚时删除 junction 并用 README 示例中的备份覆盖 profile 的 package.json 与 cordis.patch.yml(路径以你实际备份为准)。

典型用法

资料未给出单独的「在 DSH 里点哪几个菜单」截图式教程,可复现的用法主要是:

  1. 完成安装并重启/重载 DSH web profile 后,在模型选择器中选择带千问倍率标注的模型(如 flash、pro)。
  2. 在设置插件卡片查看账号昵称、剩余积分、套餐与模型配额;凭据缺失时卡片应给出可操作的修复提示,而不是让整个 profile 出现 “Failed to load plugins” 横幅(apply() 设计为不抛异常)。
  3. 需要视觉输入时,确认 DSH 已启用 durable attachment 服务,且所选模型在插件静态目录中标记支持视觉;否则插件会动态不声明 image 模态,避免 DSH 抛出 pi-ai image input requires the durable attachment service。
  4. 开发/维护者自检:在仓库根目录执行
node tools/verify-all.mjs

会跑 web 状态脱敏、client/host 装载、provider 注册与 seam live 检查等项;单元测试可用 npm test(node --test test/unit/*.test.mjs)。

端到端 live 探测示例输出形态(数值随账号变化):

nickname: Test User   account: testuser01   remaining: 2100   tierName: Free

适用场景与注意

适合谁:已在 Windows 上日常使用千问办公桌面 App,希望在 DSH 智能体工作流里直接消耗同一账号额度,且接受本机环回代理架构的开发者。

务必知晓的限制(来自 README「已知限制」及环境说明):

  1. 仅 Windows:凭据解密依赖 Windows DPAPI;未装 koffi/ffi-napi 时会走 PowerShell 子进程兜底。
  2. 模型列表静态:不能在线刷新官方 model list API。
  3. Free 套餐:上游 quota.total 可能为 null,卡片按「未提供」处理。
  4. 签名模块:research/wasm.bin 随 npm 包发布,换机器无需重新提取;签名头必须为 WASM 生成的 Bearer COSY.<...>,不能用 App accessToken 覆盖。
  5. 文档内部表述:能力表与「图片输入」专节描述视觉链路已打通;同一份 README 的「已知限制」第 2 条仍写「视觉输入仍不支持」。若以功能为准,应以能力表与专节为准并在本地版本实测;若以保守为准,可先当文字遗留处理。

插件以 当前 DSH 宿主进程权限 运行,会读本机 App 存储的登录态并在 localhost 起 shim。安装前应自行审阅 GitHub 源码 与 MIT 许可证;社区目录页 skillhub.cn 上的条目 为独立生态索引,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-qwen-connect 把「已有千问办公登录」变成 DSH 里的 OpenAI 兼容 Provider:流式对话、工具调用、附件图片(在 DSH 与上游条件同时满足时)以及设置卡片与输入栏积分读数,都在资料描述范围内;代价是 Windows 绑定、静态模型表与本机信任边界。需要详情、回滚步骤与流收尾语义表,以仓库 README 为准。

  • 目录页:https://www.skillhub.cn/plugins/xiao-hans/dsh-qwen-connect
  • GitHub:https://github.com/xiao-hans/dsh-qwen-connect
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜