🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

插件管理器 p83765295-sys/gamelike-plugin-manage

DeepSeek Harness
p83765295-sys80 天前有提交已提供中文文档扫描:含敏感能力

安装卸载更新插件,分组打包一键迁移

27.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add p83765295-sys/gamelike-plugin-manage
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · market
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/09/26·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/05·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 80 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 116 处,展示前 68 条)
  • 发起网络请求
    src/client/bundle.js:405
    return fetch(API + path, {
  • 发起网络请求
    src/client/bundle.js:751
    fetch(API + '/install-tgz', {
  • 发起网络请求
    src/client/bundle.js:1163
    fetch(API + '/export-pack' + qs)
  • 读取本地文件
    src/gateway.ts:154
    if (!existsSync(filePath)) throw new Error('导出文件不存在: ' + filePath)
  • 读取本地文件
    src/gateway.ts:155
    const size = statSync(filePath).size
  • 读取本地文件
    src/gateway.ts:161
    const stream = createReadStream(filePath)
  • 写入本地文件
    src/groups.ts:29
    mkdirSync(dirname(path), { recursive: true })
  • 写入本地文件
    src/groups.ts:31
    writeFileSync(tmp, text, 'utf8')
  • 写入本地文件
    src/groups.ts:33
    renameSync(tmp, path)
  • 删除本地文件
    src/groups.ts:36
    rmSync(path, { force: true })
  • 写入本地文件
    src/groups.ts:37
    renameSync(tmp, path)
  • 读取本地文件
    src/groups.ts:43
    const text = readFileSync(path, 'utf8')
  • 执行外部命令来自配置/变量
    src/installer.ts:89
    return execFileSync(resolveCmd(cmd), args, {
  • 读取本地文件
    src/installer.ts:123
    if (!existsSync(path)) throw new Error(`目录中没有 package.json: ${dir}`)
  • 读取本地文件
    src/installer.ts:124
    const pkg = JSON.parse(readFileSync(path, 'utf8')) as {
  • 读取本地文件
    src/installer.ts:176
    if (existsSync(full) && lstatSync(full).isFile()) return full
  • 读取本地文件
    src/installer.ts:176
    if (existsSync(full) && lstatSync(full).isFile()) return full
  • 读取本地文件
    src/installer.ts:189
    if (!existsSync(join(local, 'package.json'))) return
  • 执行外部命令固定命令
    src/installer.ts:195
    try { globalRoot = execFileSync('npm', ['root', '-g'], { encoding: 'utf8' }).trim() } catch { }
  • 读取本地文件
    src/installer.ts:202
    if (!existsSync(hostBinary) || !loadable(hostBinary)) continue
  • 删除本地文件递归
    src/installer.ts:207
    rmSync(local, { recursive: true, force: true })
  • 写入本地文件
    src/installer.ts:212
    mkdirSync(join(local, 'build', 'Release'), { recursive: true })
  • 写入本地文件
    src/installer.ts:213
    copyFileSync(hostBinary, join(local, 'build', 'Release', 'pty.node'))
  • 写入本地文件
    src/installer.ts:729
    mkdirSync(unpack, { recursive: true })
  • 写入本地文件
    src/installer.ts:733
    writeFileSync(tgzPath, buffer)
  • 删除本地文件递归
    src/installer.ts:739
    rmSync(unpack, { recursive: true, force: true })
  • 写入本地文件
    src/installer.ts:740
    mkdirSync(unpack, { recursive: true })
  • 删除本地文件递归
    src/installer.ts:750
    rmSync(dest, { recursive: true, force: true })
  • 写入本地文件
    src/installer.ts:751
    mkdirSync(dirname(dest), { recursive: true })
  • 删除本地文件递归
    src/installer.ts:758
    rmSync(work, { recursive: true, force: true })
  • 删除本地文件递归
    src/installer.ts:787
    rmSync(target, { recursive: true, force: true })
  • 删除本地文件递归
    src/installer.ts:819
    rmSync(target, { recursive: true, force: true })
  • 读取本地文件
    src/presets.ts:46
    if (existsSync(marker)) return
  • 写入本地文件
    src/presets.ts:47
    writeFileSync(marker, JSON.stringify({ format: 0, owners: [...new Set(owners.filter(Boolean))] }, null, 2) + '\n', 'utf8')
  • 读取本地文件
    src/presets.ts:61
    if (existsSync(marker)) {
  • 读取本地文件
    src/presets.ts:62
    const record = JSON.parse(readFileSync(marker, 'utf8')) as { owners?: unknown; owner?: unknown }
  • 读取本地文件
    src/presets.ts:65
    for (const file of readdirSync(presetDir)) {
  • 读取本地文件
    src/presets.ts:68
    const record = JSON.parse(readFileSync(join(presetDir, file), 'utf8')) as { owner?: unknown; owners?: unknown }
  • 写入本地文件
    src/profile.ts:21
    mkdirSync(dirname(path), { recursive: true })
  • 写入本地文件
    src/profile.ts:23
    writeFileSync(tmp, text, 'utf8')
  • 写入本地文件
    src/profile.ts:25
    renameSync(tmp, path)
  • 删除本地文件
    src/profile.ts:28
    rmSync(path, { force: true })
  • 写入本地文件
    src/profile.ts:29
    renameSync(tmp, path)
  • 读取本地文件
    src/profile.ts:34
    if (!existsSync(path)) return
  • 写入本地文件
    src/profile.ts:36
    copyFileSync(path, path + '.bak')
  • 读取本地文件
    src/profile.ts:57
    const data = JSON.parse(readFileSync(path, 'utf8')) as ProfilePackage
  • 读取本地文件
    src/profile.ts:105
    if (!existsSync(path)) return emptyPatchDocument()
  • 读取本地文件
    src/profile.ts:106
    const text = readFileSync(path, 'utf8')
  • 读取本地文件
    src/profile.ts:159
    if (!existsSync(path)) return ids
  • 读取本地文件
    src/profile.ts:177
    if (!existsSync(path)) return ids
  • 执行外部命令来自配置/变量
    src/restart.ts:140
    const child = spawn(process.execPath, ['-e', helperCode], {
  • 读取本地文件
    src/restart.ts:153
    const systemdRun = process.platform === 'linux' && existsSync('/usr/bin/systemd-run') ? '/usr/bin/systemd-run' : ''
  • 执行外部命令来自配置/变量
    src/restart.ts:156
    ? spawn(systemdRun, ['--scope', `--unit=plugin-manage-restart-${stamp}`, '--', process.execPath, '-e', helperCode], {
  • 写入本地文件
    src/service.ts:651
    mkdirSync(dirname(paths.aiRequestPath), { recursive: true })
  • 写入本地文件
    src/service.ts:652
    writeFileSync(paths.aiRequestPath, JSON.stringify(request, null, 2) + '\n')
  • 读取本地文件
    src/store.ts:66
    entries = readdirSync(d)
  • 读取本地文件
    src/store.ts:74
    const st = lstatSync(child)
  • 读取本地文件
    src/store.ts:87
    hash.update(readFileSync(join(root, rel)))
  • 读取本地文件
    src/store.ts:96
    const data = JSON.parse(readFileSync(registryPath(paths, name), 'utf8')) as {
  • 读取本地文件
    src/store.ts:112
    if (reg.sha256 === sha256 && existsSync(join(reg.dir, 'package.json'))) return reg.dir
  • 写入本地文件
    src/store.ts:119
    mkdirSync(dir, { recursive: true })
  • 写入本地文件
    src/store.ts:120
    writeFileSync(
  • 写入本地文件
    src/store.ts:128
    mkdirSync(dest, { recursive: true })
  • 读取本地文件
    src/store.ts:131
    entries = readdirSync(src)
  • 写入本地文件
    src/store.ts:143
    mkdirSync(dirname(target), { recursive: true })
  • 写入本地文件
    src/store.ts:144
    copyFileSync(child, target)
  • 删除本地文件递归
    src/store.ts:178
    rmSync(altDir, { recursive: true, force: true })
  • 删除本地文件递归
    src/store.ts:184
    rmSync(target, { recursive: true, force: true })
扫描于 2026/11/5(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/cordis-plugin-loader@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-home-paths@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 插件安装卸载更新
  • 插件包导入导出
  • Agent预设清理

DSH 插件管理器:设置→插件管理。插件安装/卸载/禁用/更新,插件包导入导出,Agent 预设清理。

README

由 DeepSeek 最新模型翻译生成
gamelike-plugin-manage gamelike-plugin-manage DSH 插件管理器:入口位于 设置 → 插件管理。提供插件树管理、插件安装、插件分组与插件包导出。本项目可以帮你查看、禁用、启用、卸载、更新 DSH 插件,批量安装第三方插件,打包/迁移插件集合,并在禁用或卸载插件时清理其自带的本地 Agent 预设。 面向用户:本文是安装与使用教程。开发者文档见 DEVELOPER.md。 搜索关键词:DSH 插件管理 · DeepSeek Harness plugin manager · 插件安装 · 插件卸载 · 插件更新 · 插件包 · plugin pack · Agent preset 管理 · 插件分组 · 整组启停 · settings plugins · cordis loader · dsh-plugin · tgz 快速上手 1. 先把本插件安装进 DSH(发布包 .tgz、GitHub 地址或本地目录均可,见下方安装方式)。 2. 打开 设置 → 插件管理。
展开完整文档(README 剩余 1 节)
gamelike-plugin-manage

gamelike-plugin-manage

DSH 插件管理器:入口位于 设置 → 插件管理。提供插件树管理、插件安装、插件分组与插件包导出。本项目可以帮你查看、禁用、启用、卸载、更新 DSH 插件,批量安装第三方插件,打包/迁移插件集合,并在禁用或卸载插件时清理其自带的本地 Agent 预设。

面向用户:本文是安装与使用教程。开发者文档见 DEVELOPER.md。

搜索关键词:DSH 插件管理 · DeepSeek Harness plugin manager · 插件安装 · 插件卸载 · 插件更新 · 插件包 · plugin pack · Agent preset 管理 · 插件分组 · 整组启停 · settings plugins · cordis loader · dsh-plugin · tgz

快速上手

1. 先把本插件安装进 DSH(发布包 .tgz、GitHub 地址或本地目录均可,见下方安装方式)。
2. 打开 设置 → 插件管理。
3. 按页签使用:

| 页签 | 怎么用 |
| 管理插件 | 搜索 / 按来源过滤插件;禁用 / 启用直接写 patch 并热应用、立即生效;卸载写入待重启队列,点「重启 DSH」后生效,未重启前可取消卸载 |
| 插件安装 | 任选本地目录、拖拽 .tgz、GitHub 地址或 npm 指令;下方任务面板实时显示进度,失败可「交给 AI 配置」 |
| 开发插件 | 占位,后续开放 |
| 插件包 | ① 勾选插件并命名,创建插件包(一个插件可属于多个包);② 查看已有插件包,可整包启用/禁用;③ 导出 .tgz 到其他机器,导入后自动恢复插件包与成员状态 |

三个常用流程

- 安装一个插件:插件安装 → 拖入 .tgz(或填路径/地址)→ 等任务显示成功。
- 暂时停用一个插件:管理插件 → 找到该插件 → 禁用,立即生效;再次点击启用即可恢复。
- 把一组插件搬到另一台机器:插件包 → 创建插件包并勾选成员 → 导出 .tgz → 目标机器 插件安装 拖入该包。

功能

| 模块 | 说明 |
| 管理插件 | 查看运行中的全部插件;原生 / 用户 / 临时注入分类;禁用 / 启用热应用立即生效;卸载仅限用户插件并待重启;卸载/更新待重启时可一键重启 DSH |
| 插件安装 | 本地目录、拖拽 .tgz、GitHub 地址或 npm 指令;安装队列 + 进度;失败任务可「交给 AI 配置」 |
| 开发插件 | 占位,后续开放 |
| 插件包 | 将已安装的用户插件(无论启用/禁用)加入分组,导出为 .tgz 插件包(可折叠选择要导出的现有分组);安装插件包后自动恢复分组 |

分组

- 分组是引用集合(tag):一个插件可以同时属于多个分组。
- 分组会显示在「管理插件」列表,可一键「整组启用 / 整组禁用」。
- 分组与期望状态(enabled / disabled / as-is)会随插件包导出,并在安装时恢复。
- 同一插件出现在多个选中分组/多个插件包时,导出端只内嵌一份,导入端按身份去重。

安装到 DSH

任选一种:

1. 插件安装 Tab → 拖拽 .tgz:适合安装已导出的插件包。
2. GitHub 地址:输入 https://github.com//(自动 clone + 构建)。
3. npm 指令:输入 npm install 或包名(自动 npm pack 后安装)。
4. 本地目录:输入项目目录(含 package.json 与 lib/;若缺少 lib/ 且勾选「允许执行构建脚本」会尝试构建)。

插件包格式(dsh-plugin-pack@2)

导出的 .tgz 解包结构:

.tgz
├── package.json # 声明 dsh.pack.format = dsh-plugin-pack@2 ├── manifest.yml # 分组、期望状态、插件清单(name / path / version / sha256) └── plugins// # 插件目录本体(不含 node_modules / .git)

导入时:

1. 逐成员校验 sha256(内容被篡改直接拒绝);
2. 吸收进内容寻址 PluginStore(~/.dsh/plugin-store//-),同内容交集复用同一实体;
3. 构建包级装配计划(InstallPlan),逐成员裁决;
4. 通过预检的成员写入 profile bundles(立即装配并持久化),任一成员装配失败则本包整体回滚;
5. 分组恢复到「管理插件」;
6. 按分组期望状态为运行中的插件写入待重启状态(重启后生效)。

兼容性:仍可导入 dsh-plugin-pack@1 旧包(无 version/sha256 声明时不校验内容,按包名判断交集)。

交集裁决规则

| 交集类型 | 裁决 |
| 同 name + 同 version + 同 sha256(安全交集) | 跳过,复用已装实体 |
| 同 name + 同 version + 不同 sha256(内容冲突) | 拒绝安装该成员,不静默覆盖 |
| 同 name + 不同 version(版本冲突) | 拒绝安装该成员,提示先卸载旧版或使用更新 |
| entry id / bundle patch id 被其它插件占用 | 拒绝安装该成员 |
| patch 顶层存在 disabled 覆盖(旧卸载意图) | 显式重新安装时清除覆盖,按包内版本装配 |
| 包内同 name 重复出现 | 只吸收一次(导出端已 seen 去重) |

开发与 API

构建、架构说明、模块职责与 HTTP API 清单见 DEVELOPER.md。

安全策略

- 安装第三方仓库时,不执行其自带的 install.ps1 / install.sh / git hooks。
- 依赖安装使用 npm install --ignore-scripts(不执行生命周期脚本)。
- 默认拒绝执行构建脚本;仅当用户勾选「允许执行构建脚本」后才运行 npm rebuild / npm run build。
- git clone 使用 --depth 1,失败自动清理残留。

免责声明
- 本项目不是 DeepSeek 官方产品,与 DeepSeek 无隶属或背书关系。
- 本软件按「现状」提供,不附带任何明示或默示的保证,包括但不限于适销性、特定用途适用性与不侵权的保证。
- 插件安装/更新、禁用/启用、卸载、重启 DSH、删除本地 Agent 预设等操作会修改 DSH 配置、进程或本地文件;使用前请确认操作内容,并自行备份重要配置与数据。
- 在适用法律允许的最大范围内,作者不对因使用或无法使用本软件而产生的任何直接、间接、附带、特殊或后果性损失承担责任。
- 使用本软件即表示你已知悉并接受上述风险。

许可证

MIT
预览分享卡片长什么样 ↓p83765295-sys/gamelike-plugin-manage
分享 · DeepSeek Harness Hub
p83765295-sys/gamelike-plugin-manage

安装卸载更新插件,分组打包一键迁移

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部