Plugin directory / UI & Skins / ex-setting
ex-setting
Unverified omdsh-dev
What it does
A settings extension plugin for DSH.
Unverified — not yet verified
A settings extension plugin for DSH. Not yet verified — install and test it yourself.
“Unverified” means our automated CI has not yet installed this plugin. Feature descriptions and version compatibility are the author’s claims. This is not a security audit and not an endorsement of third-party code.
README
@deepseek-ai/dsh-ex-setting
English | 中文
The automatic DSH Web settings bundle. It combines the host-side configuration crawler with its browser settings navigation in one external package: the host enumerates registered settings namespaces and schema-bearing composition rows, while the client projects them into first-level settings sections and editors.
Repository shape
package.json # host/client package and dsh.bundle/dshClient manifests
cordis.patch.yml # profile layer that mounts the crawler
src/index.ts # host crawler plugin (service provide + Fabric handler binding)
src/routes.ts # crawler-owned webserver composition route
src/nav-scroll.ts # browser bundle rewrite contract (serveBrowserTransform)
src/invariant.ts # crawler invariant companion
src/client/ # browser settings page (store, section, crawler wire)
lib/ # generated host/client artifacts
docs/ # detailed host and client protocol references
tests/host/ # crawler, route, invariant, loader, and Fabric composition tests
tests/client/ # browser store and section tests
patches/ # host patch contract (empty: zero out-of-package changes)
scripts/ # verify:self-contained, host patch extraction/applier
.agents/skills/ # dsh-plugin-* contributor workflow
The two runtime faces share one package identity so Git/profile installation has one root artifact. The browser face is exported as @deepseek-ai/dsh-ex-setting/client and is selected by the package's dshClient manifest.
Bundle behavior
Installing the bundle adds the web-config-crawler row. That is the deployment-level decision to expose all registered settings namespaces and schema-carrying composition rows through the Web configuration plane. A profile can disable it:
- id: web-config-crawler
disabled: true
The crawler redacts secrets, applies path-addressed edits with schema resolution, persists complete rows into the personal overlay, and removes rows to restore lower bundle layers. The browser page keeps settings namespaces and composition rows source-distinct and renders schema fields, secret controls, reset, revision conflicts, restart notices, and live invalidation refreshes.
External zero-change design
This bundle ships with zero out-of-package host changes. Three mechanisms make that possible:
- Fabric exposure widening — the crawler is Fabric-required: its
cordis.patch.ymlrow carries the staticweb-config-crawler/exposed-namespacesstub under the row's own config and ships disabled, and thefabric-dshlauncher enables Fabric-required rows at launch. A plaindshboot therefore skips this bundle entirely (the app runs, the crawler stays unloaded), while a fabric-dsh boot loads it with the hooks installed and the gateway's privateexposedNamespaces()decision rewritten at load time; the crawler binds the matchingafterhandler when it mounts, and therequiredstub makes a boot where the transform bound nothing fail loud (seedocs/web-config-crawler.md). - Crawler-owned composition route — the browser half reads and edits composition rows through the crawler's own webserver route (
/dsh-config/crawler/composition,src/routes.ts) instead of a gateway RPC domain, so the write path adds nothing toapiproxyorconnection. - Served browser rewrite — the crawler serves the
ui-settings-generalclient bundle throughserveBrowserTransform, rewritingSettingsRootto publishweb-config-crawler/nav-scroll; the browser half registers the matchingbeforehandler that injects the dialog navigation scroll styles (seedocs/ui-settings-plugins.md).
The settings/composition wire protocol, API proxy handlers, slot host, and browser shell are supplied by the DSH version selected by the profile.
Development
The host packages (@deepseek-ai/dsh-*, @deepseek-ai/cordis) install from the npm registry: every runtime import declares them as peer + dev dependencies at the ^0.1.0-rc.0 series, and development imports resolve from this repository's own node_modules — no sibling checkout is required. The devDependencies also enumerate the peer closure of the test-only host tree (the apiproxy composition test imports the real gateway).
pnpm install
pnpm run typecheck
pnpm test
pnpm run build
pnpm run verify:self-contained
The prepare script builds both host and browser entries directly from src/, so Git installation does not require sibling project references. pnpm 10 may require the profile to allow the package's prepare script; only approve a pinned, trusted checkout.
CI
Two GitHub Actions workflows ship with the repository:
.github/workflows/ci.yml— every push tomainand every pull request: frozen-lockfile install,verify:self-contained, typecheck, tests, build, andprepare..github/workflows/release.yml— every push tomain: runs the build andprepare, packs the tarball (pnpm pack), and publishes it to a GitHub Release taggedv<version>frompackage.json. Bumpversionto cut a new release; re-pushing the same version refreshes that release's artifact.
Model Experience
This bundle adds no model-visible prompt text or tools. It exposes configuration only through the loopback Web settings surface; the owning DSH settings, composition, session, and permission services retain logging, redaction, and authorization semantics.
Known Limitations and Deferred Work
- Native Zod composition Config schemas remain file-configurable but are not rendered by the generic editor, which requires schemastery
toJSON(). - The crawler is intentionally broad; deployments that do not want automatic composition editing should disable the row and keep the gateway allowlist posture.
Install
Install the catalog once, then DeepSeek Harness can find and install any plugin from this site automatically:
dsh plugin add dshbase-catalog Then say "install ex-setting for me" — your agent finds it in the directory and installs it. Docs: dshbase-catalog · verified packs.
This plugin is GitHub source (not published to npm) — install it straight from the repo:
Web profile:
dsh plugin --profile web add github:omdsh-dev/ex-setting Headless (CLI) profile:
dsh plugin --profile headless add github:omdsh-dev/ex-setting Test report
Not yet L3-verified — see failure note below if we already ran it.
Note: 验证: install-fail (0.1.0-rc.6) Browse all pending failures →
When to use it
Change how dsh looks or how you interact with it — a theme, a skin, or a new panel that reshapes the workspace.
Who it's for
Users who spend hours in the web UI and want it to look and feel the way they work.
For developers — extending it
Skins, panels, and theme tokens are the extension points — author a new skin, add a panel, or sync tokens with an upstream palette.