YETI³ DEVELOPERPYTHON SDK / 0.4.3
Небольшой первый шаг. Основа большого продукта.

Ваш продукт.
На Python.
С YETI³.

Восемь понятных пакетов для работы с ядром, AI, платформой, решениями, файлами, модулями, языками и темами. Начните с одного модуля — подключайте возможности по мере роста проекта.

Python 3.12+Единый язык SDK
8 пакетовРазделены по назначению
С основПример с ожидаемым результатом
01 / Конструктор возможностей

Каждой задаче — свой пакет.

Начните с yeti3-core
01 · Основа

yeti3-core

Создавайте модули, регистрируйте их и запускайте движок. Здесь начинается любое приложение.

from yeti3_core import Engine, Module, ModuleManifest
02 · Искусственный интеллект

yeti3-ai

Серверный шлюз к Ollama: проверка доступа и ограничение нагрузки. Нужны отдельно настроенные Ollama, модели и лицензирование. Универсальный клиент chat() пока не предоставляется.

from yeti3_ai import Gateway
03 · Инфраструктура

yeti3-platform

Связывает установку модулей с приложением, включает сетевое подключение и телеметрию. Для файлов установите yeti3-assets. Для реальных миграций подключите адаптеры вашей среды.

from yeti3_platform import ModulePlatform
04 · Решения

yeti3-solutions

Находит установленные пакеты с точками входа YETI³. Это инструменты подключения: готовые CRM, магазины и медицинские решения поставляются отдельно.

from yeti3_solutions import discover_packages
05 · Ресурсы

yeti3-assets

Управляет файлами модулей и проверяет их владельцев, чтобы один модуль не перезаписал ресурсы другого. Дизайн-наборы в поставку не входят.

from yeti3_assets import FilesystemAssetAdapter
Блокчейн в ядре 0.4.3. Каждый Engine() по умолчанию имеет постоянную цепочку engine.chain. Укажите стабильный YETI3_PRODUCT_ID и постоянный том YETI3_DATA_DIR (или YETI3_CHAIN_PATH). Цепочка сохраняет хеши событий, проверяет связность и не добавляет блоки при повторном чтении или перезапуске без изменений. Для событий продукта используйте engine.chain.record(kind, event_id, revision_digest). Старые собственные цепочки не заменяются и не обнуляются. Это журнал целостности, не распределённый консенсус.
CALMF → Project Chain: обязательно. В yeti3-core==0.4.3 каждое сохранённое событие CALMF записывается в цепочку: начало, успех, ошибка, отмена, прерывание, таймаут и повтор. Операции чтения и статистика не исключаются. Событие не удаляется из очереди отправки до записи блока; повторная доставка не создаёт новый блок. Настройте постоянный YETI3_CHAIN_PATH и стабильный YETI3_PRODUCT_ID. Обновление SDK не обновляет автоматически уже работающие сайты: их обработчики должны быть развёрнуты отдельно.
Статус версии 0.4.3. Каждый Python-дистрибутив содержит свою реализацию. yeti3-core не требует других пакетов. yeti3-platform добавляет установщик и сеть; AI, решения и ресурсы зависят от платформы. yeti3-engine — удобная установка всего набора. Пакеты доступны в собственном HTTPS-каталоге GoChain; публикация в PyPI не требуется. Архивы версии 0.2.0 сохранены и доступны по прежним адресам.
02 / Быстрый старт

От установки до первого запуска.

Понадобятся Python 3.12 или новее и интернет. Создайте папку проекта и откройте в ней терминал. Терминал — окно, в котором запускают команды.

1

Подготовьте отдельное окружение

Оно хранит зависимости проекта отдельно от остальных программ.

python3 --version
python3 -m venv .venv-sdk
source .venv-sdk/bin/activate

Windows PowerShell: используйте py -3 вместо python3, затем .venv-sdk\Scripts\Activate.ps1 для активации.

2

Установите ядро с сервера YETI³

Пакеты скачиваются по HTTPS с engine.yeti3.ru. Копия репозитория и самостоятельная сборка не нужны. Адрес каталога задан явно; PyPI не используется.

python -m pip install -r https://engine.yeti3.ru/sdk/latest/requirements.txt
3

Запустите первый модуль

Сначала скачайте файл в текущую папку командой ниже, затем запустите. Установка ядра сама по себе не создаёт файлы проекта. Команды одинаковы для macOS, Linux и Windows с активированным окружением:

python -c "from pathlib import Path; from urllib.request import urlopen; p=Path('hello.py'); p.exists() and exit('hello.py уже существует: сохраните его или используйте другую папку'); p.write_bytes(urlopen('https://engine.yeti3.ru/sdk/examples/hello.py').read())"
python hello.py

Ожидаемый результат:

Привет! Модуль YETI3 запущен.
03 / Ваш первый модуль

Небольшой код. Полный цикл.

Готовый файл: скачать hello.py. Модуль — часть приложения с собственным именем и поведением при запуске.

from yeti3_core import Engine, Module, ModuleManifest

class HelloModule(Module):
    manifest = ModuleManifest(
        id="hello", name="Первый модуль", version="1.0.0"
    )

    def boot(self, engine: Engine) -> None:
        print("Привет! Модуль YETI3 запущен.")

engine = Engine()
engine.register(HelloModule())
engine.boot()
engine.shutdown()
СтрокаЧто происходит
ModuleManifestОписывает модуль: уникальный id, имя и версию.
register()Добавляет модуль в движок. Регистрируйте все модули до запуска.
boot()Проверяет зависимости и запускает модули в нужном порядке.
shutdown()Останавливает модули в обратном порядке. Вызывайте после успешного запуска.

Следующий шаг: измените текст приветствия и запустите файл снова. Затем добавьте второй модуль с другим id и зарегистрируйте его перед engine.boot().

Практика / Приложение целиком

От примера к своей мастерской.

Модуль заявок, сборка решения, HTML-шаблон и ассет-пак в одном работающем проекте. Создавайте заявки, меняйте статусы и сохраняйте результат в SQLite.

SDK 0.4.3 / Готовые возможности

Модули, решения,
языки и темы.

Одна команда устанавливает весь SDK и его Python-зависимости. Нужен Python 3.12 или новее и активированное виртуальное окружение из быстрого старта.

python -m pip install --index-url https://engine.yeti3.ru/sdk/simple/ yeti3-engine==0.4.3
python -m pip check
06 · Языки

yeti3-languages

Русский и английский, свои сообщения, подстановка значений. Язык выбирается явно для каждого пользователя.

07 · Оформление

yeti3-themes

Светлая и тёмная темы. Локальный CSS без CDN, адаптивные отступы и заметный фокус клавиатуры.

08 · Модули

yeti3-modules

Установка выбранного модуля с зависимостями в правильном порядке и откат установленных в этой операции зависимостей при ошибке.

Попробовать языки и темы

Скопируйте команды целиком. Последняя создаёт файл theme.css в текущей папке: подключите его в шаблоне своего сайта.

python -c "from yeti3_languages import Translator; print(Translator('ru')('install.success', name='Магазин'))"
python -c "from yeti3_languages import Translator; print(Translator('en')('action.install'))"
python -c "from pathlib import Path; from yeti3_themes import theme; Path('theme.css').write_text(theme('light').css(), encoding='utf-8')"

Ожидаемый вывод первых двух команд: Пакет Магазин установлен и Install. Для тёмной темы замените light на dark. Неизвестный язык, ключ или имя темы вызывают понятную ошибку, а не незаметную подмену перевода.

Готовая страница за минуту

Пример регистрирует модуль в ядре, выбирает язык и создаёт страницу с темой. После установки полного SDK выполните:

python -c "from urllib.request import urlretrieve; urlretrieve('https://engine.yeti3.ru/sdk/examples/extensions.py', 'extensions.py')"
python extensions.py --output sdk-demo --language ru --theme light
python -m http.server 8080 --bind 127.0.0.1 --directory sdk-demo

Откройте http://127.0.0.1:8080/. Появится «Мой проект». Для английского языка и тёмной темы используйте --output sdk-demo-en --language en --theme dark. Сервер останавливается сочетанием Ctrl+C. Пример создаёт новую страницу и отказывается перезаписывать существующую.

Автоматическая установка на сайт

Готовность сайтов. На Engine подключён агент для сервисных Python-модулей с проверкой активации через веб-приложение. Установка пакетов с маршрутами, миграциями или статикой требует соответствующих адаптеров сайта. Для остальных сайтов сети подключение агентов ещё не подтверждено. Одна установка SDK через pip не делает существующий сайт готовым к доставке пакетов.
  1. В кабинете выберите сайт с действующей лицензией и подключённым агентом установки.
  2. Выберите опубликованный пакет. Сервер проверит версию, зависимости, совместимость и готовность сайта.
  3. Нажмите «Установить». Для платного пакета сумма резервируется на балансе проекта.
  4. Агент установит пакет и зависимости, выполнит миграции, пересборку статики и проверки.
  5. После подтверждённого успеха резерв превращается в оплату. Подтверждённая ошибка освобождает резерв. Повторный запрос не списывает средства ещё раз.
Если сайт перестал отвечать. Резерв сохраняется до выяснения результата: обрыв связи не доказывает, что пакет не установлен. Доставка получает статус «Требует внимания». Бесплатные пакеты не уменьшают баланс. Стоимость и единицы оплаты показываются в каталоге перед установкой.

Локальная разработка

yeti3_modules.install(distribution, installer) и yeti3_solutions.install(distribution, installer) активируют уже установленные Python-дистрибутивы с точкой входа yeti3.packages. Передайте свой постоянный ModuleInstaller с адаптерами сайта. Зависимости Python объявляйте в pyproject.toml, зависимости модулей — в manifest. Локальный API не проводит платежи и не заменяет лицензированную доставку из каталога.

Установка SDK через pip добавляет библиотеки в окружение. Она не запускает ваш сайт и не списывает средства.

Обязательные WebGL-интерфейсы ядра. CALMF и блокчейн входят в yeti3-core: граф вызовов, состояния, связи блоков, инспектор хешей и список записей. В адаптере сайта панель доступна администратору по адресу /_yeti3/core/. Без WebGL работает список. Данные текущего сайта; внешние библиотеки не загружаются. Подключение и проверка.
04 / Для следующего шага

Понятные границы с первого дня.

Ваше приложение → AI / решения / ресурсы → платформа → ядро → Python

Имя для установки содержит дефис: yeti3-core. Имя для импорта — подчёркивание: yeti3_core. Существующие импорты yeti3.* продолжают работать при установке соответствующего пакета.

Зависимости направлены к движку: код ядра не должен импортировать ваш магазин, CRM или исследовательский проект. Общие инструменты остаются в SDK; предметная логика — в приложении.

Что установится вместе с пакетом

ПакетЗависимости
yeti3-coreТолько Python, без внешних пакетов
yeti3-platformyeti3-core и packaging
yeti3-ai / solutions / assetsyeti3-platform и его зависимости
yeti3-engineВсе пять пакетов — полный набор SDK
Обязательно в ядре, по умолчанию. Один пакет yeti3-core включает CALMF, постоянный Project Chain и автоматические самопроверки. CALMF включён; Engine() выполняет проверки формата событий, целостности цепочки и повторной записи в изолированном временном хранилище. При ошибке ядро не создаётся. Отчёт: engine.selftest_report. Эти проверки не заменяют автотесты вашего приложения. При переходе с 0.3.x создайте новое окружение: CALMF перенесён из платформы в ядро.

Три канала: latest, dev, night

Выберите канал один раз. Его requirements-файл установит весь SDK и совместимые зависимости. Для смены канала создайте отдельное виртуальное окружение.

# Стабильный SDK — для рабочего проекта
python -m pip install -r https://engine.yeti3.ru/sdk/latest/requirements.txt

# Текущая разработка — отдельное тестовое окружение
python -m pip install -r https://engine.yeti3.ru/sdk/dev/requirements.txt

# Канал ночных проверочных сборок — отдельное тестовое окружение
python -m pip install -r https://engine.yeti3.ru/sdk/night/requirements.txt

latest — имя канала, а не номер Python-пакета. Точные версии и SHA-256 доступны в requirements.lock рядом с requirements.txt. Для сохранения выбранной сборки скачайте этот lock-файл в проект; повторная установка по сохранённому файлу использует те же версии. Наличие канала night само по себе не означает настроенное ежедневное расписание сборок.

Переход с версии 0.2.0

Начиная с 0.3.0 изменились владельцы файлов между пакетами. Создайте новое виртуальное окружение по инструкции выше и установите нужные пакеты версии 0.4.3. Прямое обновление старого окружения через pip install -U не поддерживается: удаление старого engine может удалить файлы новых пакетов. Старое окружение сохраните для возврата к предыдущей версии.

Подключение дополнительных пакетов

python -m pip install -r https://engine.yeti3.ru/sdk/latest/requirements.txt

Установка Python-пакета добавляет код в окружение. Активация модуля, миграции, права на решение и настройка сервисов — отдельные шаги. Для промышленной установки см. протокол доставки и жизненный цикл.

Автоматическая пересборка статики. Django-адаптер SDK пересобирает CSS и запускает collectstatic после установки, обновления и удаления пакета. Новая сборка публикуется только после успеха, предыдущая сохраняется для отката. STATIC_ROOT должен быть отдельным постоянным каталогом, доступным веб-серверу. Для React и других сборщиков этап сборки обязателен в конвейере развёртывания сайта.

Правило для новых packages

Один пакет — одна понятная ответственность, собственный pyproject.toml, явные зависимости, публичные импорты, запускаемый пример и описание ошибок. Новые направления, например yeti3-telemetry или yeti3-django, выделяются только вместе с рабочей реализацией и проверкой установки.

Платёжные модули

Поддержка проекта через донаты.

Учёт сборов по сайтам, ЮKassa и Альфа-Банк, защита от повторного зачисления.

Подключить донаты · Проверка ресурсов в SDK 0.4.4

Модули коммуникаций

Два Telegram-бота. Один SDK.

Публичные команды для пользователей и закрытая диагностика ядра для администраторов. Сценарии установки, проверка прав и постоянная очередь.

Подключить Telegram-ботов

Единый сценарий SDK

Создать. Проверить. Запустить.

Одна команда создаёт проект, устанавливает совместимые зависимости и фиксирует версии. Готовые сценарии: базовый проект и Mobile GPU.

Начать с готового сценария

Вычисления на устройствах

Mobile GPU · WebGPU

Подключите браузер устройства к очереди численных заданий через модуль SDK. Одноразовый код, согласие владельца устройства, проверка результата.

Установка, пример и ограничения

05 / Если что-то не получилось

Ответы рядом с кодом.

can't open file hello.py: No such file or directory

Файл примера ещё не скачан либо терминал открыт в другой папке. Выполните обе команды шага 3. Проверьте текущую папку: python -c "from pathlib import Path; print(Path.cwd())".

ModuleNotFoundError: No module named 'yeti3_core'

Активируйте окружение из первого шага и повторите установку ядра. Проверьте python -m pip show yeti3-core. Для установки и запуска используйте один и тот же Python.

pip не находит подходящую версию пакета

Проверьте Python: нужен 3.12+. Укажите --index-url https://engine.yeti3.ru/sdk/simple/, как в инструкции. Проверьте доступность этого адреса и подключение к интернету.

Движок сообщает о недостающей зависимости

Если модуль перечисляет другой модуль в requires, зарегистрируйте оба до boot(). Значения в requires — идентификаторы модулей, а не названия pip-пакетов.

discover_packages() возвращает пустой список

Это допустимо: в окружении нет решений с точками входа yeti3.packages. Восемь базовых пакетов SDK сами по себе не являются бизнес-решениями.

Можно ли запустить AI сразу после pip install?

Нет. Пакет предоставляет серверный Gateway. Для запросов нужны работающая Ollama с моделями, настроенная серверная среда и действующий доступ узла. Быстрый старт с ядром работает без этих сервисов.

Пять новых проектов: магазин, медиаблог, врач, клиника, стоматология →

Как создать администратора и настроить долю автора →

Проверенные модули, решения, языки и ассет-паки — скачать → · Как запустить и опубликовать свой пакет