yeti3-core
Создавайте модули, регистрируйте их и запускайте движок. Здесь начинается любое приложение.
from yeti3_core import Engine, Module, ModuleManifestВосемь понятных пакетов для работы с ядром, AI, платформой, решениями, файлами, модулями, языками и темами. Начните с одного модуля — подключайте возможности по мере роста проекта.
Создавайте модули, регистрируйте их и запускайте движок. Здесь начинается любое приложение.
from yeti3_core import Engine, Module, ModuleManifestСерверный шлюз к Ollama: проверка доступа и ограничение нагрузки. Нужны отдельно настроенные Ollama, модели и лицензирование. Универсальный клиент chat() пока не предоставляется.
from yeti3_ai import GatewayСвязывает установку модулей с приложением, включает сетевое подключение и телеметрию. Для файлов установите yeti3-assets. Для реальных миграций подключите адаптеры вашей среды.
from yeti3_platform import ModulePlatformНаходит установленные пакеты с точками входа YETI³. Это инструменты подключения: готовые CRM, магазины и медицинские решения поставляются отдельно.
from yeti3_solutions import discover_packagesУправляет файлами модулей и проверяет их владельцев, чтобы один модуль не перезаписал ресурсы другого. Дизайн-наборы в поставку не входят.
from yeti3_assets import FilesystemAssetAdapterEngine() по умолчанию имеет постоянную цепочку engine.chain. Укажите стабильный YETI3_PRODUCT_ID и постоянный том YETI3_DATA_DIR (или YETI3_CHAIN_PATH). Цепочка сохраняет хеши событий, проверяет связность и не добавляет блоки при повторном чтении или перезапуске без изменений. Для событий продукта используйте engine.chain.record(kind, event_id, revision_digest). Старые собственные цепочки не заменяются и не обнуляются. Это журнал целостности, не распределённый консенсус.yeti3-core==0.4.3 каждое сохранённое событие CALMF записывается в цепочку: начало, успех, ошибка, отмена, прерывание, таймаут и повтор. Операции чтения и статистика не исключаются. Событие не удаляется из очереди отправки до записи блока; повторная доставка не создаёт новый блок. Настройте постоянный YETI3_CHAIN_PATH и стабильный YETI3_PRODUCT_ID. Обновление SDK не обновляет автоматически уже работающие сайты: их обработчики должны быть развёрнуты отдельно.yeti3-core не требует других пакетов. yeti3-platform добавляет установщик и сеть; AI, решения и ресурсы зависят от платформы. yeti3-engine — удобная установка всего набора. Пакеты доступны в собственном HTTPS-каталоге GoChain; публикация в PyPI не требуется. Архивы версии 0.2.0 сохранены и доступны по прежним адресам.Понадобятся Python 3.12 или новее и интернет. Создайте папку проекта и откройте в ней терминал. Терминал — окно, в котором запускают команды.
Оно хранит зависимости проекта отдельно от остальных программ.
python3 --version
python3 -m venv .venv-sdk
source .venv-sdk/bin/activateWindows PowerShell: используйте py -3 вместо python3, затем .venv-sdk\Scripts\Activate.ps1 для активации.
Пакеты скачиваются по HTTPS с engine.yeti3.ru. Копия репозитория и самостоятельная сборка не нужны. Адрес каталога задан явно; PyPI не используется.
python -m pip install -r https://engine.yeti3.ru/sdk/latest/requirements.txtСначала скачайте файл в текущую папку командой ниже, затем запустите. Установка ядра сама по себе не создаёт файлы проекта. Команды одинаковы для 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Ожидаемый результат:
Готовый файл: скачать 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 и его 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Русский и английский, свои сообщения, подстановка значений. Язык выбирается явно для каждого пользователя.
Светлая и тёмная темы. Локальный CSS без CDN, адаптивные отступы и заметный фокус клавиатуры.
Установка выбранного модуля с зависимостями в правильном порядке и откат установленных в этой операции зависимостей при ошибке.
Скопируйте команды целиком. Последняя создаёт файл 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. Пример создаёт новую страницу и отказывается перезаписывать существующую.
yeti3_modules.install(distribution, installer) и yeti3_solutions.install(distribution, installer) активируют уже установленные Python-дистрибутивы с точкой входа yeti3.packages. Передайте свой постоянный ModuleInstaller с адаптерами сайта. Зависимости Python объявляйте в pyproject.toml, зависимости модулей — в manifest. Локальный API не проводит платежи и не заменяет лицензированную доставку из каталога.
Установка SDK через pip добавляет библиотеки в окружение. Она не запускает ваш сайт и не списывает средства.
yeti3-core: граф вызовов, состояния, связи блоков, инспектор хешей и список записей. В адаптере сайта панель доступна администратору по адресу /_yeti3/core/. Без WebGL работает список. Данные текущего сайта; внешние библиотеки не загружаются. Подключение и проверка.Имя для установки содержит дефис: yeti3-core. Имя для импорта — подчёркивание: yeti3_core. Существующие импорты yeti3.* продолжают работать при установке соответствующего пакета.
Зависимости направлены к движку: код ядра не должен импортировать ваш магазин, CRM или исследовательский проект. Общие инструменты остаются в SDK; предметная логика — в приложении.
| Пакет | Зависимости |
|---|---|
| yeti3-core | Только Python, без внешних пакетов |
| yeti3-platform | yeti3-core и packaging |
| yeti3-ai / solutions / assets | yeti3-platform и его зависимости |
| yeti3-engine | Все пять пакетов — полный набор SDK |
yeti3-core включает CALMF, постоянный Project Chain и автоматические самопроверки. CALMF включён; Engine() выполняет проверки формата событий, целостности цепочки и повторной записи в изолированном временном хранилище. При ошибке ядро не создаётся. Отчёт: engine.selftest_report. Эти проверки не заменяют автотесты вашего приложения. При переходе с 0.3.x создайте новое окружение: CALMF перенесён из платформы в ядро.Выберите канал один раз. Его 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.txtlatest — имя канала, а не номер Python-пакета. Точные версии и SHA-256 доступны в requirements.lock рядом с requirements.txt. Для сохранения выбранной сборки скачайте этот lock-файл в проект; повторная установка по сохранённому файлу использует те же версии. Наличие канала night само по себе не означает настроенное ежедневное расписание сборок.
Начиная с 0.3.0 изменились владельцы файлов между пакетами. Создайте новое виртуальное окружение по инструкции выше и установите нужные пакеты версии 0.4.3. Прямое обновление старого окружения через pip install -U не поддерживается: удаление старого engine может удалить файлы новых пакетов. Старое окружение сохраните для возврата к предыдущей версии.
python -m pip install -r https://engine.yeti3.ru/sdk/latest/requirements.txtУстановка Python-пакета добавляет код в окружение. Активация модуля, миграции, права на решение и настройка сервисов — отдельные шаги. Для промышленной установки см. протокол доставки и жизненный цикл.
collectstatic после установки, обновления и удаления пакета. Новая сборка публикуется только после успеха, предыдущая сохраняется для отката. STATIC_ROOT должен быть отдельным постоянным каталогом, доступным веб-серверу. Для React и других сборщиков этап сборки обязателен в конвейере развёртывания сайта.Один пакет — одна понятная ответственность, собственный pyproject.toml, явные зависимости, публичные импорты, запускаемый пример и описание ошибок. Новые направления, например yeti3-telemetry или yeti3-django, выделяются только вместе с рабочей реализацией и проверкой установки.
Учёт сборов по сайтам, ЮKassa и Альфа-Банк, защита от повторного зачисления.
Публичные команды для пользователей и закрытая диагностика ядра для администраторов. Сценарии установки, проверка прав и постоянная очередь.
Одна команда создаёт проект, устанавливает совместимые зависимости и фиксирует версии. Готовые сценарии: базовый проект и Mobile GPU.
Подключите браузер устройства к очереди численных заданий через модуль SDK. Одноразовый код, согласие владельца устройства, проверка результата.
Файл примера ещё не скачан либо терминал открыт в другой папке. Выполните обе команды шага 3. Проверьте текущую папку: python -c "from pathlib import Path; print(Path.cwd())".
Активируйте окружение из первого шага и повторите установку ядра. Проверьте python -m pip show yeti3-core. Для установки и запуска используйте один и тот же Python.
Проверьте Python: нужен 3.12+. Укажите --index-url https://engine.yeti3.ru/sdk/simple/, как в инструкции. Проверьте доступность этого адреса и подключение к интернету.
Если модуль перечисляет другой модуль в requires, зарегистрируйте оба до boot(). Значения в requires — идентификаторы модулей, а не названия pip-пакетов.
Это допустимо: в окружении нет решений с точками входа yeti3.packages. Восемь базовых пакетов SDK сами по себе не являются бизнес-решениями.
Нет. Пакет предоставляет серверный Gateway. Для запросов нужны работающая Ollama с моделями, настроенная серверная среда и действующий доступ узла. Быстрый старт с ядром работает без этих сервисов.
Пять новых проектов: магазин, медиаблог, врач, клиника, стоматология →
Как создать администратора и настроить долю автора →
Проверенные модули, решения, языки и ассет-паки — скачать → · Как запустить и опубликовать свой пакет