铜匠实验室 tongjiang-lab 深度评测:54 节开源 3D 高中科学课件,31.8 万字全部挂人教版教材出处,点「目录」按钮却 404

教高中理化生的老师,几乎都碰过同一件尴尬事:合成氨为什么加压、螺线管内部为什么是匀强磁场、河漫滩到底怎么长出来的——这些用嘴讲三分钟,学生眼神就散了。想做成三维演示,要么学校那套老课件点不开、装不上,要么得自己学建模软件,一节课的演示能磨掉一个周末。

铜匠实验室(tongjiang-lab)选了最笨也最省事的那条路:把 54 节高中物理、化学、生物、地理课,每节做成一个能双击打开的网页文件,打开就是一个可以转的三维场景,旁边挂着滑块和读数,学生自己拖,数字跟着变。

仓库 10 月 28 日建,七个多小时里推完五次提交就停更了,现在 1612 颗星、411 个 fork、16 条 issue 一条没关。我在一台 Linux 沙箱里把它整个 clone 下来,数了体积、跑了其中几节,也把一个 14 MB 的离线包解开逐层看了一遍。这套东西值得写,但它最要紧的问题也藏在这些数字里。

它到底是个什么东西

一句话:一套共用的课堂外壳,加 54 份内容。外壳负责三维画面、可拖的中控台、步骤条和痕迹记录,内容只写这一课讲什么、模型长什么样、滑块拖到哪儿该看到什么读数。

每节课都长成同一个形状:

位置 是什么 上课时怎么用
顶栏 主线问题 + 化学方程式或关键公式 一进页面就把这节课的问题摆在学生面前
左栏 步骤条,7 到 9 步 老师按顺序走,走一步屏幕变一次
中间 三维场景,可以拖动、滚轮拉近 学生自己转视角看结构
下方 中控台:滑块、开关、读数表 拖一个参数,画面和数字一起变
右侧 问句 / 动手任务 / 关键结论 / 要点 / 考点提示 讲完一步立刻落到考什么

每步的写法是固定的:先抛一个问句,再给一个「拖动视角,绕着厂区看一圈」这样的动手任务,然后「应该看到」一条带具体读数的预期结果,接着给关键结论、要点和考点提示。

以合成氨这一课为例,主线问题是「空气里到处是氮气,为什么还要建这么大一座厂才能变成氨」,走到最后一步的考核叫「当班长」,让学生自己在压力、温度、配比之间把产率拖到达标。

54 课里,化学 25 节、地理 14 节、物理 10 节、生物 5 节,每节都对着人教版 2019 版教材的具体章节,catalog 文件里逐课标了出处,比如合成氨这一课同时挂着选择性必修 1 的「化学反应的调控」和必修二「氮及其化合物」。

怎么做到的:一个外壳,加一张先写好的事实表

制作方法写在作者自己的「制作方法」页上,我对着代码核了一遍,基本属实。

第一件事不是画模型,是先写事实表。每节课先由模型按教材和课程标准列两栏:A 栏是带页码出处的教材事实,B 栏是「为教学设定的数值和计算公式」。

课件里出现的每个数字都要能在事实表里找到归属。落到代码里,A 栏对应每步结尾那行「依据:A2.1、A2.2」,B 栏对应读数卡片上的「课件设定」标记——比如螺线管那节课的中控台,内部磁场标的是「课件设定 · 400 匝 · 长 12.0 cm」,而不是拍脑袋给个数。

这一点我复算过。按通电螺线管的公式(内部磁场等于真空磁导率乘以每米匝数再乘以电流),400 匝、12 厘米、2 安培算出来是 8378 微特斯拉。

课件给的中心读数是 8128 微特斯拉,等于理论值的 97%。差的那 3% 正是真实螺线管端部效应与有限长度带来的衰减,不是编的。

第二件事是外壳与内容分离。所有课共用一套外壳:一个三维世界、常驻中控台、主线问题、步骤条。每节课只交三样东西——文字、模型、场景配置。

外壳代码里那些注记也很直白,比如样式表开头写着「色值只出现在下面的变量区;组件规则只用变量」。也就是说,颜色和字号不是随手写的,而是被一条自检规则管着的。

第三件事是自检加人工看图。作者的说法是每节课在三种屏幕尺寸下逐步跑自动检查(数字、遮挡、对比度、名牌和标注是否相交),再由人逐步看截图。

我在代码里找到了这套检查留下的痕迹:外壳里嵌着一段配置校验,光报错文案就有 65 条,全是「这个字段要是什么类型、取值得在哪个范围」的硬约束。中控台的滑块缺了最小值、开关的档位重复、考核要记录数据却没写记录表,都会在这里被拦下。

第四件事是降级。54 节课全部带两套兜底:浏览器不支持「减少动态效果」系统设置时照常播,支持时压掉动画;帧率掉下去之后自动切到不透明的纯色面板,省掉玻璃质感的开销。这两条是给学校机房里那些老机器留的。

还有一点值得单独说:每节课的代码里都藏着七道左右的课堂提问,带选项、正确答案和解析,答案是「B」或「C」,解析里写明依据教材哪一题。54 节课一共 391 道。加上每课最后一步的考核,这套东西不只是演示,是能立刻拿去点名的。

实测:我数出来的数字,和 README 说的对得上

项 我数出来的 README / 站点写的
课时数 54(化学 25、地理 14、物理 10、生物 5) 54 ✓
总文件数 115 个,其中课件 54、封面 54 未写
课件总体积 48.9 MB 「每节约 1 MB」✓
单节体积 最小 0.84 MB,最大 1.16 MB ✓
单节压缩后 247 到 261 KB(gzip) 未写
步骤总数 453 步,每课 7.4 步(中位 8) catalog 逐课列出 ✓
课堂提问 391 道,每课 7.2 道 未写
带考核配置 54 课全部 未写
中文正文量 31.8 万字,每课 5895 字 未写
三维绘图库版本 three.js 第 186 版 未写(只写了 MIT)
许可证 CC BY-NC 4.0(非商用) ✓

体积这一栏有个必须说的发现:48.9 MB 里有 37.5 MB 是同一份三维绘图库的 54 个副本。

每节课都是一个完整独立的文件,所以每节课里都塞了一份完整的 three.js(也就是把三维模型画到网页上的那套绘图库),单份约 700 KB,占每节课体积的中位 73%,全站合计 77%。这是「单文件自包含、双击就能开」这个设计必然要付的代价——换来的是不联网、不装软件、拷到 U 盘就能上课。

浏览器实测:我把合成氨这一课在无头浏览器里打开,渲染出 154 行可见文字、33 个按钮、4 个画布,整个过程外部请求 0 次。

不加载字体、不加载图片、不调任何接口,断网也确实能开。学习进度存在浏览器自己的本地存储里(键名是 lab3d: 加课号),不上传、不需要登录,站点「关于」页写的「不使用跟踪 Cookie」这条也对得上。

三处该修的地方,和我核不实的一处

第一处,离线和在线都少一个目录页。课件左上角那个「目录」按钮,跳的是同目录下的 index.html。

我在解压后的离线包里找了一圈,任何层级都没有这个文件;在线站点上这个地址也是 404。也就是说,学生点「目录」回到课程列表这一步,现在是断的。仓库里那两条「缺少 index.html」的 issue 说的就是这件事,作者把「加一个目录索引页」写进了待办,但还没有动。

第二处,离线包比它说的少两样东西。release 里的压缩包 14.1 MB,解开是 98 MB、54 节课齐全,但不含课程清单,也不含任何目录页。

README 里把「课程清单」当作可选数据一并介绍,实际离线包里没有。想自己做一个课程入口页的话,得另外去仓库里取那个清单文件。

第三处,一次撤下十节课,但没来得及收尾。第五次提交一次性删掉了 10 节课(alpha-scatter-step、amylase-step、meiosis-step 等),提交说明写的是「等作者复核后再放出来」。

问题是站点的教材出处没有跟着改:有一条 10 月 28 日提交的 issue 指的还是被撤下的那节课(α 粒子散射),我访问它的线上地址是 404。这不是内容错误,是一次批量回滚之后留下的悬空引用。

还有一处算术,是别人先报出来的,我复算了一遍。有读者指出螺线管那节课第 9 步写着「中心读数 8128 的一半是 4156 微特斯拉」——8128 除以 2 是 4064,而 4156 其实是它的 0.511 倍。

同一节课第 8 步自己就正确写成了「0.51 倍」,所以我复算确认这条报得对:数字本身没错(4156 是理论值),错的是「一半」这个说法。同类的小瑕疵还有几条挂在 issue 里,都对得上原文,作者一条都没关。

这些都不影响「能不能上课」这个判断,但能看出这个项目的阶段:内容做得比维护细。54 节课的正文和读数经得住逐个复算,反而是目录、包结构、批量回滚的善后这些「工程收尾」的活还欠着。

谁能真的用它

在岗的老师是最直接的受益者。理化生地理里那些「三维才讲得清」的知识点,这套东西覆盖面很全:地理的太阳直射点回归、洋流、喀斯特,化学的电解、滴定、球棍模型,生物的质壁分离与有丝分裂,物理的抛体运动与感应电流。打开网页就能用,投影和白板都行;机房网不好,把离线包解压到每台机器上也能开。

家教和家长拿它当演示工具也合适。孩子问「为什么最后半滴颜色就全变了」,中和滴定那一课从润洗、赶气泡、逐滴加入一路走到半滴终点,配合错误操作那一节,比讲十遍都直观。

要提醒的一条红线:这套课件的许可证是 CC BY-NC 4.0,明确写了不能商用。也就是说,不能拿去打包成付费网课卖,也不能装进收费培训机构的教具里。自己课堂上用、家教给孩子看、改了自己用,都在允许范围内;要商用得另外去谈授权。

想靠它赚钱的话,它本身不是生意。真正能搬走的是方法:先写事实表、再写内容;一个外壳配多份内容;用自检管住风格和数字。这套流程换成别的题材一样成立——设备拆解演示、工厂安全培训、医疗器械说明,都是「一个可交互场景 + 一份必须准确的数字」。作者自己在「关于」页上也说了,接定制课件和数字孪生。

不适合谁:想找现成 PPT 素材往里贴的人,这套东西是网页、是代码,改起来要碰前端;想给学生布置在线作业、收成绩的人,它的进度只存在学生自己浏览器里,交不上来。

判断

这套东西的内容密度,在开源教育项目里属于少见的一档。31.8 万字正文、453 个教学步骤、391 道带解析的课堂提问、54 节课全部挂在人教版具体章节上——这个量级,一个做三维可视化的人带着一组 AI 模型在七个小时里交出来,说明流水线是通的,不是堆出来的。

它做对的那件事,值得所有做教学工具的人抄:先把数字的出处写死,再去做交互。事实表把「教材事实」和「教学设定」分开,课件里每个数都能追溯回去,所以我在螺线管那节课上复算,能算出 97% 这种有解释的偏差,而不是一团糊。这比任何「做得真漂亮」的评价都重要——教育内容一旦数字错了,界面越酷越危险。

欠的地方也很清楚:目录页没有、离线包少东西、批量回滚后的引用没收拾、社区报的算术错还挂着 16 条没关。这是「内容已经能上课、工程还差一口气」的状态,不是半成品,也不是成品。

要试的话,建议先别下载那个 14 MB 的大包。打开线上任意一节课,走完一节完整的 8 步,看学生能不能自己把中控台拖出结论。能,再考虑整套搬进机房。

相关阅读:

发表评论