前言¶
在 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 里点哪几个菜单」截图式教程,可复现的用法主要是:
- 完成安装并重启/重载 DSH web profile 后,在模型选择器中选择带千问倍率标注的模型(如
flash、pro)。 - 在设置插件卡片查看账号昵称、剩余积分、套餐与模型配额;凭据缺失时卡片应给出可操作的修复提示,而不是让整个 profile 出现 “Failed to load plugins” 横幅(
apply()设计为不抛异常)。 - 需要视觉输入时,确认 DSH 已启用 durable attachment 服务,且所选模型在插件静态目录中标记支持视觉;否则插件会动态不声明 image 模态,避免 DSH 抛出
pi-ai image input requires the durable attachment service。 - 开发/维护者自检:在仓库根目录执行
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「已知限制」及环境说明):
- 仅 Windows:凭据解密依赖 Windows DPAPI;未装
koffi/ffi-napi时会走 PowerShell 子进程兜底。 - 模型列表静态:不能在线刷新官方 model list API。
- Free 套餐:上游
quota.total可能为 null,卡片按「未提供」处理。 - 签名模块:
research/wasm.bin随 npm 包发布,换机器无需重新提取;签名头必须为 WASM 生成的Bearer COSY.<...>,不能用 App accessToken 覆盖。 - 文档内部表述:能力表与「图片输入」专节描述视觉链路已打通;同一份 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