DSH XD Pool
XDTrees/dsh-xdpool把本机 WorkBuddy 桌面 App 登录过的所有账号自动并入 DSH 模型池:多账号轮换自动容错、实时积分,模型目录按模型标注积分倍率与限时免费 / 夜间折扣。
DSH Web 视图中的本地 LLM 推理服务控制面板:服务注册表与健康检查/停止控制、llama.cpp / SGLang / vLLM 命名参数 profile(保存前做 KV/显存校验)、GPU 探测与 tok/s 测速。
A control panel for your local LLM inference servers — a plugin for DSH (DeepSeek Harness).
Run a couple of local inference servers (llama.cpp / SGLang / vLLM) and the parameter knowledge scatters across terminal history and notes: which -c / -np does this model want? Does the VRAM actually fit? Which framework boots on this card?
With this plugin, the answers live in one panel:
Prerequisites: DSH (with web) + pnpm; GPU detection needs python3 (falls back to nvidia-smi when missing).
cd ~/.dsh/profiles/web # your DSH web profile directory
pnpm add github:Ansonfishing/dsh-model-manager
Then add "dsh-model-manager" to the dsh.profile.bundles array in package.json and restart dsh. A "Model Manager" tab appears in the conversation view — done.
libcuda primary, nvidia-smi fallback); card index = the CUDA_VISIBLE_DEVICES value.-c / -np when you save a profile and warns immediately if the target card can't hold it.pkill; stopping an external service requires explicit force plus a two-click confirmation in the panel; stopping port 11437 (DSH's own inference port) additionally warns that it will interrupt the current session.Clone this repo and open test/harness/index.html in a browser — a zero-dependency render harness that shows the full panel with mock data; ?chrome=0 hides the harness bar.
The repo ships no hardcoded GPU mappings. To show card names and memory capacity, create ~/.dsh/model-manager/builtin-gpus.local.json:
{
"0": { "name": "RTX 4090", "memGb": 24 },
"1": { "name": "RTX 6000 Ada", "memGb": 48 }
}
Without the file the panel falls back to "GPU 0 / GPU 1" and skips VRAM validation.
npm test # node --test test/*.test.mjs
node build/build-client.cjs # rebuild lib/client.js from mockup-v3.html
Local development: after cloning, use pnpm add link:../path/to/dsh-model-manager in your profile. Client-only changes need a browser refresh; Node-side changes (index.js / lib/*.js) need a dsh restart.
| Layer | File | Responsibility |
|---|---|---|
| Entry | index.js | registers 14 tools + 17 same-origin routes |
| Lifecycle | lib/lifecycle.js | registry CRUD, health probes, managed start/stop |
| Safety | lib/safety.js | stop policy (fuser/kill), protected ports |
| Validation | lib/validate.js | launchCommand parsing + rule engine |
| GPU | lib/gpu.js | detection + local GPU table loading |
| Adapters | lib/adapters/*.js | llama / sglang / vllm command assembly |
| Client | lib/client.js | single-file React component (built from the mockup) |
MIT © Ansonfishing