我每天上下班期间刷小红书,看到现在的初等教育实在太卷了。初二下的暑假,在家就把初三一年的课程全部自学完了,整天刷中考真题,计划开始学习高中的课程。

你们感受一下。

这种现象有个非常形象的名称:预制娃。

暑假在家把下学期的功课预制好,开学之后老师拆包装,课堂上简单加热一下,直接参加考试。

我看到小红书贴子里一零后们在将近一千条评论里争先恐后晒自己暑期预制进度,一时有点懵了:我们八零后的暑假不是这样的啊!

当时我暑假每天上午睡个懒觉起床,打开电视看《西游记》,《封神演义》,下午出门找同学玩,或者让同学来家里打 FC,晚上继续看电视。作业?那时候暑假几乎没有作业。

我儿子的手机,他是这样给 App 们分组的。果然有其父必有其子。

我小学阶段开始就一直喜欢玩各种电子游戏,这种习惯一直保持到大学毕业。在游戏过程中我也顺带对英语产生了浓厚的兴趣,因为那时很多游戏的操作界面,流程过场都是英文。对于我喜欢的游戏,我想透彻了解它的一切,所以每次关闭游戏机,我就埋头扎进英语课本和字典里。

兴趣是最好的老师。

这种对英语的热爱让我轻松地高分通过了大学英语四六级,最后顺利找到一份外企工作。

儿子暑假的英语单词预习作业,我也打算用游戏的方式来完成。到应用市场下载现成的单词学习 App?这未免有失我们程序员世家的身份,更何况已有的某词斩,某利说这些 App,我觉得用起来有些无聊。必须自己造轮子,手搓一个。

我采用 Seed Evolving + Claude Code 完成了一个辅助单词学习和记忆的小游戏,技术栈是 HTML + Node.js.

说实话对于这个游戏具体如何做,我还没有什么好的点子。

于是我和 Seed Evolving 对话,让它帮我设计一个射击类型的游戏出来,可以辅助记单词。

Seed Evolving 很快就写好了一份五百多行的游戏 Specification 给我,包含了十大玩法,支持初中,高中和大学英语三种不同的难度。

用 vibe coding 的方式开发这种类型的游戏,真正困难的并不是让 AI 写出一个能跑的射击 Demo,而是如何让它在几十轮甚至上百轮迭代之后,仍然记得最初的设计意图。

Seed Evolv 设计出的游戏 Specification 里,同时存在游戏引擎、学习引擎和关卡层,还涉及字母弹匣、听音狙击、Boss、多阶段记忆、遗忘曲线、错词幽灵和 Roguelike 等彼此关联的系统。

普通的 vibe coding 一旦项目变大,很容易出现上下文丢失,比如改了 Boss 又破坏记忆算法,重构 game.js 又忘记 IndexedDB 的数据约束,最后 AI 每一轮都像一个刚接手项目的新程序员。

而 Seed Evolving 的价值恰恰体现在这里。作为一款持续面向 Coding 和 Agent 场景优化的模型,其最新版本进一步支持 1M 超长上下文,并强化长程任务能力。这意味着它更有机会把 Specification、代码仓库、历史修改、测试结果和错误反馈放进同一条连续的任务链里,不只是完成下一段代码,而是持续理解我们为什么这样设计,再进行规划、编码、运行、验证、修复和下一轮迭代。

对于这种最终会成长为复杂软件系统的游戏,百万级长上下文解决的是记得住,而 Coding & Agent 的长程任务能力解决的是做得完,这才是 Seed Evolving 特别适合 vibe coding 的地方。

效果展示

游戏分为初中,高中和大学三个难度。

游戏基础玩法有常规的根据中文意思射击正确的英文单词无人机:

有夜战模式,即浏览器用语音方式读出一个单词,玩家要迅速击落具有印有正确中文示意的无人机:

有语境救援模式,也就是英语考试中常见的四选一填空题型。

有同义词和反义词阵营模式,即屏幕显示一个单词,玩家需要击落这个单词的同义单词或者反义单词。

有破甲战模式来强化常见单词词缀的学习:

有装弹模式,即屏幕显示中文,玩家需要用鼠标按正确的顺序击落组成该单词的每一个字母。

实现步骤

我采用的是 Seed Evolving 接入 Claude Code 的方式来 Vibe Coding.

Seed Evolving 的官网链接:

https://ark.volcengine.com/region:cn-beijing/model/detail?agentMode=close&name=doubao-seed-evolving

点击 API 接入,生成 API key 之后添加到 Claude Code 的 settings.json 中即完成配置,非常方便。

游戏的实现概述

整个项目核心实现位于 game.js 中,区区1700行代码就实现了六大玩法。

运行入口是 package.json:npm start 执行 node server.js。

server.js 启动 Express,托管静态文件,并提供成绩写入/查询接口。

浏览器打开 index.html,页面只先加载 words.js。
玩家选择难度并输入用户名后,words.js 根据难度 fetch 对应词库 JSON,写入 window.WORDS、window.FACTION_SETS、window.AFFIX_SETS、window.CONTEXT_SETS。
词库加载完成后,words.js 动态插入 game.js,game.js 接管游戏循环、玩法状态机、绘制、输入、音效和成绩提交。

index.html

  • 作用:提供游戏页面骨架、Canvas 容器、HUD、开始界面、结束界面、难度选择和用户名输入。
  • 核心结构中, 是所有实时战斗画面的绘制目标;#hud 显示得分、连击、掌握词数、弹匣、护盾;#start-screen 负责难度和用户名;#end-screen 负责结算与回放提示。
  • 难度选择直接通过 DOM 属性绑定词库文件:Easy、Normal、Hard 分别对应 words.json、words-high-school.json、words-cet4.json。
  • 视觉实现思路是“科幻街机风”:CSS 使用深色背景、霓虹蓝、发光阴影、HUD 分区和全屏 overlay,让学习任务包装成战斗界面,而不是普通答题页。
  • 这个文件不包含游戏逻辑;它把交互节点和视觉层准备好,真正的逻辑由 words.js 和 game.js 接管。
    words.js
  • 作用:难度选择、用户名校验、词库加载、游戏脚本懒加载。
  • 默认难度是 Easy:设置默认文件为 words.json,DOM 加载后默认选中第一个难度按钮。
  • 点击开始时,words.js 会先校验用户名;用户名为空时阻止游戏启动,并把输入框高亮为错误状态。
  • 校验通过后,它把玩家信息保存到 window.PLAYER,供游戏结束时提交成绩。
  • 词库加载逻辑根据所选 JSON 文件读取数据,并分别挂到全局变量 window.WORDS、window.FACTION_SETS、window.AFFIX_SETS、window.CONTEXT_SETS。
  • 加载成功后才动态插入 game.js。这个设计很关键,因为 game.js 启动时会立即从 window.WORDS 捕获词库;如果先加载 game.js,词库可能还是空的。
  • 实现思路是“先数据、后引擎”:让同一个游戏引擎根据不同 JSON 数据运行不同难度,而不是为每个难度写一套逻辑。
    game.js
  • 作用:整个游戏的核心实现文件,包含 Canvas 初始化、实体类、学习系统、音频系统、游戏状态机、六类玩法、HUD 更新、输入处理、主循环和成绩提交。
  • 基础设置:拿到 Canvas 2D 上下文,根据窗口大小和 DPR 自适应画布,保证全屏游戏在高分屏上也清晰。
  • 工具函数:提供随机数、数组洗牌、限制范围等基础能力,后续敌人生成、词库抽样、位置分布都依赖这些工具。
    学习引擎
  • 学习记录模块是 Learn。
  • 它用 localStorage 保存每个英文单词的 seen、correct、streak、wrong、lastSeen,实现轻量级本地学习档案。
  • 抽词逻辑:新词有较高权重;错得越多权重越高;连续答对越多权重越低;刚错过的词在 20 秒内额外加权,形成“错词幽灵”效果。
  • 这里实现了规格中“遗忘曲线追杀”和“错词幽灵”的简化版本:不是完整间隔重复算法,也不是 IndexedDB,而是基于 localStorage 的加权随机复现。

Seed Evolving 的百万级上下文,让它记得住整个工程,而长程 Agent 能力让它真的能够沿着这张工程地图,一步一步成功的把这个游戏做出来了。

游戏或许看起来比较简陋,但我儿子每天已经实实在在用它来辅助英语单词的记忆了。我觉得这就是像 Seed Evolving 这种优秀的 AI 模型的意义所在:让每一个人都能借助 AI,实现自己生活和学习中出现的实实在在的需求。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐