DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

Local Perf — DeepSeek Harness 插件(DSH Plugin)
← Plugins
L

@flowingboy/dsh-local-perf

Local Perf

持久化的 DeepSeek Harness 套件:将本地模型性能调优作为可重新安装的插件层提供(压缩、工具结果裁剪、时间上下文、云端标题路由、文本工具调用保护)——在 dsh 更新后仍然保留

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

npx -y @deepseek-ai/dsh plugin --profile web add github:flowingboy/dsh-local-perf#b306e53ab0df4e4a567e61f44ed950b90deb98ad
README兼容性版本

兼容性与来源证明

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

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/8/24

版本

0.2.0stable
2026/8/24
0.1.0stable
2026/8/23

相关插件

正在加载相关插件…

最新版
0.2.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
any
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/8/24
查看源码 ↗
README Badge

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

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

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

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

README

dsh-local-perf

Durable DeepSeek Harness plugin bundle carrying the local-model performance tuning process as a re-installable layer — so it survives dsh updates instead of living in hand-edited patch files that a version bump can wipe or whose rationale dies with the author.

Install once, re-apply forever:

# from the GitHub repository
git clone https://github.com/flowingboy/dsh-local-perf.git /tmp/dsh-local-perf
dsh plugin --profile web add file:/tmp/dsh-local-perf

# or from a checkout: dsh plugin --profile web add file:./dsh-local-perf

The bundle joins the profile's layer stack after dsh-base / dsh-web-app, re-applies all tuning rows on every boot, and vendors its own copy of the text-toolcall-guard plugin (self-contained, no dsh checkout required).


The complete performance process (why every knob exists)

Everything below was learned the hard way on an M5 Max running four local OpenAI-compatible servers (Ollama / MLX / Rapid-MLX / MLX-DSpark) against the DSH web GUI. The bundle encodes the conclusions; this README preserves the reasoning.

Incident log

DateSymptomRoot causeFix
2026-08-18"fan spin / no response"A 114,650-token prefill on Qwen3.5-122B — session context had grown unbounded because the web bundle disables auto-compactionRe-enable compaction-basic at thresholdRatio: 0.6
2026-08-19session-title starves the interactive stepThe title LLM request fires in the same second as a turn's first step; on the single-slot mlx-dspark server it queues behind the interactive generation and one of them starves past the idle budgetRoute session-title-llm to the cloud model (deepseek-official / deepseek-v4-flash)
2026-08-19mlxdspark timeouts with tools presentThe mlx-dspark server buffers the whole generation and emits no data events until it finishes; its 15s SSE keepalive comments are discarded by the OpenAI SDK parser and never reset the idle watchdogRaise timeoutMs / streamIdleTimeoutMs to 600000
2026-08-20tool calls appear as literal textLocal Qwen3.8-27B-8bit fell out of the structured tool_calls protocol under long tool-heavy steps and wrote <tool_call> prose the harness never executesShip the text-toolcall-guard plugin (vendored here)
recurringhallucinated "today"No clock context in the promptEnable time-context (Asia/Shanghai, 10 min refresh)

Layer 1 — model configs (settings.example.yaml → ~/.dsh/settings.yaml)

Machine-specific (paths, ports, model ids), so the bundle carries them as a template, not a runtime patch. Copy the llm-pi-ai section into ~/.dsh/settings.yaml on a fresh machine.

The recurring principles:

  • Timeout ≠ prefill tolerance. A slow local server needs timeoutMs + streamIdleTimeoutMs ≥ worst-case prefill + reasoning + decode. Gemma 4 31B prefills at ~180 tok/s (system prompt + tool schemas ≈ 13k tokens → ~70s), mlx-dspark buffers whole generations, so both budgets sit at 300–600s.
  • Retry only TRANSPORT. Connection-level failures happen before prefill and are cheap; a TIMEOUT must never re-prefill a long prompt.
  • Context window ≤ practical prefill budget. 262144 tokens at ~180 tok/s is minutes of prefill. Lower to 32K–64K; compaction at 0.6× keeps sessions safely under the server limit.
  • maxTokens ≤ decode budget. At ~27 tok/s decode, 16K output is ~10 min. Cap at 8192–16384 so one step's worst case fits the timeout budgets.
  • Reasoning effort default "off" (or the server's lowest level) for quick, low-latency local loops; the local model's thinking stream still renders as a DSH reasoning block when enabled.

Layer 2 — cordis rows (cordis.patch.yml)

RowWhatWhy
time-contextper-step clockkills hallucinated dates
compaction-basicauto-compact at 60%bounds prefill; the 08-18 incident fix
tool-result-prunerdrop stale tool resultskeeps them off later requests
command-compactmanual /compactescape hatch
session-title-llmtitle via cloud modelkeeps the local slot free for the interactive step

Layer 3 — text-toolcall guard (plugins/text-toolcall-guard)

Vendored from @deepseek-ai/dsh-text-toolcall-guard (built lib/ + src/). When a step closes with no native tool calls but the assistant text carries <tool_call> / <function=…> markers at line starts, the guard steers a corrective message so the model re-issues the call natively. Bounded to maxCorrections (2) per turn per agent; marker detection requires line-start placement so prose that merely quotes the format is not corrected. Peers are resolved at runtime from the dsh installation's profiles/node_modules fallback (the designed out-of-tree-plugin path), so no registry fetch needed.


Installation

# from this directory
dsh plugin --profile web add file:$(pwd)
# verify the layer joined the stack
dsh --profile web --dump-config | grep -A3 "dsh-local-perf"

The web profile's cordis.patch.yml should then only hold rows this bundle does NOT own (currently: none — everything moved into the bundle).

Updating the bundle

git pull                       # or edit locally
cd plugins/text-toolcall-guard # rebuild the vendored guard if its src changed
pnpm exec tsc -p tsconfig.json --outDir lib --declarationDir lib/types
# reinstall the layer
dsh plugin --profile web add file:$(pwd)

Publishing (GitHub / dsh-plugin ecosystem)

Published at https://github.com/flowingboy/dsh-local-perf (public, main, topics: dsh-plugin). To re-publish after local edits:

git add -A && git commit -m "dsh-local-perf: ..."
git push origin main
# topics (once)
gh repo edit dsh-local-perf --add-topic dsh-plugin

Layout

cordis.patch.yml                  the perf layer (all tuning rows)
settings.example.yaml             model-config template (copy to ~/.dsh/settings.yaml)
plugins/text-toolcall-guard/      vendored guard plugin (lib + src)
README.md                         this document — the preserved process

相关插件

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

Usage@linxin666/dsh-usagedsh Web GUI 的使用统计插件:检测各提供商余额和编码计划配额,并提供实时令牌使用记录,以及当前提供商的专属宠物气泡Whale Widgetdsh-whale-widgetDSH Web 界面右下角的 DeepSeek 余额小鲸鱼挂件:余额/今日已用/峰谷定价、自定义泡泡点击序列(文本/余额/今日/峰谷/图片/随机语句与并列加权选择)、逐行样式与字体、悬浮快捷编辑、音效与每轮消耗、自定义角色/动图/音效、吸附与翻转自定义Usage Stats@ychris12138/dsh-usage-statsdsh Web GUI 的令牌使用热力图、提供商余额和订阅配额Codex Connectdsh-codex-connect用于 DeepSeek Harness 的 ChatGPT OAuth 和 Codex 模型。