将华为云 CodeArts码道与 OfficeAce果办桌面客户端已登录的模型接入 DeepSeek…
33.4/100
综合分
5
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/28 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Alanine-gH/dsh-huaweicloud-connect该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · tool
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 8 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 28 处,展示前 28 条)
- 发起网络请求lib/client.js:355
const response = await fetch(STATUS_PATH, { - 发起网络请求lib/client.js:396
const response = await fetch(VISIBILITY_PATH, { - 发起网络请求lib/client.js:421
const response = await fetch(KEY_PATH, { - 发起网络请求lib/client.js:922
const response = await fetch(PROBE_PATH, { - 写入本地文件lib/credentials.js:59
await mkdir(dirname(path), { recursive: true, mode: 0o700 }).catch(() => undefined); - 写入本地文件lib/credentials.js:61
await writeFile(temp, text, { encoding: "utf8", mode: 0o600 }); - 写入本地文件lib/credentials.js:62
await rename(temp, path); - 写入本地文件lib/credentials.js:63
await chmod(path, 0o600).catch(() => undefined); - 读取本地文件lib/credentials.js:158
text = await readFile(path, { encoding: "utf8" }); - 读取本地文件lib/credentials.js:224
const text = await readFile(path, { encoding: "utf8" }); - 删除本地文件lib/credentials.js:340
await rm(ownAuthPath(product), { force: true }).catch(() => undefined); - 写入本地文件lib/visibility.js:32
await mkdir(dirname(path), { recursive: true, mode: 0o700 }).catch(() => undefined); - 写入本地文件lib/visibility.js:34
await writeFile(temp, text, { encoding: "utf8", mode: 0o600 }); - 写入本地文件lib/visibility.js:35
await rename(temp, path); - 写入本地文件lib/visibility.js:36
await chmod(path, 0o600).catch(() => undefined); - 读取本地文件lib/visibility.js:87
text = await readFile(visibilityPath(product), { encoding: "utf8" }); - 删除本地文件lib/visibility.js:201
await rm(visibilityPath(product), { force: true }).catch(() => undefined); - 读取本地文件lib/reasoning.js:396
const parsed = JSON.parse(readFileSync(file, "utf8")); - 写入本地文件lib/reasoning.js:458
mkdirSync(dirname(file), { recursive: true }); - 写入本地文件lib/reasoning.js:460
writeFileSync(temp, JSON.stringify(doc, null, 2), "utf8"); - 写入本地文件lib/reasoning.js:461
renameSync(temp, file); - 读取本地文件lib/drivers/codearts.js:166
text = await readFile(path, { encoding: "utf8" }); - 读取本地文件lib/drivers/codearts.js:220
info = await stat(dbPath); - 发起网络请求lib/drivers/codearts.js:401
return fetch(url, { method, headers: outgoing, body: bodyText, signal }); - 读取本地文件lib/drivers/officeace.js:46
entries = await readdir(root, { withFileTypes: true }); - 发起网络请求lib/drivers/officeace.js:209
const response = await fetch(url, { - 发起网络请求lib/drivers/officeace.js:322
const response = await fetch(url, { - 读取本地文件lib/drivers/officeace.js:371
const info = await stat(path);
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-llm@deepseek-ai/dsh-llm-pi-ai@deepseek-ai/dsh-home-paths@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
README
由 DeepSeek 最新模型翻译生成dsh-huaweicloud-connect
把华为云 CodeArts(码道) 与 OfficeAce(果办) 桌面客户端里已经登录的模型接入 DeepSeek Harness。
设计思路与 dsh-workbuddy-connect 一致:复用客户端自己的登录态,不做额外 OAuth,不读取、不保存用户口令。
- OfficeAce 分组:直连华为云模型网关(21 个模型,含 DeepSeek-V4 / GLM-5.x / Kimi / Pangu / Qwen)
- CodeArts 分组:直连 snap-access 网关,走 APIG SDK-HMAC-SHA256 签名。
支持官方 CLI 授权(IAM 长期 AK/SK),配好之后永不过期、也不依赖客户端在跑
状态:两端均已端到端实测通过。
- OfficeAce:真实请求拿到 21 个模型,并完成一次真实流式对话(模型回复正常)。
- CodeArts:CLI 授权(长期 AK/SK)下,模型目录 9 个、真实对话 finish_reason: stop 且正文正常。
CodeArts 有两个实测坑,见下文「CodeArts 授权:为什么优先用 CLI」。
展开完整文档(README 剩余 1 节)
dsh-huaweicloud-connect 把华为云 CodeArts(码道) 与 OfficeAce(果办) 桌面客户端里已经登录的模型接入 DeepSeek Harness。 设计思路与 dsh-workbuddy-connect 一致:复用客户端自己的登录态,不做额外 OAuth,不读取、不保存用户口令。 - OfficeAce 分组:直连华为云模型网关(21 个模型,含 DeepSeek-V4 / GLM-5.x / Kimi / Pangu / Qwen) - CodeArts 分组:直连 snap-access 网关,走 APIG SDK-HMAC-SHA256 签名。 支持官方 CLI 授权(IAM 长期 AK/SK),配好之后永不过期、也不依赖客户端在跑 状态:两端均已端到端实测通过。 - OfficeAce:真实请求拿到 21 个模型,并完成一次真实流式对话(模型回复正常)。 - CodeArts:CLI 授权(长期 AK/SK)下,模型目录 9 个、真实对话 finish_reason: stop 且正文正常。 CodeArts 有两个实测坑,见下文「CodeArts 授权:为什么优先用 CLI」。 CodeArts 授权:为什么优先用 CLI 插件支持两种凭据,实测能力不一样: | 凭据 | 是否签 maas_type: benefit | 对话结果 | | 客户端登录态(临时 STS,约 1 小时) | 是 | benefit not found | | 客户端登录态(临时 STS) | 否 | TM.00001041 | | IAM 长期 AK/SK(CLI 授权) | 是 | benefit not found | | IAM 长期 AK/SK(CLI 授权) | 否 | ✅ 正常返回正文 | 两条结论: 1. maas_type: benefit 是「免费权益通道」的声明头。 该通道不可用时,任何带它的请求都回 InferHub.4004.200 benefit not found —— 即使 HTTP 状态是 200(错误藏在 SSE 首帧里)。 所以本插件只在 STS 模式下签它,AK/SK 模式不签。 2. CLI 授权是更优路径:永不过期,且不需要 CodeArts Agent 在运行。 配置方式二选一(改完重启 DSH): 方式一:环境变量(官方推荐,暴露面最小) $env:CODEARTS_CLI_AK = "<Access Key Id>" $env:CODEARTS_CLI_SK = "<Secret Access Key>" 方式二:把华为云 IAM 控制台导出的 credentials.csv 放到 ~/.dsh/.huaweicloud-connect/credentials.csv(建议把 ACL 收到仅当前用户)。 - 创建 AK/SK:https://console.huaweicloud.com/iam/#/mine/accessKey - CLI 授权指导:https://support.huaweicloud.com/usermanual-cli/codeartsagent_cli_0026.html 未配置时插件会回落到客户端登录态,功能不受影响,只是需要每小时续期。 为什么不是「填 API Key」 两个产品的鉴权都不是普通 Bearer: | 产品 | 鉴权 | 说明 | | OfficeAce | Authorization: Basic base64(app_key:app_secret) | APIG「APP 认证」,值已存在于本地明文文件 | | CodeArts | Authorization: SDK-HMAC-SHA256 Access=…, SignedHeaders=…, Signature=… | 需 AK/SK(+ 可选 X-Security-Token)现算签名 | 所以插件用「回环 shim」结构:对 pi-ai 暴露一个标准 OpenAI endpoint,把签名/自定义头收在 shim 内部。 PiAiAdapter(pi-ai) ↔ 127.0.0.1 回环 shim(OpenAI 兼容) ↔ 华为云私有 HTTP 安装 前置:CodeArts 需配置 CLI 授权(长期 AK/SK)或登录过 CodeArts Agent; OfficeAce 需登录过客户端至少一次。详见上面「CodeArts 授权:为什么优先用 CLI」。 推荐:从 npm 安装 装最新版 dsh plugin --profile desktop add dsh-huaweicloud-connect@latest 或锁定具体版本(把 <version> 换成你想要的版本号) dsh plugin --profile desktop add dsh-huaweicloud-connect@<version> 装完完全退出并重启 DeepSeek Harness 桌面版(Host 插件在启动时加载)。 这里刻意不写死版本号:写死过一次,发版时忘了同步,导致 README 一直指向旧版本。 需要具体版本时看 npm 版本列表。 备用:从 GitHub Release 安装 跟随仓库最新 tag dsh plugin --profile desktop add github:Alanine-gH/dsh-huaweicloud-connect 或锁定 tag(把 <tag> 换成 v0.8.0 这样的具体标签) dsh plugin --profile desktop add github:Alanine-gH/dsh-huaweicloud-connect#<tag> GitHub 需要能访问。 如果你的机器连不上 github.com(常见于国内网络),给 git 配一个代理即可,pnpm 解析 GitHub 源时会用上: git config --global http.proxy 127.0.0.1:<你的代理端口> 备用:仓库里的安装脚本 powershell pwsh -NoProfile -ExecutionPolicy Bypass -File scripts\install.ps1 脚本做三件事:把插件拷到 <profile>/node_modules/;从已有的 pi-ai 副本拷一份到插件自己的 node_modules(隔离,不动顶层包版本);幂等更新 package.json 的 dependencies 与 dsh.profile.bundles。跑完会自检 BOM 并 fail fast。 版本兼容范围 声明了 engines.dsh:>=0.2.1-rc.2 <0.3.0-0,即 DSH 0.2.1 整个系列(含 rc.2 / rc.3 及后续 0.2.x)。0.2.0 及更早、0.3.0 及更晚都会被兼容门禁拒绝。 理由不是猜的:rc.2 → rc.3 里本插件用到的四个包(dsh-llm、dsh-llm-pi-ai、dsh-home-paths、dsh-client-ui-renderer/dsh-client-locale)逐个文件 SHA-256 相同,唯一差异是 package.json 里的版本号本身。早先版本把 peer 钉成精确 0.2.1-rc.2,在 DSH 升到 rc.3 后就被判不兼容(reasonIncompatibleVersion)——那是一次误报。 使用 重启后,模型选择器会出现两个新分组: - OfficeAce — 21 个模型 - CodeArts — 7 个模型(含实测验证过的 deepseek-v4.1-flash) 选一个模型直接对话即可。分组在没有可用登录态时会被隐藏(与 workbuddy 插件行为一致)。 诊断 powershell 两个产品一起看 node "<profile>\node_modules\dsh-huaweicloud-connect\lib\bin.js" status 机器可读 node ... status --json 只看一个 node ... status --provider officeace status 只发幂等 GET 拉模型目录,不发对话请求、不刷新登录态。 两个刻意为之的设计 1. 绝不刷新登录态 两个产品的 refresh_token 都是一次性轮换的: - OfficeAce:插件若自行续期会与客户端抢,触发 STS5.1806 把用户登出 - CodeArts:refresh_token 绑定 client_id=codearts-agent 且需要 DPoP 私钥(在客户端手里) 所以本插件只读凭据、只检查 expiresAt: - OfficeAce:凭据不带过期时间,直接用 - CodeArts:STS 约 1 小时有效;过期时分组隐藏,并提示「打开 CodeArts Agent 让它自动续期」 2. 不给模型编造推理档位 上游没有稳定声明「哪些 reasoning_effort 真正生效」,而现有观测表明部分模型会接受但忽略未知档位——一次 200 不能证明该档位可用。所以插件对全部模型都声明 reasoning: false,不提供档位选择。这比给一个假的档位列表更诚实。 已知限制 - CodeArts 的模型目录不能信接口返回:这是实测踩到的坑。/v1/model/builtin 返回的 7 个模型全部不能用于对话(逐个发真实请求,一律返回 InferHub.4005.200 unsupported model);IDE 下发的 inferhub-provider 只有 5 个,同样不含任何可用模型。真正可用的是客户端 model-cache-hook 记录过的那批,其中 deepseek-v4.1-flash 已实测确认可用。本插件因此把 /v1/model/builtin 只当探针(验证凭据与签名是否正常),可选模型另用实测集。 - TM.00001041「并发会话数已达上限(3个)」这个文案是错的:它不是真实并发会话占满。2026-10-26 实测:串行单请求、间隔 5~8 秒、客户端进程数为 0,照样复现;且同一 token 同一模型下 benefit not found(200) 与 TM.00001041(400) 会交替出现,请求耗时始终 120~190ms。它是网关侧节奏/配额限流,插件按 429 处理并自动退避重试,不再触发模型熔断。(历史提示「关掉客户端即可」是错的,已删除。) - CodeArts 需要客户端在跑 —— 仅限 STS 模式。改用 CLI 授权(长期 AK/SK)后不再需要。 - OfficeAce 的 models.json 只在客户端跑过一次后落盘:全新安装且从未登录时分组不显示。 - 上下文窗口是内置快照:两个上游的模型列表接口都不返回 context window,用的是客户端内置元数据表(见 lib/drivers/*.js 里的 CONTEXT_WINDOWS)。上游上架新模型时会退回保守默认值。 - 模型目录是全量目录:能列出来 ≠ 当前账号有权限。没有权限的模型会返回 ModelArts.81004/81009;CodeArts 还会出现「目录 9 个模型、但每个对话都回 benefit not found」的情况(权益未开通)。 - 与 deepseek-harness-codearts 的关系:npm 上存在一个独立插件 deepseek-harness-codearts,它自己完成 CodeArts 的 OAuth 登录(不读桌面凭据)。两者可以共存(provider id 不同:本插件是 huaweicloud-codearts,它是 codearts),但会看到两个 CodeArts 分组。 目录结构 lib/ ├── index.js Host 插件入口:provider 注册、catalog、轮询 ├── client.js Web 半边:设置界面(plugins.bundle.config slot) ├── web.js 同源只读 status / 写 visibility 路由 ├── visibility.js 模型显隐存储(按账号分桶) ├── reasoning.js 推理档位探测 + 缓存 ├── shim.js 回环 OpenAI 兼容 shim(四道闸 + 请求归一化 + SSE 兜底) ├── credentials.js 登录态复用:定位 → 分类 → 副本 → 刷新 → 降级 ├── apig-sign.js 华为 APIG SDK-HMAC-SHA256 签名器(纯函数) ├── bin.js 诊断命令行:status / doctor / logout └── drivers/ ├── officeace.js Basic 头 + models.json 凭据 └── codearts.js AK/SK 签名 + state.vscdb 凭据 test/ ├── selftest.mjs 离线自测(21 项:签名 / 归一化 / 凭据 / shim / 串行闸) ├── sign-selftest.mjs 签名专项(25 项) ├── web-selftest.mjs status / visibility 路由(34 项) ├── client-selftest.mjs 客户端模块契约(33 项) ├── reasoning-selftest.mjs 推理档位探测(40 项) ├── live-probe.mjs 真实只读探测(只发 GET /models) └── host/ 测试台用的离线替身(dsh-llm / dsh-llm-pi-ai / schemastery) scripts/install.ps1 绕开 pnpm 的安装脚本 自测(全部离线,不需要 DSH 也不需要网络): powershell npm test # 153/153(五套串跑) node test\live-probe.mjs # 会访问真实上游,只发 GET 环境变量 | 变量 | 作用 | | HUAWEI_OFFICEACE_AUTH_FILE | 显式指定 OfficeAce 的 models.json 路径 | | HUAWEI_CODEARTS_AUTH_FILE | 显式指定 CodeArts 的 state.vscdb 路径 | | HUAWEICLOUD_PI_AI_SOURCE | 安装脚本用:指定含 @earendil-works/pi-ai 的 node_modules 目录 | 免责声明 - 本项目仅供个人学习与研究,只驱动使用者自己的账号在本机调用。 - 依赖两个客户端未公开的内部接口,客户端更新后可能需要调整。 - 使用需遵守华为云相应服务条款;因使用本项目产生的任何后果由使用者自行承担。 - 与华为云无关联,未获其授权或认可;文中名称仅用于描述兼容关系,商标权归各自所有。 许可证 MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Alanine-gH/dsh-huaweicloud-connect
将华为云 CodeArts码道与 OfficeAce果办桌面客户端已登录的模型接入 DeepSeek…
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,173已汉化DeepSeek 客户端
74.4
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,636已汉化DSH
72.2
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,349已汉化DSH
71.6
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,308已汉化DSH
71.3
智能体运行框架路由HarnessRouter/harnessrouter
智能体运行框架的统一接口。
★ 3,897已汉化DSH
71.2
这是你的仓库?认领条目