ghbhiee / dsh-plugin-snake

Listed

Snake game panel for the DeepSeek Harness web UI — a floating game panel in the shell overlay seat

mainTool View source

Installation

npx -y @deepseek-ai/dsh plugin --profile web add github:ghbhiee/dsh-plugin-snake

This installation command is an unverified starting point generated from the GitHub repository address.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit 5445be6Synced Aug 18, 2026

This README snapshot could not be refreshed during the latest directory sync.

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:

HalfEntryRuns inRole
hostexports["."]lib/index.jsNodeAn empty cordis plugin. It exists so the bundle row resolves and dsh can discover the browser half.
browserexports["./client"]lib/client.jsthe pageRegisters into the shell.overlay seat and renders the game.
  • cordis.patch.yml contributes 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 })id must 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 into shell.overlay as its own React children. The one piece of direct DOM work is injecting a de-duplicated <style> tag.
  • react comes 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.

Project files and signals

Shown items are public repository signals detected in the directory snapshot.

DocumentationDetected

Repository information

Language
JavaScript
License
MIT
Last updated
Aug 18, 2026, 6:33 AM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.