macOS 桌面上的 3D 果蝇:由 FlyWire 真实连接组驱动
一只 3D 果蝇住在你的 macOS 桌面上——由真实的 FlyWire 连接组实时脉冲仿真驱动。它会爬过你的窗口、梳理身体、睡觉,并根据真实果蝇使用的神经元来决定是否逃离你的光标。
果蝇的脑窗口:来自 FlyWire v783 的 23,210 个真实神经元胞体位置,真实神经元位置上脉冲实时闪烁。两个发光的黄色标记是 Giant Fiber——逃逸指令神经元。点击任意区域即可对其进行刺激。
真实的部分
- 23,210 个神经元胞体位置(FlyWire v783 共 139,255 个)渲染出旋转的脑窗口,按 super-class(FlyWire 的粗粒度细胞类型分组)着色。
- 一个包含约 19,000 个真实突触连接的 668 神经元回路(突触计数,按神经递质预测标记符号)以 1 kHz 的漏电积分放电(LIF)模型运行:
- LC4(104)+ LPLC2(210) 迫近检测视觉神经元
- DNp01 / Giant Fiber(GF)(2)——逃逸指令神经元
- DNa01 + DNa02(4) 转向神经元 · DNp09(2) 前进行走
- DNg11(6) 梳理 · MDN(4) 后退行走("月球漫步")
- DNp02/DNp04/DNp11(6) 逃逸机动(翅膀)神经元
- 它们的 330 个最强突触伙伴,包括上行(本体感觉)和感觉(风)神经元
- 逃逸不是预设脚本。 光标的靠近会转化为真实 LC4/LPLC2 细胞的迫近输入;只有当 Giant Fiber 通过其真实突触真正放电时,果蝇才会起飞——约 1,200 个前馈抑制突触反向施压,这也是为什么缓慢靠近会被容忍,而快速猛扑会在约 4 ms 内触发逃逸,与真实动物一致。
果蝇本体是程序化生成的(FlyWire 是脑连接组——没有躯体几何数据),具有三足步态、可见的振翅、按高度缩放的飞行、梳理和睡眠姿态。
安装
环境要求:macOS 13+、Xcode Command Line Tools(Swift 5.9+)。 无需任何权限或授权——它所感知的一切(光标、窗口边框、点击转化为触碰、散热状态)都无需授权。
git clone https://github.com/DenisSergeevitch/desktop-fly.git cd desktop-fly ./build.sh ./DesktopFly
菜单栏会出现一个 🪰 图标,从那里退出即可。苍蝇通过一个透明、可穿透点击的覆盖层在你的桌面上游走——它不会拦截鼠标或键盘操作。
控制菜单(菜单栏 🪰)
| 项 | 作用 |
|---|---|
| Pause / Resume | 冻结整个世界 |
| Show/Hide Brain | 切换实时脑部窗口的显示 |
| Escape Test (loom) | 注入一个逼近刺激,观察 GF 是否放电 |
| Move to Next Display | 让苍蝇跳到另一块显示器上(仅在连接多块显示器时显示) |
| Add / Remove Fly | 增减苍蝇(只有第一只苍蝇携带脑) |
| Scare Flies | 惊吓所有苍蝇 |
脑部窗口支持交互:悬停可使旋转暂停;点击某个区域会以"光遗传学"方式刺激距离最近的约 60 个回路神经元,持续 400 毫秒。苍蝇的反应取决于真实神经网络在该刺激下的下游输出——点击 Giant Fiber 它就逃逸;点击 DNg11 它就梳理自己;点击一侧的 DNa01/02 它就转向。
真实神经元如何控制身体
| 身体行为 | 驱动信号 |
|---|---|
| 逃逸起飞 | DNp01 巨纤维放电 |
| 行走与静止、行走速度 | DNp09 放电频率 |
| 转向 | DNa01+DNa02 左右放电频率差 |
| 梳理 | DNg11 放电频率 |
| 后退小步 | MDN 爆发放电 |
| 神经性急冲 | LC4/LPLC2 群体放电频率 |
| 振翅力度、威胁性抬翅 | DNp02/04/11 放电频率 |
| 自发起飞 | 群体觉醒度 |
这个回路也打通了身体→脑的反馈:步态节律与腿的动作同步,反馈至回路中真实的上升性(本体感觉)神经元;光标快速移动则会刺激其对应的感觉(气流)神经元。
桌面生态(全部使用无需授权的 macOS 感知能力)
- **窗口地形**:窗口顶部边缘是悬崖——苍蝇会落在上面,沿着边缘行走,搭乘你拖动的窗口,并在窗口在脚下合拢时受到惊吓。
- **窗口逼近**:出现在苍蝇附近的窗口会触发“逼近”通路;该回路决定是否逃离你的对话框。
- **点击即触底**:在苍蝇旁边点击会通过风→GF 通路将其惊吓。打字即震动(空闲时间 API —— 知道按键的时间,但不知道按了哪些键)。
- **昼夜节律**:黎明/黄昏时活动达到峰值,中午小憩,夜间静止。睡眠:夜间空闲 → 进入睡眠,呼吸缓慢,唤醒阈值升高;醒来后会梳理身体。
- **温度**:苍蝇是变温动物 —— 热的 Mac 会让苍蝇跑得更快。
重新生成数据
data/ 目录附带紧凑的衍生文件。要从原始 FlyWire Codex 数据转储(约 60 MB 下载)重新构建它们:
mkdir -p /tmp/flywire && cd /tmp/flywire
B=https://storage.googleapis.com/flywire-data/codex/data/fafb/783
curl -O "$B/classification.csv.gz" -O "$B/coordinates.csv.gz" \
-O "$B/connections.csv.gz" -O "$B/consolidated_cell_types.csv.gz"
cd - && python3 etl.py /tmp/flywire
诊断
./DesktopFly --simtest # 回路不变量:静止时 GF 静默,4 ms 逼近延迟,... ./DesktopFly --behaviortest # 17 项端到端检查:刺激神经元 → 身体做出反应 ./DesktopFly --snapshot f.png # 屏幕外苍蝇渲染 ./DesktopFly --brainshot b.png # 屏幕外大脑渲染
模型与测量的对比
诚实说明:连接组提供的是线路连接,而非生理特性。LIF 动力学、神经递质极性(ACh+、GABA−、Glu−)、LC→GF 和风→GF 上的缝隙连接增强(已记录的电耦合)、突触延迟以及感觉转换(光标 → 逼近值)都是叠加在真实图结构上的标准建模选择。感觉神经元之后的所有内容 —— 即谁连接到谁,以及连接强度如何 —— 均来自 FlyWire 数据。
许可与引用
代码采用 MIT 许可证。data/ 中的文件衍生自 FlyWire (FAFB v783),采用 CC BY-NC 4.0 许可 —— 请参阅 data/DATA_LICENSE.md。如果你使用了此代码,请引用:
- Dorkenwald, S. 等. 成年大脑的神经元连接图谱. Nature 634, 124–138 (2024). https://doi.org/10.1038/s41586-024-07558-y
- Schlegel, P. 等. 果蝇全脑注释与多连接组细胞分类. Nature 634, 139–152 (2024). https://doi.org/10.1038/s41586-024-07686-5
