dsh-model-hub
Verified@klarkxy/dsh-model-hub Β· v0.1.0 Β· SEE LICENSE IN LICENSE Β· Web UI
View and edit model fields exposed by DSH plugin settings on one page.
Install
dsh plugin add @klarkxy/dsh-model-hub Confirm the layer applied with dsh --profile default --dump-config β see the install guide.
Source
Published to npm without a public repository. Inspect the package contents before installing.
Tags
Readme
@klarkxy/dsh-model-hub
Cross-plugin model settings hub for DeepSeek Harness. Open Plugins β Model Hub to search by plugin, purpose or current model and edit models from one compact list. Changes save immediately through the owning plugin. Open plugin pages automatically reload saved model changes. Unsaved drafts stay in place with a conflict notice; reload explicitly discards them. Reconnecting reloads the current settings, and subscription failures expose manual refresh.
The hub includes Current Title, Git Commit, Safe Auto and ChatGPT when their matching updated plugins are loaded. ChatGPT uses its separate Codex model catalog and default.
The Subagent Cast tab manages the host's subagent model allowlist: the enable
switch and adding, replacing or removing models all write straight into the
native subagent-model-selection-settings settings with revision conflict
protection, so the host constraint keeps applying. Each model can also
carry a free-text "task tendency"; tendencies live in
<profile>/data/model-hub/cast.json and are injected into the system prompt as
read-only advisory hints β the main agent consults them and still makes the final
model choice when delegating. With this tab in place, the field matrix no longer
shows a duplicate editor for these native settings.
Add a model before enabling the cast; removing its last model also disables it. The allowlist constrains explicit subagent model choices; omitting a model still inherits the parent session. Tendencies have their own persisted revision and conflict checks across open pages. Existing v1 files migrate on the first successful save. A damaged or unreadable tendency file stays untouched and shows a recovery error; native cast controls remain available.
Third-party volatile model-route fields are also discovered through native
settings.describe(). Plugins storing settings elsewhere can contribute fields
using @klarkxy/dsh-plugin-kit/model-settings; the hub does not inspect private
storage. Discovery handles deep schemas, arrays, dictionaries and intersections.
Refresh reloads both settings and model catalogs. Failed sources remain visible, and a rejected save requires refresh and a fresh selection. Revision checks and owner instance IDs protect against edits from stale pages. Other settings remain with their owner, including sibling values inside native model objects. A completed save is acknowledged separately from refreshing the page. If that refresh fails, the page says the change was saved and offers refresh without repeating the write.
The diagnostic report separately answers:
- Which installed plugins expose model-route fields in their
settings.describe()projection (detected via@klarkxy/dsh-model-route, marker or bare shape)? - Do custom schema markers survive the host projection? The hub's own Config
carries two self-test fields β one marked with the custom
x-model-routekey, one with schemastery's renderer-role channel.
The report is logged and written to <profile>/data/model-hub/probe-report.json,
and refreshed on every settings/document-updated event.
Existing native array items appear as separate rows. Empty collections show an informational row; add an item in the owning plugin first. Restoring a native field returns to the plugin's inherited/default settings; clearing a direct array route preserves the element. Owner fields explain their own default mode.
Both self-test fields remain in the diagnostic report and are hidden from the model selection page. Per-day usage metering is not included.
Install
Requires DSH 0.2.0-rc.2 or later. Restart the profile, then open Plugins β Model Hub:
dsh plugin --profile web add @klarkxy/dsh-model-hub
License
SEE LICENSE IN LICENSE