Reed's News
← 返回精选

用真实果蝇连接组驱动的 macOS 3D 果蝇桌面宠物

Science 62 phoenix120 2026/8/18 684 字 原文 ↗

DesktopFly — 桌面3D果蝇

这是一只栖息在你macOS桌面的3D果蝇,其行为由真实FlyWire连接组的实时脉冲模拟驱动。它会在窗口间穿行、梳理身体、进入睡眠,甚至会像真实果蝇一样,通过相同的神经元系统判断是否要逃离你的光标。

实时脑窗:23210个真实神经元位置,脉冲闪烁

果蝇脑窗:呈现FlyWire v783数据集里23210个真实神经元胞体的位置,神经元产生脉冲时会在对应位置实时闪烁。其中两个亮黄色标记是巨型纤维(Giant Fibers)——负责触发逃逸指令的神经元。点击任意区域即可刺激该区域的神经元。

  • 23210个神经元胞体位置(取自FlyWire v783的139255个神经元):用于渲染可旋转的脑窗,神经元按超类(FlyWire定义的粗粒度细胞类型分组)配色。

  • 含约19000个真实突触连接的668神经元回路(突触数量附带神经递质预测的正负属性):以1kHz频率进行漏积分-发放(LIF, leaky-integrate-and-fire)模拟:

    • LC4(104个)+ LPLC2(210个):负责检测物体逼近的视觉神经元
    • DNp01/巨型纤维(GF)(2个):触发逃逸指令的神经元
    • DNa01 + DNa02(4个):控制转向的神经元
    • DNp09(2个):控制向前行走的神经元
    • DNg11(6个):控制梳理行为的神经元
    • MDN(4个):控制向后行走的神经元(即"倒走"行为)
    • DNp02/DNp04/DNp11(6个):控制逃逸动作(翅膀)的神经元
    • 上述神经元的330个最强连接伙伴,包括上行(本体感觉)神经元和感觉(风感)神经元
  • 逃逸行为并非预设脚本:你的光标逼近会转化为真实LC4/LPLC2细胞的"物体逼近"输入信号;只有当巨型纤维通过真实突触产生脉冲时,果蝇才会起飞——约1200个前馈抑制突触会反向调控,这就是为什么缓慢移动的光标不会引发逃逸,而快速突刺的光标会在约4毫秒内触发逃逸,与真实果蝇的反应完全一致。

果蝇的身体模型为程序化生成(FlyWire仅提供大脑连接组数据,无身体几何结构),具备 tripod步态( tripod gait,三足步态)、可见的翅膀振动、随高度调整的飞行姿态,以及梳理、睡眠等姿势。

运行要求:macOS 13及以上版本,Xcode命令行工具(Swift 5.9及以上版本)。无需任何权限或授权——它感知的所有信息(光标位置、窗口边框、点击触发的敲击、设备热状态)均为系统开放权限范围内的数据。

git clone https://github.com/DenisSergeevitch/desktop-fly.git
cd desktop-fly
./build.sh
./DesktopFly

菜单栏会出现一个🪰图标,可通过该图标退出程序。果蝇在桌面的透明穿透层上活动,绝不会遮挡你的鼠标或键盘操作。

选项 功能
暂停/继续 冻结所有活动
显示/隐藏脑窗 切换实时脑窗的显示状态
逃逸测试(模拟逼近) 注入物体逼近刺激,观察巨型纤维的脉冲活动
移至下一个显示器 将果蝇转移到另一台显示器(仅在多显示器环境下显示)
添加/移除果蝇 添加或额外果蝇(仅1号果蝇搭载完整脑回路)
惊吓所有果蝇 触发所有果蝇的惊跳反应

脑窗支持交互:鼠标悬停时脑窗停止旋转;点击任意区域会以"光遗传学"方式刺激该区域附近约60个回路神经元,持续400毫秒。果蝇的反应完全由真实神经网络的下游活动决定——点击巨型纤维,它会逃逸;点击DNg11,它会梳理身体;点击单侧的DNa01/02,它会转向。

身体行为 驱动神经元
逃逸起飞 DNp01巨型纤维的脉冲
行走/休息切换、行走速度 DNp09的脉冲频率
转向 DNa01+DNa02左右两侧的脉冲频率差
梳理行为 DNg11的脉冲频率
向后挪动 MDN的脉冲爆发
紧张性疾走 LC4/LPLC2群体的脉冲频率
翅膀振动强度、威胁性抬翅 DNp02/04/11的脉冲频率
自发起飞 全神经元群体的兴奋水平

系统还实现了"身体→大脑"的闭环反馈:步态节奏会同步输入回路中真实的上行(本体感觉)神经元,快速移动的光标则会刺激回路中的感觉(风感)神经元。

  • 窗口地形模拟:窗口顶部边缘被视为"平台",果蝇会落在上面行走,能随你拖动的窗口移动,若脚下的窗口关闭,它会受到惊吓。
  • 窗口逼近刺激:在果蝇附近打开窗口时,信号会传入"物体逼近"通路,由回路判断是否要逃离对话框。
  • 点击即地面敲击:在果蝇附近点击,会通过"风感→巨型纤维"通路触发它的惊跳反应。
  • 打字即振动(通过空闲时间API实现——仅感知按键时机,绝不记录按键内容)。
  • 昼夜节律:黎明和黄昏活跃度达到峰值,正午进入小憩状态,夜间完全静止。
  • 睡眠模式:夜间静置一段时间后,果蝇会进入睡眠状态,呼吸放缓,唤醒阈值升高;醒来后会进行梳理行为。
  • 温度影响:果蝇是变温动物——Mac设备温度越高,果蝇的行动速度越快。

data/目录包含预生成的精简数据文件。若要从FlyWire Codex原始数据(约60MB下载量)重新生成,可执行以下命令:

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 # 回路稳定性测试:静止时巨型纤维无脉冲、逼近刺激延迟4毫秒等
./DesktopFly --behaviortest # 17项端到端测试:刺激特定神经元→观察身体反应
./DesktopFly --snapshot f.png # 后台渲染果蝇图像
./DesktopFly --brainshot b.png # 后台渲染脑窗图像

说明:连接组仅提供神经元的连接关系,不包含生理特性数据。LIF动力学、神经递质属性(乙酰胆碱+、γ-氨基丁酸-、谷氨酸-)、LC→GF与风感→GF通路的间隙连接增强(已记录的电耦合现象)、突触延迟,以及感觉转导(光标→逼近信号值)均为基于真实连接图的标准建模选择。感觉神经元下游的所有连接关系(连接对象及连接强度)均来自FlyWire数据。

代码采用MIT协议。data/目录下的文件衍生自FlyWire(FAFB v783),采用CC BY-NC 4.0协议——详见data/DATA_LICENSE.md

若使用本项目,请引用以下文献: