dsh-desktop-settings:为 DSH 桌面版补齐设置页缺失的四块能力

前言

DeepSeek Harness(DSH)官方桌面版的设置页已经覆盖账号、模型、插件、子智能体等常见项,但在插件市场里浏览仓库、拉取 GitHub 资源、或余额不足要充值时,仍有几处没有统一入口:英文 README 不便快速判断插件用途、直连 GitHub 容易慢或失败、市场列表与翻译缓存无法从界面清理、充值页需要自行查找。社区插件 dsh-desktop-settings(维护者 VCPr0j3k7,分类:客户端)以独立 bundle 装入 profile,不修改官方代码,专门补齐上述四块,并附带连通性自测与侧边栏充值入口。

下面介绍它是什么、能做什么,以及如何安装与验证。

这是什么

dsh-desktop-settings 是为 DSH 官方桌面版准备的设置补充插件:在宿主侧注册 HTTP API,在客户端侧通过 @deepseek-ai/dsh-client-ui-slots 挂载「桌面设置补充」分区与「API 充值」入口。配置写入 <DSH_HOME>/dsh-extras.json,与插件市场相关模块共用同一份文件。

它刻意不提供「应用名称」「DSH 数据目录(DSH_HOME)」「从其他 DSH 目录沿用配置」——官方桌面版不隔离 ~/.dsh,这三节在 README 中说明没有存在前提。

环境要求

项 要求
Node.js ^22.19.0 \|\| >=24
DeepSeek Harness 官方桌面版(宿主依赖其 process.argv 布局与 profile 结构)

宿主半边依赖 ctx.webServer;客户端半边依赖官方客户端模块加载器与 UI 槽位。

核心功能

README 翻译(DeepL)

  • 开关默认开启。仅对「基本不含中文」的文本调用 DeepL:CJK 字符少于 30 个且占比低于 8% 时才请求,中文 README 不消耗配额。
  • 关键词提取在本地完成,与翻译开关无关,离线可用。
  • 翻译结果按仓库磁盘缓存,重复打开不重复计费。
  • 设置页可执行连通性自测:POST /settings/test-translation 翻译固定样句;456 表示配额用尽,403 表示密钥无效或 Free / Pro 端点选错。
  • DeepL Free 密钥以 :fx 结尾,须使用 api-free.deepl.com;认证头为 Authorization: DeepL-Auth-Key <key>。

GitHub 加速代理

  • 默认关闭,代理地址留空;插件不预置任何代理,关闭时与未安装该能力时行为一致。
  • 须同时打开开关并填写地址;只开开关不填地址时静默回落官方地址。
  • 支持 http/https,对未写协议、多余斜杠、子路径等做归一化;将 api.github.com、raw.githubusercontent.com 等上游映射到自建反向代理的路径前缀(如 /api、/raw 等),令牌与请求方法原样透传。
  • 302 由插件手动跟随(最多 6 跳),避免 fetch 自动跟到直连 GitHub。
  • 连通性自测:POST /settings/test-github-proxy 探针根路径与一条真实 raw 请求,两者都须通过。
  • 可选 githubToken:留空为匿名 API 额度;填入个人访问令牌可提高 API 限额。令牌不写入日志、不随插件分发。

清理缓存

POST /market/clear 会删除:

  • <DSH_HOME>/plugin-data/market-cache.json(市场列表缓存)
  • <DSH_HOME>/plugin-data/market-downloads(下载残留)
  • <DSH_HOME>/plugin-data/translate-cache/(翻译缓存)

单项删除失败会被跳过,不会导致整次操作失败。

API 充值

  • GET /recharge/status 返回充值页、用量页地址、API Key 来源与数据目录;只探测密钥是否存在(环境变量 DEEPSEEK_API_KEY 或 <DSH_HOME>/.credentials.yaml),不回传密钥本体。
  • POST /recharge/open 用系统浏览器打开 https://platform.deepseek.com/top_up(仅允许 http/https)。
  • 侧边栏「API 充值」图标点击后打开浏览器,主面板切到充值页。

配置文件

设置统一写在 <DSH_HOME>/dsh-extras.json。主要字段(缺失项回落默认值,未知字段原样保留):

字段 默认值 说明
appName "DeepSeek Harness" 显示名
githubProxy.enabled false 是否启用 GitHub 代理
githubProxy.baseUrl "" 代理基址
githubToken "" 可选 GitHub API 令牌
translate.enabled true 是否启用 README 翻译
translate.endpoint https://api-free.deepl.com/v2/translate DeepL 端点
translate.apiKey "" DeepL API Key
translate.targetLang "ZH" 目标语言(DeepL 大写代码)
translate.characterCount 0 本地累计已译字符数
translate.maxCharacters 4000 单个 README 最多翻译字符数

读取不做缓存,改文件后下次请求即生效。首次运行时若文件不存在,会尝试从 %APPDATA% 下旧桌面配置迁移 translate 与 githubProxy。

安装与启用

用官方桌面版随包的 pnpm 装进目标 profile(路径按本机替换):

# 用官方桌面版随包的 pnpm 装进 profile
pnpm add "file:<插件目录绝对路径>"
# 或者直接从 GitHub 装
pnpm add "github:VCPr0j3k7/dsh-desktop-settings"

Windows 示例:

PNPM="D:/DeepSeek Harness/resources/runtime/pnpm/bin/pnpm.cjs"
NODE="D:/DeepSeek Harness/resources/runtime/primary-runtime/dependencies/node/bin/node.exe"
PROFILE="C:/Users/<用户名>/.dsh/profiles/desktop"

cd "$PROFILE"
"$NODE" "$PNPM" add "file:C:/path/to/dsh-desktop-settings"

关键步骤: pnpm add 只会写入 dependencies。还必须在 profile 的 package.json 里把包名加入 dsh.profile.bundles,否则插件不会加载,且过程无报错、界面也无提示:

{
  "dsh": {
    "profile": {
      "bundles": [
        "dsh-desktop-settings"
      ]
    }
  }
}

官方 CLI 的 dsh plugin add 会自动登记 bundles;手动 pnpm 时需自行补齐。装完后必须重启 DeepSeek Harness(宿主只在启动时装配插件树)。

验证是否生效:

  1. 重启后,设置页出现「桌面设置补充」,侧边栏出现「API 充值」;
  2. 开发者工具控制台应出现 [dsh-desktop-settings] client factory 已执行 与 [dsh-desktop-settings] 宿主基址 = …。仅有第一行而无第二行,表示客户端未连上宿主。

卸载:在 profile 目录执行 pnpm remove dsh-desktop-settings,并从 dsh.profile.bundles 删除对应条目后重启。临时停用只需从 bundles 移除条目并重启。

典型用法

  1. 配置 DeepL 并自测:在「桌面设置补充」中填写 translate.apiKey 与端点(Free 用 api-free.deepl.com),保存后使用界面上的翻译连通性测试(对应 API POST /settings/test-translation)。
  2. 启用自建 GitHub 反向代理:填写 githubProxy.baseUrl,打开 githubProxy.enabled,运行 GitHub 代理自测(POST /settings/test-github-proxy)。需要更高 API 限额时再填 githubToken。
  3. 市场列表或 README 翻译异常:在设置中使用清理缓存(POST /market/clear),再刷新插件市场。
  4. 余额不足:点击侧边栏「API 充值」,或在充值分区打开 DeepSeek 开放平台充值页。

宿主 API 前缀为 /dsh-desktop-settings/api(如 GET /config、POST /config 深合并写入)。客户端首次请求会依次尝试相对路径与 http://dsh.internal,以 GET /info 返回的 data.plugin 是否为本插件 id 判定可用基址。

适用场景与注意

适合谁: 日常使用 DSH 官方桌面版、经常在插件市场看英文 README、需要从 GitHub 拉插件或资源、希望在一处管理 DeepL 与代理并清理市场缓存的开发者。

权限与安全: 插件在当前 DSH 进程权限下运行,可读写 <DSH_HOME> 下配置与缓存、代发 DeepL 与 GitHub 请求。安装前应阅读源码与 MIT 许可证,自行保管 DeepL 与 GitHub 令牌;代理地址须为本人可控服务,插件不会把流量静默导向第三方预设节点。

生态说明: DSH 采用「一切皆插件」思路;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。本插件为社区维护的客户端类 bundle,星标与版本以仓库与目录页为准。

已知架构限制: 进度通知采用 GET /events?since= 轮询而非 SSE;/settings/inspect-homes 与 /settings/import-from 在桌面版场景下按设计返回「不适用」。

结尾

dsh-desktop-settings 把桌面版设置里缺的四项——DeepL README 翻译、自建 GitHub 代理、市场/翻译缓存清理、开放平台充值入口——收进同一套 UI 与 dsh-extras.json,并以 bundle 方式挂载,不动官方树。若你已在用桌面 profile,按 README 用 pnpm 安装、登记 bundles 并重启即可验证。

  • 目录页:https://www.skillhub.cn/plugins/VCPr0j3k7/dsh-desktop-settings
  • GitHub:https://github.com/VCPr0j3k7/dsh-desktop-settings
羽毛球分组比赛记分
小程序二维码

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

Xiaoye