前言¶
DeepSeek Harness(DSH)的 Web 界面默认字体来自系统与主题,想换 UI 或编辑器里的等宽字体,通常要改 CSS、改用户样式,或依赖浏览器/OS 全局设置,改完也不一定能跟着 DSH 会话持久化。维护者 abluefan 的 dsh-font-picker 把这件事收进「设置 → General」:枚举本机已装字体、选中即套用、写入 $DSH_HOME/font-picker.json,需要时还可重新枚举,不必为装新字体专门重启整套环境。插件在社区目录中归类为「趣味换装」。
这是什么¶
dsh-font-picker 是 DSH 的 Web 侧插件(engines.dsh 要求 DSH ≥ 0.2.1,package 中写明 >=0.2.1-rc.2)。它在 General 设置页增加字体选择(README 写明 UI 字体、代码字体、终端字体),面向在本机 DSH 里长期写提示词、看代码块的用户。当前 GitHub 星标为 0;源码与说明见 GitHub 仓库,目录页:skillhub.cn/plugins/abluefan/dsh-font-picker。
核心功能¶
枚举与排序¶
在 Windows 上读取注册表 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts 与 C:\Windows\Fonts,通过 reg query 拉字体列表,不引入第三方依赖。列表按字体文件 birthtime(安装时间)从新到旧排序。
即时套用与持久化¶
选中的字体立刻作用于界面;选择保存在:
$DSH_HOME/font-picker.json
首屏会在 index.html 注入当前选择的 <style> 与 window.__DSH_FONT_PICKER__。完整字体清单不注入 HTML(体量过大),改由同源 HTTP API 按需拉取。
重新枚举¶
安装新字体后,可在界面触发刷新,无需重启 DSH 即可更新列表(与下方生命周期说明配合使用)。
HTTP API¶
前端通过同源 fetch 调用:
| 方法 | 路径 | 作用 |
|---|---|---|
| GET | /font-picker/api/fonts?q=&limit= |
字体清单(过滤 + 分页,默认 80,上限 300) |
| GET | /font-picker/api/state |
当前选择 |
| POST | /font-picker/api/set |
写入选择 |
| POST | /font-picker/api/refresh |
重新枚举 |
生命周期与 Chromium 节拍¶
字体枚举挂在 tapIndex:每次页面加载(新开窗口或 F5)检查 TTL(30 秒),过期则重新枚举。这与 Chromium 进程级缓存字体枚举的行为一致——重开窗口即触发重新枚举,与「装完字体后重开窗口」的节奏对齐。
安装与启用¶
环境要求:DSH ≥ 0.2.1;插件当前平台说明为 Windows。
通过插件市场(推荐)¶
在 awesome-dsh-plugin 目录中查找本插件,或在 DSH 插件 → 发现 里搜索 dsh-font-picker 并安装。社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
手动安装¶
任选一种方式,不要两种同时用。
A. 复制目录 + 手写 insert(适合本地开发)
- 将插件目录复制到
$DSH_HOME/profiles/web/node_modules/dsh-font-picker/。 - 在
$DSH_HOME/profiles/web/cordis.patch.yml增加:
- insert:
- id: font-picker
name: 'dsh-font-picker'
- 重启 DSH,或让 Loader 重载配置。
B. npm 包已发布时使用 dsh plugin add
dsh plugin --profile web add dsh-font-picker
使用 B 后,包名会进入 dsh.profile.bundles,由包内自带的 cordis.patch.yml 注册;不要再做 A 的第 2 步,否则同一 id 会被插入两次,DSH 启动会失败。
典型用法¶
- 按上一节完成安装并启动/重载 Web profile。
- 打开 DSH 设置 → General,在插件增加的项中选择 UI 字体、代码字体(及 README 中的 终端字体)。
- 界面应立即切换;若需浏览长列表,由
/font-picker/api/fonts分页加载(默认limit=80)。 - 本机新装字体后,使用设置中的刷新/重新枚举(对应
POST /font-picker/api/refresh),或在新窗口/F5 后依赖tapIndex的 TTL 逻辑更新列表。
适用场景与注意¶
- 适合:在 Windows 上跑 DSH Web 界面、希望 UI 与代码区字体可配置且可持久化的开发者。
- 不适合:非 Windows 环境——README 仅声明 Windows 平台支持。
- 安全与信任:插件以当前 DSH 进程权限读注册表与字体目录;安装前请阅读 源码 与 MIT 许可证(见
package.json),确认符合你的策略。 - 版本:npm 包
dsh-font-picker在资料中为 0.2.0;说明中提及 0.2.1 为 DSH 迁移版,Cordis 插槽未变。
结尾¶
dsh-font-picker 把「系统字体 → DSH 界面」收成设置页里的几步操作:枚举、即时套用、JSON 持久化,并用 API 与 tapIndex TTL 控制清单体积与刷新节奏。需要安装或源码时,见 目录页 与 GitHub。