dsh-font-wheel:用 Ctrl + 滚轮调整 DSH 工作区字号

前言

在 DeepSeek Harness(DSH)里长时间读对话、看代码块和终端输出时,字号往往只能靠设置页或 Ctrl+= / Ctrl+- 一格一格改。若你更习惯在编辑器里「按住修饰键滚轮缩放」的手势,自带快捷键能调字号,但没有滚轮这一路。下面介绍社区插件 dsh-font-wheel:在工作区任意位置按住 Ctrl 滚动鼠标滚轮,按格增减字号,并与桌面端内置快捷键走同一套主题接口,改完会持久化。

这是什么

dsh-font-wheel 由维护者 ZX-yiyuzheluoji 发布,在 SkillHub 社区目录中归类为「趣味换装」。插件只做一件事:在 DSH 工作区(客户端 web 平台)监听 Ctrl + 滚轮,每格 1px 调整字号;text、code、terminal 三档同步变化,范围沿用 ui-theme 规格(text 10–22px,code 10–16px,terminal 10–20px)。当前 npm 包版本为 0.1.0,许可证 MIT,运行环境要求 Node >= 18;客户端为手写 CommonJS,无构建步骤、零依赖。

核心功能

手势与界面反馈

  1. 上滚放大、下滚缩小,每格 1px。
  2. 滚动时拦截 Ctrl+滚轮的默认行为,页面本身不会跟着浏览器缩放。
  3. 光标旁显示当前字号的小浮层(默认如 16px),约 1 秒后淡出;到上下限时提示「已到上限」或「已到下限」。
  4. 触控板一次手势会连发多个 wheel 事件;插件在 lib/client.js 里用 STEP_INTERVAL_MS(默认 55ms)节流,避免瞬间顶到边界。

为何走主题服务而不是改 CSS 变量

@deepseek-ai/dsh-client-ui-layout 的 presenter 会在每次 theme snapshot 时把字号写回 body,直接改 --dsh-content-font-size 会被下一次 snapshot 覆盖。插件因此调用主题服务入口,与内置快捷键一致:

ctx.get("theme").adjustFontSizes(+1)   // 同步快照 → publish → 异步持久化

只有在拿不到主题服务的宿主(例如无 UI 服务的壳、测试环境)才退回写 body 上的 CSS 变量;那种环境没有 presenter,写入不会被盖掉。有 @deepseek-ai/dsh-client-ui-theme(settings 命名空间 ui-theme)时,数值会落盘并在刷新后保留;无主题服务时仍可改大小,但不会持久化、也不会与设置 UI 同步。

宿主侧「存活」探测(可选)

字号变化发生在浏览器事件里,宿主进程默认看不到。宿主半注册了一条只存内存的路由,客户端每调一格会 ping 一次,便于无界面时确认插件在工作:

curl http://127.0.0.1:<dsh-web-port>/font-wheel/report
# {"ok":true,"value":{"px":16,"at":"2026-10-28T07:02:28.364Z"}}

不落盘;未加载宿主半时该路由返回 404。

明确不做的事

插件不注册全局快捷键(不占用 shortcuts),不替换主题、不改其他插件样式、不发起模型请求;唯一写入路径是 ui-theme 已有的字号设置。

安装与启用

官方 README 给出的安装方式如下。装完后需 重启一次桌面应用:新 bundle 会写入 profile 组合,当前会话不会热挂载(插件管理器可能报 state: "restart");重启后正常加载,之后改 lib/ 下代码通常刷新页面即可(本地 link 时)。

# 本地目录(符号链接:改 lib/ 刷新即生效)
dsh plugin --profile desktop add link:/absolute/path/to/dsh-font-wheel

# 从 GitHub 安装(pnpm 拉 tarball,不需要 git)
dsh plugin --profile desktop add github:ZX-yiyuzheluoji/dsh-font-wheel

无 CLI 时,可在 profile 的 package.json 的 dependencies 增加 "dsh-font-wheel": "link:/absolute/path/to/dsh-font-wheel",并在 dsh.profile.bundles 末尾追加 "dsh-font-wheel",然后在 profile 目录执行 pnpm install。仓库附带脚本会先备份 profile 的 package.json:

node tools/install-profile.mjs --dry     # 预览将修改的内容
node tools/install-profile.mjs           # 修改 package.json 并 pnpm install
node tools/install-profile.mjs --file    # 复制目录而非 link

典型用法

  1. 安装并完成一次应用重启。
  2. 打开 DSH 工作区,在任意可聚焦区域 按住 Ctrl,向上或向下滚动鼠标滚轮(或触控板等价手势)。
  3. 观察光标旁浮层显示的 px 值;需要与快捷键对照时,可用同一 session 试 Ctrl+= / Ctrl+-,二者应保持一致且不互相打架。
  4. 若需远程确认是否在调字号,在已知 <dsh-web-port> 的前提下执行上文 curl .../font-wheel/report。

开发者在仓库根目录可跑冒烟测试(无需浏览器与完整安装):

npm test        # node test/client.smoke.mjs && node test/host.smoke.mjs

适用场景与注意

适合:习惯 Ctrl+滚轮调字号的 DSH 桌面/Web 用户;希望在对话、代码、终端三档联动缩放且希望设置持久化的场景。README 写明在 Windows 桌面版 DSH 上验证过,Web 构建使用同一客户端 bundle 约定。

注意:

  • 插件以当前 DSH 进程权限运行;安装前请自行查看 GitHub 源码 与 MIT 许可证,确认符合你的安全与合规要求。
  • 社区目录 SkillHub 插件页 为独立生态站点,与 DeepSeek / 幻方无官方从属关系,并非官方应用商店。
  • 微调行为可编辑 lib/client.js 顶部常量(如 HUD_IDLE_MS、HUD_OFFSET_Y);若只想在对话区生效或只改 prose 档,README 说明了改监听目标或把 adjustFontSizes 换成 setFontSize("text", next) 等方向,需自行 clamp 范围。

结尾

dsh-font-wheel 把「Ctrl + 滚轮」接到 DSH 与内置字号快捷键相同的主题链路上,一格 1px、三档联动、能持久化,并带节流与边界提示。进一步了解与安装:

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

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

Xiaoye