Missher12/deepseek-harness-desktop--packages-client-ui-plugin-manager ↗★ 0

@deepseek-ai/dsh-client-ui-plugin-manager

管理Web客户端插件的安装、启用与组合 适合需要通过侧边栏面板直观管理和配置DSH插件的Web端用户。

套件
@deepseek-ai/dsh-client-ui-plugin-manager
相容性
待驗證
Cordis 依賴範圍
workspace:^
版本
0.1.6-alpha.2
授權
MIT
最近更新
2026年9月22日

安裝

此插件尚未提供可驗證的 bundle,或相容性檢查未通過。請先閱讀倉庫說明。 閱讀完整 README ↗

Configuration pages

A plugin that carries its own configuration renders it on this page rather than in Settings, through three slots the page declares: plugins.item (list) for an official plugin, listed in the Official group by its label; plugins.bundle.config (keyed by the bundle's package name) for a bundle's own configuration, shown on the bundle's page between its description and its rows; and plugins.row.config (keyed by #) for one row's configuration, which gives that row a Configure control opening the row's page. The page asks every entry for two views through its owner props: view: 'summary' for the one-liner under the title, view: 'page' for the form with its own save control. Only a save writes: the page draws the title, icon, and crumb, and the entry's form drops its staged edits when the page is left. The four host-plane pages the installation ships — the shell executor, the agent loop, subagent model selection, and the DeepSeek search provider — come from ui-settings-plugins, registered while the Host serves their namespaces. A bundle's browser half registers the same way:

ctx.slots.inject('plugins.row.config', () => ctx.slots.register({
  name: 'plugins.row.config',
  key: '@acme/dsh-sidebar#sidebar',
  locale: 'acmeSidebar',
}, ({ t, view }) => view === 'summary' ? t('summary') : ))

The bundle's patch must declare the row under that id, and the registration exists while the bundle is on, so a bundle that is off shows no configure control.


Configuration slots

The page's main registration declares plugins.item, plugins.bundle.config, and plugins.row.config as its children, so the slots exist while the page does and a registrant's ctx.slots.inject waits for them. configLedgerSource projects the three ledgers into one observable — the official items in ledger order with their labels resolved in the active locale, and the bundle and row keys — cached until a ledger or the locale moves; the page binds it as useConfigLedger beside the store and never names a configurable plugin itself. Which page is open is page-local state: the cards, a bundle, an official plugin, or a row of a bundle. A registration lives with the browser half that made it. dsh-client-modules attaches a package's browser half to the Loader row whose specifier is the bare package name, so every page a bundle registers, for itself or for any of its rows, goes away when that row is switched off; a sub-plugin whose page must outlive the other rows ships as its own package.