ESC
开源 2 分钟阅读

DesktopFly:一只由真实FlyWire连接组实时脉冲模拟驱动的3D果蝇,生活在你的macOS桌面上

DesktopFly 是一只生活在 macOS 桌面上的 3D 果蝇,由真实 FlyWire 连接组的实时脉冲模拟驱动。它会在你的窗口间行走、梳理、睡眠,并用真实果蝇的神经元决定是否逃离你的光标。项目包含 23,210 个真实神经元位置和 668 个神经元的电路,约 19,000 个真实突触连接,逃逸行为完全由神经模拟产生。

来源:GitHub

DesktopFly — 一只3D果蝇

DesktopFly 🪰

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

实时大脑窗口:23,210 个真实神经元位置,脉冲闪烁

果蝇的大脑窗口:来自 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。如果你使用此项目,请引用: