Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Экосистема Евы 🩷

Обзор проектов вокруг Евы. В центре — ядро (рантайм, где Ева живёт); вокруг него клиенты (интерфейсы к одному и тому же ядру), модули (новые руки и поверхности) и MCP-серверы (инструменты). Всё — под git.desu.church, org eva (кроме отмеченного).

Ключевая идея: ум и состояние — в ядре, клиенты тонкие. Чаты, память, навыки, личности общие — один и тот же чат виден из любого клиента; folder — человеческая полка «о чём чат», перекладывается откуда угодно, а чаты специализированных поверхностей (telegram, mtl) помечены surface и в общий список не лезут. Переключение модели, история — всё через HTTP/SSE-API ядра.

Ядро

eva-kernel (eva/kernel) — провайдеро-независимое LLM-ядро на Rust: долговременная память, инструменты, навыки, чаты с гигиеной контекста, крон — в одном бинаре поверх одного SQLite-файла. Полное описание, конфиг и API — в README.md.

Каналы связи ядру не принадлежат: телеграм и всё, что появится дальше, живёт модулями рядом.

Клиенты

КлиентРепозиторийСтекЧто умеет
webeva/frontendNuxt 4 + TailwindЕва в браузере; ставить нечего, наружу вешается под замком с паролем
appeva/appTauri + NuxtДесктопное окно с руками: клиентские операции, разрешения, кодовые сессии
androideva/androidKotlin + Jetpack ComposeПолноценный мобильный клиент
tuieva/tuiPython + Textual + httpxТерминальный клиент; руки и код-режим есть и здесь
mtleva/mtlTauri + NuxtМастерская переводного патча: движки игр, ресурсы, обратная запись
telegrameva/telegram-bridgeRust + eva-sdkНе клиент, а поверхность: отдельный процесс-модуль, ведёт телеграм целиком

Файлы и команды на машине Господина исполняет сам клиент: ядро шлёт событие client_op в живой стрим тура, клиент делает это у себя и постит результат обратно. Поэтому руки есть у десктопа, терминала и мастерской, а у вкладки браузера — нет.

web

Ева в браузере: лента со стримингом и картинками, инструменты живьём, кнопочные вопросы, память, крон, подагенты, генерации, очередь одобрений, расход, личности, несколько ядер на выбор. Замок паролем стоит на самом раннем хуке, поэтому наружу не уходит ничего, кроме формы входа. В ядро браузер ходит напрямую — CORS вешается на reverse-proxy перед ним.

app

То же окно на рабочем столе (Tauri), но с руками: клиентские операции с вопросом на запись и команду (дифф против диска, каталог команды, «всегда» на сессию), кодовые сессии на полке code с привязкой к проекту (поле project чата) и памятью проекта в .eva/, компаньон-кружок поверх всех окон со снимком экрана.

mtl

Мастерская переводного патча: открываешь каталог игры — она опознаёт движок, разбирает реплики со сценой и говорящим, переводит и кладёт назад так, как ждёт движок (копия файла снимается до первой правки). Двенадцать опознаваемых движков, разбор и обратная запись — RPG Maker MV/MZ, чтение — Ren’Py. Глоссарий и стиль лежат в .mtl рядом с игрой и едут в контекст каждого тура.

android

Основной клиент. Чаты по папкам, выбор модели (per-чат + клиентский дефолт новых чатов), стриминг с тул-коллами как в Claude (свёрнутый чип с иконкой, группировка подряд идущих шагов, разворот в лист «Сводка» с таймлайном; известные тулы — с человеческой сводкой, mcp_* — сыро). Просмотр памяти, крона, генераций (обзор/отмена туров), статистики расхода/триажа, мульти-сервер. Доверенный клиент: туры уходят trusted + uncapped.

Отдельно — вкладка YouTube (PipePipeExtractor): смотреть ролики/плейлисты, спросить Еву о содержимом (субтитры → транскрипт → чат в папке youtube), скачивать, фоновое проигрывание, кэш и оффлайн. Это GUI/мобильная фича, в терминал не переносится.

tui

Ева в терминале — Textual + httpx, тонкий клиент. Общие чаты со всеми клиентами, создание/удаление/обновление на клавишах, переключение полок и поверхностей, стриминг дельтами с пометками вызовов инструментов. Приводится к паритету с андроидом по терминало-уместным фичам (выбор модели, разворачиваемые тул-коллы, память/крон/статы/генерации).

Модули и SDK

Модуль — отдельный процесс: даёт Еве инструменты (MCP-сервер, к которому подключается ядро) и, если он поверхность, ведёт туры через API ядра. Протокол и границы — глава «Модули и SDK».

ПроектРепозиторийЧто это
eva-sdk (Rust)eva/kernel, sdk/Клиент ядра + MCP-сервер модуля + стадии middleware
eva-sdk (Python)eva/sdk-pyТо же самое на Python; им же пишутся middleware-записи
telegram-bridgeeva/telegram-bridgeТелеграмная поверхность: поллинг, триаж, доставка, инструменты telegram_*
eva-bookseva/kernel, plugins/books/Книжная полка: PDF/EPUB/FB2/TXT постранично и поиск по словам — с полки сервера или с машины клиента

MCP-серверы

Инструменты, которые ядро подключает как клиент. Каталог наших серверов (поездки по РЖД, VNDB, крипто-свопы, Forgejo, имиджборд-платформа и др.) — в MCP-SERVERS.md.

Картина

   web ──────┐                        ┌── telegram-bridge (модуль)
   app ──────┤                        │
   android ──┼──▶ eva-kernel ◀────────┤
   tui ──────┤     (HTTP/SSE)         └── следующая поверхность
   mtl ──────┘          │
                        │ MCP (stdio / HTTP / UDS)
             ┌──────────┼──────────────┐
        rzd  kana  redose  viendesu  ghostswap  forgejo …

Клиенты и модули цепляются к одному API: клиент показывает Еву человеку, модуль даёт ей руки или целый канал связи.