dsh-llm-providers-ui:DeepSeek Harness 共享 LLM Providers 設置外殼

前言

在 DeepSeek Harness(DSH)的插件化架構下,管理多個 LLM 提供商(Provider)的設置頁面容易變得碎片化。dsh-llm-providers-ui 插件作爲宿主,統一管理 LLM Providers 的設置外殼、卡片排序和選擇器邏輯,爲其他 Provider 插件提供共享的 UI 上下文和工具集。

是什麼

該插件負責掛載 LLM Providers 設置頁面。它擁有 llm-providers 設置命名空間(唯一寫入者),並接管 Web 端 settings.section 中的 id: providers(排序 12)區域。通過它,Provider 插件可以註冊卡片,並共享排序、配額顯示和模型目錄編輯功能。

核心功能

  • 設置外殼管理:提供統一的 LLM Providers 設置頁面容器。
  • 卡片與排序:支持卡片拖拽重排、Picker 排序管理,以及保存和恢復的順序邏輯。
  • UI 組件庫:提供共享的 Provider 配額儀表盤、詳情模板、模型目錄編輯器及選擇器對話框。
  • 交互實現:提供可拖拽排序列表的實現。
  • 數據與緩存:提供 Provider 使用量讀取器、緩存管理及配額狀態判斷。

安裝與啓用

該插件是一個打包後的包,必須列出在 Profile 中。在安裝其他 Provider 插件前,請先安裝此插件:

dsh plugin --profile web add --force \
  https://github.com/NOirBRight/dsh-llm-providers-ui/releases/latest/download/dsh-llm-providers-ui-0.2.8.tgz

典型用法

Provider 插件需要通過該插件提供的接口進行註冊和集成:

  1. 註冊卡片:在 settings.provider.item 下注冊卡片,使用 Provider 的 settingsNs 作爲 Key。
  2. 註冊目錄:在 ctx.providerDirectory 中註冊 { key, role, header, usage }。
  3. 引入讀取器:如果 Provider 需要顯示使用量,從 dsh-llm-providers-ui/usage-readers 導入讀取器工廠。
  4. 引入類型與插槽:從 dsh-llm-providers-ui/client 導入目錄和插槽類型(使用 import type {} 語法)。
  5. 渲染組件:使用 dsh-llm-providers-ui/provider-ui 中的 ProviderCardHeader 和 ProviderQuotaMeter 組件渲染頭部和配額,並使用 dsh-llm-providers-ui/provider-detail 渲染詳情。

注意事項

  • 版本鎖定:宿主 @deepseek-ai/dsh-* 包未鎖定版本(peer 爲 *),僅 devDependencies 鎖定了編譯目標 0.1.5-rc.1。Cordis 版本需保持在 >=4.0.2 <5.0.0。
  • 依賴關係:在 DSH 支持掛載傳遞式 Bundle 之前,必須將此插件列在 Profile 中。
  • 導出路徑:僅導出已構建的 lib/ 入口點,嚴禁從 src 目錄導入代碼。
  • 導航圖標:導航欄上的 14px 地球圖標是一個臨時的 DOM 適配器(src/client/nav-icon.ts),通過 MutationObserver 實現。不應將其複製到 Provider 插件中,等待 DSH 開放公共圖標接口後再移除此文件。
  • 卸載行爲:卸載該插件的所有者會丟棄設置命名空間;重新加載會重新創建它,但 Provider 的 Host 服務本身不會受影響(因爲它們的 llm 路由是獨立的)。
  • 無權限限制:該插件以當前 DSH 進程權限運行,安裝前請檢查源碼與許可證。

結語

dsh-llm-providers-ui 是構建 Provider 插件時的核心基礎設施。通過提供統一的外殼、配額管理和排序邏輯,它簡化了多 Provider 環境下的設置管理複雜度。開發者應關注其導出的構建產物,遵循其消費契約以保持生態的一致性。

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

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

小夜