· technology· 约 20 分钟精读
Qubitlab Offline Learning Measurement Standards Mapping — Technical Analysis | KeyRotate Technology
一个不注册、不联网、没有服务端的教学应用,怎么向家长说明孩子学到了什么?本文以密旋科技 QubitLab 的运行形态为样本,拆开端侧学习度量的四条工程线——星级是唯一的原语、第三颗星被一道概念闸门锁住、掌握度是阈值命中而非诊断、能力维度条是同一标量的单调饱和;并给出每日挑战的本地日历轮换、家长报告的本地渲染,以及这套度量回答不了的问题。
一、一个不联网的应用,要向家长说明孩子学到了什么
在家里,家长拿起手机打开一款教学应用,看到的不是服务器上的一个账号,而是一台设备上的进度。密旋科技的 QubitLab 是一款面向 App Store 的移动端量子物理与 STEM 启蒙沙盒:不注册、不联网、没有服务端,全部进度只存在本机。这种形态带来一个很具体的问题——如果数据不出设备、也没有云端账号,家长和老师凭什么相信屏幕上那三个字:已掌握。
要回答这个问题,应用得先把自己那套度量讲清楚:它记了什么、怎么算出来的、这些数字能证明什么,又证明不了什么。本文不讨论界面是否好看,只拆开这台设备里已经存在的那条度量链路,从一次通关得到的一颗星,一直走到家长手机上的一份成绩单。
二、度量的原语只有一颗星
端侧学习度量最容易失控的地方,是让每个页面各记一套数:关卡页有一套完成度,个人中心又有一套积分,两者口径不同,久了就对不上。QubitLab 的做法是把原语压到最小——整条进度只有一个逐关星级字典,键是关卡编号,值是星数,取值 0 到 3;其余所有数字都从它读出来。
这里有一个容易被忽略的取舍:星级对同一关卡只保留历史最好成绩,而不是把每次重玩的星数累加。重打一遍拿到更好的成绩会替换旧值,不会叠加。于是“星级总和”天然带有上界:96 关、每关最高三星,上限就是 288 星。一个不会无限增长的标量,后续所有阈值判断才有稳定的量纲。
| 度量 | 来源 | 取值范围 | 现场含义 |
|---|---|---|---|
| 星级总和 | 逐关星数字典求和 | 0 到 288 | 同一关只保留最好成绩 |
| 已解关卡数 | 星数字典的键数 | 0 到 96 | 出现过即计入,与星数无关 |
| 连续天数 | 每日挑战完成日期集合 | 0 起递增 | 与关卡星级互不影响 |
表里第二行与第一行的差别最需要说清:“已解关卡数”只数键的个数,不看这颗星是一星还是三星。于是一个“每关都摸过一遍、但都没拿满”的孩子,与一个“只开了少数关卡、但每关三星”的孩子,会呈现出两种完全不同的形态。产品没有把两者压成一个笼统的完成度,而是让它们并排出现——这是后面所有解读的前提。
三、星级怎么给:第三颗星被一道概念闸门锁住
把星级拆开看,会发现它并不是“打得快就给星”。按 QubitLab 的实现,一次实验台架的通关最多只能记两颗星,第三颗星被单独留给一次前置概念检查,而且这条规则写在关卡结算函数里面,任何调用方都无法绕过:结算函数先把调用者请求的星数截断到两颗,再判断这一关的概念检查是否已通过,通过才把星数抬到三颗。
其中 是本次通关请求的星数, 表示该关概念检查是否已通过, 是这一关的历史最好成绩。这个式子的读法是:实验台架负责“做到”,概念检查负责“说清”,两颗星与第三颗星分别落在两者身上。
| 星级 | 授予条件 | 学习含义 |
|---|---|---|
| 第一颗 | 完成关卡的核心物理目标 | 动手做到 |
| 第二颗 | 在给定约束内完成 | 不仅做到,而且做对 |
| 第三颗 | 通过该关的前置概念检查 | 能解释为什么这样做 |
这条设计的工程意义在于它把“学习闸门”放进了数据层,而不是放在界面上。界面可以有很多条通往结算的路径,但只要写星的动作只有这一个入口,第三颗星就无法被绕过。同一个结算函数还顺手维护了两样东西:每关的历史最少步数,以及下一关的解锁——注意是按课程顺序解锁,而不是按关卡编号顺序,因为各章之间穿插了衔接关卡。
四、从标量到一个判断:掌握度是一道阈值
有了星级总和这个标量,下一个问题才是家长真正关心的:孩子算不算“掌握了”某个知识点。QubitLab 的做法是把课程标准逐条列出来,每条给一个星级阈值,再拿总星数去比。以它内置的这组标准为例,五条标准的阈值依次是 6、10、15、25、35 星。
| 标准编号 | 主题 | 阈值星数 | 关联的实验室 |
|---|---|---|---|
| MS-PS4-2 | 波的反射、吸收与穿透 | 6 | 波之领域与纠缠 |
| HS-PS4-3 | 光的波粒二象性 | 10 | 波粒二象性与波动之境 |
| HS-PS4-5 | 量子信息科技应用 | 15 | 量子逻辑与电路实验室 |
| HS-PS1-8 | 核能与阿尔法衰变隧穿 | 25 | 量子隧穿实验室 |
| HS-PS4-2 | 数字加密与密码学 | 35 | BB84 量子加密实验室 |
阈值为什么按这个次序抬高,是可以解释的:越靠后的标准,对应的物理概念越依赖前面的直觉积累——要理解隧穿,得先有波动的直觉;要理解加密,得先有叠加与测量的直念。用总星数做门槛,等价于说“先把前面的关走够,再谈这一条”。
但也必须在这里承认一处简化:这五道门槛用的都是同一个总星数,而不是各自领域的星数。也就是说,掌握判定并不追踪“这些星是从哪些关得来的”,只追踪总数是多少。这一点在第五节会更明显,也是这套度量最需要如实交代的地方。
五、能力维度进度条的真相:同一标量的单调饱和
家长报告里还有一组五条的能力维度进度条,看起来像是在分别度量五种素养:波粒二象性、叠加与逻辑门、势垒穿透、纠缠关联、BB84 加密。真正读代码会发现,这五条并不是五个独立的分数,而是同一个总星数分别除以五个不同的分母。
分母从 24 一路排到 120,且依次翻倍或递增。这意味着五条进度条其实是同一个单调递增函数在不同尺度下的读数:总星数增加,五条会一起上涨;总星数不变,任何一条都不会单独前进。在发布版截图中可以看到,早期阶段的五个读数大致是 11%、6%、4%、3%、2%——它们同时很小、同时增长,正是共用一个标量的表现。
| 直觉上以为 | 实际实现 | 由此产生的边界 |
|---|---|---|
| 五个维度各自独立评分 | 同一个总星数除以五个分母 | 不能据此说“擅长纠缠不擅长加密” |
| 进度条高就等于该领域强 | 它只反映全局累计星数 | 少数关卡的高星也会推高全部五条 |
| 短板会被单独暴露 | 短板不会单独显示 | 不具备诊断能力,只能看总量 |
这条边界不是缺陷,而是诚实:分母的差异只表达“期望的积累量不同”,并不表达“能力维度不同”。把这一层写进文章,是因为家长最容易被“五条进度条”误导成“五项能力测评”。凡是要从进度条上读出诊断结论的地方,都应该停一下,回到总星数与关卡清单本身。
六、每日挑战:没有服务端的那个“今天”
每天自动出现一道挑战,是拉回学习节奏的常见做法。难点在于:这款应用没有服务端,那么“今天是哪一天、该出哪一关”由谁决定。QubitLab 的答案是完全交给本机日历:取当前日期在当年中的日序(第几天),再用它对一个固定的关卡序列取模,得到一个关卡编号。
其中序列有 28 个关卡编号,取模后落到 0 到 27 之间。这个设计有几个可以明说的性质。
| 性质 | 表现 | 需要注意的地方 |
|---|---|---|
| 确定性 | 同一天、同一设备,重复打开得到同一关 | 不依赖网络与随机数 |
| 循环性 | 28 天一轮回,取模后周而复始 | 只有 28 关进入挑战池,其余关卡不出现 |
| 本地性 | 日序取自本机日历 | 跨时区与手动改时会影响“今天”的取值 |
| 无服务端 | 不查询任何远程排期 | 也因此无法按账号做个性化 |
这里有两处必须如实说明。其一,挑战池只有 28 关,而整个课程有 96 关,所以每日挑战并不能覆盖全部内容,它更像一条固定的复习线索,而不是“每天解锁一门新课”。其二,日序来自本机日历,那么这台设备的“今天”是什么,会影响当天抽到哪一关;跨时区旅行、把系统日期手动往前调,都可能让同一台设备在相近的物理时刻落到不同的日序上。产品能做的是保证“同一台设备、同一天、结果唯一且可复现”,做不到的是让两台设备在任意时刻都抽出同一关。
七、家长报告与成绩单:本地渲染与儿童隐私
把前面几节拼起来,就是家长报告页上看到的东西:三个关键统计(已解关卡数与总关卡数之比、星级总和与满星上限之比、连续挑战天数),一组课程标准卡(每条标准给出编号、适用的学段、关联的实验室,以及命中阈值后从“进行中”变为“已掌握”的状态),五条能力维度进度条,再加一张明确写着“全程离线、数据只在本机”的隐私说明卡。
这些内容全部由本机数据当场计算并渲染,不上传任何一项。与前几节呼应的是几条设计口径:报告里显示的每一个数字,都能在设备内追到它的来源(星数字典、完成日期集合、关卡清单),不需要问服务器要任何东西。多语言也是渲染层的事——同一份进度数据,在中、英、日、韩等语言下只是文案不同,数值完全一致,因此增加一门语言不会带来第二套维护。面向儿童的功能则被一道家长门挡住:在引导升级之前,先要过一道家长确认,避免未成年人直接走到付费入口。
| 报告元素 | 数据来源 | 是否出设备 |
|---|---|---|
| 三个关键统计 | 星数字典与日期集合 | 否 |
| 课程标准卡 | 内置标准目录与总星数 | 否 |
| 能力维度条 | 总星数除以固定分母 | 否 |
| 家长确认门 | 本机交互校验 | 否 |
需要把一处边界讲透:本机渲染与零上传,意味着报告的可信度建立在“这台设备上的记录没有被改动”之上。它不像云端账号那样有服务端背书,也不存在跨设备的统一视图。一个孩子换了一台设备,进度不会自动跟过去,除非用导出与恢复的方式迁移。这是离线优先换来的确定性所附带的代价,不是可以靠一句话绕过的取舍。
八、这套度量回答不了什么
把边界写完整。
它能做到的,是在没有账号、没有网络的条件下,把“孩子走了多远”这件事,用一组彼此一致、就地可核查的数字表达出来:星级是唯一的原语,第三颗星被概念闸门锁住,掌握度是清清楚楚的阈值判断,家长报告全部在本机生成。
它做不到的,至少有四件。第一,它不诊断能力。总星数与五条进度条反映的是累计投入与通关情况,不能回答“孩子在哪个概念上薄弱”——因为短板不会被单独暴露。第二,它不比较跨设备进度;没有服务端,就没有天然的跨设备汇总。第三,它不保证“今天”的挑战对所有设备一致,因为日序来自各自的本地日历。第四,它不能替代教师判断:标准卡的“已掌握”是一次阈值命中,命中的是星数门槛,而不是一次独立的能力测评。
把这四条写进产品说明,比把它们藏起来更需要一点克制。一款教育应用最容易被高估的,正是它对学生能力的判断力;而一款离线应用最容易被误解的,正是它“没有账号就等于没有记录”。两者之间,恰好是本文这条度量链路要守住的中间地带:用最少的原语记住发生了什么,用清楚的阈值表达走到了哪里,然后诚实地说明——从这里读不出结论的地方,就该停手。
九、结语
离线优先的承诺是数据不出设备。顺着这条承诺往下走,会发现被留在设备里的不只是记录,还有“怎么算”这件事本身:既然没有服务器来汇总与评分,那么度量就必须在端侧自洽——原语要少到能一眼看穿,阈值要清楚到能当场复核,边界要明白到不越界下结论。把这件琐碎的事做对,家长手里那份成绩单才不只是几个百分比,而是一条能被追问到底的链路。
参考文献
[1] Next Generation Science Standards, HS-PS4, HS-PS1 and MS-PS4 Disciplinary Core Ideas. https://www.nextgenscience.org/ [2] U.S. Federal Trade Commission, Children’s Online Privacy Protection Rule (COPPA), 16 CFR Part 312. https://www.ftc.gov/legal-library/browse/rules/childrens-online-privacy-protection-rule-coppa [3] Apple Inc., App Store Review Guidelines (Kids Category, Guideline 1.3 and 5.1.4). https://developer.apple.com/app-store/review/guidelines/ [4] College Board, AP Physics 2: Algebra-Based Course and Exam Description. https://apcentral.collegeboard.org/courses/ap-physics-2 [5] International Baccalaureate Organization, Diploma Programme Physics Subject Guide (Topic 7: Atomic, Nuclear and Particle Physics). https://www.ibo.org/programmes/diploma-programme/curriculum/sciences/physics/ [6] Apple Inc., Swift Programming Language — Codable, Equatable and Value Semantics. https://docs.swift.org/swift-book/