ARTICLE · 1250169
一位高中地理老师,用 WorkBuddy 做出太阳系 3D 演示系统的全过程





一、黑板画不出来的那个太阳系
教高中地理第一年,我在黑板上画过这样一个图:中间一个圆写“太阳”,外面八个圆,一圈一圈套着。
学生点头。我也点头。然后月考,问“天体系统的层级由小到大排列”,一半人写错。
问题不出在学生。问题在我那张图——它是平的。行星不会转,晨昏线是两根粉笔线,“同向性、共面性、近圆性”这九个字我只能用嘴说,学生拿什么去共面?上学期讲“地球运动”,我讲到太阳高度角,公式 H = 90° − |φ − δ| 写得工工整整,底下有个孩子小声问:“老师,那太阳到底在哪儿?”
我答不上来。因为黑板上太阳不在哪儿,它只是我画的一个圆。
后来我开始用 WorkBuddy。它不是“帮我写段代码”的工具,更像一个能听你说话的施工队——你说要什么,它去建,建完给你看,你说不对,它再改。几个月下来,我用它把这一节课做成了一个能转、能飞、能贴近看地表的太阳系 3D 演示系统。
最终交付物是这个东西:
太阳系.html,60.57 MB | |
这篇文章把我从“想”到“能用”的全过程写清楚。我不会贴代码——我一行都看不懂——但我会把该跟它说什么话一句一句写出来。你照着念,能做成。
二、先想清楚:它要补哪几个短板
动手之前我干了一件事:把教材翻开,把“我讲不清、学生想不通”的地方一条条抄下来。
这张纸后来成了整份需求的骨架。先说教学,再说技术——这一步千万别省,省了后面全是白改。
抄完这张纸,我心里那句“我想要个太阳系”就变成了“我要一个能回答这六个问题的东西”。这是两回事。
三、开工前,我给 WorkBuddy 立了四条规矩
对着它说的第一句话,不是“帮我做个太阳系”。
我先立规矩。这四条是后来吃过亏才明白必须写死在开头的:
- 单文件
:全站只出一个 .html,双击就能开。不许让我装 Node、不许起服务器、不许我改配置文件。 - 断网可用
:教室的网络情况各位都清楚。贴图、字体、脚本,全部写进那个文件里,不许留任何外链。 - 不让我下东西
:不许让我去官网下载 three.js 再手动放进某个文件夹。要什么你自己弄进来。 - 说人话
:每改一版,告诉我改了什么、在哪个按钮上能看见。别跟我解释代码。
第三条特别重要。我试过那种“你先去 npm 安装一下”的路子,光看懂“npm 是什么”就花了我一个晚自习。
四、第一段提示词:让它先复述,再动手
打开 WorkBuddy,新建一个会话,把下面这段整段贴进对话框,回车。
我要做一个「太阳系 3D 模拟演示交互系统」,用途是高中地理课堂投影演示。请先不要写代码,先做两件事:第一,把我的需求复述一遍,重点复述下面这些约束。如果我有漏掉、说得含糊、或者自相矛盾的地方,直接指出来,别客气。第二,给我一个分步骤的实施计划。每步只做一件事,做完停下来等我说「继续」。硬约束(这几条不能破):1. 最终交付必须是一个单独的 .html 文件,双击用 Chrome 或 Edge 打开就能跑。2. 断网也必须能跑。不许留任何 CDN、外链字体、外链图片。3. 不许让我安装任何软件或手动下载库文件,你负责把 three.js 和所有贴图内联进去。4. 我完全不懂前端。不要跟我解释代码,只告诉我:点哪里、能看见什么。功能要求,按优先级排:P0 必须:太阳 + 八颗行星 + 月球,能自转、能公转;鼠标拖拽转视角,滚轮缩放。P0 必须:单击任意天体,镜头飞过去,同时弹出介绍框。P1 重要:公转速度可调、可暂停;有轨道线;底栏有「受光面 / 晨昏线 / 极区 / 夜侧 / 细节」五个固定机位按钮。P1 重要:一个「课程」面板,按人教版(2019)高中地理章节列知识点,每条挂一个按钮,点了就把镜头摆到能看见它的位置。P2 加分:卫星层(木卫、土卫等);「教室视角」按我给的经纬度算太阳高度角;相位角面板。你会看到什么:它不会立刻写代码。它会先把你的需求复述一遍,然后指出“教室视角需要你提供经纬度”“P2 里的相位面板要说明用真实轨道还是画面比例算”——这些正是我原来没想清楚的。接着给你一个分步计划,通常七到九步。
这时候你只回两个字:继续。
为什么第一句要先让它复述
这是我这几个月最值钱的一条经验,跟工具没关系,跟怎么跟 AI 打交道有关系:
先让它复述需求,再让它动手。
因为 AI 有一个毛病:它太想让你满意了。你说“做个太阳系”,它会立刻给你一个能跑的东西,然后你发现方向全错,前面几百行白做。让它先用中文把你的意思讲一遍,你有机会在它还什么都没建的时候喊停。
后来我又给自己加了两条,你可以直接用:
第三,每做完一步,你先自己验收一遍:把你认为这一版可能出问题的地方列出来,并说明你是怎么检查的。第四,每步开始前先说你要改什么,等我回「可以」再动手,让我有喊停的机会。这两条一加,返工量掉了大半。
五、七步做出来
第 1 步 先要一个“能转的球”,别急着要好看
你说:继续。
你会看到:浏览器里出现一个灰色的球,慢慢转。旁边有太阳,几颗灰球绕着它跑。丑得很有诚意。
这一版的价值不在好看,在于确认它真的能在你这台电脑的浏览器里跑起来。教室那台机器是几年前配的,我不先在自己机器上跑通,课上就敢开?不敢。
有老师在这一步就急着说“加上土星环、加上木星大红斑”。忍住。先跑通,再加料。跑不通的时候你分不清是功能太多还是环境不对,排查起来又多花一倍时间。
第 2 步 加贴图,我在这里栽了第一个跟头
你说:
现在加贴图。用 Solar System Scope 的公开贴图(CC BY 4.0,记得在页面角落标注出处)。地球、火星先用 8K,其他行星从 2K 起步。有一条必须做到:每张图下载完要检查完整性。如果图片里有整片纯灰(128,128,128)的区域,说明下载被掐断了,必须换一个源重下。不要拿这种图凑数。你会看到:地球有了海陆轮廓,中国在东亚那个位置;火星有了水手谷那道大疤。
我也看到了:第二天早上打开,木星下半球是纯灰的。水星更绝,八成以上的像素是灰。
文件大小对、能打开、能显示、控制台一个报错都没有。但半个球是灰的。
原因我后来才弄明白:那批 8K 大图是夜里挂着下载的,连接被掐断后,图像库拿 128 灰把缺的部分补齐了。它觉得“我给了你一张完整的图”,它没错;我眼里只有半个木星。
我跟它说的是这句:
图片坏了不会报错,你要自己查。逐行统计接近 128 灰的像素占比,超过 4% 的那一行判定为坏图,整张作废,换另一个源重新下载。它照做了,还自己找了备用图源。三个坏文件全换掉了。
这一条请你抄在本子上:AI 不会主动告诉你有问题,因为程序“认为”自己没错。灰图能解码、糊图能显示、贴图抢来抢去只是闪一下——全都不报错。你必须用眼睛当测试员。
第 3 步 把“好看”改成“能讲”
灰球变成彩球之后,我兴冲冲拿去给自己试讲了一遍,发现一个问题:漂亮,但没法讲。
你说:
现在这套东西好看,但还不能上课。请按我的讲课顺序重排界面:1. 底栏左边加五个固定机位按钮:「受光面」「晨昏线」「极区」「夜侧」「细节」。 其中「晨昏线」这个按钮,镜头要正对昼夜分界线,让分界线竖着出现在画面正中央。2. 左侧加一个「目录」,按恒星—行星—卫星分组,点谁飞谁。3. 顶栏加两个按钮:「上一视角」(回到上一步)和「最佳视角」(按当前太阳光照重新回正)。 上课时我把画面拖乱了,底下几十个学生等着,我需要一键救回来。4. 介绍框要能拖动、能改大小、能整个关掉。有些天体我不想让学生先读字,我要他们先看形状。你会看到:底栏多出一排机位按钮。按「晨昏线」,地球的昼夜分界线正好竖在屏幕中间,左边亮,右边黑。
这个画面,我在黑板上画了十分钟,擦了又画,从来没画准过。
第 4 步 三个真正决定“能不能上课”的功能
到这一步,系统已经能看了。但“能看”和“能上课”之间还差三件事,这三件事只有站在讲台上的人才想得到。
(1)教室视角:把公式变成眼睛能看见的东西
加一个「教室视角」。按东经 119.5°、北纬 26.7° 计算:1. 实时算出当地太阳时、太阳高度角、太阳方位角,随系统时间变化。2. 画面切到"站在操场上抬头看天"的视角,能看见太阳此刻在天空中的位置。3. 加一个「把自转对准上午 10 点」的按钮,一点就把地球自转调到我上课那个时刻。为什么非得要这个:太阳高度角公式我讲了三届,学生能背不会用。让他们看见“上午十点,太阳在东南方,高度角三十几度”,公式就从纸上站起来了。
讲完还能追问一句:“那冬至日上午十点呢?”现场改日期,画面跟着变。这一问,比十道计算题管用。
(2)相位面板:金星为什么既是启明星又是长庚星
再加一个「相位」面板,实时显示每颗行星的三个数:相位角 α(日—行星—地球的夹角)、光照面比例 (1+cos α)/2、距角 ε。注意:这三个数必须按真实轨道半径和实时公转相位算,不许用画面上的压缩比例算。画面上再补一条压缩尺度的连线示意,让学生看得见这三个角在哪儿,但数值要用真的。学生总觉得金星“早上叫启明星、晚上叫长庚星”很玄。相位角一摆出来,一目了然。
我在这一条里特意加了“数值用真的、连线是示意”——不加这句话,它很可能拿画面上被压扁的轨道去算,算出来的数看着挺像那么回事,其实全是错的。给 AI 提要求,最容易漏的就是“用哪份数据算”。
(3)课程助手:把知识点直接挂在操作上
加一个「课程」面板,三个标签页:1. 知识点:按人教版(2019)必修一、选择性必修一 的章节顺序列,共 8 条。 每条写 3~5 个要点,配一个「易错点」,右边挂一个按钮,点了就把镜头摆到能看见它的位置。2. 随堂练习:12 道选择题,先让学生答,再点开看解析。3. 探月·探火:两张任务表,按时间排,逐条标「已实现 / 计划中 / 推迟 / 调整」。内容你写,但事实必须准:年份、重量、次数、国家,一个都不许编。写完之后你自己复核一遍,把拿不准的条目单独列出来问我,不要蒙。你会看到:按 K 键弹出面板。翻到「探月·探火」,嫦娥六号那行写着“2024-06,人类首次月背采样返回,1935.3 克”;嫦娥七号标着“推迟”,后面写清是因为 2026 年发射窗口不满足条件。
那张表我一条一条核过。这是给学生看的东西,年份错一个,比不讲还糟。
第 5 步 标注与截图:把板书数字化
你说:
加一个标注层。按 P 打开工具条:画笔(5 种颜色、3 种粗细)、橡皮、撤销、清空、截图。截图要把画面和标注一起存成 PNG,右下角自动带上校名和日期。一个技术上的要求:画笔必须画在一个独立的画布层上,不能画进 3D 场景里。否则我一转视角,标注就跟着跑了。最后那句话是我自己先想到的——因为我在别的软件上吃过这个亏。你越是能描述出“为什么不行”,它越不会走错路。
你会看到:可以在土星环上圈一圈,旁边写“环主要由水冰颗粒组成,横跨 28 万公里,平均厚度只有约 10 米”,然后按 S 存成图,直接拖进课件。
那行字我每年都写,今年第一次写在了画面上。
第 6 步 往近了看要清楚:分档贴图
2K 贴图在远处够用,一贴近就糊。这一步是把“能看”变成“值得看”。
你说:
现在所有贴图都是 2K,贴近看还是糊的。请改成两档:常态用低清,镜头拉近到一定程度自动换高清。1. 高清档规格:地球、火星、木星、月球用 8192×4096;其余行星和木星的四颗大卫星用 4096×2048; 土星的小卫星和天卫用 2048×1024。2. 切换绝对不能闪白。镜头飞过去之前,先把高清图解码好。3. 显存要有上限,看过的天体太多时要按"最久没用"的顺序释放,不能越看越卡。4. 显卡撑不住 8K 就自动退一档,不许黑屏,不许白屏。你会看到:双击木星飞过去,大红斑从一团模糊的褐色斑块变成能看清的漩涡纹理;退回来,又变回低清省资源。
那一下由糊到清,教室里会有一声“哇”。这声“哇”值这几个月。
第 7 步 打包,然后拔掉网线
你说:
把整个项目打包成一个 .html:three.js、全部贴图(转成 base64)、地名数据,全部内联进去。打包完自己检查三件事:1. 文件里不能再有任何外链(src=、href= 指向外部的一律不许有)。2. 把项目里用不上的旧贴图清掉,别让文件白胖一圈。3. 断网实测一遍,把控制台的报错原样打给我看。你会看到:太阳系.html,60.57 MB。双击,等个两三秒到五秒——它得先解开这 60 MB。
然后拔掉网线,按 F5 刷新。还是那八颗行星,还是那个大红斑。
这一步是整件事的分水岭。在此之前它是一个网页,在此之后它是一件教具。 教具的标准是可以带进任何一间教室,包括没有网的那一间。
六、我踩过的五个坑
这五个坑我想单独列出来,因为它们有个共同点:全都不报错。
看完这张表你可能已经发现规律了:
凡是“看起来还行、但就是不对劲”的,它都不会主动说。
你必须自己盯着屏幕看,然后把“哪里不对、应该是什么样”用大白话讲给它。
我的原话经常是这种:“木星下面是灰的。”“点进去还是糊的。”“这个角我算过,不对。”
它听得懂。它甚至经常一听到就知道原因在哪,只是它自己没想过要去看。
七、验收清单
东西做完了,别急着进教室。我照着这张单子一项一项试过,才敢在四十个人面前双击那个文件。
☐ 双击能打开,拔掉网线再刷新,照样能跑 ☐ 控制台(F12)零报错 ☐ 八颗行星 + 16 颗卫星,逐个点开,介绍框都有内容、不空白 ☐ 双击地球飞过去,地名(国名、山脉、航道)能看清 ☐ 「晨昏线」机位按下去,分界线正对画面中央 ☐ 「教室视角」的太阳高度角,跟手机天气软件对得上(差 1° 以内可以接受) ☐ 相位面板的数,用手算一遍,对得上 ☐ 任务表 38 条,年份、重量、国家逐条核过 ☐ 介绍框拖到边上、字号调到 160%,不重叠、不遮按钮 ☐ 手机或平板上打开,单列显示不挤(有老师用平板投屏) ☐ 按 S 截图,右下角有校名和日期 ☐ 让它自己转 20 分钟,不卡、不崩、内存不涨
最后一条别省。课上崩一次,这个班这学期就不会再信你的电子教具了。
八、课堂上怎么用
我试下来最顺的三个 15 分钟:
场景 A|必修一 1.1 第一课时(天体系统、八大行星)
0~3 分钟:开全景,一个字不说,让画面自己转。底下自然安静。 3~8 分钟:从目录点水星,一颗一颗点过去,每颗停 30 秒,只问一句“这颗和上一颗,哪儿不一样”。 8~13 分钟:按「自动巡览」,让它按顺序过一遍。这时候再讲“同向、共面、近圆”,学生眼睛跟着轨道走。 13~15 分钟:关掉介绍框(按 I),开随堂练习,当场答两题。
场景 B|选必一 1.2(晨昏线与昼夜长短)
按「晨昏线」机位 → 一半亮一半暗,先把分界线认下来 时间轴调到 40 天/秒 → 让学生看分界线怎么一点点倾斜 按「极区」机位 → 极昼极夜,一句话不用多讲 按 S 截图,进课件。这张图比我画的准。
场景 C|月球那一节
点月球 → 「近观月面」→ 环形山、月海 把镜头绕到月球背面 → 讲嫦娥四号:人类第一次在月背着陆,就在冯·卡门撞击坑 打开「探月·探火」,按时间往下念。念到“嫦娥六号,2024 年 6 月,月背采样返回 1935.3 克”的时候停一下,说:这两件事,人类此前都没做过。
这个停顿很有用。有学生就是从这一下开始,想去干这行的。
九、写给同行
三句话,都是我自己撞出来的。
第一,你不需要会写代码,你需要会验收。
这套东西我一行代码没写。但我每天开着它看,看见不对就说“这里不对,应该是这样”。几个月下来,我提了一百多条“不对”。
AI 缺的不是技术,是知道什么叫对。这件事只有站在讲台上的人能做。
第二,先把教学顺序写下来,再动手。
我第一段提示词写了八百多字,其中六百字在讲“第几章第几节要让学生看见什么”。技术部分只有三行。
那份需求,才是这个系统真正的图纸。
第三,别指望一次成型。
这个东西我前后改了三十几轮。第一版是个灰球,最后一版有 8K 地貌、38 行探测任务表和一整套课程知识点。中间那些版本,一个都没白费——每一版都是我在自己试讲时发现“这里还差一点”,然后再改一次。
教具和教案一样,是磨出来的,不是做出来的。
本系统贴图来自 Solar System Scope(CC BY 4.0);中国地理图层采用标准地图省级边界,含南海诸岛;课程知识点对应人教版(2019)高中地理必修第一册与选择性必修一。探测任务表中的计划类条目随时间可能调整,以各国航天机构正式发布为准。
GT创客空间 · 老墨















































































