
DesktopFly 🪰
一只生活在你的 macOS 桌面上的 3D 果蝇——由真实 FlyWire 连接组的实时脉冲模拟驱动。它会在你的窗口上行走、梳理、睡眠,并用与真实果蝇相同的神经元决定是否逃离你的光标。

果蝇的大脑窗口:来自 FlyWire v783 的 23,210 个真实神经元胞体位置,实时脉冲在真实神经元位置闪烁。两个发光的黄色标记是巨纤维神经元——逃逸指令神经元。点击任意区域可刺激该区域。
哪些是真实的
- 23,210 个神经元胞体位置(FlyWire v783 中 139,255 个中的一部分)渲染出旋转的大脑窗口,按超类(FlyWire 的粗略细胞类型分组)着色。
- 一个包含 668 个神经元、约 19,000 个真实突触连接的电路(突触计数,按神经递质预测标注正负)以 1 kHz 的泄漏积分放电(LIF)模拟运行:
- LC4 (104) + LPLC2 (210) 视觉 looming 检测神经元
- DNp01 / 巨纤维 (GF) (2) —— 逃逸指令神经元
- DNa01 + DNa02 (4) 转向神经元 · DNp09 (2) 前进行走
- DNg11 (6) 梳理 · MDN (4) 后退行走(“月球漫步者”)
- DNp02/DNp04/DNp11 (6) 逃逸机动(翅膀)神经元
- 它们的 330 个最强伙伴,包括上行(本体感觉)和感觉(风)神经元
- 逃逸不是脚本化的。 你光标的接近会变成真实的临近刺激输入到 LC4/LPLC2 细胞;只有当巨纤维通过其真实突触实际放电时,果蝇才会起飞——约 1,200 个前馈抑制突触会向后推,这就是为什么缓慢接近会被容忍,而快速猛扑会在约 4 毫秒内触发逃逸,就像真实动物一样。
身体本身是程序化生成的(FlyWire 是大脑连接组——不存在身体几何结构),具有三脚步态、可见的扑翼、按高度缩放的飞行、梳理和睡眠姿态。
安装
要求:macOS 13+,Xcode 命令行工具(Swift 5.9+)。无需权限或许可——它感知的一切(光标、窗口框架、作为轻敲的点击、热状态)都无需权限。
git clone https://github.com/DenisSergeevitch/desktop-fly.git
cd desktop-fly
./build.sh
./DesktopFly
菜单栏会出现一个 🪰 图标;从那里退出。果蝇在一个透明的、点击穿透的覆盖层上游走于你的桌面——它永远不会拦截你的鼠标或键盘。
控制(菜单栏 🪰)
| 项目 | 效果 |
|---|---|
| 暂停 / 继续 | 冻结世界 |
| 显示 / 隐藏大脑 | 切换实时大脑窗口 |
| 逃逸测试(loom) | 注入一个临近刺激,观察 GF 放电 |
| 移动到下一个显示器 | 让果蝇跨显示器跳跃(当有多个显示器时显示) |
| 添加 / 移除果蝇 | 额外果蝇(只有 1 号果蝇携带大脑) |
| 惊吓果蝇 | 让所有果蝇惊跳 |
大脑窗口是可交互的:悬停会暂停旋转;点击一个区域会“光遗传学”地刺激该区域附近约 60 个电路神经元,持续 400 毫秒。果蝇的反应就是真实网络下游产生的反应——点击巨纤维,它会逃逸;点击 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. et al. Neuronal wiring diagram of an adult brain. Nature 634, 124–138 (2024). https://doi.org/10.1038/s41586-024-07558-y
- Schlegel, P. et al. Whole-brain annotation and multi-connectome cell typing of Drosophila. Nature 634, 139–152 (2024). https://doi.org/10.1038/s41586-024-07686-5