ghbhiee / dsh-plugin-snake

목록에 있음

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

main도구 소스 보기

설치

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

이 설치 명령은 GitHub 저장소 주소에서 생성된 확인되지 않은 시작점입니다.

README

유지 관리자가 작성한 문서 스냅샷입니다.

GitHub에서 보기 ↗
커밋 5445be6동기화 2026. 8. 18.

최근 디렉터리 동기화에서 이 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:

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.

프로젝트 파일 및 신호

표시된 항목은 디렉터리 스냅샷에서 감지된 공개 저장소 신호입니다.

문서감지됨

저장소 정보

언어
JavaScript
라이선스
MIT
마지막 업데이트
2026. 8. 18. AM 6:33

신중하게 설치하기

소스 코드, 권한, 수명 주기 스크립트, 의존성 및 네트워크 접근을 검토하고 신뢰하지 않는 플러그인은 격리 환경에서 테스트하세요.