Settings extensions for DSH.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:omdsh-dev/ex-setting
GitHub-sourced plugins run build scripts on your machine at install time. Only install sources you trust, and pin a commit (github:owner/repo#sha).
README
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's
cordis.patch.ymloverrides the web roster'scordis-fabricrow by id, carrying the staticweb-config-crawler/exposed-namespacesstub. The Fabric layer rewrites the gateway's privateexposedNamespaces()decision at load time, and the crawler binds the matchingafterhandler when it mounts (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
A full typecheck expects sibling checkouts (host-provided @deepseek-ai/* packages are private and not installable from the registry):
~/git/deepseek-harness
~/git/ex-setting
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.
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.
Links
More in this category
zhu1090093659/dsh-web-ui★ 1766
Plugin and skin collection for the DSH Web UI: task board, Git graph, right-side panel, remote mobile UI, pet, live token stats, and a skin center.
ccch1mneyyy/dsh-TUI★ 829
Claude Code-style full-screen terminal UI: pixel-whale header, live status line, and streaming thought expansion.
omdsh-dev/DSH-better-sidebar★ 705
Full sidebar workbench with file rendering and editing, terminal, Git, and subagents; third-party plugins can register new tabs.
huiliyi37/dsh-tianshu-tui★ 131
A terminal UI (TUI) for DeepSeek Harness.
omdsh-dev/dsh-at-file★ 117
Codex-style `@file` mentions: search workspace files in the composer and attach their contents to prompts.
Nagi-ovo/dsh-visualize★ 79
In-conversation generative UI: the model renders interactive HTML cards into the chat stream, with streaming preview and sandboxed rendering.