前言¶
在 DeepSeek Harness(DSH)里长时间做对话、编排或调试时,偶尔需要一块不离开工作区的「休息角」——既不必另开桌面模拟器,也不必把上下文切到别的应用。拾光游戏厅(Game Bench)是维护者 zeelinkCN 发布的一类 客户端 插件:在左侧栏增加手柄入口,点开即在浏览器内运行基于 jsnes 2.1.0 的红白机模拟,并附带本地游戏库、可选的游戏市场、存档与 CRT 滤镜等能力。DSH 的生态理念是「一切皆插件」;社区插件目录由独立站点维护,与 DeepSeek / 幻方无官方从属关系。本文依据仓库 README 与 manifest 介绍其定位、能力与安装方式,安装前请自行阅读源码与许可证。
这是什么¶
拾光游戏厅(Game Bench) 是 DSH 的 Web 客户端插件(package.json 中 dsh.client.platform 为 web,并注入侧边栏相关 UI 包)。Host 侧由 index.js 提供 /game-bench/api/* 等路由;前端 client.js 负责游戏库、市场、播放器与设置面板。
- 维护者:zeelinkCN
- 仓库:https://github.com/zeelinkCN/dsh-game-bench
- 目录页:https://www.skillhub.cn/plugins/zeelinkCN/dsh-game-bench
- 许可:MIT(第三方 ROM、jsnes 等另见
THIRD-PARTY.md、GAME-RIGHTS.md) - 版本(manifest):
@local/game-bench1.0.0
插件解决的是:在已有 DSH Web UI 的 macOS / Windows / Linux 上,用同一份代码在浏览器里即开即玩 NES,并把扩展 ROM 通过市场安装到本机数据目录,断网后仍可玩已缓存内容。
核心功能¶
游戏库与内置 ROM¶
面板打开后默认进入游戏库。随包分发 8 款 内置游戏:7 款经典红白机作品(README 列举:超级玛丽、魂斗罗、赤色要塞、雪人兄弟、坦克大战、松鼠大作战、双截龙2)以及作者原创 demo「星光试航 Star Pilot」。ROM 与封面在 games/ 目录,断网也可玩内置内容。
README 说明:7 款经典 ROM 为第三方版权作品,不由 MIT 许可覆盖;仓库声明所有者已取得再分发许可,使用前第三方应自行确认权利,详见 GAME-RIGHTS.md。
游戏市场¶
市场对接私有资源库 zeelinkCN/game-bench-library(README 称 1100+ 款、带封面与 SHA-256)。读取 catalog.json / store.json,点选即可下载安装;ROM 与封面校验 SHA-256 后写入本机缓存,之后可离线游玩。
访问市场需要 GitHub 读权限。Host 侧凭据查找顺序为:
- 插件设置里粘贴的 Personal Access Token(写入数据目录
settings.json,权限 0600) - 环境变量
GITHUB_TOKEN/GH_TOKEN - 本机
gh auth token(README 推荐先执行gh auth login) - 资源库公开时可匿名访问
均无凭据时,市场页显示授权引导;内置游戏不受影响。
模拟器与操作¶
模拟器封装在 engine.js,分发未改动的 vendor/jsnes.min.js(jsnes 2.1.0,Apache-2.0)。README 记载:浏览器内目标 60fps(实测约 0.9ms/帧),支持 Web Audio 立体声、键盘/手柄、倍速、CRT 滤镜、截图、全屏。
键位与手柄(摘自 README 操作表):
| 功能 | 键盘 | 手柄 |
|---|---|---|
| 方向 | ↑ ↓ ← → | 十字键 / 左摇杆 |
| B(跳/开火) | Z | A |
| A(跑/跳弹) | X | B |
| Start | Enter | Menu / Start |
| Select | Shift | View / Back |
| 暂停 / 返回 | Space / Esc | — |
| 2P | WASD + J/K | 第二只手柄 |
存档:工具栏「存档 / 读档」提供 3 个手动槽 + 自动槽(每 60 秒、暂停、退出、页面切走时写入)。存档在浏览器 IndexedDB(库名 game-bench),不在 Host 数据目录;删除游戏不会删除存档。
安装与启用¶
README 给出的安装方式为从本地插件目录安装 bundle(开发/自用场景):
# 从本仓库目录安装(开发/自用)
plugin_manager install_bundle target=/path/to/dsh-game-bench
将 target= 换成你本机上的 dsh-game-bench 目录绝对路径。安装后左侧栏应出现手柄图标,无需重启 DSH;若未出现,刷新 Web 页面。
插件以当前 DSH 进程权限运行,并可能访问本机文件、GitHub API 与网络以下载 ROM。安装前请审阅 index.js、server/ 与相关文档(docs/API.md、docs/ENGINE.md、docs/CONTRACT.md)。
数据目录与环境变量¶
Host 侧缓存与市场元数据落在下列路径(可用 DSH_GAME_BENCH_DATA=/custom/path 覆盖):
| 平台 | 路径 |
|---|---|
| macOS | ~/Library/Application Support/DSH Game Bench |
| Windows | %APPDATA%\DSH Game Bench |
| Linux | $XDG_DATA_HOME/dsh-game-bench 或 ~/.local/share/dsh-game-bench |
目录内通常含 catalog.json、store.json、roms/、covers/、library.json、settings.json。
典型用法¶
- 安装 bundle 后,在 DSH 左侧栏点击手柄图标,进入「游戏库」。
- 选择内置或已安装游戏,在播放器内用键盘或手柄操作;需要时打开设置调整 CRT、倍速等(以面板为准)。
- 若需从市场扩充:在插件设置中配置 GitHub Token,或配置
GITHUB_TOKEN/ 使用gh auth login,再在「游戏市场」按合集或搜索安装;安装完成后回到游戏库启动。 - 游玩中用工具栏存读档;长时间游玩可依赖自动存档槽。
仓库还提供自测命令,供开发者在本地验收 Host 接口与模拟器(需 Node,README 示例使用 NODE=node):
node dsh-game-bench/server/selftest.mjs
node dsh-game-bench/engine.selftest.mjs
node dsh-game-bench/selftest/run.mjs
node dsh-game-bench/selftest/real-api.mjs
适用场景与注意¶
适合:已在用 DSH Web UI、希望在同一界面内进行短时复古游戏放松;需要可离线游玩的内置包,并可选地从 game-bench-library 扩充库的用户。
注意:
- 插件为 客户端 类型,依赖浏览器 Web Audio、IndexedDB 与手柄 API。
- 市场 ROM 版权与再分发责任由使用者自行确认;内置经典 game’s 权利说明见
GAME-RIGHTS.md。 - GitHub Token 会以受限方式写入
settings.json;请勿在不受信环境粘贴高权限 Token。 - 星标与社区热度不等于安全审计;以源码与许可证为准做安装决策。
结尾¶
拾光游戏厅把 jsnes 2.1.0、本地游戏库与可选 GitHub 驱动的游戏市场收成 DSH 侧边栏里的一个面板:内置 8 款可离线玩,扩展 ROM 校验后落盘,存档留在浏览器 IndexedDB。若你要在 Harness 工作流里加一块红白机角落,可从目录页与仓库进一步了解细节。