Back to home

warmwine

dsh-ui-font

DSH老花眼插件,对眼睛不好看不了小字的朋友相当有善。

Stars
1
Language
JavaScript
Created
Aug 15, 2026
Updated
Aug 16, 2026

Introduction

dsh-ui-font

给你的 DeepSeek Harness 网页界面换字体、调字号的小工具。专为看小字费劲的人打造:界面每个角落的字都能放大,而且不用猜"这个设置管哪块"——用准星点一下就知道。

效果

安装前安装后
安装前安装后

设置界面(侧边栏 → 设置 → 字体):

设置界面

它能干什么

字体随便换

界面上两处字体(普通文字和代码)分别从你电脑里装了的字体里挑。字体列表是实时读你系统的,装了新字体刷新一下就能看到;挑了个后来又卸载的字体,列表里会标"(未安装)",不会出乱子。

字号整体放大

一个滑杆管全局,-3 到 +20 像素,拖动立即生效。聊天记录、代码块、侧边栏、设置页、各插件面板——页面上所有文字一起变大。

🎯 准星选取:点哪调哪

这是解决"我根本不知道这块界面归哪个设置管"的功能。

设置页里点「选取区域」,或者按你自己设的快捷键(见下),鼠标会变成一个红色准星。这时候把鼠标移到界面任何地方:

  • 鼠标划过哪里,哪里就亮起红框
  • 旁边小气泡告诉你:这块文字是什么类型、现在字号多大
  • 点一下,原地弹出一个悬浮条,上面有 − 和 + 两个按钮,按一下字就变一次,所见即所得
  • 调完点「完成」,或者按 ESC / 右键 / 点别处退出

点下去会发生什么,取决于那块文字的字号是怎么定义的,选取器会自动选最合适的调法:

你点的文字悬浮条显示调整范围
聊天正文、标题、行内代码、代码块"聊天正文 / 标题一 / 行内代码 / 代码块(文字类型)"同类文字全局统一变——聊天和轨迹视图里的正文是一套,改一处全都跟着
底部 LLM 用量条、用户气泡、各插件的边框标签"插件名 · 具体组件名"只动这一个组件——比如把用量条调大而气泡不动,完全可以
其他兜不到的"主界面(全局偏移)"跟全局滑杆走

比如你觉得聊天记录里的代码块字太小,但工具栏的按钮字又刚好——先点代码块加几个加号,再点工具栏单独减回去,互不影响。

每块界面单独微调

准星点过的区域会记在设置页的「按界面区域微调」列表里。这个列表其实包含了页面上所有带样式的插件,每行左边是插件名和一句话介绍(自动读自各插件自己的描述),右边是一个步进器:

[合计 +6]  [−]  ±0  [+]  [✕]

所有区域的实际缩放 = 全局偏移 + 该区域的个体偏移,两者叠加。 左边的"合计"胶囊就是最终生效的数值。举例子:全局 +6 让整个界面变大,但你不想让代码区跟着变大——找到它那行,个体调到 -6,合计就是 0,代码区保持原样,其他地方照样 +6。

快捷键自己录

设置页里有一行「UI 捕捉快捷键」,点「录制」然后按下你想用的组合键(比如 Ctrl+Alt+F)就存好了。为什么要自己设而不是给个默认值?因为浏览器和编辑器的搜索键基本都是 Ctrl+F 系,写死一个默认键太容易撞车。所以默认留空——想用就花五秒录一个,不想要就不占任何键。

注意:设置面板本身会挡住后面的界面。所以正常用法是关掉设置,再按快捷键,这时整个页面随便选。

描述从哪来

微调列表里每个插件那句话介绍,是插件自己 package.json 里写的描述(没有的话取 README 的标题)。插件升级换了描述,点「刷新」就是新的。

工作原理(给想了解的人)

这个插件不认识任何其他插件——它对"页面上有哪些插件、哪些字体"零先验知识,全部运行时自己发现:

  1. dsh 里每个界面插件的样式表都带 <style data-plugin="插件id"> 标记。遍历 document.styleSheets 按归属分组,就拿到了每个插件的字号规则
  2. 字号缩放走三条通道:官方设计令牌(--dsw-font-*,在 body 上按"全局 + 该类型个体"重定义)、各插件写死的像素值逐条覆盖、以及单条规则级覆盖(准星点中某个具体组件时)
  3. 系统字体列表和插件描述由插件的宿主半边提供两个本地接口(/api/dsh-ui-font/fonts/api/dsh-ui-font/descriptions),字体列表是直接解析字体文件读出来的,不依赖任何命令行工具
  4. 准星选取的判定:从点中的元素向上找最近的字号声明点——声明用的是设计令牌就调令牌(同类文字统一变),是写死的像素就精确到那一条 CSS 规则(只动这一个组件)。判定依据是规则原文里写的变量名,不是猜测
  5. 没有轮询、没有后台监视器。启动时扫一次(外加 1s/3s/8s 三次补扫收尾),之后只有你打开设置页或点刷新才会再扫

目录

dsh-ui-font/
├── package.json       # dsh.bundle + dsh.client 声明(platform: web)
├── cordis.patch.yml   # bundle 层插入行(ui-font)
├── lib/index.js       # 宿主半边:描述 + 字体枚举路由(webServer)
├── lib/client.js      # 浏览器半边:扫描引擎 + 令牌重写 + 设置页(settings.section)
├── images/            # README 截图(不随 npm 包分发)
└── CHANGELOG.md       # 版本变更记录

安装 / 卸载

# 安装(npm 发布后)
dsh plugin --profile web add dsh-ui-font
# 或本地开发
dsh plugin --profile web add link:<本仓库路径>

# 卸载
dsh plugin --profile web remove dsh-ui-font

安装/卸载后重启 dsh web。本插件零 bundled 依赖(宿主半边只用 Node 内置模块, 浏览器半边只依赖平台提供的 react),安装无需构建授权。

插件不捆绑字体文件;所选字体缺失时自动回退系统默认字体栈。

版本历史见 CHANGELOG.md

已知边界

  • dsh-ssh 的 xterm 网页终端用自己的内置字体,不参与缩放(准星悬停时会提示)
  • 换肤插件(qq98 之类)激活时会接管字体变量,以皮肤为准
  • 网页预览面板里 iframe 渲染的内容(比如预览一个网页)不是本页元素,准星选不到

License

MIT