← Лендинг Hermes Agent

Опубликовано

Библия попаданца, часть 3: анализ аналогов и дизайн телефона-справочника

Автор: Гусев Николай [портфолио]

Дата обновления не указана в исходнике.

Темы: popadantsy, hardware, design

Сложность: средняя

В первых двух частях я разобрал K2 Horizon из ОАЭ и локальные LLM на Android, потом проверил теорию "влезет ли вся наука в телефон" и пришёл к выводу: телефон - не вычислитель, а читатель готовых индексов. Теория подтвердилась частично: памяти хватает с запасом, но маленькая модель - не источник истины, а интерфейс к базе. Логичный следующий шаг - собрать такое приложение. Но прежде чем чертить архитектуру, я прошёлся по аналогам: кто уже пытался, что у них получилось, на каких граблях они оставили следы.

Аналоги: кто уже делал и что из этого вышло

Идея офлайн-"библии цивилизации" не нова - есть как минимум три разных подхода, и каждый на своём железе.

N.O.M.A.D. - сервер в бункере

Самый масштабный аналог: открытый проект (март 2026), Docker-узел на Debian/Ubuntu. Внутри - офлайн-Википедия, медицинские справочники, руководства по выживанию, карты всех регионов планеты, курсы Khan Academy и Ollama с семантическим поиском по архивам. Концептуально это ровно "библия попаданца", вплоть до подачи ("цивилизация в коробке на случай ядерной войны").

Грабли, которые видно сразу: проект требует сервер или старый ПК. Базовый режим (только библиотека и карты) - двухъядерный процессор 2 ГГц и 4 GB RAM, но полный режим с LLM - Ryzen 7, 32 GB RAM и RTX 3060. То есть вся вычислительная тяжесть перекладывается на большое стационарное железо. Телефон в этой картине - тонкий клиент, который к серверу подключается. Для сценария попаданца (и просто похода без сети) это не работает: сервер не положишь в карман.

Урок N.O.M.A.D.: сборка контента (базы, карты, учебники) - решаемая задача, её можно переиспользовать. Архитектуру "большой сервер + тонкий клиент" для телефона - нельзя.

zim-llm - правильный пайплайн, неправильная платформа

GitHub-проект: ZIM-файлы Kiwix -> текст -> чанкование -> эмбеддинги -> векторная база (ChromaDB/FAISS) -> RAG с локальной LLM. Это точно та же схема, к которой я пришёл в прошлой части: тяжёлые индексы готовятся заранее, на устройстве только поиск.

Грабли: во-первых, это CLI на ПК, не приложение. Во-вторых, README честно предупреждает: первичное индексирование большого ZIM (2 GB+) "может занять несколько часов на медленной машине" - подтверждение того, что индексацию нельзя выполнять на целевом устройстве. В-третьих, в issues открыт вопрос "No software license" - проект нельзя легально переиспользовать в продукте без связи с автором.

Уроки zim-llm: пайплайн ZIM->RAG жизнеспособен, но лицензия и платформа - часть дизайна, а не подробность. Наш вариант: с самого начала брать лицензионно-чистые компоненты (libzim - MPL-2, llama.cpp - MIT, векторный поиск - sqlite-vec, MIT-подобная) и готовить индексы вне устройства.

Kiwix и WikiMed - готовый ярус 0

Официальные приложения Kiwix (и специализированный WikiMed) - это офлайн-читалка ZIM с рубрикатором и полнотекстовым поиском. Работает на телефоне идеально, моментально, без интернета.

Грабли: у них нет ИИ-слоя вообще. Поиск по точным словам работает отлично, но вопрос "у меня есть гвоздь, фольга и картошка - как получить электричество" в поиске тонет: статьи называются "гальванический элемент" и "электролит", а не "картошка". Это ровно та граница, где без LLM не обойтись.

Урок Kiwix: ярус 0 не надо писать с нуля - kiwix-android это библиотека с JNI к libzim, её встраивают как модуль. Своё писать надо только поверх.

Телефонные LLM-приложения - чат без базы

PocketPal AI, MLC Chat, AnythingLLM и им подобные дают чат с локальной моделью, но: у большинства нет RAG по офлайн-базе (AnythingLLM умеет RAG по PDF, но не умеет ZIM и рубрикатор), модели скачиваются вручную без подбора под железо, и никто не решает задачу "справочник с источниками".

Урок: свободный чат с 2B-моделью без базы - это лотерея с галлюцинациями. Модель нужна как мост между свободной формулировкой вопроса и статьёй базы, а не как самостоятельный оракул.

Сводка: пустая ниша

Итого по аналогам: Kiwix+ZIM без ИИ на телефоне есть, ZIM+RAG+LLM на ПК есть, LLM-чат без базы на телефоне есть. Связка "ZIM-база + рубрикатор + опциональный локальный LLM с RAG + автоподбор под железо - всё на телефоне" не занята никем. Собирать её имеет смысл из готовых кирпичей, а не с нуля.

Дизайн: два яруса

Из анализа аналогов выплывает архитектура. Ключевое решение: LLM - не основа приложения, а опциональный слой.

Ярус 0 - Справочник (базовый продукт). Kiwix-android как библиотека, рубрикатор из категорий ZIM, полнотекстовый поиск по ftindex, вьювер статей. Работает мгновенно, не греет телефон, не тратит батарею, влезает в любой Android. Это 90% практических сценариев: "как очистить воду", "наложение жгута". Мгновенность и честность - то, чего у N.O.M.A.D. нет на телефоне.

Ярус 1 - LLM-слой (опционально). Подключается только если пользователь скачал модель. Два применения: "спросить по статье" (текст статьи в контекст модели, вопрос - ответ строго по тексту) и свободный вопрос (модель переформулирует запрос в термины базы - "гвоздь+фольга+картошка" -> "гальванический элемент" - поиск по базе - ответ по найденному - источники показываются всегда). Модель 1.7B способна на переформулировку, не способна на синтез нового - и это не баг, а граница применимости.

Первый запуск: приложение замеряет железо (RAM, чип, ABI, свободное место) и качает профильные пакеты - общий справочник по выживанию сразу (0.5-2 GB), остальные базы и модель - по запросу из вкладки "Библиотека". Без модели приложение полноценно полезно; модель можно докачать и удалить в любой момент.

Грабли, которые мы обходим заранее

  • Индексация на устройстве запрещена (урок zim-llm: часы на слабой машине). Тяжёлое - эмбеддинги, чанкование - делается на ПК, телефон получает готовые бинарники.
  • Лицензии проверяются до кода (урок zim-llm с "No software license"). Компоненты: kiwix-android (MPL-2), llama.cpp (MIT), Qwen 3.5 (Apache 2.0), базы - под своими лицензиями (ODC-BY и т.п.).
  • Модель - не оракул (урок телефонных чат-приложений). Источники показываются под каждым ответом, UI не даёт модели говорить без ссылки на статью.
  • Не сервер-клиент (урок N.O.M.A.D.). Всё на устройстве, никаких зависимостей от другого железа.
  • Ярус 0 полноценен без яруса 1 (урок Kiwix). Приложение ставят ради справочника, а не ради чата.

Что дальше

ТЗ написано, архитектура - два яруса из готовых компонентов. План разработки: шесть фаз, каждая - сборка APK и живой прогон на реальном rugged-телефоне класса Blackview (Helio G99, большая батарея, слабый процессор). Первая фаза - скелет приложения с детектором железа и загрузчиком баз. Отчёты по фазам - отдельными статьями.

Ссылки: N.O.M.A.D., zim-llm, Kiwix, офлайн survival kit на ПК.