dsh-my-newhome:给 DSH 桌面端换一套首屏

前言

DSH 桌面端要换首屏,问题不在画不画得出来,而在入口受限制:dsh plugin --profile desktop add 会被拒绝,因为桌面端的 profile 由 Electron 独占管理。想改配色、背景图、工作区卡片和常用入口,通常得去动 DSH 本体,装卸都不方便。

dsh-my-newhome 把这个需求做成一个插件:不动 DSH 本体,装上就换首屏,卸载时删掉挂载点再重启即可。下面介绍它的功能、装法和注意事项。

这是什么

dsh-my-newhome 是 DeepSeek Harness 桌面端的自定义主页插件,维护者是 Semonxue,许可证为 MIT,当前 package.json 里版本是 0.2.0。它解决的问题是:在不改 DSH 本体的前提下,替换首屏的配色、背景、Logo、工作区卡片、常用入口,并提供一个 API 用量组件。

插件的展示元数据按官方插件显示约定放在 locale/en.json、locale/zh.json 和 icon.svg,在 Plugins 页显示为「Custom homepage / 自定义主页」。

核心功能

首屏分主题层和卡片层两块。主题层包括配色 token、固定背景层、hero 和侧栏品牌位的自定义 Logo。卡片层在输入框上方,宽度跟随输入框实测宽度,窗口变化时也跟着走。

功能 位置 / 说明
配色 / 背景图 / 自定义 Logo 主题 token、固定背景层、hero + 侧栏品牌位
最近工作区(3×2) 输入框上方,半衰期加权活跃度排序,可切最近使用 / 会话数
常用入口(3×2) 同上,自动抓本机 Chrome 常访问站点 + 自定义 JSON 入口
自定义组件(最多 4 个) 同上,标题行带 ↻,点卡片本身也会刷新整行
设置面板 卡片下方 ⚙ 自定义主页,所有选项都在里面

卡片只在首页(新会话)出现,打开历史对话时自动隐藏,避免和既有界面抢位置。

安装与启用

桌面端 profile 由 Electron 独占管理,命令行安装会被拒绝。README 给了两种装法。

先做插件管理器,这是推荐路径:设置 → 插件 → 选本地目录。

手动挂载则要改三处文件。第一步,在 ~/.dsh/profiles/desktop/package.json 的 dependencies 里加一条本地 link:

{
  "dependencies": {
    "dsh-my-newhome": "link:<仓库路径>"
  }
}

第二步,在 dsh.profile.bundles 末尾追加插件名。第三步,建软链:

ln -sfn <仓库路径> ~/.dsh/profiles/desktop/node_modules/dsh-my-newhome

经过上面的步骤,装完需要重启 DeepSeek Harness 才会生效。卸载时把这三处删掉,再重启。

典型用法与配置

插件数据落在 $DSH_HOME/dsh-my-newhome/ 目录下:

$DSH_HOME/dsh-my-newhome/
  config.json          # 配色、透明度、排序策略、入口与组件列表
  background.<ext>     # 背景原图
  logo.<ext>           # 自定义 Logo

图片不走默认资源方式,而走插件自己的路由 /dsh-my-newhome/asset,带 ETag,只监听回环 + 同源校验,也不写进 cordis.patch.yml。

常用入口支持自动抓本机 Chrome 常访问站点,再加自定义 JSON 入口。API 用量组件默认 5 分钟轮询(1–60 可调),数据 60 秒缓存;取数失败时显示 — 和原因,不影响其他卡片。

供应商 显示 来源
DeepSeek 余额 官方余额接口
MiniMax 本周剩余 %,本周不限显示 ∞ coding-plan 配额接口
Cline Pass 最满窗口的已用 %(≥80% 转黄) 订阅额度接口,5 小时 / 周 / 月三个窗口,悬停看全部
其它 本机 token 累计 session_projcache 投影统计

key 从 $DSH_HOME/.credentials.yaml 读取,永远不会下发到浏览器。要加供应商,在 lib/index.js 的 PROVIDER_DEFS 加一条,再在 lib/client.js 的 WIDGET_PROVIDERS 加下拉项即可。

适用场景与注意

适合想在 DSH 桌面端自定义首屏、又不想改 DSH 本体的用户。插件展示元数据放在 locale/ 和 icon.svg,第三方来源下载前应先检查源码与许可证(MIT)。插件以当前 dsh 进程权限运行,安装前同样应核对源码。

有几点边界需要写清楚。Safari 历史受 macOS TCC 保护,需要授予「完全磁盘访问」,Chrome 可直接读。侧栏 Logo 槽位需要 0.2.1+ 桌面运行时,旧版只替换首屏 Logo。DSH 内部槽位没有版本兼容承诺,接口缺失时静默降级。运行环境要求 Node ^22.19.0 || >=24.0.0,dsh >=0.2.1-rc.1 <0.3.0-0。

开发侧,node test/host.test.mjs 跑宿主半边 55 条断言;preview.html 是静态预览页,可在装进桌面端前先看效果。

结尾

dsh-my-newhome 的价值在于把首屏定制收敛到一个可装卸的插件里,配置集中在 config.json,图片走插件自有路由,卸载只清三处挂载。目录页在 https://www.skillhub.cn/plugins/Semonxue/dsh-my-newhome ,源码在 https://github.com/Semonxue/dsh-my-newhome 。

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

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

小夜