packages/dsh-task-board
zhu1090093659/dsh-web侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。
在设置页按模型编辑能力:推理档位及其发往端点的取值写法、输入模态与 token 容量,以声明或官方目录稀疏覆盖的形式写入。
Sparse, non-destructive per-model overrides on official-catalog routes — including reasoning-effort levels and their wire spellings — without replacing the catalog.
Custom models: edit declarations. Official models: edit overrides. Provider configuration remains official.

The official Models page edits a model's input types and token capacities, but it does so by rewriting that route's whole models array: one field touched, and every other model on the route stops following the catalog — and sparse modelOverrides becomes illegal there. It also has no control for per-model reasoning effort.
This page is the other seam. On an official-catalog route it writes only the difference for the model you touched — including reasoningEfforts levels and their wire spellings — and leaves the rest of the catalog following upstream. On your own declared routes it edits the declarations directly.
dsh plugin --profile web add better-model-provider
The npm package ships ready-built, so this path never builds locally. Alternates: github:sanshanya/better-model-provider#master (CI republishes ready-built artifacts to the master branch on every green main push), or the default branch (github:sanshanya/better-model-provider), which builds from source and prints one pnpm allowBuilds key to add, then rerun add; a local link: install must npm install && npm run build first. Restart dsh web, and the Settings sidebar gains Model capabilities.
dsh plugin --profile web rm better-model-provider

off (its wire value may stay blank).image under input modalities — otherwise sending an image to this model gets refused.380K, 1M). Tap Apply and the change takes effect at once.The official Models page can also edit input types and capacities — but only by replacing a route's whole model list, which stops that route following the catalog and rules out overrides. Use this page when you want one model changed and the other thirty-seven still following it. Once a route's list has been replaced on the official page, this page edits that list like any declared route.
Dedicated-adapter apps (built-in DeepSeek / OpenAI Codex) declare their capabilities on their own settings pages and never appear here.
| Harness line | Status |
|---|---|
dsh 0.2.0-rc.2 (npm latest / next) | verified end-to-end |
dsh 0.2.1-alpha.1 | verified end-to-end |
dsh 0.1.7-rc.2 | verified end-to-end |
dsh 0.1.5-rc.3 | verified end-to-end |
0.1.2-alpha.1 … 0.1.6-alpha.2 | not verified — admitted by the peer ranges, no lane has run on them |
0.1.0-rc.7 … 0.1.1-rc.2 | refused: no connection.api generation here any more |
Verified means both lanes on a real harness: integration boots a checkout and serves the plugin's client module, functional drives a real browser through a capability write and its revert. They are opt-in — BMP_DSH_DIR=/path/to/deepseek-harness npm run test:live (see CONTRIBUTING.md for the functional lane) — and skip without it.
The peers are a single interval, >=0.1.2-alpha.1 <0.3.0: the floor keeps the retired connection.api generation out (the 0.1.0-rc.7 line stays refused), the ceiling admits the dsh 0.2 line. What actually rules on them at install time is dsh's admission gate — it reads prereleases with includePrerelease: true, and that is the path every install of this plugin takes; npm's own peer rule reads the tuple more strictly and disagrees on some versions, but it never governs that path. (Through 0.0.6 the range was enumerated per published line — a residue of npm's stricter reading; 0.0.7 converged it on dsh's semantics.) The nightly canary re-proves the latest, next and alpha channels, and a leg whose channel resolved but whose lane skipped fails the run instead of passing quietly; when a leg turns green again it closes that channel's accumulated red-tracking issues itself.
Field overlap: this page edits per-model reasoningEfforts (levels and their wire spellings) and sparse modelOverrides — the official Models page has no control for either. It also edits input, contextWindow and maxTokens, which the official page edits natively, so those are a convenience here rather than a unique capability. Recovery: if the official page rewrote a route's whole model list while overrides saved here linger beside it, write validation rejects the route — the card offers Remove leftover overrides, one explicit click, never automatic.
MIT