メインコンテンツへスキップ
A

dsh-qwenwork-connect

alaichhe/dsh-qwenwork-connect

QwenWork (千问办公) model provider for dsh: signs in through the desktop device flow and then calls the official OpenAI-compatible gateway, so tool calls, image input and usage pass through; adds the tiers of the plan as a qwenwork provider, keeps the credential in a local file that a refresh rewrites in place, and shows the remaining credits of the account.

インストール

dsh plugin --profile web add github:alaichhe/dsh-qwenwork-connect

README

dsh-qwenwork-connect

把千问办公(QwenWork)接进 DeepSeek Harness。走官方的模型网关,所以工具调用、 图片输入、usage 都是通的;这一点和 ACP 会话桥那类方案不一样,后者只能一问一答。

二次开源声明:本项目基于 gaoqiaoliangjie666/dsh-qwen-connect、 xiao-hans/dsh-qwen-connect 与 REALOIYO/dsh-qwenwork-connector 二次开发,不是官方项目,与千问办公官方无关。上游版权声明保留在 LICENSE 与 THIRD-PARTY-NOTICES.md; 原作者如认为本仓库的二次分发不妥,可以联系下架。详见下方「二次开源与致谢」。

和 ACP 方案的区别

ACP 会话桥本插件
上游wss://qwenwork.cn/api/chat-wsgateway.qwenwork.cn 的 chat/completions
鉴权页面 JWT(aud=user)桌面端 token(aud=oauth_app)+ COSY 签名
工具调用没有tools 透传,返回 tool_calls
图片没有image_url
多轮每轮新开会话,单条 32KB 上限标准多轮
登录抄浏览器 cookiedevice flow,不需要桌面客户端

安装

dsh plugin --profile web add dsh-qwenwork-connect

装完重启 DSH,模型选择器里会多出 qwenwork 下的模型。签名与请求编码在 lib/cosy.js 手写实现,不需要额外的 WASM 组件或 wasm.bin。

发布走 GitHub Actions + npm trusted publishing,打 tag 就自动发,不需要 token, 也不需要 2FA:

npm version patch && git push --follow-tags

登录

第一次用需要一份凭据:

npx dsh-qwenwork-connect login

终端会打印一个 gateway.qwenwork.cn/device/selectAccounts 的链接。用已经登录 千问办公的浏览器打开,先选账号,再选团队——要选有企业套餐的团队。个人 团队也能登进去,只是扣的是个人额度。

确认之后终端显示账号,凭据写到 ~/.dsh/qwenwork-desktop.json(权限 600)。

也可以在左侧「插件」→ dsh-qwenwork-connect 的配置卡片里点「登录」:卡片会打开同一个授权页, 并每 2 秒轮询一次结果,成功后自动刷新账号与积分。CLI 仍保留,适合没有浏览器 的环境。两条路由是同一套实现:

POST /plugins/dsh-qwenwork-connect/login/start
GET  /plugins/dsh-qwenwork-connect/login/status

三个坑

machine_id 必须一致。 签名头里的 Cosy-MachineId 要等于登录时用的那个, 插件存在 ~/.dsh/qwenwork-machine-id。删掉这个文件就等于要重新登录。

Cosy-User 必须是真实 user_id。 填占位值网关恒定回 403 User identity could not be verified,不会告诉你哪里错了。

企业团队要手动选。 device flow 页面会列出你所有组织,没席位的标着 "组织暂无可用席位"。选错了不会报错,只是跑到个人额度上。

模型与费率

模型目录从网关实时拉取(/algo/api/v2/model/list,5 分钟 TTL),费率、视觉 以后端返回为准;选择器里的 x1.00 / x0.10 就是当前倍率。请求固定按 1M 上下文声明,不提供档位切换(官方模型均为 1M;实测计费也不按档位分档)。首次 拉取成功前先显示内置目录,之后每次刷新用新目录覆盖。

默认是 pro。日常任务建议切 flash,差十倍消耗。

凭据与安全

  • token 只落在本机 ~/.dsh/qwenwork-desktop.json,600;
  • 状态路由只回账号、套餐、积分摘要,不回 token,也不回 refresh_token;
  • 凭据里带 refresh_token,快到期时自动换,换完写回同一个文件;
  • COSY 信封签名在 lib/cosy.js 手写实现,只依赖 node:crypto, 不需要额外二进制。

已知限制

  • 思考链关不掉。网关侧强制思考,enable_thinking:false、 reasoning_effort:"none" 这类字段都不生效,只会在输出里多出 reasoning 通道。
  • 单次请求的图片预算按网关实测收紧到 6 MB / 32 张;超出时交给宿主的 dsh-compaction-image-offload 把最旧的图片标成已卸载后重试。宿主没启用 这个插件时,图片密集的长会话仍会失败。

二次开源与致谢

本项目是二次开源作品,不是千问办公官方实现。

代码基础是 gaoqiaoliangjie666/dsh-qwen-connect (原始设计、协议逆向与回环 shim); xiao-hans/dsh-qwen-connect 接着维护,补了企业 VPC 与 DSH 0.2.x 兼容。device flow 登录与 provider 结构基于 REALOIYO/dsh-qwenwork-connector。 本仓库在此基础上重写了凭据层(文件优先,不再依赖 Windows DPAPI), 并把 WASM 签名换成了手写 COSY 信封。

上游的版权声明逐字保留:LICENSE 保留 gaoqiaoliangjie666、xiao-hans 与本仓库 的版权行;THIRD-PARTY-NOTICES.md 收 dsh-qwenwork-connector、dsh-magpie-connect、 magpie 与 @magpie-community/opencode-qoder-auth 的 MIT 全文。本仓库新增代码 同样以 MIT 发布。

感谢原作者与所有上游贡献者。如果这些项目对你有用,请优先给上游点 Star。

关于下架:上游均为 MIT 许可,本项目已按许可保留版权声明;但如果你作为原作者 认为本仓库的二次分发不妥,请在本仓库开 Issue 说明,我们确认后会删除相关代码或 整个仓库。

License

MIT。

関連プラグイン