拾光游戏厅(dsh-game-bench):在 DSH 侧边栏里跑浏览器红白机

前言

在 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 负责游戏库、市场、播放器与设置面板。

插件解决的是:在已有 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 侧凭据查找顺序为:

  1. 插件设置里粘贴的 Personal Access Token(写入数据目录 settings.json,权限 0600)
  2. 环境变量 GITHUB_TOKEN / GH_TOKEN
  3. 本机 gh auth token(README 推荐先执行 gh auth login)
  4. 资源库公开时可匿名访问

均无凭据时,市场页显示授权引导;内置游戏不受影响。

模拟器与操作

模拟器封装在 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。

典型用法

  1. 安装 bundle 后,在 DSH 左侧栏点击手柄图标,进入「游戏库」。
  2. 选择内置或已安装游戏,在播放器内用键盘或手柄操作;需要时打开设置调整 CRT、倍速等(以面板为准)。
  3. 若需从市场扩充:在插件设置中配置 GitHub Token,或配置 GITHUB_TOKEN / 使用 gh auth login,再在「游戏市场」按合集或搜索安装;安装完成后回到游戏库启动。
  4. 游玩中用工具栏存读档;长时间游玩可依赖自动存档槽。

仓库还提供自测命令,供开发者在本地验收 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 工作流里加一块红白机角落,可从目录页与仓库进一步了解细节。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜