Preface¶
In DSH’s plugin-based usage model, models can generate HTML5 or Flash mini-games. However, to view and play them directly within the DSH Web UI, entry points, static hosting, and playback boundaries are required.
7d7d is a DSH game portal plugin. It adds a 7D7D tab to the DSH Web UI session tab bar; clicking it opens the game portal. It hosts game static assets and APIs same-origin via the DSH main server /7d7d prefix. It scans the games/ directory in real-time to generate the portal catalog. It supports HTML5 single-file games and Flash SWF games, using a pinned version of Ruffle 0.5.0, self-hosted, for Flash playback.
What This Is¶
7d7d is licensed under MIT. The repository path is omdsh-dev/7d7d, the package name is @mattheliu/7d7d, and the copyright notice attributes to mattheliu.
It covers three phases:
- Generation: Provides the
skills/7d7dskill, allowing models to generate game directories according to the specification. - Synchronization: Automatically syncs community games from the
community-games/repository, and can also be triggered manually. - Playback: Open the portal via the 7D7D tab in the DSH Web UI to run local or community games.
Core Capabilities¶
- Adds a 7D7D tab to the DSH Web UI session tab bar; clicking it opens the game portal.
- Hosts game static assets and APIs same-origin via the DSH main server
/7d7dprefix. - Scans the
games/directory in real-time to generate the portal catalog, supporting local and community games. - Supports HTML5 single-file games and Flash SWF games.
- Uses a pinned version of Ruffle 0.5.0, self-hosted, for Flash playback; does not load third-party scripts at runtime.
- Provides the
skills/7d7dskill, allowing models to generate game directories according to the specification. - Automatically syncs community games from the
community-games/repository, and can also be triggered manually. - Games run in a sandboxed iframe without
allow-same-origin, creating an opaque origin boundary.
Installation and Enablement¶
Prerequisites are Node >= 22 and pnpm.
This plugin must be installed on a Web Profile that includes the exact @deepseek-ai/dsh-web-app@0.1.0-rc.6; a bare Profile does not provide the required services. The package.json marks private: true, and the profile description does not promise publication as a public npm package.
Follow the commands and configuration snippets provided below. First, clone the repository and install dependencies:
git clone https://github.com/omdsh-dev/7d7d.git
cd 7d7d
NPM_CONFIG_USERCONFIG=/dev/null pnpm install --frozen-lockfile --ignore-scripts
This step installs locked dependencies and skips script execution.
Next, build:
pnpm build
This step produces the plugin build output.
If Flash games are included, install the self-hosted Ruffle:
pnpm fetch:ruffle
This step installs the pinned version Ruffle 0.5.0; if local files are not installed, Flash playback will show a clear message and will not fall back to third-party CDNs.
Then, integrate into the Web Profile: merge the contents of cordis.patch.yml into the Web Profile layer, or install using the dsh.plugin.json manifest:
- insert:
- id: 7d7d
name: '@mattheliu/7d7d'
After restarting dsh web, open any session, and the 7D7D tab will appear in the tab bar.
Typical Usage¶
Have the Model Generate a Mini-Game¶
Place skills/7d7d/SKILL.md into DSH’s skills directory, then prompt:
Use 7d7d to create a "Space Shooter" mini-game
The model will generate the game directory according to the specification. The game directory specification is:
~/.dsh/7d7d/games/<slug>/
├── game.json
└── index.html
For Flash games, place game.swf in the same directory.
Submit Community Games¶
Place the game directory into community-games/<slug>/, then run:
node scripts/update-catalog.mjs
Regenerate catalog.json and submit a PR together.
Flash and Ruffle¶
7d7d uses a pinned version of Ruffle 0.5.0, self-hosted, for Flash game playback and does not load third-party scripts at runtime.
Flash games require the pinned Ruffle 0.5.0. A clear message will be shown if local files are not installed; there is no fallback to third-party CDNs. Regarding copyright, only upload SWFs you own or are authorized to use; do not extract commercial game assets from sites like 7k7k/4399.
Security Boundaries¶
7d7d games run in a sandboxed iframe without allow-same-origin, creating an opaque origin boundary.
Verified security restrictions include:
- Games cannot read or write the GUI’s cookies/localStorage.
- Games cannot access DSH’s
/apibridge. - The standalone loopback port mode is deprecated.
Applicable Scenarios and Notes¶
Suitable for the following scenarios:
- Viewing and trying out model-generated HTML5 mini-games within the DSH Web UI.
- Managing games in the local
games/directory and viewing community games. - Self-hosted playback of authorized SWFs using the pinned Ruffle 0.5.0.
Points to note before installation:
- The plugin’s declared permissions include
filesystem:write,network:outbound,ui:extend,webserver:register. - The plugin runs with the current dsh process permissions; inspect the source code and license before installation.
- Requires Node >= 22, pnpm, and a Web Profile containing the exact
@deepseek-ai/dsh-web-app@0.1.0-rc.6. - The
package.jsonmarksprivate: true; publication as a public npm package is not promised. - Uploading SWFs requires ownership or authorization.
Links¶
- Independent Community Directory: https://www.skillhub.cn/plugins/omdsh-dev/7d7d
- GitHub: https://github.com/omdsh-dev/7d7d