7d7d:在 DSH Web UI 内生成、同步并游玩小游戏的插件

前言

在 DSH 的插件化使用方式中,模型可以生成 HTML5 或 Flash 小游戏,但要在 DSH Web UI 里直接查看和试玩,还需要入口、静态托管和播放边界。

7d7d 是一个 DSH 游戏门户插件。它在 DSH Web UI 会话标签栏新增 7D7D 标签,点击后打开游戏门户;通过 DSH 主服务器 /7d7d 前缀同源托管游戏静态资源与 API;实时扫描 games/ 目录生成门户清单;支持 HTML5 单文件游戏和 Flash SWF 游戏,并使用固定版本 Ruffle 0.5.0 自托管播放 Flash。

这是什么

7d7d 的许可证为 MIT。仓库路径为 omdsh-dev/7d7d,包名为 @mattheliu/7d7d,版权标注 mattheliu。

它覆盖三个环节:

1、生成:提供 skills/7d7d 技能,让模型按规范生成游戏目录。

2、同步:自动同步仓库 community-games/ 社区游戏,也可手动触发同步。

3、游玩:在 DSH Web UI 中通过 7D7D 标签打开门户,运行本地或社区游戏。

核心能力

  • 在 DSH Web UI 会话标签栏新增 7D7D 标签,点击打开游戏门户。
  • 通过 DSH 主服务器 /7d7d 前缀同源托管游戏静态资源与 API。
  • 实时扫描 games/ 目录生成门户清单,支持本地与社区游戏。
  • 支持 HTML5 单文件游戏,也支持 Flash SWF 游戏。
  • 使用固定版本 Ruffle 0.5.0 自托管播放 Flash,不在运行时加载第三方脚本。
  • 提供 skills/7d7d 技能,让模型按规范生成游戏目录。
  • 自动同步仓库 community-games/ 社区游戏,也可手动触发同步。
  • 游戏运行在不含 allow-same-origin 的 sandbox iframe 中,形成不透明 origin 边界。

安装与启用

前置要求是 Node >= 22 与 pnpm。

该插件必须安装在包含精确 @deepseek-ai/dsh-web-app@0.1.0-rc.6 的 Web Profile 上;裸 Profile 不提供所需服务。package.json 标记 private: true,资料说明不承诺发布为公共 npm 包。

下面按给出的命令与配置片段操作。先克隆仓库并安装依赖:

git clone https://github.com/omdsh-dev/7d7d.git
cd 7d7d
NPM_CONFIG_USERCONFIG=/dev/null pnpm install --frozen-lockfile --ignore-scripts

这一步安装锁定依赖,并跳过 scripts 执行。

接着构建:

pnpm build

这一步产出插件构建结果。

如果包含 Flash 游戏,安装自托管 Ruffle:

pnpm fetch:ruffle

这一步安装固定版本 Ruffle 0.5.0;未安装本地文件时,Flash 播放会显示明确提示,不回退第三方 CDN。

然后接入 Web Profile:把 cordis.patch.yml 的内容并入 Web Profile 层,或使用 dsh.plugin.json 清单安装:

- insert:
  - id: 7d7d
    name: '@mattheliu/7d7d'

重启 dsh web 后,打开任意会话,标签栏出现 7D7D 标签。

典型用法

让模型生成一款小游戏

skills/7d7d/SKILL.md 放进 DSH 的 skills 目录,然后提示:

用 7d7d 做一款「太空射击」小游戏

模型会按规范生成游戏目录。游戏目录规范为:

~/.dsh/7d7d/games/<slug>/
├── game.json
└── index.html

Flash 游戏可在同一目录中放置 game.swf

投稿社区游戏

把游戏目录放进 community-games/<slug>/,运行:

node scripts/update-catalog.mjs

重新生成 catalog.json,一起提 PR。

Flash 与 Ruffle

7d7d 对 Flash 游戏使用固定版本 Ruffle 0.5.0 自托管播放,不在运行时加载第三方脚本。

Flash 游戏需要固定版本 Ruffle 0.5.0。未安装本地文件时会显示明确提示,不回退第三方 CDN。版权上,只能上传自己拥有或已获授权的 SWF,不要扒 7k7k/4399 的商业游戏资产。

安全边界

7d7d 的游戏运行在不含 allow-same-origin 的 sandbox iframe 中,形成不透明 origin 边界。

已核实的安全限制包括:

  • 游戏不能读写 GUI 的 cookie/localStorage。
  • 游戏无法访问 DSH 的 /api 桥接。
  • 独立 loopback 端口模式已废弃。

适用场景与注意

适合以下场景:

  • 在 DSH Web UI 内查看和试玩模型生成的 HTML5 小游戏。
  • 管理本地 games/ 目录中的游戏,并查看社区游戏。
  • 使用固定版本 Ruffle 0.5.0 自托管播放已授权 SWF。

安装前需要注意:

  • 插件声明的权限包括 filesystem:writenetwork:outboundui:extendwebserver:register
  • 插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。
  • 需要 Node >= 22、pnpm,以及包含精确 @deepseek-ai/dsh-web-app@0.1.0-rc.6 的 Web Profile。
  • package.json 标记 private: true,不承诺发布为公共 npm 包。
  • 上传 SWF 需要拥有版权或已获授权。

链接

  • 独立社区目录:https://www.skillhub.cn/plugins/omdsh-dev/7d7d
  • GitHub:https://github.com/omdsh-dev/7d7d
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜