项目论纲
Mind Gym 建立在两个观察之上:
- 认知训练最容易发生在短暂、机会式的时间窗口里。
- 多数软件栈对这种窗口并不友好:它们往往要求账号、稳定网络或臃肿的应用壳。
因此,项目试图证明另一种产品形态也成立:一个可立即使用、技术上可审视、并且在静态托管下依然足够可靠的记忆训练系统。
阅读姿态
本页定义的是整个白皮书需要证明的论点:产品价值、架构纪律与运营克制不应彼此争夺注意力,而应相互加强。
核心论点
顺应 Web直接使用浏览器原语,让启动速度与系统可审视性同时成立。
认真架构小系统即便产品体量不大,也要认真对待状态、离线交付与复杂度边界。
让进展归属于玩家除非玩家主动导出,否则常规进展默认保留在本地设备上。
1. 训练产品应当顺应 Web,而不是对抗 Web
Mind Gym 不试图在浏览器里模拟一整套原生应用栈。它直接依赖浏览器原语:HTML、localStorage、Service Worker 缓存,以及无需打包器即可阅读的 JavaScript 模块布局。这种选择既让启动更快,也让系统更容易被审计。
2. 小系统同样值得认真做架构
应用体量不大,但绝非简单。多种游戏模式、持久化偏好、每日确定性、掌握度追踪、无障碍需求和双语体验都在竞争同一块代码面。之所以需要架构,不是为了显得复杂,而是为了在不引入框架重量的前提下保持可维护性。
3. 进展应当优先归属于玩家
Mind Gym 将常规进度保存在本地。最佳成绩、统计、成就、自适应评级和掌握度数据默认留在用户设备上,只有在用户主动导出时才离开本地。这既是隐私立场,也是一种运营简化。
项目服务谁
| 受众 | 能从 Mind Gym 获得什么 |
|---|---|
| 只有碎片时间的玩家 | 一个加载迅速、首次访问后可离线、且无需设置即可切换多种训练方式的产品。 |
| 技术好奇型读者 | 一个展示浏览器原生 JavaScript 在严肃模块边界下能走多远的真实样本。 |
| 贡献者 | 一个主要职责能从文件名看出来、并有 OpenSpec 支撑的仓库。 |
| 面试官与资深评审者 | 一个足以暴露工程判断力的小型代码库:状态归属、离线策略、复杂度控制都可被具体讨论。 |
产品价值主张
快速进入
无需长链路引导即可开始训练,适合即时打开、即时游玩的使用方式。
模式多样
经典配对、倒计时、每日挑战、N-back 与延迟回忆服务不同认知节奏,但仍属于同一个产品壳。
长期信号
统计、成就、自适应评级与 FSRS 掌握度,让一次次短会话逐渐累积成可追踪的成长故事。
工程价值主张
| 工程选择 | 带来的杠杆 |
|---|---|
| 零运行时依赖 | 降低运行复杂度,并让运行时更容易被直接观察。 |
| 三层状态模型 | 让持久设置、会话状态与模式专属逻辑拥有更清晰的边界。 |
| 深模块 | 把匹配逻辑、模态框行为、胜利流程和 DOM 渲染等复杂热点局部化。 |
| 静态部署 | 游戏与白皮书都可以由 GitHub Pages 承载,无需额外后端维护。 |
| 双语文档 | 在不拆分架构叙事的前提下扩大贡献者与读者覆盖面。 |
Mind Gym 优先优化什么
- 可预测启动,优先于框架抽象。
- 本地可持续性,优先于跨设备同步。
- 可读的文件边界,优先于过度间接层。
- 离线韧性,优先于实时联机能力。
- 聚焦、可维护的能力增长,优先于功能膨胀。
Mind Gym 不追求什么
项目在若干方向上刻意保持克制:
- 不是宣称临床效果的研究平台。
- 不是多人联机或云同步服务。
- 不是为了展示新奇框架而构建的技术秀场。
- 不是要替代专业间隔重复工具。这里的 FSRS 掌握度服务于游戏化复习,而不是完整课程管理。
演化说明
当前架构反映了一条重要的成熟路径:
- 最初的浏览器记忆游戏逐渐扩展为多种训练模式。
- 状态责任被更明确地拆分为 Settings、GameState 与 mode-specific state。
- 在复杂热点处引入深模块(
game-manager、modal-manager、ui/renderer、win-pipeline),把复杂度集中而不是摊平到app.js中。 - 文档外壳被提升为白皮书,以便仓库能向高要求技术读者解释自己的权衡。
为什么这对评审有意义
Mind Gym 之所以适合被严格评审,不是因为它使用了多少流行基础设施,而是因为它足够小,可以被完整读懂;又足够丰富,能暴露真实工程判断。真正的问题不是它是否“时髦”,而是它的约束是否自洽、架构是否诚实、实现选择是否带来了真正的杠杆。