dsh-model-manager
中文 | English
dsh-model-manager provides an independent Model Center settings page and shares model metadata with the official DeepSeek Harness model settings page and model picker. This first stage does not replace llm-pi-ai, credentials, onboarding, the official model picker, or @deepseek-ai/dsh-tool-fs.
Features
- Adds case-insensitive model tags while preserving the first entered display spelling.
- Maintains tags and vision proxies by provider in Settings → Model Center. It coexists with the official Models page and writes the same manager metadata.
- Configures
off, minimal, low, medium, high, xhigh, and max reasoning levels through the official reasoningEfforts field.
- Edits official image-input capability through the model
input field.
- Assigns an exact, natively image-capable proxy model to a text-only model.
- Filters the official model selector by one or more tags using OR matching.
- Shares image-proxy results between prompt transcription and
read_image calls with the same session, image, route, focus, and prompt-template version.
The host's model-discovery dialog starts every newly discovered model unchecked and provides Select all and Clear actions. Those controls belong to the compatible host build, not to this plugin's stored metadata.
Compatibility
This plugin requires a DeepSeek Harness build that provides ctx.imageInput, additive model-settings extensions, and additive model-selection filters. Released hosts that do not contain those APIs are incompatible; update the host before enabling the plugin. The Host service requires imageInput, attachments, and llm, so Cordis will not activate it without the required public services.
Evolution boundary
The Model Center currently owns only this plugin's tag and image-routing metadata. Loaded LLM adapters remain the source of the runtime model directory. The page does not copy model routes, OAuth tokens, or Host credentials; future OAuth providers will contribute to the center while retaining their own protocol and adapter implementations.
Provider plugins can call registerModelCenterExtension() from dsh-model-manager/client to render sign-in, account, or provider-specific configuration in the independent page without adding provider branches to the manager core.
Image routing
Native image capability always wins. For a text-only source model, the plugin uses only its explicitly configured proxy. The proxy target must exist, be different from the source, and directly declare image input; proxy chaining and fallback searches are not performed.
Uploaded images remain unchanged in the durable user message. Before the provider request, the plugin records a replayable proxy observation and removes image blocks only from the outgoing copy consumed by the text-only model. read_image accepts an optional focus string and returns the proxy observation instead of injecting the original image into that model's context.
Proxy requests use the Harness LLM and credential services. Cancellation propagates from the active turn, and proxyTimeoutMs adds an upper bound. A failed proxy request fails explicitly and is not retried with another model.
Configuration
- insert:
- id: dsh-model-manager
name: dsh-model-manager
config:
proxyTimeoutMs: 60000
# metadataPath: D:/dsh/model-manager.json
# dshHome: D:/dsh-home
By default, metadata is stored at <DSH_HOME>/plugins/dsh-model-manager/config.json. Writes use an atomic replacement and a monotonic revision; a stale page is rejected instead of overwriting a newer page.
Browser persistence
The selected tag filter is normal, global UI state stored under dsh.model-manager.selector.global.tags.v1. Invalid or unavailable browser storage falls back to no filter. Model tags, reasoning levels, image capability, proxy routes, credentials, and form drafts are not stored in browser storage.
Development
pnpm run typecheck
pnpm test
pnpm run build
pnpm run pack:check