Skip to main content

Mandochka ⚡

PyPI version License: MIT Python: >=3.10

Mandochka — высокопроизводительный инструмент сборки плагинов для ElyxCore (exteraGram, AyuGram, exteraless и др.), форк ElyxBuilder с полной переработкой под максимальную производительность и нативную интеграцию с D8/Javac/R8 (DEX) без необходимости писать костыльные скрипты-обёртки, как это приходилось делать в pluginmanager-canary.


В чём проблема ElyxBuilder и почему появилась Mandochka?

В оригинальном ElyxBuilder:

  1. Полное отсутствие поддержки DEX/Java: если плагину требовался нативный Java DEX мост (как в pluginmanager-canary для SIMD/DEX ускорения векторных моделей или хуков), разработчикам приходилось:
    • Вручную писать сложные скрипты build-dex.sh и build-dex.bat на 130+ строк.
    • Искать JDK, javac, Android SDK или писать скрипты скачивания r8.jar через PowerShell/curl.
    • Компилировать стабы (compile_stubs) вручную в два этапа.
    • Оборачивать elyb build во внешние скрипты build-uv.sh / build-uv.bat.
    • Терпеть отсутствие инкрементального кэширования для Java/DEX (каждый запуск компилировал всё заново).
  2. Экстремально медленная компиляция Python:
    • ElyxBuilder для каждого .py файла запускал отдельный процесс python -c "import py_compile...". При 50–100 файлах это занимало 15–20 секунд.
  3. Недописанный интерпретатор DSL:
    • Команда elyb script падала с ModuleNotFoundError: No module named 'elyb.elyxdsl.interpreter'.

Что даёт Mandochka?

1. Нативная интеграция с D8 / Javac / R8 («без извращений»)

  • Zero-config автоопределение: если в проекте есть dex_src/ или java_src/, Mandochka сама всё скомпилирует в .dex.
  • R8 Minify & Shrinking (--minify): сжатие байткода, удаление мертвого кода (DCE), оптимизация регистров и обфускация Java классов через com.android.tools.r8.R8 (уменьшает размер .dex на 20–50%).
  • Автопоиск компиляторов: автоматически находит javac в PATH, JAVA_HOME, Scoop (temurin17-jdk и др.), Program Files и системных путях Linux/macOS.
  • Автопоиск и автозагрузка D8/R8: находит d8 в Android SDK build-tools, либо автоматически скачивает официальный r8.jar с Google Maven в глобальный кэш ~/.mandochka/bin/r8.jar. Больше никаких ручных скачиваний!
  • Поддержка Stubs: двухэтапная компиляция стабов (compile_stubs/) и внешних .jar библиотек из коробки.
  • Инкрементальный кэш DEX: если Java-файлы и стабы не менялись, проверка занимает < 10 мс.
  • Команда mandochka dex: отдельная удобная команда для прямой сборки DEX без упаковки всего плагина.

2. Максимальная производительность & Быстрые библиотеки

  • Скоростные библиотеки:
    • orjson (Rust) — до 20x быстрее парсинг JSON манифестов и кэшей.
    • xxhash (xxh3_64) — хеширование файлов со скоростью 10–15 ГБ/с.
    • isal (Intel AVX-512 Deflate) — 5–10x быстрее упаковка zip/eaf архивов.
  • Пакетная и многопоточная компиляция Python 3.11:
    • Нативная компиляция в памяти при запуске под Python 3.11.
    • Высокоскоростной батч-воркер через потоки/процессы: 100+ файлов компилируются за ~150 мс вместо 15 секунд.
  • Многопоточная проверка AST (-a) и параллельная обфускация (-o) с инкрементальным кэшированием.
  • Сверхбыстрая повторная сборка: проект из 150 файлов пересобирается всего за ~40 миллисекунд!
  • Бенчмарк фаз (-b / --benchmark): детальный отчёт о времени каждой стадии (dex, ast, pyc, pack) в миллисекундах.

3. Полная совместимость и сохранение возможностей

  • Псевдонимы команд: mandochka, mando, elyb (полная обратная совместимость со всеми существующими скриптами и CI!).
  • Поддержка refmap.json, refmap.yml, config.yml, .mandochka/ и .elyxbuilder/.
  • Полный набор команд: new, build, dex, doctor, cached, stats, watch, ignore, script.
  • Полнофункциональный интерпретатор .edsl для автоматизации сборки.

Сравнение производительности

Сценарий ElyxBuilder Mandochka (чистый) Mandochka (инкрементальный)
Сборка плагина (~150 файлов) ~18.5 с ~1.2 с ~0.04 с (43 мс)
Сборка Java в DEX (3 файла + стабы) Вручную скриптами (~4.5 с) Нативно (~1.0 с) ~0.01 с (10 мс)
Сжатие и обфускация Java (R8 Minify) Не поддерживалось ~2.0 с ~0.01 с (10 мс)
Проверка AST синтаксиса ~0.8 с ~0.25 с ~0.001 с (1 мс)

Установка

pip install mandochka

Проверьте готовность системы:

mandochka doctor

Быстрый старт

Создание плагина с Java DEX мостом:

mandochka new -g -n "MyPlugin" -a "Nickname" --with-dex
cd Myplugin

Сборка плагина:

# Скомпилирует Python 3.11 bytecode + Java DEX + упакует в builds/MyPlugin-0.1.0-3.11.eaf
mandochka build -c 2 -b

# Сборка со сжатием DEX через R8 Minify
mandochka build -c 2 --minify -b

Отдельная компиляция только DEX:

# Обычная компиляция D8
mandochka dex -v

# Сжатие и обфускация R8 Minify
mandochka dex --minify -v

Просмотр статуса кэша:

mandochka cached

Конфигурация (config.yml)

zipFormat: eaf
source: myplugin/src
buildNameUncompiled: "{name}-{version}"
buildNameCompiled: "{name}-{version}-3.11"
ignoreAll:
  - myplugin/.mandochka/cache/*
compilationIgnore:
  - myplugin/src/main.py

# Нативная интеграция DEX / Java / R8
dex:
  enabled: true
  source: myplugin/dex_src
  stubs: myplugin/compile_stubs
  output: myplugin/res/dex/classes.dex
  minApi: 26
  targetJava: 8
  minify: true          # R8 Minify & Shrinking
  rules: rules.pro      # опциональные правила Proguard
  autoDownloadR8: true

obfuscationConfig:
  stripDocstrings: true
  removeLogs: true
  renameLocals: true
  encodeStrings: true
  encodeNumbers: true

CLI Справка

  • mandochka mcp: запуск локального высокоскоростного Model Context Protocol (MCP) сервера для интеграции с Claude Desktop, Cursor, Zed, Windsurf, Goose и автономными ИИ-агентами.
  • mandochka build: сборка плагина (-c [0-2], -a, -o, -p <method> <pass>, --dex, --skip-dex, --minify, --rules, -j <jobs>, -b, -format machine).
  • mandochka dex: прямая компиляция Java в Dalvik DEX (--source, --output, --stubs, --min-api, --release, --minify, --rules, --d8, --javac, -f, -c, -v, -format machine).
  • mandochka check: глубокий анализ совместимости с ElyxCore SDK и проверка AST (-format machine).
  • mandochka doctor: диагностика компиляторов и инструментов окружения (-format machine).
  • mandochka cached: статус файлов в кэше Python и DEX (-format machine).
  • mandochka stats: статистика проекта (builds, lines, size, files, -format machine).
  • mandochka watch: авто-пересборка при изменениях файлов.
  • mandochka new: мастер создания плагина (интерактивный или через --gen, -format machine).
  • mandochka stubs: управление матрицей версий SDK (list, sync, -format machine).
  • mandochka script: запуск .edsl скриптов автоматизации.
  • mandochka add-ignore / del-ignore: управление списками игнорирования (-format machine).

Флаг --format machine / -format machine

Любая команда Mandochka поддерживает вывод в машиночитаемом JSON формате для скриптов, CI/CD и автономных ИИ-агентов:

mandochka check -format machine
mandochka doctor -format machine
mandochka build -c 2 -b -format machine

В этом режиме терминальная псевдографика и спиннеры отключаются, а в stdout отдаётся строго валидный структурированный JSON с результатами и таймингами бенчмарка.

Нативный MCP-сервер для ИИ-агентов (mandochka mcp)

Mandochka содержит сверхбыстрый нативный MCP-сервер (JSON-RPC 2.0 stdio, старт за < 5 мс, нулевой оверхед), предоставляющий агентам доступ ко всем возможностям сборщика:

Конфигурация в claude_desktop_config.json или Cursor:

{
  "mcpServers": {
    "mandochka": {
      "command": "mandochka",
      "args": ["mcp"]
    }
  }
}

Доступные агенту MCP-инструменты:

  • mandochka_check: проверка AST и совместимости сигнатур/версий SDK.
  • mandochka_build: полная сборка плагина со всеми флагами и R8 Minify.
  • mandochka_dex: прямая компиляция Java в Dalvik DEX.
  • mandochka_doctor: проверка готовности системы (JDK, D8, Python 3.11).
  • mandochka_search_sdk: быстрый поиск методов, классов, kwargs и хуков в ElyxCore SDK matrix.
  • mandochka_cached: аудит состояния инкрементального кэша.
  • mandochka_stats: статистика строк кода, размеров и истории сборок.
  • mandochka_new: генерация скаффолда нового плагина.
  • mandochka_get_config: чтение и валидация конфигурации проекта.

Ресурсы и промпты:

  • mandochka://config, mandochka://sdk-matrix, mandochka://metainfo
  • Промпты для создания плагина, написания DexHook-моста и устранения несовместимостей SDK.

Документация


Лицензия

MIT License. См. файл LICENSE.

Metadata

Release files for mandochka 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mandochka 0.1.2
File Size Uploaded Provenance Actions
mandochka-0.1.2.tar.gz 95.9 kB Without provenance Details for mandochka-0.1.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for mandochka 0.1.2
File Interpreter ABI Platform Actions
mandochka-0.1.2-py3-none-any.whl Python 3 none any Details for mandochka-0.1.2-py3-none-any.whl

Total release size: 197.8 kB

Release files / mandochka-0.1.2.tar.gz

Download URL mandochka-0.1.2.tar.gz
Size 95.9 kB
Tags Source
SHA-256 checksum
How to use checksums
0a707e6b15d24ce53d652952ef01db31cc4503ee285d6058c364086511059053
BLAKE2b-256 checksum
How to use checksums
0dd5193e081ddf60bd8d5eaee4a1457020ade05165d40126a9d43f2006501816
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.9

Release files / mandochka-0.1.2-py3-none-any.whl

Download URL mandochka-0.1.2-py3-none-any.whl
Size 102.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
986da01480b34f89c6347fa47c84571fa2238e2458fe1062da201986a26b8647
BLAKE2b-256 checksum
How to use checksums
c0bb84064fb68d0b17289a78eb49d365cf329fccd85de8492c58a379f65cf037
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.9

Security for mandochka 0.1.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page