Introduction¶
If you have tried “getting an agent to write a little something” with DeepSeek Harness (DSH), you have likely encountered two things: the agent generates a bunch of code or Markdown, and you can’t play it immediately; or you want the visuals to look better, so you have to prepare art assets yourself, adjust sizes, and align styles. DSH’s solution is plugin-based—packing generation, preview, playtesting, and export into a plugin for the agent to call, rather than letting it go wild.
DSH Game Studio is exactly such a plugin, maintained by ZSeven-W, package name @zseven-w/dsh-game-studio. It is categorized as a lightweight play direction like “Fun Dress-up” in the community directory, licensed under MIT, with the current plugin version 0.1.0-rc.2, and tested on DSH 0.2.1-rc.5. It solves a very specific problem: you describe a small game in one sentence, the agent generates it from a template, automatically plays it to confirm it runs, renders it in real-time in the sidebar for you, and later allows you to replace AI-generated art by ID, finally exporting it into an offline HTML.
Below, we introduce it sequentially by function, installation, usage, and precautions.
What is it¶
One-sentence positioning: DSH Game Studio is a DSH plugin that takes a sentence describing a game and outputs a playable game.
It is targeted at two groups of people: first, agent users who want to get a playable thing directly in the conversation and don’t want to leave the terminal to open an editor; second, people who want a lightweight game prototype tool that can be repeatedly modified by an agent, has version history to roll back, and can be delivered as a single file. It is not a game engine, and it is not suited for projects requiring complex physics, multiplayer online connectivity, or asset pipelines.
Core Features¶
Start with two templates¶
The plugin comes with two built-in templates: 2D top-down view (collector) and a 3D voxel world with the same gameplay logic (voxel, based on three.js). After the agent gets a sentence, they modify the character, rules, levels, and interface; they don’t write rendering from scratch. In other words, if you are looking for gameplay like “collection + dodging,” the template hit rate is very high; other types can be done, but require more iterations.
Sidebar real-time preview¶
The game runs in a sandbox iframe next to the conversation. Every change triggers a rebuild and refresh of the preview. The panel lists art slots, candidate images, and versions at the bottom. Landscape games use a wide stage. This is the biggest difference between this and “letting an agent generate an HTML file and open it yourself”: you can see the results while editing the code.
AI art, approve before spending¶
The character is initially a model drawn by code. To get official art, game_studio_generate_asset uses the OpenAI image interface or local Codex CLI to generate 1–4 numbered candidate images per slot, with optional reference images. Before incurring any cost, an approval card pops up detailing the service, quantity, and estimated cost; it only executes after your approval. Images you attach to the chat can serve as reference images.
Auto playtest¶
game_studio_playtest runs the latest code in a UI-less Chrome or Edge, reporting stage, high score, remaining lives, frame rate, script errors, and screenshots. Games that don’t rely on arrow keys for operation (grid-based, card, aiming, rhythm) need window.__autoplay to define autopilot logic for the playtest to reach the real gameplay loop. This is the verification step between “the agent says it’s done” and “it is actually playable.”
Version and Export¶
Every build that changes the game is saved as a version. game_studio_restore_version reverts code, rules, and art together. game_studio_export generates an offline, self-contained HTML file openable in any browser, and can be placed on any static hosting. game_studio_share opens a temporary read-only link on the local network, displaying a QR code in the sidebar, suitable for playtesting on a phone.
Installation and Enablement¶
Install the plugin to the profile in DSH, then start the web client:
dsh plugin --profile web add @zseven-w/dsh-game-studio@latest
dsh web
Environment requirements:
- DeepSeek Harness
0.2.1or newer (web or desktop version) - Node.js
24.11or newer (theenginesdeclaration in package.json is>=24.11.0) - Google Chrome or Microsoft Edge installed on the same computer, used for auto playtest
Image generation is optional: without an OpenAI API key and no login to Codex, the game still runs with code-drawn characters. To install AI art, choose one of the following two:
| Service | What is needed | Description |
|---|---|---|
| OpenAI (GPT Image) | DSH credentials or key in environment variables (default OPENAI_API_KEY) |
Pay-per-image, approval card shows estimate; openaiBaseUrl can point to a gateway compatible with OpenAI |
| Codex CLI | Installed and logged into Codex (codex login) |
Counted towards Codex subscription quota, no API key needed; takes a few minutes per image, runs in the background |
Configuration is written under config in cordis.patch.yml of the profile. Common options:
| Option | Default | Meaning |
|---|---|---|
imageProvider |
auto |
auto, openai, or codex; auto uses OpenAI if there is an OpenAI key, otherwise uses Codex |
openaiModel |
gpt-image-2.5-flare |
OpenAI image model |
openaiBaseUrl |
OpenAI | API address compatible with OpenAI |
openaiCredential |
OPENAI_API_KEY |
Credential name or environment variable name storing the key |
codexPath |
Found from PATH or login shell |
Codex CLI executable file |
codexReasoningEffort |
low |
Codex image generation reasoning intensity |
confirmSpending |
true |
Request approval before every generation |
Typical Usage¶
Open a session in a workspace folder, directly use natural language to state requirements, no need to remember tool names:
Make a small game: a kitten steals fish jerky in the kitchen, don't get hit by the robot vacuum.Make a 3D small game: a little knight collects coins in a castle, avoiding skeleton soldiers, collecting 20 coins in 60 seconds counts as victory.Make a match-3 game: swap adjacent gems in a 6x6 grid, get 1000 points in 60 seconds to win.
You can continue in the same session afterwards:
Use AI to generate 2 new pieces of art for the protagonist, I will pick them in the right column.Draw the protagonist based on this image I attached.Export it into an HTML file.
The buttons for app, undo, build, export, restore, and share in the sidebar call the same batch of operations via the /game-studio command. This means manual buttons and agent calls follow the same logic and do not have separate implementations.
The agent actually calls 10 tools, the main ones:
| Tool | Function |
|---|---|
game_studio_create |
Create a game from a template; parameters include title, art style, orientation (portrait or landscape), and slots (game’s own art slots, named in the user’s language) |
game_studio_build |
Rebuild and refresh preview after changing game.json or game.js, and save a version with a description |
game_studio_playtest |
UI-less playtest, reporting stage, high score, lives, frame rate, errors, and screenshots |
game_studio_generate_asset |
Generate 1–4 candidate images for a slot, optional reference images, approve before spending |
game_studio_apply_asset |
Put candidate images into the game by ID and rebuild |
game_studio_revert_asset |
Restore a specific slot to the previous piece of art |
game_studio_versions |
List saved versions, newest first |
game_studio_restore_version |
Restore the entire game to an earlier version |
game_studio_export |
Export self-contained, offline playable HTML |
game_studio_share |
Turn on or off a temporary read-only link on the local network |
What a Game Project Looks Like on Disk¶
Each game is just a normal folder in the workspace:
game.json: Title, art style, orientation, art slots, and rules. Rules are free format; any key is passed to the game aswindow.GAME.rules.game.js: The game code edited by the agent. Provideswindow.__gameState()for playtesting to read; games not operated by arrow keys can optionally providewindow.__autoplay(state); after providingwindow.__renderSlots(size), the sidebar can display code-drawn characters.assets/: Images for each slot, plusASSETS.jsonrecording the source of each image. Directly modifying slot files will be recorded as your change.dist/index.html: Current build artifact;.studio/stores versions, candidate images, and playtest logs.
This means dependencies outside the workspace are almost zero; the game directory can be copied, committed, or moved directly.
Suitable Scenarios and Precautions¶
Suitable scenarios:
- Want to get a playable thing directly in the conversation without opening an editor
- Prototypes of collection gameplay like “collection + dodging,” high template coverage
- Lightweight game deliverables that require rollback and single-file delivery
Things to note:
- The plugin runs with the permissions of the current DSH process. It reads and writes the workspace directory, calls image generation services based on configuration, and listens for the sharing port on the local network. You should read the source code before installing to confirm these behaviors meet your expectations. The license is MIT.
- This is
0.1.0-rc.2, which is in the RC stage, and the interface and templates may still change. The data given in the “Actual Results” section of the README is a round of testing the author did himself in a real DSH using DeepSeek-V4.1-Flash (2026-11-04/05, sample size 20): all 10 collection+dodging requirements were playable in the first round, median time about 14 minutes; other ten types could all make playable games, but median time was about 26 minutes. After re-running four of them with__autoplay, custom art slots, and landscape support, the time dropped to 8–18 minutes. The author also noted the sample size is small, so do not treat this round of data as a general conclusion. - Image generation leaves the local machine: only the prompt and the reference images you provide are sent to the selected service. The share link only listens on the local network and automatically closes after 30 minutes by default. These designs reduce risk, but are not immune; pay attention to where
openaiBaseUrlpoints when using a proxy or corporate gateway.
Conclusion¶
The value of DSH Game Studio lies in condensing “describe—generate—playtest—change art—export” into a single conversation, saving the back-and-forth of manually opening a browser and manually finding assets. It is suitable for making little things and prototype validation, not for serious game projects.
- Community directory page: https://www.skillhub.cn/plugins/ZSeven-W/dsh-game-studio
- GitHub: https://github.com/ZSeven-W/dsh-game-studio
The directory page is categorized under “Fun Dress-up,” and the repository’s README includes 15 language versions (Chinese, English, etc.). README.zh.md is the primary Chinese documentation.