· engineering· 约 19 分钟精读

从滑杆到开箱:QubitLab 猫态救援关卡的参数映射与胜利闸门工程

核心要点速览 · TL;DR 概要

猫态救援界面里的温度、磁屏蔽与概率读数分别由什么代码更新?本文沿着 QubitLab 的真实 SwiftUI 关卡实现,核对滑杆量程、即时映射、开箱抽样、两阶段状态与未接入的反馈分支,并标明这些教学规则和真实量子设备之间的边界。

从滑杆到开箱:QubitLab 猫态救援关卡的参数映射与胜利闸门工程

一、从一次开箱动作开始

一个孩子打开“薛定谔的猫”章节,选中“低温退相干屏蔽”关卡。屏幕上有装置舱、温度滑杆、猫的生存概率读数、屏蔽按钮和开箱按钮。直觉上,滑杆在改变物理条件,概率条在反馈条件的结果,开箱则像一次测量。但工程上要分别问三个问题:哪个状态真的被修改,数值用什么公式得出,何时才被认为完成关卡?

密旋科技的 QubitLab 是面向 App Store 的移动端量子物理与 STEM 启蒙交互沙盒,不是量子处理器控制端,也没有连接实验设备。本篇只沿着 /root/14TB/apps/qubitlab/Sources/QuantumLab/Views/Odyssey/MiniGames/CatRescueGameView.swift 和关卡目录追踪这一段交互,把温度映射、衰减计时、开箱抽样与胜利条件拆开。以下数字是源码实现值,不是实验数据或仪器规格。

选题的时点来自一条近期科普资讯:福建省科学技术厅十月发布的前沿新兴技术科普作品征集,把量子科技公众传播作为主题,并接受互动体验类形式[1]。这说明互动表达正是值得讨论的科普载体,但不代表 QubitLab 已参加征集,也不能据此推断它满足任何评审要求。本文关注的只是:当教学内容落进滑杆和按钮之后,交互有没有把自己的因果关系说清楚。

猫态救援关卡:参数驱动的端侧因果链界面标签、演示读数与真正胜利条件分别核对,避免把动画当成物理测量可调入口15–300 mK · 15 mK 步进0.5–5.0 T · 0.5 T 步进界面即时映射15 mK → 生存率 92.25%线圈 → 生存率上限 88%每 1.2 秒本地计时未观测且未结局:−2%下限 15%;部分关卡例外开箱随机分支random ≤ 生存率 且 生存率 ≥ 75%→ ALIVE;否则 → COLLAPSED状态阈值≥ 80%?关卡胜利闸门isObserved ∧ ALIVE ∧ 生存率阈值阶段一后重置为 45%,再做阶段二核对结论T₂ 文案不是模型变量;当前反馈元组定义后无调用点

这张图只呈现一条可追踪的实现链,不代表真实量子装置。箭头连接的是 SwiftUI 页面状态与关卡判定:温度、磁场、频率三路输入会写入概率标量;开箱按钮走软件随机接口;最后由各关自己的条件决定是否通过。图中 15 mK 映射值按视图公式计算,供对照实现使用,不应被理解为实验结果。

二、真实代码中有哪几组状态

LevelPlayView 在 level.type == .catRescue 时创建 CatRescueGameView。视图用本机 @State 保存挑战阶段、步数、生存概率、磁屏蔽强度、芝诺脉冲计数、脉冲频率、低温温度、观测标志与结局。除第 25 关另用放射性时钟模型外,其他猫态关卡都进入这套视图;第 30 关“低温退相干屏蔽”是本篇的温度样本。

这个状态分法有一个直接后果:参数不是测量仪器采来的数据,而是界面状态;概率也不是服务器返回或设备读出的量,而是视图内计算后用于驱动读数、进度条与胜负分支。它们随当前页面存在,操作时增加步数,再由上层的通关回调接收。关卡交互本身没有把每次拖动保存成可追溯实验记录。

交互输入源码量程与步进滑动时写入的量主要后续用途
制冷温度15 至 300 mK,步进 15 mK线性映射后的生存概率概率读数与低温关胜利条件
磁屏蔽线圈0.5 至 5.0 T,步进 0.5 T线圈映射后的生存概率概率读数与替代性屏蔽条件
芝诺频率2 至 50 Hz,步进 2 Hz频率映射后的生存概率概率读数与特定关卡的频率闸门
磁屏蔽按钮每次点击当前概率增加 0.20,封顶 0.98记录一次步数;重新开启结局
芝诺脉冲按钮每次点击计数增加一,概率增加 0.18,封顶 0.99记录一次步数;用于频率关卡闸门

表中的磁场单位与温度单位是界面演示参数的标注,不应被误读为设备测量精度。尤其“15 mK”不是手机测出来的稀释制冷机温度;它只是滑杆可到达的教学输入。实现层没有连到任何外置温度计、磁强计或量子实验平台。

三、温度映射是游戏规则,不是退相干求解器

温度滑杆的 onChange 把数值直接代入一个仿射表达式:

Pdisplay(T)=min⁡(0.98,  0.40+300−T300×0.55)P_{\mathrm{display}}(T)=\min\left(0.98,\;0.40+\frac{300-T}{300}\times0.55\right)

在代码量程两端,温度 300 mK 映射到 0.40,15 mK 映射到 0.9225。中间没有读取热噪声谱、材料参数、哈密顿量、环境耦合常数或实测退相干时间;计算仅根据一个滑杆值改变一个百分比。它使“温度降低,演示生存读数升高”成为立即可见的交互约定,适合关卡内做方向性探索,但不能从读数反推出真实器件的相干时间。

磁屏蔽与芝诺频率同样是简化映射。线圈滑杆使用 0.40 + B / 5.0 × 0.48 并封顶于 0.98;频率滑杆使用 0.50 + f / 50 × 0.45 并封顶于 0.99。磁屏蔽按钮和芝诺脉冲按钮则把概率直接加上固定增量。几条路径会修改同一个 survivalProbability,但它们没有合并到一个“当前配置”的纯函数里,因此同一个结果可能来自温度、线圈、按钮或几条路径的累加。

对教学交互来说,这个设计有一个优点:拖动之后马上能看到结果,不需要等待网络,也不会因为服务器失联而卡住。但它也意味着概率读数没有充分标出来源。单看“92%”无法知道它是低温滑杆刚刚计算的值、连续按钮叠加的值,还是阶段重置后的初始值。若希望学习者比较变量,界面就需要显式保留“当前读数来自哪些控制”的语义,而不是只保留最后写入的标量。

四、显示概率与开箱结局是两层判定

按下“打开隔离观察箱”时,代码先置 isObserved = true,停止衰减计时器,再从 Double.random(in: 0...1) 抽一个值。只有抽样值小于当前生存概率、且概率至少为 0.75,结果才设为 ALIVE;否则设为 COLLAPSED。所以界面读数与结局并不是同一个布尔量:读数是一个连续状态,结局是经过一次伪随机抽样后的分支。

这里的 0.75 是一道额外的门。生存读数即使显示 0.74,也不可能抽到 ALIVE;达到 0.75 后才进入概率分支。普通猫态关卡随后要求阶段条件成立、已经执行开箱、结局为 ALIVE,并且读数不低于 0.75。芝诺关卡和低温关卡还会分别增加 0.80 的读数阈值,并要求频率达到 25 Hz 或温度不高于 50 mK;低温闸门也允许磁屏蔽强度达到 2.0 T 作为替代条件。

stagePass=isObserved∧(outcome=ALIVE)∧(P≥Pgate)∧C\mathrm{stagePass}=\mathrm{isObserved}\land(\mathrm{outcome}=\mathrm{ALIVE})\land(P\ge P_{\mathrm{gate}})\land C

其中 CC 表示关卡自己的附加条件。这个表达式是代码路径的摘要,不是量子力学定律。随机数抽样也不是来自物理量子随机数发生器;它是应用运行时的软件随机接口。关于“频繁测量抑制态跃迁”的真实量子芝诺效应,已有受控离子实验研究,但实验装置、测量脉冲与这里的教学滑杆并不等同[3]。

五、两阶段重置与计时器的生命周期

若阶段一通过,视图将阶段改为二,清除 isObserved 与 outcome,并把 survivalProbability 直接重设为 0.45。随后学生需要重新调参、再次开箱,才能完成这一关。温度、磁场、频率以及芝诺按钮计数并没有在这段重置代码中一起复位;因此“新阶段”的概率读数与仍停留在原处的滑杆可能暂时不一致。

普通猫态关卡还有一个每 1.2 秒触发的 Timer。只要未观测且没有结局,除芝诺相关关卡外,生存概率每次减少 0.02,最低保持 0.15。页面消失时会失效计时器;开箱时也会停止它。该计时器不读取时间窗或衰变常数,也不是泊松过程采样,而是按固定节拍扣减展示状态。把它描述为“逐步衰减的游戏状态”准确,把它描述成单原子衰变动力学则不准确。

第 25 关被单独分支到 RadioactiveClockExperimentState,使用观测窗口、指数生存趋势和显式冻结记录;该模型有自己的单元测试,关卡页面也有英文与简体中文界面测试[4]。但这套带记录与比较的模型并没有被复用到第 30 关的温度滑杆。两者同属猫态章节,不意味着实现模型相同。把边界写清楚,才能避免读者把一个演示性概率条理解成整章共用的物理内核。

六、源码里写了反馈,但当前页面没有接线

CatRescueGameView 还定义了一个 currentFeedbackHUD 计算属性,其中包含温度与相干时间 T2T_2 的文案、目标阈值、进度比例和建议提示。然而,全工程搜索只有这一个定义,没有任何读取或显示位置。因而它是未接入的计算属性,不是玩家当前能看到的反馈卡。

这一点会暴露出一个重要的维护风险:属性内部把温度不高于 50 mK 的状态标成目标,并给出 T2>100 μsT_2>100\,\mu s 的文字;计算式却是 T2=(300/T)×10 μsT_2=(300/T)\times10\,\mu s。在滑杆步进下,45 mK 是不高于 50 mK 的可达值,但按该式只有约 66.7 微秒;30 mK 才得到 100 微秒,15 mK 为 200 微秒。也就是说,至少在 45 mK 这个边界点,“目标条件”与文案中的数值承诺并不一致。由于这段 HUD 没有接到页面,目前不能把这个矛盾说成用户已经看到的界面缺陷;它是源码里一个需要在接线前解决的规则不一致。

Apple 对 SwiftUI Canvas 的说明指出,画布能高效绘制大量图元,但图形本身不会自动生成逐项的辅助功能语义,需要通过标签与合成子元素补充[5][6]。当前猫态装置中的心电线与霜冻角标由 Canvas 绘制,放射性时钟画布设置了自动化标识,但标识本身不是读屏描述。若把实时曲线用于教学判断,曲线旁的文本读数、量纲和状态变化应继续作为独立语义控件存在;不能只依赖图形被看见。

七、把这条交互链收敛成可测试的工程

从现有实现出发,后续改造可以按四条窄边界推进。第一,把滑杆输入收进一个不可变配置值,例如温度、磁场、频率与阶段;视图不再在多个 onChange 中分别直接改写最终概率。第二,把映射写成纯函数,输入配置、输出展示趋势与闸门条件,并为温度端点、步进边界 45/60 mK、频率 24/26 Hz、线圈 1.5/2.0 T 建立测试。因为滑杆按 15 mK 和 2 Hz 离散,阈值 50 mK 与 25 Hz 都不是可直接选择的值,代码应明确说明可达边界究竟是 45/60 mK 与 24/26 Hz。

第三,把开箱抽样与胜利判定拆开。可注入随机源,用固定种子分别覆盖“概率门不足”“抽样存活”“抽样失败”三类结果;测试还应验证阶段一到阶段二时,哪些控制保留、哪些概率重置、计时器是否重新启动。否则用户会遇到相同滑杆位置却不同阶段起点、刷新后走势不同的隐性规则。

第四,为每个显示数字标明来源与性质:测得值、模型估算、教学映射或一次抽样。当前温度与磁屏蔽读数属于教学映射,Double.random 的输出属于软件抽样,装置曲线是状态可视化;三者都不应伪装成物理设备测量。与此同时,未调用的反馈属性应删除,或在核对阈值、文案、单位与步进之后真正接入,并用页面级测试断言它可见。这样能让产品界面、胜利逻辑和自动化测试共同引用一份规则。

本机运行对儿童和现场教学有实际好处:滑动与开箱不要求账户或稳定连接,也不会因为网络往返延迟而改变一次操作的反馈时序。代价则是没有服务端行为数据可以自动告诉团队“45 mK 处大家是否困惑”或“某关是否总卡在随机分支”。因此离线并不等于少做验证;它要求把关键边界写成确定性测试,把不能观测的用户行为留在能力边界里,而不是凭空补出产品分析结论。

八、结语:清楚地区分趋势、结局与物理事实

猫态救援这条实现链可以压缩为四步:滑杆改变本机状态,视图公式生成生存趋势,开箱按钮触发一次软件抽样,胜利函数再检查阶段与附加阈值。它把量子物理启蒙中不易直接观察的概念,变成可以拖动、读取、比较和复玩的移动端交互。真正值得工程审视的地方不是界面用了多少术语,而是读数是否有清楚来源、抽样结局是否有明确门槛、阶段切换会不会让旧参数和新状态错位。

福建省近期科普征集强调互动体验形式,国务院相关意见也提出在量子科技等前沿领域探索多元技术路线与典型应用场景[1][2]。对 QubitLab 这样的教育沙盒而言,现实任务不是冒充量子设备,而是将“模型做了什么”和“模型没做什么”解释到界面与测试里。只要读者能分清教学映射、软件抽样和真实实验测量,这段猫态交互就完成了它适合承担的科普职责。

参考文献

[1] 福建省科学技术厅. 关于征集前沿新兴技术科普作品的通知(2026-10-19). https://kjt.fujian.gov.cn/xxgk/tzgg/202610/t20261022_7239079.htm

[2] 中共中央办公厅、国务院办公厅. 关于推动科技创新和产业创新深度融合的意见(2026-10-21). https://www.most.gov.cn/xxgk/xinxifenlei/fdzdgknr/fgzc/gfxwj/gfxwj2026/202610/t20261021_197540.html

[3] W. M. Itano, D. J. Heinzen, J. J. Bollinger, and D. J. Wineland. Quantum Zeno effect. Physical Review A, 41, 2295 (1990). https://doi.org/10.1103/PhysRevA.41.2295

[4] QubitLab. RadioactiveClockExperimentModel.swift 与 RadioactiveClockExperimentModelTests.swift,项目源码与测试,2026 年 10 月查验. https://developer.apple.com/documentation/foundation/timer

[5] Apple Developer. Canvas — SwiftUI. https://developer.apple.com/documentation/swiftui/canvas

[6] Apple Developer. SwiftUI Accessibility: Beyond the Basics, WWDC21. https://developer.apple.com/videos/play/wwdc2021/10119/

[7] C. Müller et al. Quantum bath suppression in a superconducting circuit by immersion cooling. Nature Communications 14, 469 (2023). https://www.nature.com/articles/s41467-023-39249-z

Share:
Back to Blog