dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
本插件是向DSH许愿得到的,本人不对其中的屎山代码负责。
在 Apple Silicon Mac 上通过 DSH 运行本地大模型。插件负责管理 Python 环境、启动和停止 mlx_lm.server,并把本地服务接入 DSH 已有的自定义 provider。
mlx-lm;| 项目 | 要求 |
|---|---|
| 硬件 | Apple Silicon(M 系列)Mac |
| 系统 | macOS 13 或更高 |
| DSH | DeepSeek Harness 0.1.7-rc.1 或更高(已实测至 0.2.1-rc.2)及可用的 dsh 命令 |
| Python | 3.9–3.13,建议 3.10–3.12;未安装时插件会给出 brew install python@3.12 提示 |
| 网络 | 首次使用 HF 模型时需要联网下载权重 |
| 磁盘 | 每个 4-bit 模型约 2–6 GB |
当前版本 0.5.2。逐版变更见 CHANGELOG.md;这里只列升级前必须知道的。
0.5.2 是 DSH 0.2.1 的兼容性复核,无破坏性变更。
next 标签)上完整可用:具名导入、服务与方法、llm/stream 事件、设置页「MLX 模型」栏目、/mlx/api、Qwen3 思考强度补全与设置写入全部正常。peerDependencies 原来写的是 ^0.1.7-rc.1 || ^0.2.0-rc.1,而按 semver 的预发布规则,该范围匹配不了 0.2.1-rc.2——npm install 会报 ERESOLVE(或装上后报 peer 未满足),尽管插件代码在 0.2.1 上完全正常。现已补上 ^0.2.1-rc.1。check:runtime 增加第 7 类检查:peerDependencies 的版本范围是否被目标运行时满足,避免再出现「六项全绿却装不上」。该检查自带极简 semver 实现(scripts/semver-lite.mjs)与单元测试。dsh web --host <局域网地址> 下可用(DSH 0.2.1 起支持把 GUI 绑到具体接口地址):/mlx/api 的 Host 校验从「必须是回环地址」放宽为「回环 或 恰好等于连接落入的本机接口地址」,DNS rebinding 防护不变。lib/local.js,让「思考强度补全」与「llm/stream 拦截器」共用同一判据,并修掉 baseURL.includes("127.0.0.1") 会把 https://example.com/?next=127.0.0.1 误判成本机服务的隐患;服务绑到局域网地址时也能按 origin 识别。~/.dsh/mlx/logs/server.log 改为跟随 $DSH_HOME(与启动探针 plugin-boot.log 一致),隔离 home / 测试 profile 不再把日志写进真实 home;venv 目录仍默认共享 ~/.dsh/mlx/venv(可用 venvDir 覆盖)。/mlx/api 请求体加上 1MB 上限,超限返回 413。0.5.0 是破坏性更新:只支持 DSH 0.1.7 及以后,且模型目录需要手工迁移一次。
DSH 0.1.7 重写了设置架构,插件此前依赖的 settings.installSection 与 settings.get 被整体删除。旧版插件在 0.1.7-rc.2 及 0.2.0-rc.1 上处于半失效状态:设置页不显示「MLX 模型」栏目,启动链(接管外部服务、端口监控、Qwen3 思考强度补全)不再执行——而且全程不报错。本版按新架构重写设置接入,需要 DSH 0.1.7-rc.1 或更高。
升级时请做一次配置迁移。 DSH 取消了 settings.yaml,旧文件已被自动改名为 ~/.dsh/settings.yaml.imported;但本插件当时的 Config 没有 volatile 字段,DSH 导入时跳过了它,所以模型目录没进 profile。请在 profile 的 cordis.patch.yml(如 ~/.dsh/profiles/web/cordis.patch.yml)里补上:
- id: dsh-mlx-local
name: dsh-mlx-local
config:
models:
- id: your-model-id
repo: /绝对路径/或/HF仓库名
name: 显示名
然后重启 DSH。此后在设置页里的改动会正常保存,不用再手工编辑这个文件。
0.4.2 是针对 DSH 0.1.6-alpha.2 的兼容性复核,无破坏性变更。
alpha 标签)与 0.1.5-rc.2 上均可正常加载:具名导入、服务与方法、llm/stream 事件、客户端槽与 __ModuleLoader__ 契约全部未变,无需迁移。dsh.client.inject 原写的 @deepseek-ai/dsh-client-ui-slots 从来不在客户端模块图内(它只是官方包的 devDependency,自身没有 dsh.client 声明),而浏览器端对图里没有的名字会直接跳过、不报错。已改为 slots 服务的真正提供者 @deepseek-ai/dsh-client-ui-renderer。此前「MLX 模型」栏目能正常显示是靠传递依赖与 cordis 服务注入兜住,故升级后无可见行为变化。0.1.6-alpha.x 时 npm 会报 ERESOLVE——这是预发布 semver 规则的固有行为,官方包同样如此,用 --legacy-peer-deps 绕过即可;转正后的 0.1.6 不受影响。0.4.1 是破坏性更新:插件不再注册任何工具。
mlx_* 工具。 0.4.0 的 10 个工具(mlx_status / mlx_list_models / mlx_add_model / mlx_remove_model / mlx_pull_model / mlx_setup / mlx_start / mlx_stop / mlx_switch_model / mlx_chat)整体下线:本插件只负责把本地模型跑起来,服务与模型目录的管理请在设置页完成,不再由智能体代劳。没有需要迁移的调用——原先让智能体做的事,在 设置 → MLX 模型 里都能手动完成。inject 收敛为 ["llm"],不再依赖 tools 服务,peerDependencies 去掉了 @deepseek-ai/dsh-tools;旧设置里残留的 enableTools 会被自动忽略。从 0.3.x 及更早版本升级,还需要知道 0.4.0 的变更:
autoStart 同时删除;旧设置里若残留该字段会被自动忽略,不需要手动改 settings.yaml。0.1.0-rc.x 编写,在 0.1.5-rc.1 上完全无法加载(三个具名导入已被上游移除);同时客户端有服务改名与栏目排序的修复。0.2.x 及更早版本请勿在 0.1.5 上使用。0.3.0–0.3.3 未单独发布,内容已并入 0.4.0。
标准插件的安装/更新/卸载都会改 profile,需要重启 DSH 后生效。从旧版本升级时先移除再安装:
dsh plugin --profile web remove dsh-mlx-local
dsh plugin --profile web add https://github.com/JshGao/dsh-mlx-local/releases/download/v0.5.2/dsh-mlx-local-0.5.2.tgz
然后重启 DSH。模型目录等设置保存在 settings.yaml 中,升级不会丢失。
直接安装:
dsh plugin --profile web add https://github.com/JshGao/dsh-mlx-local/releases/download/v0.5.2/dsh-mlx-local-0.5.2.tgz
如果 DSH 不跟随下载跳转,先手动下载:
curl -L -O https://github.com/JshGao/dsh-mlx-local/releases/download/v0.5.2/dsh-mlx-local-0.5.2.tgz
dsh plugin --profile web add ./dsh-mlx-local-0.5.2.tgz
安装后重启 DSH。
git clone https://github.com/JshGao/dsh-mlx-local.git
cd dsh-mlx-local
npm install
npm run pack
dsh plugin --profile web add ./dsh-mlx-local-0.5.2.tgz
然后重启 DSH。
安装、更新、卸载标准插件会修改 profile,需要重启 DSH 后生效。
local;openai-completions;http://127.0.0.1:8080/v1;mlx-local provider;接入统一使用 DSH 自定义 provider。dsh plugin --profile web remove dsh-mlx-local
然后重启 DSH。插件设置和 ~/.dsh/mlx/ 下的 venv、日志会保留;如需彻底删除,可手动删除 ~/.dsh/mlx/ 和 HuggingFace 缓存。