DSH CodeArts Connect: Using Huawei Cloud CodeArts models in DSH

前言

DeepSeek Harness(DSH)把对话、工具与模型提供方拆成可插拔模块。若你已经在用华为云 CodeArts 上的 GLM、盘古、Qwen、DeepSeek 等模型,常见做法是单独开网页或脚本里手工填 AK/SK、安全令牌,再对接 OpenAI 兼容接口。凭证过期、多账号切换、以及 CodeArts 对每个账号的并发会话限制,都会拖慢日常对话节奏。

下面介绍社区插件 dsh-codearts-connect(维护者 2239058652,GitHub 仓库 2239058652/dsh-codearts-connect)。它在 DSH 设置里完成 OAuth2(PKCE + DPoP)登录,把 CodeArts 注册为 codearts provider,并在本机用 loopback shim 转发请求,同时支持多账号轮转与本机用量统计。SkillHub 目录将其归类为「模型推理」;截至资料抓取时仓库星标为 0,当前 package 版本为 1.3.0(MIT 许可证)。

这是什么

DSH CodeArts Connect 是把华为云 CodeArts 接入 DeepSeek Harness 的 provider 插件:在 DSH 对话窗口里直接选用 CodeArts 提供的模型,无需在卡片里长期手工维护密钥(也保留粘贴安全令牌的降级路径,便于脚本或排查)。

插件沿用了与 dsh-codebuddy-cli 相近的结构:本地 loopback shim + pi-ai adapter。DSH 侧以 OpenAI /chat/completions 格式、Bearer 为本进程随机密钥访问 shim;shim 再注入华为云 STS x-auth-token,并用 AK/SK 做 SDK-HMAC-SHA256 签名,请求 CodeArts /api/v2/chat/completions。shim 只监听回环地址,并校验 Host、Origin 与进程密钥,降低本机其他进程冒用的风险。

核心功能

以下能力均来自项目 README 与 package 描述,安装前仍建议自行通读源码与 CHANGELOG。

登录与凭证

  • 在 DSH 设置 → CodeArts 卡片点击「使用华为云账号登录」,浏览器完成授权后凭证写入 $DSH_HOME/.codearts-auth.json。
  • 凭证约 2 小时有效,过期前自动续期;续期失败会在卡片提示重新登录,不会静默使用失效凭证。
  • 卡片里也可直接粘贴安全令牌,适合无图形界面或故障排查。

多账号轮转

可存多个华为云账号(在卡片上再登录一次即可添加)。当某个账号的会话槽位被占满时,请求会自动切换到还有余量的账号。上游对每个账号并发会话数限制为 3,且停止生成不会提前释放占用;单账号时刚停生成就立刻再问,仍可能要等约半分钟,插件会排队重试。README 建议添加第二个账号以化解等待。

模型发现与可选列表

  • 启动后以及每小时向账号拉取真实可用模型(内置 / 限时福利 / agent-center 三路合并),失败时退回内置种子清单。
  • 设置卡片里可通过配置项 enabledModels 勾选出现在模型选择器中的模型;未勾选仅表示不再推荐,已选该模型的会话仍可用;不勾选等同于提供全部模型。
  • 支持视觉的模型可在对话里粘贴或拖入图片。

排查「选择器里缺某个模型」时,应优先看 CLI 的 models 输出(上游真实返回),而不是插件内手维护的种子清单。

本机用量与 CLI

  • 卡片与 dsh-codearts-connect usage 展示今日/累计请求数与输入输出 token(按模型、按账号),以及各账号的会话槽位占用。CodeArts 没有额度 API,此处统计的是本机经插件发出的请求,账本文件为 $DSH_HOME/.codearts-usage.json,按天保留 60 天;官方个人用量见 codearts.huaweicloud.com/portal/settings/personal-usage,卡片上有链接。
  • 子命令:status、models、usage、identity、doctor、logout(详见下文命令行一节)。

账号身份合并

上游登录响应不返回稳定用户标识时,插件会在登录后再请求 /snap-manager/v1/current/user 取得 user_id 作为自然键。历史重复条目可用 identity --fix 合并(先不带 --fix 为只读)。

安装与启用

官方说明见仓库 INSTALL.md。核心步骤是把构建产物(package.json、lib/、cordis.patch.yml)部署到 profile 的 node_modules/dsh-codearts-connect/,并在 profile 的 package.json、node_modules/.package-map.json、node_modules/.modules.yaml 中登记。仓库提供部署脚本,典型流程如下。

在插件源码目录构建并部署到 DSH profile(profileDir 默认为 ~/.dsh/profiles/desktop):

pnpm install && pnpm run build
node scripts/deploy.mjs [profileDir]

运行环境要求 Node ^22.19.0 || >=24.0.0(见 package.json 的 engines)。插件以当前 DSH 进程权限运行,安装前应检查源码、依赖与 MIT 许可证,并确认你信任维护者与网络回调行为。

改代码调试时可参考仓库 DEV.md(宿主 dsh-hmr、客户端卡片 dsh-client-hmr),不必每次全量重启 DSH。

典型用法

图形界面

  1. 打开 DSH 设置 → CodeArts 卡片 → 「使用华为云账号登录」。
  2. 浏览器打开授权页,登录华为云账号,自动跳回本机回调,凭证落盘。
  3. 新建对话,provider 选择 codearts,再选模型即可开始。

命令行

将 <profile> 换成你的 DSH profile 名称:

dsh plugin --profile <profile> exec dsh-codearts-connect status [--json]
dsh plugin --profile <profile> exec dsh-codearts-connect models [--json]
dsh plugin --profile <profile> exec dsh-codearts-connect usage [--json]
dsh plugin --profile <profile> exec dsh-codearts-connect identity [--fix]
dsh plugin --profile <profile> exec dsh-codearts-connect doctor
dsh plugin --profile <profile> exec dsh-codearts-connect logout
  • models:排查模型缺失的第一手段,打印上游合并后的清单。
  • usage:读本机账本,不是账号官方额度。
  • doctor:输出路径、状态与版本,不打印令牌,适合贴进 issue。
  • logout:仅清除本插件保存的凭证副本,不影响华为云账号本身。

适用场景与注意

适合谁:已在华为云 CodeArts 有个人账号、希望在 DSH 统一窗口里切换 CodeArts 模型、并需要 OAuth 登录而非长期手填密钥的开发者。

上游与参数限制(README「已知限制」):

  • 福利网关对部分模型的 max_tokens 标称与聊天端点实测不一致;插件按实测上限下发(例如免费 DeepSeek 系列 65536、GLM-5.2 实测可到 131072),未实测模型保守 65536。
  • 用量账本仅本机统计;换机器或清空 $DSH_HOME 会丢失历史账本。
  • 项目声明仅供个人学习研究,需遵守华为云及 CodeArts 服务条款;与华为、DeepSeek 无官方关联。

DSH 生态强调「一切皆插件」;SkillHub(插件目录页)是社区索引站点,与 DeepSeek / 幻方无官方从属关系。

结尾

经过上面的步骤,你可以在 DSH 里用 OAuth 登录 CodeArts、按需勾选 enabledModels、在多账号间自动轮转,并用 models / usage / doctor 做排查。详情与更新以 GitHub 为准:

羽毛球分组比赛记分
小程序二维码

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

Xiaoye