UStackUStack
Standboy icon

Standboy

Standboy 是 VS Code 扩展:嵌入 Game Boy 模拟器面板,并根据 AI 编码代理活动自动展开/暂停,减少等待干扰。支持加载 ROM。

Standboy

Standboy 是什么?

Standboy 是一款 VS Code 扩展,可在编辑器中嵌入 Game Boy 系列模拟器面板,并将模拟器的显示状态和运行状态与 AI 编码代理的活动关联。当代理开始生成内容时,Standboy 会自动展开模拟器侧边栏并恢复播放;当代理完成或进入空闲状态时,Standboy 会隐藏面板并暂停模拟器。

其目的是通过将娱乐留在 IDE 内,并在代理非活动时强制暂停模拟器,来减少等待代理时的“空闲时间”。支持加载用户自己的 ROM 文件,并在 VS Code 重启后保留上次游玩的游戏和存档。

主要功能

  • 基于代理活动的自动显示/隐藏:代理工作数秒后扩展模拟器面板,空闲一段时间后自动收起,避免短暂切换时闪烁。
  • 与 Cursor 和 Claude Code 的生命周期对接:通过面板菜单中的单一开关,使用 Cursor 和 Claude Code 的官方生命周期 API 实现集成。
  • 恢复中断位置:重新打开模拟器时,从上次暂停的精确帧继续,而非重新开始游戏。
  • ROM 库与持久化存档:加载的 ROM 会复制到托管库中。面板隐藏、页面卸载或导出前,游戏存档会同步到磁盘。运行时状态保存在 IndexedDB 中,确保 VS Code 重启后存档仍可保留。
  • ROM 匹配与库元数据:通过 SHA-1 哈希与内置 No-Intro 数据库匹配,自动识别 ROM 并提供规范标题和封面(自制或修改 ROM 使用字母拼图作为备选)。
  • 设备与输入支持:支持 .gb.gbc.gba ROM,根据文件扩展名自动检测平台。键盘按键可在面板菜单中重新绑定,方向键映射到箭头键,A/B/Start/Select 可自定义。
  • 离线模拟器与内置数据:模拟器(EmulatorJS)和 No-Intro 数据库均已打包,可完全离线运行。

如何使用 Standboy

  1. 安装 VS Code 扩展:在 VS Code 中打开扩展面板,搜索 Standboy,或运行 code --install-extension mfbzme.standboy
  2. 连接代理检测(首次运行):首次激活时,Standboy 会自动打开面板并显示卡片,提示连接检测到的代理类型(若存在 ~/.claude/settings.json 则为 Claude Code,否则为 Cursor)。点击 Connect 启用生命周期钩子,或稍后在 菜单的 Detection 中切换。
  3. 添加 ROM:点击 + Add ROM(或菜单中的 Load ROM…),选择本地 .gb.gbc.gba 文件。Standboy 会将其复制到托管库中,通过 No-Intro 数据库识别后启动模拟器。
  4. 在代理生成期间使用模拟器:面板打开时可接受键盘输入。代理空闲时,Standboy 会根据空闲规则暂停并隐藏面板。

使用场景

  • 在代理工作时保持专注:当 Cursor/Claude Code 开始生成代码时,Standboy 展开模拟器,让你无需离开 IDE 即可游玩;生成结束后自动暂停并收起面板。
  • 避免长时运行时的“标签切换”:无需切换到其他应用(聊天、论坛、消息),模拟器提供编辑器内休息,并在代理活动/结束时设置硬暂停边界。
  • 重启后返回同一游戏:加载一次 ROM 后,Standboy 会在下次 VS Code 启动时自动恢复上次游玩的 ROM,并还原存档数据。
  • 构建具有一致标题/封面的 ROM 库:即使磁盘上的 ROM 文件名不同,通过 SHA-1 哈希与 No-Intro 数据库匹配,仍会显示规范标题和封面。
  • 测试不同输入布局:用户可在面板菜单中重新绑定按键,以适应键盘或个人偏好。

常见问题

  • Standboy 是否包含游戏或提供 ROM 来源?
    不会。Standboy 仅加载用户自行提供的 ROM,不附带任何游戏,也不提供 ROM 来源链接。

  • 能否离线使用?
    模拟器与 No-Intro 数据库已内置,可完全离线运行。唯一涉及网络的操作为一次性从 libretro-thumbnails 获取封面图,由扩展主机执行并本地缓存。

  • Standboy 如何决定显示或隐藏模拟器?
    仅在检测到代理活动持续数秒后自动显示,闲置一段时间后自动隐藏。该机制旨在避免因极短的代理回合而频繁闪烁。

  • 支持哪些代理集成?
    扩展通过官方生命周期 API 接入 CursorClaude Code,面板菜单中提供开关。其他代理若无特定支持,可回退至编辑爆发启发式检测。

  • 模拟器是否能从上次状态继续?
    可以。Standboy 支持面板重新打开时从中间帧恢复,隐藏时保留 webview,使其暂停在原位并从相同状态继续。

替代方案

  • 通用 Game Boy 模拟器(独立桌面/移动端):专注于游戏体验,但不与 VS Code 代理生命周期集成,无法自动暂停或显示。
  • 其他 VS Code 媒体/通知侧边栏:可显示活动指示或简单仪表盘以帮助管理专注,但通常不提供能从中间帧恢复并持久保存的模拟器。
  • IDE 任务调度器或专注计时器(番茄钟式):能以结构化方式减少“等待时间”,但不提供内置 ROM 识别和存档持久化的 IDE 内模拟器。
  • 仅通过 webview 集成的模拟器(无代理钩子):同样可在编辑器内游玩,但缺少基于生命周期的自动显示/隐藏以及与 AI 代理活动绑定的中间帧恢复功能。