DeepSeek Harness 插件:dsh-terminal-font

前言

DeepSeek Harness(DSH)的侧边栏终端是开发者调试智能体、查看日志和执行命令的核心界面。默认情况下,终端初始化时使用的字体栈(例如 Windows 上的 Consolas)不支持 Nerd Font 的私用区字形,导致 oh-my-posh、Powerline 或其他 Nerd Font 图标显示为方块。

dsh-terminal-font 插件通过在设置界面提供字体与字号配置,允许用户直接修正终端渲染问题,而无需修改 DSH 的内部代码。

插件定位

这是一个由 HTROY 维护的 DeepSeek Harness 插件,旨在解决 Web 终端中 Nerd Font 图标显示异常的问题。

  • 类型:Web UI / 终端
  • 许可证:MIT
  • 核心价值:在 DSH 设置中指定字体,使 Powerline 图标和符号正确渲染。

安装与启用

安装过程依赖 DSH 的 profile 管理能力(桌面版或 dsh web)。

方式一:设置界面安装
1. 打开 设置。
2. 进入 插件 页面。
3. 点击 添加插件。
4. 在输入框中填入:github:HTROY/dsh-terminal-font。
5. 确认安装,插件会立即生效。

方式二:命令行安装
在终端中执行以下命令:

dsh plugin add github:HTROY/dsh-terminal-font --profile desktop

方式三:本地源码安装

git clone https://github.com/HTROY/dsh-terminal-font.git
dsh plugin add /absolute/path/to/dsh-terminal-font --profile desktop

安装完成后,可在 设置 -> 插件 中找到该插件进行管理。

使用方法

  1. 打开 设置 -> 终端。
  2. 字体设置:
    * 留空:系统会按顺序尝试以下推荐字体,只要机器上安装了其中任意一款,图标即可正常显示:CaskaydiaCove Nerd Font Mono、JetBrainsMono Nerd Font Mono、CaskaydiaMono Nerd Font Mono、Hack Nerd Font Mono、MesloLGS NF。
    * 指定字体:输入框支持下拉列表,可直接选择已安装的字体名称。若输入内容包含逗号,则按完整的 CSS 字体列表解析。
  3. 字号调整:使用界面上的 - 或 + 按钮调整字号。选择“自动”表示沿用终端内置字号。调整字号后,终端会自动重新适配列宽。
  4. 实时预览:设置面板提供实时字形预览功能,可确认 Powerline 分隔符与图标是否正常显示。

工作原理

该插件通过以下机制介入 DSH 的终端渲染流程:

  1. 注入配置:插件加载时,会拦截 @deepseek-ai/dsh-client-ui-sidebar-terminal 模块的加载过程,利用 React 的 useRef 捕获 xterm 实例,并修改其 fontFamily 和 fontSize 选项。
  2. 尺寸同步:针对字号变更,插件会重放终端的 ResizeObserver 回调逻辑,确保 xterm 网格与 PTY(伪终端)的列宽同步,避免显示错位。
  3. 兜底处理:对于插件加载前已经打开的终端,插件会通过 React Fiber 结构找到已存在的 xterm 实例,照搬其 fitScreen 逻辑进行同步。
  4. 持久化:设置保存在浏览器的 localStorage(键名为 dsh-terminal-font.settings.v1),属于本地偏好配置。

限制与注意

  • 依赖内部实现:插件依赖 @deepseek-ai/dsh-client-ui-sidebar-terminal 的内部接缝(如 chunk 加载方式、useRef 用法、ResizeObserver 回调语义)。若 DSH 内部实现升级导致这些细节变化,插件可能失效。
  • 本地字体依赖:字体文件必须安装在使用浏览器的机器上。插件本身不打包字体文件,也不支持远程加载。
  • 作用范围:仅影响 Web 终端的渲染,不影响 DSH 的 Shell 工具卡片(bash/pwsh)输出。
  • Host 端行为:插件在 Host 侧仅为占位,不注册服务、不联网、不读写本地文件。

总结

dsh-terminal-font 提供了一种轻量级的方式来修复侧边栏终端的字体显示问题。它通过简单的配置解决了 oh-my-posh 图标显示为方块的问题,并支持实时预览与字号调整。

更多细节与源码可参考:GitHub 仓库

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

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

小夜