dsh-plugin
DayuanJiang/next-ai-draw-iodsh 的 draw.io 绘图插件:通过 next-ai-drawio MCP 服务器作图,点回复里的链接在右侧栏打开实时预览,可以手动修改图,AI 的每次修改都是可以恢复的版本。需 Node.js 18+,首次使用由 npx 下载 MCP 服务器。
自动切换 DeepSeek 模型:含图片时走视觉模型,复杂任务走 pro,常规任务走 fast;提供 switch_model 工具手动固定。
Auto-switch DeepSeek models for DeepSeek Harness. No manual model picking: every model request is routed automatically, and a switch_model tool gives you a manual override when you want one.
Before every model request, the plugin inspects the conversation and replaces the frozen provider/model:
| Situation | Model used (defaults) |
|---|---|
| Conversation contains images | deepseek-v4-flash-vision-exp (vision) |
| Complex task — long text, code, math, analysis keywords (score ≥ threshold) | deepseek-v4-pro |
| Everything else — chat, short questions, routine work | deepseek-v4-flash |
It hooks the same agent/request waterfall the built-in model selection uses, installed after it, so the routed model is the final one for the call. The prompt variables (provider/model) stay in sync with what actually runs.
switch_model(mode, reason?) — mode is one of:
auto — back to automatic routingfast — force deepseek-v4-flashpro — force deepseek-v4-provision — force deepseek-v4-flash-vision-expThe override is per-session and takes effect from the next request.
From the plugin market (once published), or locally:
dsh plugin --profile web add dsh-deepseek-model-router
The bundle patch activates the router for the whole profile after a restart. Configuration lives in the bundle patch (cordis.patch.yml → row config): provider, fast/pro/vision models, complexity threshold, tool name, enabled.
All fields optional (defaults shown):
config:
provider: deepseek-official # only sessions on this provider are routed
fastModel: deepseek-v4-flash
proModel: deepseek-v4-pro
visionModel: deepseek-v4-flash-vision-exp
complexityThreshold: 2 # task score >= threshold -> pro
toolName: switch_model # registered tool name
enabled: true
deepseek-official sessions are routed; other providers pass through untouched.visionModel); if that model is not image-capable in your catalog, the current model is kept.switch_model to pin a model explicitly.MIT