前言¶
在 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 原生双面插件 | 支持 |
核心功能¶
有客户端:自动收号¶
- 在果办客户端里登录一次。
- 打开 DSH「设置 → 果办 OfficeAce」,点「同步本机客户端」。
- 账号出现在表格里,默认已勾进池(若你之后打开账号池)。
插件从两个入口只读探测,谁先读到可用的就用谁:
| 入口 | 位置 | 认证形态 |
|---|---|---|
| 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)。
没有客户端:浏览器登录¶
在设置页点「登录添加账号」→ 浏览器打开华为云授权页 → 登录完成后自动落库。
授权走两条回调路线,自动选择:
- 云端取码(首选):
POST /v1/claw/auth/state登记 → 浏览器授权 → 轮询/v1/claw/auth/code取回授权码;不需要本机端口。 - 本机回环(回落):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 |
单次请求最多尝试几个账号 |
典型用法¶
- 按上一节命令安装并重启 DSH。
- 进入「设置 → 果办 OfficeAce」。页面按「本机客户端 / 登录 / 账号 / 账号池 / 其它」分组展示。
- 已有果办客户端:客户端内登录 → 设置页点「同步本机客户端」→ 在账号表格确认勾选。
- 无客户端:点「登录添加账号」完成浏览器授权 → 账号落库后可直接在 DSH 里选用果办模型对话。
- 若需要多账号容错:在账号池区域打开池功能,按 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