description: "Built-in plugins settings section for the dsh web client, and the official plugin configuration pages that register into the Plugins page."
English | 中文
Use the Built-in plugins settings section to inspect the plugins this deployment ships, and the Official group of the sidebar's Plugins page to configure the host-plane plugins that expose settings. Each configuration page shows which values the user overrode, lets them reset those to deployment defaults, keeps edits local until save, and drops them when the page is left. If the configuration changed after the page loaded, the save is rejected instead of overwriting the newer values.
Open Built-in plugins in Settings for the read-only inventory; ui-settings-plugin-inventory contributes it as the section's one tab, shown as the page itself. To configure a host-plane plugin, select Plugins in the sidebar: the Official group lists one card per plugin this deployment composes, in this order — the shell executor (shell), the agent loop's tool-call parallelism (agent-loop), Subagent delegation limits and model selection (subagent and subagent-model-selection), and the DeepSeek search provider (web-search-deepseek) — and a card opens the plugin's page with its form.
Each page registers into the Plugins page's plugins.item slot while the Host serves its settings namespace, so a deployment that does not compose the owning plugin shows no trace of it, and a namespace the Host starts or stops serving adds or withdraws its page on the next settings-document commit or reconnect. The card's one-liner and the page's form are one entry rendered in the two views the Plugins page asks for.
A page stages what the user types and writes it only when they save. Each control renders staged text, so what is on screen is exactly what a save would store. Leaving the page drops the drafts; there is no discard control. A failed save keeps the page as it is, reports the failure, and retains the drafts for correction. A reset stages the composed default rather than writing immediately, and a draft the field does not accept blocks the save instead of being dropped. The Host is the only authority on whether a value was accepted.
The Subagent card groups delegation limits and model selection on one page with one save button. Maximum recursion depth and Subagent parallelism limit appear side by side, stacking on narrow screens. Information buttons reveal a two-row depth example and the shared count rule; validation errors remain visible below the input. Depth retains explicit tool overrides. Capacity counts live continuable descendants across all recursion levels, including waiting children and excluding the root, one-shot runs, and external providers. Saving applies to later delegation attempts; lowering capacity does not stop existing children.
The model selection section stages its permission switch and exact model checkboxes together. Enabling requires at least one selected adapter route. Saving submits enabled and allowedModels in one mutation fenced by the revision where that draft began; a newer Host revision marks the draft failed instead of restoring a revoked route. Disabling retains the selected routes for later reuse. Available models are grouped by provider, while saved routes absent from the current catalog appear last and remain removable. Adapter names and model descriptions remain live directory metadata and are not stored, and the card refreshes them after adapter changes, settings commits, and reconnects.
Saving the Subagent card validates both sections and writes their drafts through their existing namespaces. These writes are independent: if one fails, the card stays open with that draft retained, and retry writes only the remaining draft. The page appears when either namespace is served and shows only the available sections.
A key control starts blank, reports only whether one is configured, and writes through the credentials domain rather than the settings section; a blank draft writes nothing and keeps the stored key.
These pages cover the Plugins page, the settings base, the inventory tab, and the durable seams behind the forms.
plugins.item, plugins.bundle.config, and plugins.row.config slots host configuration pages.settings.section and the settings scope.None, as the package is a browser-side settings surface that registers no model surface.
None; this package neither assembles nor sends a provider request.
These limits define which plugins get a page and how fresh the group is; they are current package constraints.
agent.cordis.yml and cannot register a settings namespace at all, so this package registers nothing for it. Editing those values remains the preset editor's job.dsh.client package built in the client module system's lazy-CJS factory format, and the clientBundle preset that emits it lives in ../../../packages/client/tsdown.client.ts rather than a published package, so a plugin outside this repository has to reproduce that build itself.shell namespace because a host composes exactly one of them, so the served schema differs by platform (PowerShell adds pwshPath) even though the page edits the same two fields on both.Runtime invariant: No companion is published. This is a browser-side settings surface whose node half owns no event stream or mutable runtime data; the layering and write refusals are Host contracts covered by the owning plugins and the api-proxy.