前言¶
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 倉庫