连接本地 MoE4All 服务并安全管理后端进程
29.8/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/29 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Headmaster218/dsh-llm-moe4all该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · model
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 34 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/9/30) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 91 处,展示前 67 条)
- 发起网络请求lib/client.js:1022
const response = await fetch(path, { - 发起网络请求lib/client.js:2362
constructor(fetcher = (input, init) => fetch(input, init), delay = (milliseconds) => new Promise((resolve) => setTimeout(resolve, milliseconds)), requ - 发起网络请求lib/client.js:2378
const response = await this.request(path, init); - 发起网络请求lib/client.js:2390
const response = await this.request("/dsh-market/api/v1/capabilities"); - 发起网络请求lib/client.js:2476
constructor(fetcher = (input, init) => fetch(input, init)) { - 写入剪贴板lib/client.js:2582
navigator.clipboard.writeText(draft).then(() => { - 写入剪贴板lib/client.js:4192
navigator.clipboard.writeText(output).then(() => setCopied(true)).catch((error) => w.setError(String(error))); - 发起网络请求lib/engine-controller.js:124
const response = await fetch(healthUrl(endpoint), { - 读取本地文件lib/engine-controller.js:139
await access(candidate, fsConstants.F_OK); - 执行外部命令来自配置/变量lib/engine-controller.js:183
const child = spawn(executable, arguments_, { - 执行外部命令来自配置/变量lib/engine-controller.js:714
this.child = spawn(executable, sessionCacheArguments(arguments_, environment), { - 执行外部命令固定命令lib/engine-release.js:50
const child = spawn('powershell.exe', [ - 读取本地文件lib/engine-release.js:123
for (const entry of await readdir(directory, { withFileTypes: true })) { - 读取本地文件lib/engine-release.js:142
const input = createReadStream(path); - 读取本地文件lib/engine-release.js:151
await access(path, fsConstants.F_OK); - 发起网络请求lib/engine-release.js:219
const response = await this.dependencies.fetch(RELEASE_API, { - 发起网络请求lib/engine-release.js:232
const page = await this.dependencies.fetch(RELEASE_LATEST_PAGE, { - 读取本地文件lib/engine-release.js:256
const value = JSON.parse(await readFile(this.metadataPath, 'utf8')); - 读取本地文件lib/engine-release.js:278
for (const entry of await readdir(releasesRoot, { withFileTypes: true })) { - 读取本地文件lib/engine-release.js:289
const details = await stat(directory); - 写入本地文件lib/engine-release.js:342
await mkdir(this.root, { recursive: true }); - 写入本地文件lib/engine-release.js:377
await mkdir(releasesRoot, { recursive: true }); - 写入本地文件lib/engine-release.js:384
await mkdir(staging, { recursive: true }); - 发起网络请求lib/engine-release.js:389
const checksumResponse = await this.dependencies.fetch(release.checksum.browser_download_url, { - 删除本地文件递归lib/engine-release.js:402
await rm(staging, { recursive: true, force: true }); - 写入本地文件lib/engine-release.js:439
await mkdir(staging, { recursive: true }); - 删除本地文件递归lib/engine-release.js:453
await rm(staging, { recursive: true, force: true }); - 删除本地文件递归lib/engine-release.js:477
await rm(target, { recursive: true, force: true }); - 删除本地文件lib/engine-release.js:480
await rm(this.metadataPath, { force: true }); - 发起网络请求lib/engine-release.js:506
const response = await this.dependencies.fetch(release.archive.browser_download_url, { - 写入本地文件lib/engine-release.js:546
await mkdir(extracted, { recursive: true }); - 写入本地文件lib/engine-release.js:555
await mkdir(dirname(target), { recursive: true }); - 删除本地文件递归lib/engine-release.js:557
await rm(target, { recursive: true, force: true }); - 读取本地文件lib/model-download.js:130
return (await stat(path)).size; - 读取本地文件lib/model-download.js:138
await access(path, fsConstants.F_OK); - 写入本地文件lib/model-download.js:209
await mkdir(outputDirectory, { recursive: true }); - 发起网络请求lib/model-download.js:239
let response = await this.dependencies.fetch(item.url, { - 发起网络请求lib/model-download.js:246
response = await this.dependencies.fetch(item.url, { - 写入本地文件lib/model-download.js:275
await rename(partial, target); - 发起网络请求lib/model-provider.js:40
const response = await fetch(url, { - 读取本地文件lib/plugin-release-update.js:65
const stream = createReadStream(file); - 读取本地文件lib/plugin-release-update.js:131
this.runningVersion = options.runningVersion ?? manifest(readFileSync(new URL('../package.json', import.meta.url))).version; - 读取本地文件lib/plugin-release-update.js:137
const profile = manifest(await readFile(join(target.profileDirectory, 'package.json'))); - 读取本地文件lib/plugin-release-update.js:142
const installed = manifest(await readFile(packageFile)); - 读取本地文件lib/plugin-release-update.js:143
const actualRoot = await realpath(dirname(packageFile)); - 读取本地文件lib/plugin-release-update.js:144
const inside = relative(await realpath(join(target.profileDirectory, 'node_modules')), actualRoot); - 写入本地文件lib/plugin-release-update.js:286
await mkdir(directory, { recursive: true }); - 写入本地文件lib/plugin-release-update.js:288
await writeFile(`${staged}.partial`, archive); - 写入本地文件lib/plugin-release-update.js:289
await rename(`${staged}.partial`, staged); - 删除本地文件lib/plugin-release-update.js:309
await rm(lockPath); - 写入本地文件lib/plugin-release-update.js:323
await writeFile(retained, await readFile(oldArchive)); - 写入本地文件lib/plugin-release-update.js:325
await writeFile(join(directory, 'package.before.json'), packageBytes); - 写入本地文件lib/plugin-release-update.js:326
await writeFile(join(directory, 'pnpm-lock.before.yaml'), lockBytes); - 删除本地文件lib/plugin-release-update.js:381
await rm(lockPath, { force: true }); - 执行外部命令来自配置/变量lib/plugin-release-update.js:435
const child = spawn(process.execPath, [resolve(entry), 'plugin', '--profile', profile, ...args], { - 执行外部命令固定命令lib/plugin-release-update.js:451
spawn('taskkill', ['/pid', String(child.pid), '/t', '/f'], { windowsHide: true, stdio: 'ignore' }); - 发起网络请求lib/network-fetch.js:68
agent = new ProxyAgent(url); - 发起网络请求lib/network-fetch.js:80
direct = await fetch(input, init); - 发起网络请求lib/network-fetch.js:97
return await fetch(input, proxyInit); - 读取本地文件lib/model-files.js:102
entries = await beforeDeadline(readdir(current.directory, { withFileTypes: true }), deadline); - 读取本地文件lib/model-files.js:120
result.set(path.toLowerCase(), { path, size: (await beforeDeadline(stat(path), deadline)).size }); - 读取本地文件lib/model-files.js:135
const details = await stat(directory).catch((error) => { - 读取本地文件lib/model-files.js:152
const details = await stat(path); - 读取本地文件lib/model-files.js:220
const info = await stat(absolute); - 读取本地文件lib/model-files.js:249
const info = await stat(path); - 发起网络请求lib/native-file-picker.js:21
const response = await fetch(new URL(kind === 'engine' ? '/pick-engine' : '/pick-model', bridge), { - 执行外部命令来自配置/变量lib/native-file-picker.js:75
const child = spawn(command.executable, command.arguments, {
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-llm-pi-ai@deepseek-ai/dsh-settings@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 连接本地引擎服务
- 管理后端进程
DeepSeek Harness 的本地 MoE4All 引擎服务商。
README
由 DeepSeek 最新模型翻译生成dsh-llm-moe4all
dsh-llm-moe4all 用于把 DeepSeek Harness 连接到 MoE4All OpenAI 兼容服务,并可在配置好可执行文件和参数后安全地管理本地后端进程。
聊天、工具调用、图片、思考块、重试和历史回放兼容性由 DSH 自带的 @deepseek-ai/dsh-llm-pi-ai 负责。本插件只负责端点与模型发现、受保护的本地启动、健康检查和关闭,因此能尽量兼容不同 DSH 版本。
English documentation: README.md
兼容版本
- 已安装基线:DSH Desktop 0.6.3 内置的 DSH 0.1.1-rc.2。
- 当前 npm latest:DSH 0.1.5-rc.3。
- 声明的兼容范围同时覆盖已知的 0.1.7 预发布版本线。
- 需要 Node.js 20 或更高版本。
安装
开发阶段从 GitHub 安装:
dsh plugin --profile web add github:Headmaster218/dsh-llm-moe4all
发布 npm 后安装:
dsh plugin --profile web add dsh-llm-moe4all
默认端点是 http://127.0.0.1:8080/v1。
展开完整文档(README 剩余 1 节)
dsh-llm-moe4all dsh-llm-moe4all 用于把 DeepSeek Harness 连接到 MoE4All OpenAI 兼容服务,并可在配置好可执行文件和参数后安全地管理本地后端进程。 聊天、工具调用、图片、思考块、重试和历史回放兼容性由 DSH 自带的 @deepseek-ai/dsh-llm-pi-ai 负责。本插件只负责端点与模型发现、受保护的本地启动、健康检查和关闭,因此能尽量兼容不同 DSH 版本。 English documentation: README.md 兼容版本 - 已安装基线:DSH Desktop 0.6.3 内置的 DSH 0.1.1-rc.2。 - 当前 npm latest:DSH 0.1.5-rc.3。 - 声明的兼容范围同时覆盖已知的 0.1.7 预发布版本线。 - 需要 Node.js 20 或更高版本。 安装 开发阶段从 GitHub 安装: dsh plugin --profile web add github:Headmaster218/dsh-llm-moe4all 发布 npm 后安装: dsh plugin --profile web add dsh-llm-moe4all 默认端点是 http://127.0.0.1:8080/v1。插件会读取 /v1/models,过滤 Embedding 模型,并在内存中更新 DSH 已有的 llm-pi-ai 适配器。因此模型 ID 会自动保持准确,也不会持久化第二份适配器配置。 引擎模式 - connect(默认):只连接已经运行的服务,从不启动进程。 - auto:优先复用健康的服务,否则考虑启动已配置的可执行文件。仅当 RAM 和实时 VRAM 都严格超过 50% 空闲时,才会无人值守地启动。 - managed:行为与 auto 类似,但配置不完整会记录为错误。 每次启动前,插件都会从操作系统进程列表检查 infr.exe、moe4all.exe 和配置的可执行文件名。即使已有进程监听的是其他 IP 或端口,也不会再启动第二个实例。RAM 或 VRAM 不足一半空闲时,插件会暂停并通过 DSH Desktop/Electron 对话框询问;Windows 下还有原生对话框回退。没有可用确认界面时保持停止。 只有同时配置 executable 和 arguments 后才会自动启动。这可以避免未配置的 infr.exe 在 DSH 内部打开交互式启动向导。 插件配置覆盖示例: - id: moe4all-engine config: mode: auto host: 127.0.0.1 port: 1234 executable: D:\AIinfr\infr\target\release\infr.exe arguments: - serve - --dev - Vulkan1 - --ctx - 160k - D:\Models\model.gguf workingDirectory: D:\AIinfr\infr 也可以通过 MOE4ALL_ENGINE 环境变量指定可执行文件。两者都未设置时,插件还会检查包内 engine/infr.exe、工作目录和 PATH。 host、port、protocol 和 apiBasePath 可以分别配置;高级字段 endpoint 非空时会覆盖这四项。默认只允许回环地址,仅在明确连接远程服务时设置 allowRemoteEndpoint: true。远程端点只用于连接,绝不会触发本地进程启动。API key 的值不会写进插件配置,apiKeyEnv 只填写已有环境变量的名称。 安全行为 - 安装阶段不下载文件,也不执行进程。 - 子进程使用 shell: false 直接启动。 - 除非显式开启,否则只访问本机回环地址。 - 不依赖端口,通过进程身份阻止重复启动引擎。 - 无人值守本地启动要求 RAM 和 VRAM 都严格超过 50% 空闲。 - 插件配置不会保存 API key 的值。 - 插件启动的进程默认会在插件卸载时停止。 开发 npm install npm run check 许可证 Apache-2.0,详见 LICENSE 和 NOTICE。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Headmaster218/dsh-llm-moe4all
连接本地 MoE4All 服务并安全管理后端进程
相关插件 · 模型接入
API 中继安全审计toby-bridges/api-relay-audit
面向 AI API 中转与 LLM 代理的本地安全审计。
★ 897已汉化DSH
69.4
免费搜索插件DDDMUC/dsh-free-search
DeepSeek Harness 免费搜索插件 —— 无需 API key,零成本,多引擎可切换。 一个给…
★ 761已汉化DSH
68.7
免费联网搜索liustack/modsearch
在官方 App 里模型能联网,切到 API 就不能了。ModSearch 把联网补回来:网页搜索、X…
★ 863已汉化DSH
68.5
OpenCode 免费模型FishBottle7/opencode2dsh
在 DSHDeepSeek Harness里原生使用 OpenCode Zen 的免费匿名模型。
★ 379已汉化DSH
67.8
AI 模型网关tingly-dev/tingly-box
Tingly Box Web UI 演示
★ 373已汉化DSH
67.4
WorkBuddy 账号池XDTrees/dsh-xdpool
把你能白嫖的模型额度接进 DSH 同一个池:WorkBuddy 多账号自动容错、十三家扫码登录、76…
★ 359已汉化DSH
67.1