Open Source в астрологии: обзор открытых библиотек, фреймворков и проекта Astroloh

Астрология — одна из самых древних дисциплин, нашедших второе дыхание в цифровую эпоху. Если раньше астрологу требовались эфемериды, логарифмические таблицы и часы расчетов вручную, то сегодня за секунды можно построить натальную карту, рассчитать прогрессии, транзиты, синастрию и соляры. Однако большинство профессионального ПО (Solar Fire, ZET, Sotis, AstroProcessor) является проприетарным (закрытым) и платным.

Движение Open Source (открытое программное обеспечение) кардинально меняет правила игры. Оно дает астрологам, разработчикам и исследователям свободу: изучать алгоритмы, проверять точность расчетов, адаптировать программы под свои нужды и создавать новые продукты без лицензионных отчислений. В этой статье мы подробно разберем ландшафт открытого астрологического софта, ключевые библиотеки, языки программирования и разберем яркий современный пример, проект Astroloh.


Почему Open Source важен для астрологии?

  • Прозрачность алгоритмов: Астрология опирается на точную математику (механика небесных тел, системы домов, аспектные орбисы). Открытый код позволяет проверить, как именно рассчитывается Лилит, какой алгоритм используется для прецессии (сидерический/тропический зодиак) и верны ли формулы арабских частей.
  • Отсутствие «черного ящика»: В закрытых программах ошибки могут жить годами. В открытых проектах баги находят и исправляют сообщество.
  • Кроссплатформенность и веб-интеграция: Большинство современных open-source библиотек пишутся на Python, JavaScript/TypeScript, Rust или Go, что позволяет легко встраивать астрологию в веб-сайты, Telegram-боты, голосовые ассистенты (Яндекс Алиса, Google Assistant) и мобильные приложения.
  • Расширяемость: Хотите добавить гипотетическую планету, свою систему домов или уникальную интерпретацию? Вы просто форкаете репозиторий и пишете код.
  • Образовательная ценность: Изучение кода библиотек (например, Kerykeion, Swiss Ephemeris оберток, Flatlib) — лучший способ понять математическую суть астрологии.

Классификация инструментов: от библиотек до готовых приложений

Экосистему можно разделить на три уровня:

Низкоуровневые астрономические движки (Ephemeris Engines)

Это «сердце» любого астрологического софта. Они считают координаты планет.

  • Swiss Ephemeris (C / DLL): Золотой стандарт индустрии. Использует данные NASA JPL (DE431). Важно: Имеет двойную лицензию: GPL (для открытых проектов) и коммерческую. Многие open-source обертки (Python, JS, Java) строятся именно на ней.
  • JPL DE / SPICE Toolkit: Прямое использование данных NASA. Максимальная точность, но сложность интеграции.
  • Skyfield / Astropy (Python): Современные астрономические библиотеки высокого уровня. Отлично подходят для научных задач, но требуют дополнительной работы для астрологических нужд (дома, аспекты, зодиак);

Астрологические фреймворки и библиотеки высокого уровня

Эти инструменты уже «знают», что такое знаки зодиака, дома, аспекты, ретроградации, арабские части.

Библиотека Язык Особенности Лицензия
Kerykeion Python Современный, активный, богатый функционал: 15+ систем домов, астероиды, арабские части, прогрессии, соляры, лунары, композиты, SVG-генерация карт. Использует Swiss Ephemeris. MIT
Flatlib Python Классика для традиционной астрологии. Простая, легкая, без тяжелых зависимостей (использует свои эфемериды или Swiss Ephemeris). Хороша для обучения. MIT
Astronomy Engine JS/TS, C#, Python, Rust, Go, Swift Уникальная кроссплатформенность. Чистая астрономия без астрологических интерпретаций, но идеальная база для своих калькуляторов. MIT
Astro.js / Astro-kit JavaScript / TypeScript Ориентированы на браузер и Node.js. Удобны для веб-приложений. MIT / Apache 2.0
Morinus C / Python (binding) Движок известной программы Morinus. Мощный, поддерживает множество техник (направления, возвращения). GPL
Horo (Rust) Rust Высокая производительность, безопасность памяти. Перспективное направление для высоконагруженных систем. MIT / Apache 2.0

Готовые приложения с открытым кодом (End-user Apps)

  • Morinus (Desktop): Кроссплатформенное GUI-приложение (Qt). Профессиональный уровень, традиционная и современная астрология.
  • Astrolog (CLI / GUI): Легендарная программа 90-х (Walter Pullen). Огромный функционал, включая астрокартографию, гармоники, анимации. Код на C, сложный для модификации, но беспрецедентный по возможностям в консоли.
  • OpenAstro / ZET Lite (форки): Попытки открыть код классических отечественных программ (часто неполные или устаревшие).
  • Веб-приложения на Next.js / React / Vue: Множество пет-проектов на GitHub, использующих Kerykeion или Flatlib через API.

Глубокий разбор: Astroloh — современный веб-стек для астрологии

Яркий пример того, как open-source библиотека (Kerykeion) превращается в полноценный продукт нового поколения — проект Astroloh (автор: Евгений Гурин). Это не просто калькулятор, а полноценная экосистема: веб-приложение, голосовой навык для Яндекс Алисы и API для интеграций.

Архитектура и стек технологий

  • Backend: Python (FastAPI / AsyncIO) — стандарт для высоконагруженных асинхронных сервисов.
  • Астрологический ядро: Kerykeion 4.x — обеспечивает все расчеты.
  • Кэширование и производительность: Redis с умными TTL-политиками, пул потоков (4 воркера) для CPU-bound задач Kerykeion.
  • Мониторинг: Реальный трекинг перцентилей, алерты на медленные операции (>2с) и высокую нагрузку.
  • Фронтенд: Современные веб-технологии (вероятно, React/Vue/Svelte + TypeScript), генерация SVG-карт на клиенте или сервере.
  • Голосовой интерфейс: Интеграция с Яндекс Алисой (Webhook / Smart Home / Навыки).
  • ИИ-интеграция: LLM (Large Language Models) для генерации интерпретаций на основе точных астрологических данных (RAG-подход).

Функциональная матрица Astroloh (на базе Kerykeion)

🪐 Небесные тела и зодиаки

  • Планеты: Солнце, Луна, Меркурий, Венера, Марс, Юпитер, Сатурн, Уран, Нептун, Плутон.
  • Астероиды и точки: Хирон, Лилит (Black Moon), Церера, Паллада, Юнона, Веста.
  • Узлы Луны: Северный и Южный (Раху/Кету).
  • Зодиаки: Тропический и Сидерический (разные аянamse).

🏠 Системы домов (15+ реализаций)

Placidus, Koch, Equal, Whole Sign, Regiomontanus, Campanus, Topocentric, Alcabitus, Morinus, Porphyrius, Vehlow, Meridian, Azimuthal, Polich Page, Natural Graduation. Это критически важно для профессионалов, так как разные школы требуют разные системы.

🎯 Аспекты и орбисы

  • Мажорные (конъюнкция, оппозиция, трин, квадрат, секстиль) и минорные (семисекстиль, семиквадратура,квинтиль, биквинтиль и др.).
  • Точные орбисы с цветовым кодированием (применяемые/разлучающиеся).
  • Аспектные паттерны (Большой Трigon, T-квадрат, Ящик, Крыло и т.д.).

🔮 Прогностические методы

  1. Транзиты: С домовыми наложениями, оценкой силы (Very Strong → Weak), авто-отбор ключевых транзитов.
  2. Вторичные прогрессии (День = Год): Эволюция натальной карты.
  3. Соляры (Солнечные возвращения): Годовые прогнозы.
  4. Лунары (Лунные возвращения): Месячные циклы.
  5. Направления (Primary Directions): Поддержка в Kerykeion развивается.

💑 Синдастрия и совместимость (Расширенный модуль Kerykeion)

  • Межпланетные аспекты с точными орбисами.
  • Наложения домов: Планеты партнера в ваших домах и наоборот.
  • Композитные карты: Точки середин (Midpoint Composite).
  • Кармические связи: Анализ Лунных узлов, конъюнкций с вершинами/антивершинами.
  • Гармония элементов и качеств: Скоринг совместимости.
  • Романтический блок: Специализированный анализ Венера — Марс, Венера — Плутон, Луна — Венера.

📊 Арабские части (Лоты)

Расширенный набор: Фортуна, Дух, Любовь, Брак, Карьера, Несчастье и др. с формулами расчета (День/Ночь рождения) и русскими значениями.

🎨 Визуализация

  • Генерация профессиональных SVG-карт (вектор, масштабируются без потери качества, стилизуются через CSS).
  • Цветовое кодирование элементов, качеств, ретроградаций.

Локализация и культурная адаптация: кейс русскоязычного сегмента

Большинство западных библиотек выдают данные на английском. Astroloh демонстрирует лучшие практики локализации (i18n), критически важные для CIS-рынка:

  • Полная русификация терминологии: Планеты, знаки, дома, аспекты, арабские части, фазы Луны.
  • Грамматические склонения (6 падежей): Не просто «Солнце в Овне», а «Солнце во Вне», «нет Солнца во Вне», «даю Солнцу во Вне» и т.д. Это обязательно для голосовых интерфейсов и натурального текста.
  • Часовые пояса России (11 зон): Корректная работа с историческими переходами на летнее/зимнее время, отменой переводов стрелок (2011, 2014 гг.). Использование базы данных IANA TZ Database (tzdata).
  • Голосовая оптимизация: Правильные ударения (САтурн, не Сатурн; ПлутОн, не ПлУтон), паузы, интонации для Яндекс Алисы.
  • Культурный контекст: Адаптация интерпретаций под реалии русскоязычного пользователя (образование, медицина, быт, менталитет).

Примеры голосовых команд (Astroloh / Алиса)

«Алиса, запусти навык Астролог»

«Расскажи про мой знак зодиака»

«Что означает Солнце в Овне?»

«Построй натальную карту на 15 мая 1990 года, Москва, 14:30»

«Какие транзиты на следующей неделе?»

«Совместимость с человеком, родившимся 20 декабря 1985 года»

«Когда у меня следущий солнечный возврат?»


Производительность и масштабирование: вызовы Open Source астрологии

Астрологические расчеты, это CPU-bound задачи (тяжелая математика: итерационное решение уравнения Кеплера, интерполяция эфемерид, расчет куспов домов для множества систем). В веб-среде это создает проблемы:

Типичные узкие места:

  • Расчет сложной синастрии (2 карты × 20 тел × 15 систем домов × аспекты) может занимать 1-3 секунды на ядре CPU.
  • Периодные прогнозы (транзиты на год вперед с шагом в день) — до 10-30 секунд.
  • Блокировка Event Loop в Python (GIL) при синхронных вызовах Swiss Ephemeris / Kerykeion.

Решения, примененные в Astroloh (Best Practices):

  1. Асинхронность (AsyncIO) + Thread Pool Executor: Тяжелые расчеты Kerykeion выносятся в пул потоков (run_in_executor), не блокируя основной event loop FastAPI.
  2. Многоуровневое кэширование (Redis):
    • Натальные карты (ключ: дата/время/координаты/система домов) — TTL неделя/месяц.
    • Транзиты на текущий день — TTL несколько часов.
    • Интерпретации ИИ — долгий TTL.
  3. Предварительные вычисления (Pre-computation): Крон-задачи ночью считают популярные карты (знаки зодиака, текущие транзиты, соляры для известных людей).
  4. Мониторинг SLA: Целевые метрики: кэш-хит 60-80%, простое запрос <500мс, сложный <2с, прогноз <10с.
  5. Горизонтальное масштабирование: Статeless API позволяет запускать несколько контейнеров (Docker/K8s) за балансировщиком нагрузки.

ИИ и Астрология: новая грань Open Source

Самый трендовый вектор развития, гибрид Точной Астрологии (Data) + LLM (Interpretation).

Проблема: LLM галлюцинируют астрологические факты (путают знаки и дома, выдумывают аспекты).

Решение (RAG, Retrieval-Augmented Generation):

  1. Программа (Astroloh) рассчитывает точную карту через Kerykeion → получает структурированный JSON (планеты в знаках/домах, аспекты, транзиты, арабские части).
  2. Этот JSON преобразуется в системный промпт / контекст для LLM (GPT-4o, Claude 3.5, Llama 3, YandexGPT).
  3. LLM получает инструкцию: «Ты профессиональный астролог. Интерпретируй ТОЛЬКО предоставленные данные. Не выдумывай планеты».
  4. На выходе: связный, гуманистичный текст на русском языке с правильными склонениями.

Open Source позволяет полностью контролировать этот пайплайн: промпты, версию модели, температуру, пост-обработку текста.


Как начать разработку своего астрологического проекта (Roadmap)

  1. Выберите язык: Python (наибольшее кол-во библиотек, ML/ИИ стек), TypeScript/Node.js (веб/фуллстек), Rust/Go (высокая нагрузка, микросервисы);
  2. Выберите ядро:
    • Нужен максимум фич «из коробки» (прогрессии, соляры, арабы, SVG) → Kerykeion (Python).
    • Нужен легкий скрипт для натальки/транзитов → Flatlib (Python) или Astronomy Engine (JS/TS).
    • Пишете на Rust/Go → ищите биндинги к Swiss Ephemeris или пишите обертку сами (сложно, но быстро).
  3. Настройте окружение: Docker, Poetry/UV (Python), pnpm (JS). Swiss Ephemeris требует файлы эфемерид (sepl_18.se1 и др.) — их нужно скачать и смонтировать в контейнер.
  4. Реализуйте API: FastAPI (Python) / NestJS / Hono (TS). Эндпоинты: /natal, /transits, /synastry, /solar, /chart-svg.
  5. Добавьте кэш: Redis с первого дня. Ключ = хеш от всех входных параметров.
  6. Локализация: Вынесите все строки в JSON/YAML файлы. Используйте библиотеки для склонений (pymorphy2 / morphy для Python, morphy для JS).
  7. Тесты: Юнит-тесты на контрольных датах (например, натальная карта Аинштейна, известные транзиты). Сравнение с ZET / Solar Fire / Astro.com.
  8. Фронтенд / Бот / Навык: Разделяйте бэкенд и клиент. Telegram Bot (aiogram), Яндекс Алиса (webhook), PWA (React/Vue/Svelte).
  9. ИИ-слой (опционально): Интегрируйте LLM через RAG-паттерн.

Правовые аспекты и лицензии

Внимательно читайте лицензии!

  • MIT / Apache 2.0 / BSD: Максимальная свобода. Можно использовать в коммерческих закрытых продуктах, достаточно сохранить копию лицензии. (Kerykeion, Flatlib, Astronomy Engine, Astro.js — здесь).
  • GPL / AGPL: «Вирусные» лицензии. Если вы используете GPL-код (например, Morinus, Astrolog, или сам Swiss Ephemeris под GPL), ваше всё приложение становится GPL. Вы обязаны открыть исходный код всего продукта при распространении (включая SaaS для AGPL).
  • Swiss Ephemeris: Имеет двойную лицензию. Для Open Source (GPL) — бесплатно. Для коммерческого закрытого ПО — нужно покупать лицензию у Astrodienst (~700+ CHF).

Совет: Если планируете коммерческий SaaS — используйте MIT-библиотеки (Kerykeion) и покупайте коммерческую лицензию Swiss Ephemeris, либо используйте альтернативные эфемериды (встроенные в Flatlib / Astronomy Engine), хотя они менее точны на большие временные промежутки.


Перспективы развития Open Source астрологии

  1. Стандартизация форматов обмена: Появление AstroJSON или схем на базе JSON-LD / Schema.org для бесшовной интеграции между разными программами и ИИ-агентами.
  2. WebAssembly (WASM): Компиляция Swiss Ephemeris / Kerykeion (через Rust/Python-WASM) прямо в браузер. Расчеты на клиенте без сервера — приватность, офлайн-работа, нулевая нагрузка на бэкенд.
  3. Астрологические Knowledge Graphs: Структурированные базы знаний (RDF/GraphDB) со значениями аспектов, планет в домах, фиксированных звезд, мифологических архетипов для обучения мелких локальных LLM (SLM).
  4. Федерированные астрологические сервисы: Протокол ActivityPub / Matrix для обмена картами, интерпретациями и прогнозами между децентрализованными узлами.
  5. Квантовые/Нейро-эфемериды: Исследование замены численных интеграций JPL на обученные нейросети для мгновенного получения координат с высокой точностью (уже есть препринты NASA/ESA).

Астрологические программы с открытым исходным кодом прошли путь от энтузиастских скриптов до профессиональных фреймворков уровня Enterprise (Kerykeion, Astronomy Engine). Проекты вроде Astroloh демонстрируют, что на этой базе можно строить современные, высоконагруженные, мультимодальные (веб, голос, чат, ИИ) сервисы с полной локализацией и культурной адаптацией.

Для астролога Open Source означает суверенитет: вы не зависите от решения вендора прекратить поддержку, поднять цену или убрать функцию. Для разработчика — это база знаний и готовые кирпичики, позволяющие не изобретать велосипед с расчетом куспов домов Placidus, а фокусироваться на UX, ИИ-интерпретациях и новых продуктах.

Главное помнить: Астрология, это математика + символика. Open Source идеально решает первую часть, отдавая вторые полностью в руки творца.


Полезные ссылки для старта

  • Kerykeion (GitHub): github.com/gherardo/kerykeion, основная библиотека ядра.
  • Astroloh (GitHub): github.com/evgenygurin/astroloh — пример продакшн-приложения.
  • Flatlib (GitHub): github.com/flatangle/flatlib — легкая альтернатива.
  • Astronomy Engine: github.com/cosinekitty/astronomy — кроссплатформенная астрономия.
  • Swiss Ephemeris (Astrodienst): astro.com/swisseph — стандарт точности.
  • Astrolog (Walter Pullen): astrolog;org, классика open source.