DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

dsh-local-models

Local Models

dsh 插件:一个 Local Models 设置选项卡,用于启动和停止与 dsh 宿主进程共存的 llama-server 子进程。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add dsh-local-models@0.5.0
README兼容性版本

兼容性与来源证明

Local Models 以 dsh-local-models 发布,当前版本为 0.5.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
npm
Registry 更新时间
2026/11/4

版本

0.5.0stable
2026/10/12
0.4.0stable
2026/10/6
0.3.2stable
2026/10/4
查看其余 3 个版本收起版本
0.3.1stable
2026/10/3
0.3.0stable
2026/10/3
0.2.0stable
2026/9/5

相关插件

正在加载相关插件…

最新版
0.5.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
316.6 kB
文件数
12
Surface
web
许可证
MIT
发布源
npm
GitHub
★ 0
周下载
121
安全扫描
✓ v0.5.0 扫描通过
最近提交
2026/10/3
查看源码 ↗项目主页 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 models-usage 分类下经过校验的插件。

Experimental Cot Translation Bundle@deepseek-ai/dsh-experimental-cot-translation-bundle扩展推理的实验性机器翻译Whale Widgetdsh-whale-widgetDSH Web 界面右下角的 DeepSeek 余额小鲸鱼挂件:余额/今日已用/峰谷定价、自定义泡泡点击序列(文本/余额/今日/峰谷/图片/随机语句与并列加权选择)、逐行样式与字体、悬浮快捷编辑、音效与每轮消耗、自定义角色/动图/音效、吸附与翻转自定义Our Free Model@ebony-vinyl/dsh-our-free-modelOur Free Model — 在 dsh 里装上这个插件即可,无需登录、注册或填 API Key,就能使用包括 DeepSeek V4.1 Flash、Kimi K3 在内的前沿模型,桌面端另有 EAC 协付渠道;2.0 起接入 LobsterAI、Qoder、TRAE、Cline、Loomy、Raccoon、MiniMax、ZCode、Gemini 十个账号渠道(原有匿名免费通道保留)(登录、账号池、积分领取、本地 OpenAI 网关与局域网转发、数据看板与运行日志),六页毛玻璃界面统一呈现。Usage@linxin666/dsh-usage用于 dsh Web GUI 的使用统计插件:检测各提供商的余额和编程套餐配额,并实时记录令牌使用情况;侧边栏 Settings 行上方显示紧凑的价格概览卡片

README

dsh-local-models

A dsh addon that adds a Local Models tab to the dsh Web GUI: pick a .gguf file, tune context and speculative decoding, watch a live VRAM estimate, and load it through llama-server — then register the running server as an LLM provider in dsh with one click.

Built against stock upstream llama.cpp (llama-server). No fork, no patches, no build step: the client bundle is hand-written React.createElement (no JSX toolchain) and the node half is dependency-free.

Features

  • Model picker — in-app file browser (directories + .gguf only) with a header-only GGUF parse (architecture, quant, layers, context length, MoE detection) behind POST /local-models/gguf-meta
  • Launch options — context slider (8K steps, capped at the model's trained context) + fine-tune input, KV cache quantization selectors (one for K, one for V — every type llama-server accepts, with bytes-per-element shown), fixed MTP draft depth (0–7, upstream clamps to the model's nextn depth), thinking level (off/low/medium/xhigh) + preserve-thinking toggle (--reasoning-preserve vs --no-reasoning-preserve, default off), optional vision mmproj (GPU or CPU offload), MoE expert placement (--cpu-moe / --n-cpu-moe / top-k override) with a fit-to-VRAM helper
  • Live VRAM estimate — weights + the selected K/V cache types + recurrent state + compute/graph + overhead against the detected GPU total (nvidia-smi / amdgpu sysfs, summed across GPUs, 16 GB assumed when unknown), with fits / safe-margin / max-ctx-that-fits rows (see Known issues for Gemma-family accuracy)
  • Profiles — save named launch configurations, reload in one click
  • Router mode — serve all saved profiles from one OpenAI-compatible endpoint (--models-preset); models load on demand, one resident at a time by default. Starting the router automatically (re-)registers its models in dsh — no manual Register press.
  • Register in dsh — writes the ready server as an llm-pi-ai provider route (vision modality + thinking levels included, max output advertised at 32K tokens (capped at half the window so compaction keeps a pressure budget; raise per-request maxTokens explicitly for long xhigh thinking blocks))
  • Terminal overlay — live tail of the llama-server log from the tab

Requirements

  • dsh with the web profile (the plugin composes into it)
  • A llama-server binary (upstream llama.cpp, Vulkan/CUDA/CPU — whatever your machine uses)
  • The VRAM budget is detected (nvidia-smi for NVIDIA, amdgpu sysfs for AMD, all visible GPUs summed) and can be pinned in the tab's Runtime card; the 16 GB fallback and the safety margin live at the top of lib/client.js (TOTAL_VRAM_BYTES, SAFE_MARGIN_BYTES)

Install

A plugin lives inside a dsh profile, which is a pnpm project under $DSH_HOME/profiles/<name>; dsh plugin forwards its arguments to pnpm in that directory.

# from the npm registry
dsh plugin --profile web add dsh-local-models

# straight from git (plain ESM, no build step)
dsh plugin --profile web add github:Vmarcelo49/dsh-local-models

# from a local clone, for development (symlinked: edits apply on reload)
dsh plugin --profile web add link:/path/to/dsh-local-models

dsh plugin add writes the dependency and appends the package to dsh.profile.bundles in $DSH_HOME/profiles/web/package.json — that array is what mounts it, so there is nothing to edit by hand. Restart the dsh web process (bundle composition happens at boot), refresh the browser and open Settings → Local Models.

Check the composition without booting, and remove it again with:

dsh --profile web --dump-config | grep -A 2 dsh-local-models
dsh plugin --profile web remove dsh-local-models
  • pnpm must be on PATH. npm or bun can install the dsh CLI itself, but plugin management inside a profile is pnpm's (dsh plugin shells out to it and prints pnpm was not found otherwise).
  • No version gate, no exemption. The package declares no @deepseek-ai/* peer dependencies — it only uses injected services (settings, credentials, webServer) and client slots — so dsh plugin never refuses it for a dsh mismatch and no dsh plugin allow-version is needed.
  • No build step. There is no prepare script, so the pnpm allowBuilds gate that git-hosted plugins hit never triggers.
  • Manifest check. dsh-plugin-dev check (from dsh-plugin-guide) validates the bundle manifest: cordis.patch.yml, the dsh.bundle.patch pointer, engines and the files whitelist.

Node-half changes (routes, inject list) need a dsh restart; client-half changes only need a page refresh.

Usage

  1. Choose GGUF… — pick a model file (Home / Root buttons, Models shortcuts, Up navigation). Up goes all the way to /, so a model on a mounted disk (/mnt/…, /media/…, a network export) opens without adding its folder to Model folders first.
  2. Tune context, KV cache K / V, Max MTP head (fixed draft, 0-7; 3 is the tuned sweet spot — deeper collapses at large ctx), thinking level + preserve thinking checkbox, optional mmproj and MoE settings.
  3. Load model, watch the status card, inspect output via Open terminal.
  4. Register in dsh — the route (default local-<alias>) appears in the Models picker.
  5. Alternatively, save profiles and Start router (from profiles) for a multi-model endpoint.
  6. Tick "Start the router automatically when dsh starts" (Router card) to launch the router at boot and register its local-router route once healthy — models stay usable without opening the tab. Needs at least one saved profile; progress lands in llama-server.log ([autostart] lines, visible via Open terminal).
  7. Idle eviction (Router card, "Unload models after …", default 30 min idle) frees VRAM via upstream --sleep-idle-seconds on both single loads and the router; the sleeping server keeps answering /health and reloads automatically on the next request (one slow request). 0 disables it. Takes effect on the next start — the tab warns when the running server uses a different timer.

Configuration

VariableDefaultMeaning
LOCAL_MODELS_PORT8080llama-server port
LOCAL_MODELS_BIN— (auto-detect)server binary or the dir holding it; the Runtime card's setting wins over it
LOCAL_MODELS_SHORTCUTS— (none)colon-separated file-browser shortcut dirs (name=path for custom labels); the Runtime card's folder list takes over once saved
LOCAL_MODELS_MMPROJ_CPU1vision projector weights in RAM (0 = offload to GPU)
LOCAL_MODELS_ROUTER_MAX1max simultaneously resident router models
LOCAL_MODELS_MAX_IMAGE_BYTES10485760vision image guard
LOCAL_MODELS_IMAGE_PIXEL_BUDGET4194304vision pixel budget
DSH_HOME~/.dshdata dir (local-models/profiles.json, local-models/settings.json, llama-server.log)

The tab's VRAM budget is detected, not hardcoded: NVIDIA through nvidia-smi, AMD through sysfs (mem_info_vram_total, with the product name resolved from pci.ids when present), all visible GPUs summed, and CUDA_VISIBLE_DEVICES / HIP_VISIBLE_DEVICES honored. Hardware that cannot be read falls back to the historic 16 GiB, and the Runtime card's VRAM budget field pins the number by hand (settings.json → vramGb, 0 = auto).

Launch flags are fixed to the validated daily config: full offload, -b 2048 -ub 512 -t 4 -np 1, --flash-attn on --kv-unified, reasoning --reasoning auto --reasoning-format deepseek --reasoning-effort <level> plus --reasoning-preserve when the preserve toggle (profile preserveThinking) is on else --no-reasoning-preserve, MTP --spec-type draft-mtp --spec-draft-n-max N --spec-draft-p-min 0 (ungated — upstream's own default; the confidence gate only pays on bandwidth-starved cards, on this 16 GB card it costs ~32% decode at n-max 3 while raising acceptance 63.5% → 91.1%, see bench/mtp_tuning.md; the tab offers depths 0-7, upstream clamps the effective depth to the model's nextn depth, and the draft is unconditional at any ctx — the old “ignore the MTP ctx softcap” checkbox is gone, so a deep draft at large ctx can still OOM or collapse decode), multi-GPU placement --split-mode / --tensor-split when a profile sets them (default: llama.cpp's own layer split, no flags — the control only appears when more than one GPU is detected), and the KV cache pair from the tab's K/V selectors (--cache-type-k / --cache-type-v, profile fields kvTypeK / kvTypeV). Every type this llama-server accepts is offered (f32 f16 bf16 q8_0 q5_1 q5_0 q4_1 iq4_nl q4_0, labeled with its bytes/element); the default q5_0 K / q4_1 V is the measured 16 GB sweet spot, and legacy profiles without the fields launch with exactly that pair. Quantized V needs flash-attn (always on here) and the MTP draft KV stays pinned to q4_0. MLA models (DeepSeek-style latent KV) reject mixed K/V types in llama.cpp, so the tab warns and keeps Load disabled until both match, and the /run route refuses such a launch with a clear error. Router presets carry the same per-profile KV pair and reasoning-preserve = 1/0 choice.

HTTP API (mounted under /local-models)

RouteMeaning
GET /local-models/browse?dir=dirs + .gguf files
POST /local-models/gguf-meta{path} → parsed GGUF header (cached)
GET /local-models/statusstate + fresh /health probe
GET /local-models/logs?offset=&max=incremental tail of llama-server.log
POST /local-models/runspawn the server
POST /local-models/stopstop the child (or reap the port)
POST /local-models/profiles / GETsave (upsert) / list profiles
POST /local-models/profiles/removedelete a profile
GET /local-models/settings / POSTread / update plugin settings (autostartRouter, autoUnloadMins, binPath, shortcuts, vramGb)
POST /local-models/runtime/check{binPath} → resolve + <bin> --version (the Runtime card's Check)
POST /local-models/router/startbuild presets from profiles + start router (also syncs the compaction headroom patch — {compactionSync:false} opts out)
GET /local-models/compaction[?profile=]per-model compaction threshold coverage
POST /local-models/compaction/syncmerge headroom overrides into the profile patch ({profile,dryRun})
POST /local-models/router/unloadunload one router model
POST /local-models/router/unload-allunload all router models
POST /local-models/registeradd the ready server as an llm-pi-ai route

Project layout

lib/index.js    node half: process manager, GGUF parser, routes, presets
lib/client.js   browser half: settings tab (single build-free bundle)
skills/         operator skill: spawn-parity checklist, profile audits
docs/           UI mockup

Pure, exported helpers (normalizeEffort, moeArgsFor, generateRouterPresets, buildProviderProfile, profiles store) are covered by npm test (node's built-in runner, test/); node lib/index.js /path/to/model.gguf dumps a parsed header as a self-test.

Host-provided modules: @deepseek-ai/dsh-client-runtime and @deepseek-ai/dsh-client-ui-settings are injected by the dsh host at bundle time (see the dsh.client.inject list in package.json) and are deliberately not in dependencies — they don't exist on npm and must not be installed.

Known issues

See KNOWN_ISSUES.md — most notably, the VRAM estimate is approximate for Gemma-family layouts.

License

MIT — see LICENSE.