DSH Plugins Marketplace

DSH Plugins

Plugins

/

Just for Fun

/

dsh-game-center

d

dsh-game-center

Identified

A panel plugin that keeps mini-games in one place and plays them in the same window. Ships with Tetris: a 10x20 board, seven pieces, a ghost piece and a next-piece preview, line and level scoring, thr

Game Center

English | 中文

version DSH license


English

A DeepSeek Harness panel plugin that keeps the mini-games built for this harness in one place, and lets you play them without leaving the window. Ships with Tetris and Cops & Robbers.

The game library

Playing Tetris

Requirements

DeepSeek Harness0.2.1-rc.5 (Web UI)
Node.js>= 22
npm dependenciesnone at runtime — the panel injects @deepseek-ai/dsh-client-locale and @deepseek-ai/dsh-client-ui-slots, which the harness provides

Install

dsh plugin add github:stallenlu/dsh-game-center

Restart DSH (or refresh the Web UI) afterwards, then open Game Center from the sidebar.

What it does

  • One list for the games. The panel is a game library: each game is a card with a picture built from the game itself, its name, category, version and status, and it plays in the same panel — no new tab or window.
  • Tetris. A 10×20 board, seven pieces with wall kicks, a ghost piece, a next-piece preview, line-clear scoring, levels that speed the falling piece up, pause/restart, and a best score kept in localStorage.
  • Cops & Robbers. Play the thief on a walled grid: collect every piece of loot to clear the level while the police hunt you down. They path around the walls toward you, each level sends one more, and three lives stand between you and game over.
  • Per-game difficulty. Difficulty is the game's own setting, chosen on its start screen and remembered per game: Easy / Normal / Hard start Tetris at level 1 / 3 / 5 and give Cops & Robbers 1 / 2 / 3 police; the level still rises as you play.
  • Settings. The panel's own settings only: show or hide the sidebar entry, and reset to defaults. Reachable from the gear button in the panel header and from the plugin's page under Plugins.
  • Theme. Colours come from the harness theme tokens (--dsw-alias-*), so the panel follows light and dark mode.

Controls

Tetris

KeyAction
← →Move
↑ XRotate
↓Soft drop
SpaceHard drop
PPause

Cops & Robbers

KeyAction
W A S DMove one cell
← ↑ ↓ →Move one cell
PPause

Layout

client.js          the Web client plugin: panel, settings, games, Tetris, Cops & Robbers
index.js           host-side entry (no host behaviour)
cordis.patch.yml   the insert row that mounts the bundle
locale/*.json      the plugin-list title and description
icon.svg           the in-app icon
assets/            storefront images
verify.mjs         runnable check (node verify.mjs) — wiring + both games' cores

Adding a game

client.js has a GAMES registry; an entry declares { id, nameKey, descKey, categoryKey, version, statusKey, thumb, thumbCell, thumbGap, render(t) } and appears in the library automatically. render receives the translate function and returns the game's element. A new game also needs its strings added to the zh / en dictionaries registered at the top of apply().

The card's picture must come from the game, not from decoration. Write a xxxThumb() that builds the matrix out of that game's own constants — a board, a map, its real colours — and set thumbCell / thumbGap so it fits the 104px panel. Both shipped games do this (tetrisThumb() drops real pieces through SHAPES / COLORS / collides, chaseThumb() draws CHASE_MAP), and verify.mjs asserts for every registered game that the picture is a non-blank grid of equal-width rows holding colours — so a hand-drawn or empty one fails the check. Note .gc-thumb is a grid: it used to be a flex row, which laid a 2D matrix out as one clipped line of cells.

Development

verify.mjs runs without the harness: it loads client.js, captures the module, calls apply() against a stub context, asserts the three slots (main panel, sidebar entry, plugin-page config) and the locale registrations, then exercises the Tetris core (rotation, collision, line clearing, drop scoring) and the chase core (map integrity, pathfinding, loot, lives).

node verify.mjs

License

MIT


中文

一个 DeepSeek Harness 面板插件:把为这个 harness 开发的小游戏集中到一处,不用离开当前窗口就能玩。自带游戏:俄罗斯方块、警察抓小偷。

游戏库

玩俄罗斯方块

环境要求

DeepSeek Harness0.2.1-rc.5(Web UI)
Node.js>= 22
npm 依赖运行时无依赖——面板只注入 @deepseek-ai/dsh-client-locale 和 @deepseek-ai/dsh-client-ui-slots,由 harness 提供

安装

dsh plugin add github:stallenlu/dsh-game-center

安装后重启 DSH(或刷新 Web UI),从侧边栏打开游戏中心。

功能

  • 一个列表管理游戏。 面板本身就是游戏库:每款游戏一张卡片,带一张由游戏本身生成的示意图、名称、分类、版本与状态,点开就在同一面板里游玩,不新开标签页或窗口。
  • 俄罗斯方块。 10×20 棋盘、七种方块(含靠墙微调)、落点虚影、下一个方块预览、消行计分、等级越高落得越快、暂停/重开,最高分存在 localStorage。
  • 警察抓小偷。 你扮演小偷,在有墙的棋盘上把赃物全部捡走即可过关,同时要躲开追捕的警察。警察会绕开墙走最短路线追你,每过一关多一个警察,你有三条命。
  • 每个游戏自己的难度。 难度是游戏自身的设置,在各自的开始界面上选择、按游戏分别记住:简单 / 普通 / 困难分别让俄罗斯方块从第 1 / 3 / 5 级开始,并让警察抓小偷开局有 1 / 2 / 3 个警察;等级仍会随游玩继续上升。
  • 设置。 只放面板自身的设置:显示或隐藏侧边栏入口,以及恢复默认。面板右上角的齿轮按钮和插件页都能打开。
  • 主题。 配色取自 harness 主题变量(--dsw-alias-*),明暗主题自动跟随。

操作

俄罗斯方块

按键作用
← →移动
↑ X旋转
↓软降
Space硬降
P暂停

警察抓小偷

按键作用
W A S D走一格
← ↑ ↓ →走一格
P暂停

目录

client.js          Web 客户端插件:面板、设置、游戏、俄罗斯方块、警察抓小偷
index.js           宿主侧入口(无宿主行为)
cordis.patch.yml   挂载 bundle 的 insert 行
locale/*.json      插件列表的标题与描述
icon.svg           应用内图标
assets/            商店图片
verify.mjs         可运行自检(node verify.mjs):接线 + 两款游戏的核心逻辑

增加小游戏

client.js 里有一个 GAMES 注册表,一条记录声明 { id, nameKey, descKey, categoryKey, version, statusKey, thumb, thumbCell, thumbGap, render(t) } 后会自动出现在游戏库中。render 收到翻译函数并返回游戏元素;新游戏还需要把文案加进 apply() 顶部注册的 zh / en 字典。

卡片示意图必须来自游戏本身,不能用装饰性的图。 写一个 xxxThumb(),用这款游戏自己的常量搭出矩阵——棋盘、地图、真实配色——再用 thumbCell / thumbGap 让它放进 104px 的图区。现有两款都是这么做的(tetrisThumb() 通过 SHAPES / COLORS / collides 真的落方块,chaseThumb() 画的就是 CHASE_MAP),verify.mjs 会对注册表里每一款游戏断言示意图是非空网格、每行等宽、格子是颜色——所以手写的装饰图或空图会直接被自检拦下。另外注意 .gc-thumb 是 grid:它曾经是 flex 单行,会把二维矩阵排成一行再裁掉。

开发

verify.mjs 不依赖 harness 即可运行:加载 client.js、捕获模块、用桩上下文调用 apply(),断言三个插槽(主面板、侧边栏入口、插件页配置)与语言注册,再跑一遍俄罗斯方块核心逻辑(旋转、碰撞、消行、下落计分)和追捕逻辑(地图连通性、寻路、拾取赃物、命数)。

node verify.mjs

许可

MIT

Comments

Loading…

Similar plugins

dsh-mini-games

by aga-j

Pure-frontend mini-game collection for the DeepSeek Harness web details panel: guess-the-number, 2048, minesweeper. No host half, no backend.

Terminal & ClientsManifest valid

★ 0

MIT

JavaScript

Aug 19, 2026

dsh plugin --profile web add dsh-mini-games

by Tea-2026

等模型回复的几十秒别干瞪眼:Harness 右下角的九款小游戏,回复一到自动暂停。

Manifest valid

★ 0

MIT

JavaScript

Nov 1, 2026

dsh plugin --profile web add @local/dsh-minigame-list

Adds a sticker pack to DeepSeek Harness replies. The plugin rolls the dice, the model attaches the chosen sticker at the end of its reply, and the pictures come from a remote pack.json you can host an

Just for FunManifest valid

★ 0

dsh plugin --profile web add dsh-sticker-pack

by JJJACKsong

DeepSeek Harness 侧边栏 2048 小游戏 — a 2048 game plugin for dsh (sidebar panel, full-page board).

Manifest valid

★ 0

MIT

JavaScript

Nov 5, 2026

dsh plugin --profile web add dsh-plugin-2048

by Entaum

Adds a Spawnd.gg games cabinet to the DeepSeek Harness Web sidebar with search, sorting, hover previews, embedded play, and a minimized player.

Just for FunDevelopment & InfrastructureTerminal & ClientsManifest valid

★ 1

↓ 44/wk

MIT

JavaScript

Aug 31, 2026

dsh plugin --profile web add dsh-free-games

by changer-changer

A polished local-first DSH Web teahouse: curated mini-games, resumable breaks, and Lanyin companion.

Manifest valid

★ 0

MIT

TypeScript

Aug 20, 2026

dsh plugin --profile web add dsh-whale-cards