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 环境下的设置管理复杂度。开发者应关注其导出的构建产物,遵循其消费契约以保持生态的一致性。

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

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

小夜