前言¶
在 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 插件需要通过该插件提供的接口进行注册和集成:
- 注册卡片:在
settings.provider.item下注册卡片,使用 Provider 的settingsNs作为 Key。 - 注册目录:在
ctx.providerDirectory中注册{ key, role, header, usage }。 - 引入读取器:如果 Provider 需要显示使用量,从
dsh-llm-providers-ui/usage-readers导入读取器工厂。 - 引入类型与插槽:从
dsh-llm-providers-ui/client导入目录和插槽类型(使用import type {}语法)。 - 渲染组件:使用
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 环境下的设置管理复杂度。开发者应关注其导出的构建产物,遵循其消费契约以保持生态的一致性。