Мозг мухи FlyWire v783 (Eckstein et al. 2024): 138 639 нейронов, 54 492 922 синапса (full) / ядро ≥ 5 синапсов на ребро: 2 700 513 рёбер, масса 34 153 566 — как исполняемая матрица A со знаками. Это руководство — как ИИ-агенту допрашивать живой мозг через MCP и CLI.
Общие принципы и математика формата — docs/flywire-connectome/README.md.
Справочник CLI — docs/CLI.md §7. Здесь — семантика операций, стратегия
допроса и золотые числа для самопроверки.
| Класс | Медиатор | Знак | Роль в динамике |
|---|---|---|---|
| 0 | gaba | −1 | тормозной — гасит цель |
| 1 | ach | +1 | возбуждающий |
| 2 | glut | +1 | возбуждающий |
| 3 | oct | 0 | модулятор (октамин) |
| 4 | ser | 0 | модулятор (серотонин) |
| 5 | da | 0 | модулятор (допамин) |
Знаковый вес signed_weight = sign · weight — это A(u,v) канонического
уравнения dp/dt = −η·Π_Λ[D·p + γJ·p + ∇F]. Модуляторы проводят массу,
но не сигнал: в ротор J, PageRank и симуляцию не входят.
Ротор пары J = A − Aᵀ антисимметричен: J[u][v] = −J[v][u]. Однонаправленное ребро даёт чистый поток ±w; реципрокная симметричная пара гасится в ноль. Глобальный топ |J| — карта самых однонаправленных влияний мозга.
poler-engine --mcp
Первый вызов грузит артефакт в RAM (ядро: ~53–70 мс, ~25 МБ; full: ~300–400 мс, ~106 МБ) — дальше всё семейство работает без диска, CSC «кто управляет» строится лениво один раз (~43 мс на ядре). Запросы исполняются в пуле воркеров: пачка независимых допросов параллелится, ответы приходят по готовности (JSON-RPC сопоставляет по id).
| Инструмент | Что отвечает |
|---|---|
poler_fly |
загрузка (csr + nodes) / сводка / eject из RAM |
poler_fly_node |
паспорт: степени, массы, топ партнёров обоих направлений |
poler_fly_edge |
ребро u→v, обратное, ротор J пары |
poler_fly_khop |
фронты BFS по хопам + всего достигнуто |
poler_fly_path |
кратчайший путь from→to: каждый прыжок с весом/медиатором/знаком |
poler_fly_common |
общие мишени (down) / общие источники (up) набора 2–32 нейронов |
poler_fly_centrality |
хабы по степеням + взвешенный PageRank |
poler_fly_rotor |
глобальный топ пар по J (порог min_abs) |
poler_fly_motifs |
вокруг нейрона: реципрокные пары, feedforward, feedback |
poler_fly_propagate |
симуляция x(t+1) = leak·x + γ·A·x: хронология + топ |
Нейрон везде задаётся индексом CSR (0..138 638) или root_id FlyWire (строкой/числом; root_id требует загруженной таблицы nodes). Все ответы — pretty-JSON с root_id рядом с каждым индексом.
poler_fly {csr}— сводка: убедиться в артефакте, увидеть баланс медиаторов (E/I ≈ 73.6/23.4/3.0 по массе full).poler_fly_node {neuron}— паспорт стартового нейрона: кто его топ-тормозит, куда он стреляет.poler_fly_edge {u, v}— вступить в диалог с конкретной парой: ротор покажет, кто из двоих доминирует.poler_fly_khop {neuron, depth: 2–3}— оценить разлёт сигнала.poler_fly_path {from, to}— проложить маршрут; фильтрsign: excдаёт чисто возбуждающий путь,inh— тормозную дорожку.poler_fly_common {neurons: [a, b], direction: up}— найти общего босса двух нейронов (конвергенция управления).poler_fly_centrality {top: 20}— хабы и PageRank-топ как кандидаты «узких мест» схемы.poler_fly_rotor {top: 20, min_abs: 500}— самые асимметричные влияния: где сигнал течёт в одну сторону без ответа.poler_fly_motifs {neuron}— местная схемотехника: петли u⇄v, усиление (feedforward), обратная связь (feedback).poler_fly_propagate {neurons: [семена], steps: 3–6}— запустить мышление: наблюдать разлёт активных и баланс масс по шагам.
Параллельность: шаги 4–9 над разными нейронами можно отправить одним конвейером — пул воркеров исполнит их одновременно.
Каждый CLI-вызов платит холодную загрузку (ядро ~70 мс) — для серий
используйте MCP. Режимы взаимно исключают друг друга; --connectome-json
переводит любой режим в машиночитаемую форму. Полная таблица флагов —
docs/CLI.md §7.
# партнёры гиганта 79529 по входящим (кто на него давит)
poler-engine --connectome core.csr.zst --connectome-neighbors 79529 --connectome-dir in
# маршрут с цепочкой синапсов
poler-engine --connectome core.csr.zst --connectome-path 0:116214
# общие мишени пары нейронов
poler-engine --connectome core.csr.zst --connectome-common 0,6135 --connectome-dir down
# хабы + PageRank
poler-engine --connectome core.csr.zst --connectome-centrality --connectome-top 5
# топ циркуляции
poler-engine --connectome core.csr.zst --connectome-rotor-top 5 --connectome-min-abs 50
# мотивы и симуляция
poler-engine --connectome core.csr.zst --connectome-motifs 79529
poler-engine --connectome core.csr.zst --connectome-propagate 0 --connectome-steps 3Все операции работают через публичный API CSR/CSC — срезы строк это сплошная память, копий графа нет.
- shortest_path — BFS по исходящим с фильтром знака; parent-массив (узел, позиция ребра) восстанавливает цепочку; O(n + m).
- common_partners — пересечение отсортированных окрестностей слиянием; партнёр несёт рёбра от каждого нейрона набора и суммарную массу; до 32 нейронов.
- pagerank — классическая итерация степени по |signed_weight|; висячие узлы раздают массу равномерно; стоп по L1 < 1e-9 или потолку итераций (умолчание 30); Σ рангов = 1.
- rotor_top — проход по всем рёбрам со знаком, обратное ребро — бинарным поиском; мин-куча размера k; дедупликация: при двунаправленной паре эмитится только сторона с J > 0, односторонняя нормализуется ориентацией «положительный J первым».
- motif_census — членство окрестностей в bool-массивах; проход по строкам исходящих соседей считает feedforward (цель в out-окрестности центра) и feedback (цель во в-окрестности); аутапсы исключены.
- propagate — x(t+1) = leak·x(t) + γ·A·x(t) на знаковых весах; активные = |x| > theta; мягкий клип ±1e15 страхует от расходящихся колец; до 64 семян и 64 шагов.
Ядро v783 (артефакты в git, docs/flywire-connectome/):
- Паспорт узла 0: исходящих 13 (масса 98), входящих 13 (масса 99); топ-торможение — узел 79529, w = 17, gaba.
- Ребро 0→116214: w = 17 ach; J[0][116214] = +17, J[116214][0] = −17.
- K-hop от 0 (глубина 2): фронты [13, 443], достигнуто 457.
- Топ циркуляции (порог 50): J[74067][133436] = +2395, J[112021][86059] = +2343, J[129880][136978] = +2330, J[82815][60985] = +2307, J[53290][90883] = +1886.
- Хаб 79529: 6399 исходящих / 5080 входящих; 3684 реципрокных пары, 11 999 feedforward-треугольников, 8082 feedback-цикла.
- PageRank (d = 0.85, 30 итераций): топ-1 — нейрон 66912, ранг ≈ 0.001836547.
- Симуляция от 0 (γ = 0.05, leak = 0.8): активные [14, 455, 15 457] за 3 шага; на шаге 3 торможение доминирует (≈ −3465 против +1285); топ-1 по |x| — нейрон 129880 с отрицательным потенциалом (≈ −152).
Эти числа зафиксированы тестами (golden_c2_core_analytics,
fly_family_tests): воспроизводимость гарантируется бит-в-бит.
- Отрицательный потенциал в топе симуляции — не ошибка: тормозная сеть мухи сильнее возбуждающей на разлёте (E/I по массе 73.6/23.4, но gaba-хабы плотнее бьют по центрам). Сигнал от одиночного нейрона гасится — устойчивость живой сети.
- Высокий |J| — иерархия без диалога: нейрон-источник управляет целью, не получая ответа. Кандидаты для проверки: есть ли модуляторный (da/ser/oct) параллельный путь — модуляторы не входят в J, но в живой сети часто сопровождают однонаправленные потоки.
- PageRank vs степень: хаб по степени раздаёт много, но ранг растёт от входящих endorse — нейрон 66912 важнее для сети, чем гигант 79529.
- Реципрокная пара — цикл обратной связи; feedforward — усиление/модуляция параллельным путём; feedback3 — кольцо u→v→w→u, осцилляторный кандидат.
| Операция | Время |
|---|---|
| Загрузка артефакта | ~53–70 мс |
| CSC (лениво, один раз) | ~43 мс |
| Паспорт/ребро/khop/путь | < 1 мс |
| PageRank (30 итераций) | ~250 мс |
| Ротор-скан (все рёбра) | ~70 мс |
| Симуляция (3 шага) | ~15 мс |
11-запросный MCP-конвейер (загрузка + весь спектр запросов, включая PageRank и ротор) — 0.49 с суммарно; ответы приходят внеочерёдно по готовности (пул воркеров).