前言¶
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
安装完成后,可在 设置 -> 插件 中找到该插件进行管理。
使用方法¶
- 打开 设置 -> 终端。
- 字体设置:
* 留空:系统会按顺序尝试以下推荐字体,只要机器上安装了其中任意一款,图标即可正常显示:CaskaydiaCove Nerd Font Mono、JetBrainsMono Nerd Font Mono、CaskaydiaMono Nerd Font Mono、Hack Nerd Font Mono、MesloLGS NF。
* 指定字体:输入框支持下拉列表,可直接选择已安装的字体名称。若输入内容包含逗号,则按完整的 CSS 字体列表解析。 - 字号调整:使用界面上的
-或+按钮调整字号。选择“自动”表示沿用终端内置字号。调整字号后,终端会自动重新适配列宽。 - 实时预览:设置面板提供实时字形预览功能,可确认 Powerline 分隔符与图标是否正常显示。
工作原理¶
该插件通过以下机制介入 DSH 的终端渲染流程:
- 注入配置:插件加载时,会拦截
@deepseek-ai/dsh-client-ui-sidebar-terminal模块的加载过程,利用 React 的useRef捕获 xterm 实例,并修改其fontFamily和fontSize选项。 - 尺寸同步:针对字号变更,插件会重放终端的
ResizeObserver回调逻辑,确保 xterm 网格与 PTY(伪终端)的列宽同步,避免显示错位。 - 兜底处理:对于插件加载前已经打开的终端,插件会通过 React Fiber 结构找到已存在的 xterm 实例,照搬其
fitScreen逻辑进行同步。 - 持久化:设置保存在浏览器的
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 仓库