dsh-connect-huaweicloud:把果办 OfficeAce 接进 DSH

前言

在 DeepSeek Harness(DSH)里接第三方模型,常见做法是写 provider 或装社区插件。华为云果办 OfficeAce 一侧,生态里已有若干「果办方向」实现:有的只能读本机客户端登录态,有的只能浏览器登录,有的账号池能力与 DSH 原生插件形态不完全一致。如果你在 DSH 桌面端既要「有客户端就自动收号」、又要「没装客户端也能浏览器登录一次」,并且希望多账号进同一张池、可勾选、失败可换号,dsh-connect-huaweicloud 是按 README 说明补齐这一组合路径的非官方插件(与华为云、果办 OfficeAce 无关联,只复用你自己账号的登录态,不提供账号、不共享凭据)。

这是什么

  • 名称:dsh-connect-huaweicloud(npm 包名与仓库目录一致)
  • 维护者:xinstart-1
  • 分类:联网工具(社区目录 SkillHub 上的归类)
  • 版本:0.0.5(以仓库 package.json 为准)
  • 许可证:MIT
  • 定位:把华为云果办 OfficeAce 接进 DSH;有客户端则自动读取其登录态,没有则在浏览器里完成授权登录;多个账号进入同一账号池,支持勾选、切换,失败时可按规则自动换号(池功能默认关闭)。

插件声明:非官方,每次调用消耗的是你自己账号的额度,不绕过计费。

与同类实现的能力对比

README 用表格对比了 dsh-huawei-connect、dsh-huaweicloud-connect、officeace-auth 与本插件(细节见仓库 docs/ECOSYSTEM.md)。本插件强调的一点是:「读客户端」与「浏览器登录」作为账号池里的两类成员可以并存,同一套排序与换号逻辑。

能力 本插件(README 自述)
有客户端 → 自动收号 支持
无客户端 → 浏览器登录 支持
两类来源进同一张池 支持
池显式勾选 / 失败换号 支持(默认关)
DSH 原生双面插件 支持

核心功能

有客户端:自动收号

  1. 在果办客户端里登录一次。
  2. 打开 DSH「设置 → 果办 OfficeAce」,点「同步本机客户端」。
  3. 账号出现在表格里,默认已勾进池(若你之后打开账号池)。

插件从两个入口只读探测,谁先读到可用的就用谁:

入口 位置 认证形态
Windows 凭据管理器 OfficeAce/auth-sessions/huawei-oauth/<userDir>/provider-state(分块存储) OAuth + 模型网关 appKey/appSecret
路由状态文件 ~/.office-claw/.jiuwenclaw/config/routing_state/users/<userId>/models.json APIG「APP 认证」Basic base64(appKey:appSecret)

README 明确:全程只读,不写、不删、不改客户端文件与凭据(除非你在配置里显式打开 writeBackDesktop)。

没有客户端:浏览器登录

在设置页点「登录添加账号」→ 浏览器打开华为云授权页 → 登录完成后自动落库。

授权走两条回调路线,自动选择:

  1. 云端取码(首选):POST /v1/claw/auth/state 登记 → 浏览器授权 → 轮询 /v1/claw/auth/code 取回授权码;不需要本机端口。
  2. 本机回环(回落):state 登记失败时,在 127.0.0.1 随机端口接住 ?code=。

两条路线使用 PKCE + DPoP(RFC 9449);DPoP 私钥与 refresh_token 一起保存。登录完成后插件会自动补一次「接入模型」(POST /v1/claw/client-subscription),README 说明因此不必再打开客户端点「接入模型」即可对话。

账号池

  • 默认关闭:关闭时只用你手动选定的账号,失败如实报错。
  • 打开后:每次请求优先使用池内排序最靠前的可用账号;失败依次换下一个,全部失败才报错。
  • 勾选即同意:未勾选的账号不会被使用;空勾选表示「一个都没勾」,不会退化成全选。

排序键(依次比较):可用优先 → 快过期先花(3 天内)→ 积分高 → 凭据更晚过期 → 账号 id。

失败分级示例:401/403 停用 1 小时;402 冷却 30 分钟;5xx/网络 30 秒;429 冷却 15 秒;400 不换号;模型不存在/无权限不惩罚账号。流已经开始后断开不重试。

请求体钳制(发送前)

果办网关部分拒绝发生在流内(HTTP 已是 200),无法在事后重放,因此插件在发送请求之前处理:

触发条件 处理
max_tokens > 131072 钳到 131072
消息里 role: "developer" 改写成 system
图片发给纯文本模型 换成文字占位

README 说明:不改写用户提示词以做「渠道指纹」伪装。

数据存储

内容 位置
账号凭据 $DSH_HOME/officeace-vault/<accountId>.json(0600)
手动选定(池关时) $DSH_HOME/officeace-vault/_selected.json
界面开关 $DSH_HOME/.huaweicloud-connect/dsh-connect-huaweicloud-state.json

卸载插件不会影响客户端登录(在未开启 writeBackDesktop 的前提下)。

安装与启用

依赖(来自 package.json):Node ^22.19.0 || >=24.0.0,DSH >=0.2.1-rc.1 <0.3.0-0。

官方 README 给出的安装命令如下:

# npm
dsh plugin --profile desktop add dsh-connect-huaweicloud

本地开发目录安装(README 示例路径,按需改成你的目录):

dsh plugin --profile desktop add link:X:/Agent/deepseek插件/dsh-connect-huaweicloud

装完后完全退出 DSH(含系统托盘)再启动,然后进入「设置 → 果办 OfficeAce」。

设置页「插件」侧的配置键(默认值见 README):

键 默认 说明
enabled true 关闭后不注册模型,设置页仍可作登录入口
reuseDesktop true 是否自动读本机客户端
writeBackDesktop false 是否把刷新后的凭据写回客户端
warmOnStart true 启动后预热(读凭据 + 拉目录)
maxFailoverAttempts 3 单次请求最多尝试几个账号

典型用法

  1. 按上一节命令安装并重启 DSH。
  2. 进入「设置 → 果办 OfficeAce」。页面按「本机客户端 / 登录 / 账号 / 账号池 / 其它」分组展示。
  3. 已有果办客户端:客户端内登录 → 设置页点「同步本机客户端」→ 在账号表格确认勾选。
  4. 无客户端:点「登录添加账号」完成浏览器授权 → 账号落库后可直接在 DSH 里选用果办模型对话。
  5. 若需要多账号容错:在账号池区域打开池功能,按 README 规则勾选参与轮换的账号,并留意失败冷却策略。

在 DSH 对话界面选择本插件注册的 OfficeAce 模型即可发请求;池关闭时以你手动选定的账号为准。

适用场景与注意

适合谁

  • 已在 DSH 桌面端使用、希望通过果办 OfficeAce 消耗自己账号额度的开发者。
  • 需要 Windows 上读本机果办客户端登录态,或在没有客户端时仅靠浏览器登录的场景。
  • 多账号并希望统一排序、可选自动换号(需主动打开池并勾选账号)。

环境与限制(README 已知限制)

  • 读客户端登录态:依赖 Windows 凭据管理器与 DPAPI;其它平台只能走浏览器登录。
  • 额度显示:需要果办客户端在跑(本机控制面 :3004 / :3003);无客户端时界面不显示额度(不是显示 0)。
  • import 来的账号不能续期:插件拿不到客户端侧的 DPoP 私钥,过期后需重新同步或浏览器登录。
  • 读客户端路径:维护者注明开发机未装客户端,该路径结论来自参考实现与文档,装客户端后建议先点一次「同步本机客户端」做端到端验证。

安全与合规

  • 插件以当前 DSH 进程权限运行;安装前建议在 GitHub 查阅源码与 MIT 许可证,确认你愿意把账号凭据存于 $DSH_HOME/officeace-vault/。
  • 社区目录(SkillHub)与 DeepSeek / 幻方无官方从属关系;「一切皆插件」是 DSH 生态的一般理念,本条目为社区维护的联网工具类插件。

结尾

dsh-connect-huaweicloud 把果办 OfficeAce 的「客户端只读收号」与「浏览器 PKCE/DPoP 登录」收进同一账号池,并在 DSH 侧完成模型注册、发送前请求体钳制与可选的失败换号。查阅说明与安装入口:

  • 社区目录:https://www.skillhub.cn/plugins/xinstart-1/dsh-connect-huaweicloud
  • 源码与 README:https://github.com/xinstart-1/dsh-connect-huaweicloud
羽毛球分组比赛记分
小程序二维码

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

Xiaoye