安装
npx -y @deepseek-ai/dsh plugin --profile web add github:ghbhiee/dsh-plugin-snake此安装命令根据 GitHub 仓库地址生成,是未经验证的安装起点。
README
维护者编写的文档快照。
最近一次目录同步未能刷新此 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 into
shell.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.
项目文件与信号
以下项目是目录快照中检测到的公开仓库信号。
仓库信息
- 开发语言
- JavaScript
- 许可证
- MIT
- 最后更新
- 2026年8月18日 06:33
谨慎安装
请检查源代码、权限、生命周期脚本、依赖与网络访问;不受信任的插件应先在隔离环境中测试。