Plugin directory / UI & Skins / dsh-plugin-snake
dsh-plugin-snake
Verified · install-tested on dsh ghbhiee
What it does
Snake game panel for the DeepSeek Harness web UI — a floating game panel in the shell overlay seat
Works — verified, early-stage project
Snake game panel for the DeepSeek Harness web UI — a floating game panel in the shell overlay seat It installs cleanly and boots without issues in our testing. It's early-stage but functional.
“Verified” means our automated CI actually ran dsh plugin add in a clean profile and it booted — nothing more. Feature descriptions and version compatibility are the author’s claims. This is not a security audit and not an endorsement of third-party code.
README
dsh-plugin-snake
A Snake (贪吃蛇) game panel for the DeepSeek Harness web UI, as an out-of-tree plugin.
A floating 🐍 button in the frame's overlay layer opens a self-contained Snake
game: arrow keys / WASD to steer, Space to pause, swipe gestures on touch
screens. The high score is persisted in localStorage.
Install
The plugin is hand-written JavaScript with no build step, so it installs
straight from GitHub — nothing to download or compile:
dsh plugin --profile web add github:ghbhiee/dsh-plugin-snake
Or from a local clone (a link:, so edits are picked up on the next restart):
git clone https://github.com/ghbhiee/dsh-plugin-snake.git
dsh plugin --profile web add ./dsh-plugin-snake
Restart the web profile afterwards — plugins are assembled at boot, never
hot-loaded:
systemctl restart dsh-web # or: launchctl kickstart -k gui/$(id -u)/com.tokencv.dsh-web
Sibling plugins install the same way:
dsh-plugin-workbench,
dsh-plugin-mobile-shell,
dsh-plugin-cli-session.
How it works
Two halves, discovered through package.json:
| Half | Entry | Runs in | Role |
|---|---|---|---|
| host | exports["."] → lib/index.js |
Node | An empty cordis plugin. It exists so the bundle row resolves and dsh can discover the browser half. |
| browser | exports["./client"] → lib/client.js |
the page | Registers into the shell.overlay seat and renders the game. |
cordis.patch.ymlcontributes the one bundle row (id: snake,name: dsh-plugin-snake), which is what makes the package get imported.- The browser half wraps itself in
window.__ModuleLoader__.load({ id, factory })
—idmust equal the package name — and is served at/plugins/dsh-plugin-snake/client.js?rev=<content-hash>, so a code change
invalidates the browser cache by itself. - It registers a component rather than touching the page: the host app renders
every entry registered intoshell.overlayas its own React children. The one
piece of direct DOM work is injecting a de-duplicated<style>tag. reactcomes from the loader's shared externals (require("react")), never
bundled — two React copies would break hooks.
Editing
There is no build: lib/*.js is the source, hand-written CJS for the
browser half and ESM for the host half. Edit it, then restart the web profile.
npm run check # node --check on both entry points
Because the browser half is plain JavaScript, it uses React.createElement(...)
directly instead of JSX.
Install
Install the catalog once, then DeepSeek Harness can find and install any plugin from this site automatically:
dsh plugin add dshbase-catalog Then say "install dsh-plugin-snake for me" — your agent finds it in the directory and installs it. Docs: dshbase-catalog · verified packs.
This plugin is GitHub source (not published to npm) — install it straight from the repo:
Web profile:
dsh plugin --profile web add github:ghbhiee/dsh-plugin-snake Headless (CLI) profile:
dsh plugin --profile headless add github:ghbhiee/dsh-plugin-snake Test report
Verified: L1 install + L2 load + L3 runtime from GitHub source on dsh 0.1.0-rc.6.