Liri
Linglong Bird · Личный ИИ-ассистент · Локально в первую очередь · Безопасность по умолчанию
$ git clone https://github.com/cocosoft/Liri.git Дорога, которая ещё не пройдена
25 мая 2026 года это был один v0.1 и 100 коммитов. Пять месяцев спустя — более 4000 файлов и 27 каналов, и счёт за ними: монолит на 7000 строк, 105 файлов сверх лимита, которые никто не зарегистрировал, и одна «уборка мёртвого кода», удалившая всю подсистему песочницы.
Мы откатили и восстановили, а затем превратили удаление, границы и словари состояний в гейты CI — одно за другим. Дорога ещё не пройдена.
Что такое Liri
Liri — это личный ИИ-ассистент на архитектуре TypeScript + Rust.
Это не просто чат-бот: он понимает намерения, выполняет команды, управляет задачами, вызывает инструменты и даже взаимодействует с другими ИИ-агентами. Один движок обслуживает все точки входа: терминал, десктоп, мессенджеры и MCP.
71 модульных подсистем, 4,109 файлов TypeScript и 429 компонентов десктопа — всё можно урезать под конкретный вариант сборки.
Возможности
Восемь отличительных возможностей, каждую можно проверить в исходном коде на GitHub
Глубокий движок агента
Собственный цикл TAOR: со стратегией, памятью и контрольными точками
- Цикл решений TAOR (Think-Act-Observe-Reason)
- 4 стратегий агента: общая / код / исследование / планирование
- Возобновление с контрольной точки — длинные задачи переживают прерывание
- Уровневые окна контекста + трёхуровневое автоматическое сжатие
- 8 причин завершения и предохранитель на раунд против холостых циклов
5 рубежей эшелонированной защиты
Компиляционный анализ Rust AST → пять рубежей защиты → изоляция в песочнице с несколькими бэкендами
- Компиляционный анализ Bash через Rust FFI AST
- 37 правил опасных команд + 14 правил инъекций
- Движок политик Guardrail
- Классификатор рисков AutoMode
- Песочницы Landlock / macOS / Windows / Docker / SSH / PTY
69 встроенных инструментов
23 категорий: файлы, команды, сеть, медиа, код и совместная работа
- Выполнение Bash на уровне Rust AST
- Подсказки кода через LSP
- Загрузка веб-страниц и поиск
- Обработка Notebook, изображений, аудио и видео
- Полная поддержка клиента и сервера MCP
27 каналов сообщений
Адаптеры для всех 27 каналов; поддерживаются WeChat / WeCom / DingTalk / Feishu / QQ
- Telegram / Discord / Slack / WhatsApp
- WeChat / WeCom / DingTalk / Feishu / QQ / Yuanbao
- Email / SMS / Webhook / IRC / Matrix
- Единый каталог каналов и маршрутизация через шлюз
- Урезание каналов на этапе компиляции — сборка меньше
Наблюдаемость корпоративного уровня
Интеграция OpenTelemetry, оповещения и проверки здоровья
- Tracing + метрики в соответствии с семантическими соглашениями OTel GenAI
- Уровневое структурированное журналирование
- Правила оповещений и управление инцидентами
- Проверки здоровья, резервное копирование и архивирование данных
- Воспроизводимые и проверяемые события сеансов
Подключаемая архитектура
SDK плагинов, система навыков и четыре протокола — урезается под вариант сборки
- 5 вариантов сборки: core / personal / coding / enterprise / headless
- Маркетплейс плагинов с горячей загрузкой и проверкой подписи
- Три изолированных источника навыков (встроенные / пользовательские / сторонние)
- Протоколы MCP / ACP / A2A / LSP
- Четырёхэтапный запуск (T0–T3) и загрузка по требованию
Локально в первую очередь
Локальные модели Ollama / llama.cpp, данные по умолчанию на вашей машине
- Локальный инференс, возможна полностью автономная работа
- Единый файл данных SQLite, который не покидает устройство
- Сеансы хранятся как дописываемый events.jsonl
- Облачные провайдеры — необязательное дополнение
- Каталоги песочницы, изолированные по рабочим пространствам
Интеллектуальная маршрутизация
19 классов задач × 4 уровня × 5 этапов решения + цепочка отката провайдеров
- Автоматическое определение 19 типов задач
- 4 уровня: simple / medium / complex / reasoning
- 5 этапов: переключатель → быстрый путь → закрепление за сеансом → суждение LLM → tier
- FallbackChain между провайдерами и политики повтора
- Цены и окна контекста берутся из базы
Слои как в операционной системе
Тонкое ядро, границы подсистем и гейты зависимостей; локально в первую очередь — это значение по умолчанию, а не переключатель.
Ядро
@openliri/kernel — отдельный пакет с тонким публичным интерфейсом, его охраняют гейты K01–K08
Подсистемы
Инструменты, каналы, память, маршрутизация, песочница и задачи — у каждой свои точки входа и границы
Гейты
6 уровней направления зависимостей и более 20 проверок архитектуры — нарушение блокирует CI
Локально в первую очередь
Данные по умолчанию остаются на вашей машине; модели могут работать полностью локально
Пять рубежей эшелонированной защиты
От компиляционного анализа AST до песочницы выполнения: количество правил, пороги и стратегии деградации записаны в исходном коде
🦀 Компиляционный анализ Rust AST
Компиляция Rust FFI выполняет анализ безопасности на уровне AST до запуска кода и сверяет его с 37 правилами опасных команд
Компиляционный анализ Rust AST
КомпиляцияRust FFI выполняет анализ безопасности на уровне AST до запуска кода и сверяет его с 37 правилами опасных команд
- Слой Rust FFI разбирает Bash AST
- Разбор Bash AST с 37 правилами опасных команд
- Обнаружение инъекций в переменные и блокировка обхода путей
- Распознавание подмены аргументов и проверка команд по списку разрешённых
🔍 Семантический анализ TypeScript
Выполнение Составные команды оцениваются посегментно во время выполнения, причина отказа привязана к конкретному оператору
Семантический анализ TypeScript
ВыполнениеСоставные команды оцениваются посегментно во время выполнения, причина отказа привязана к конкретному оператору
- Составные команды только для чтения пропускаются посегментно, а не отклоняются целиком
- 14 шаблонов инъекций (включая символы нулевой ширины и загрязнение переменных окружения)
- 10 правил для Shell (bash / PowerShell / cmd)
- Сообщение об отказе указывает реальную причину и конкретный оператор
⚙️ Движок правил Guardrail
Политика Настраиваемая система правил политик с точной авторизацией по инструменту, каналу и группе пользователей
Движок правил Guardrail
ПолитикаНастраиваемая система правил политик с точной авторизацией по инструменту, каналу и группе пользователей
- Режим deny-by-default со списками разрешений
- Гранулярность прав: инструмент → правило → отпечаток
- Изменения правил применяются сразу, без перезапуска
- При отказе возвращаются источник правила и совпавший оператор
🤖 Классификатор AutoMode
Адаптивность Оценивает риск по контексту задачи и инструмента и решает: разрешить, спросить или отклонить
Классификатор AutoMode
АдаптивностьОценивает риск по контексту задачи и инструмента и решает: разрешить, спросить или отклонить
- Градация риска по семантике команды и контексту инструмента
- Команды с низким риском автоматически разрешаются согласно политике
- Команды с высоким риском уходят на одобрение и попадают в Inbox
- Недоверенные команды по умолчанию вызывают вопрос, а не отказ
🔒 Изолированное выполнение в песочнице
Изоляция 6 бэкендов изоляции — Landlock / macOS / Windows / Docker / SSH / PTY — команды с превышением прав не достигают хоста
Изолированное выполнение в песочнице
Изоляция6 бэкендов изоляции — Landlock / macOS / Windows / Docker / SSH / PTY — команды с превышением прав не достигают хоста
- Linux Landlock: ограничение файловой системы на уровне ядра
- Песочница macOS / Windows Low IL + объект Job как запасной вариант
- Контейнер Docker: полная изоляция + политики ресурсов и сети
- Удалённое выполнение по SSH и управление путями псевдотерминала PTY
- При отсутствии доступного бэкенда — честная деградация с уведомлением
Безопасность в цифрах
Компиляционный анализ Rust AST · Семантический анализ TypeScript · Движок правил Guardrail · Классификатор AutoMode · Изолированное выполнение в песочнице
Интеллектуальная маршрутизация
Выбирает уровень модели по типу и сложности задачи, а при недоступности основного провайдера откатывается в заданном порядке
Автоматически определяет 19 типов задач (ниже 8 распространённых)
Конвейер решений из 5 этапов
Цепочка отката провайдеров
Основная модель недоступна → автоматический откат → деградация без остановки
Голосовое взаимодействие
Больше, чем ввод с клавиатуры — скажите, что нужно, и Liri поймёт, выполнит и ответит
Голосовой ввод
Локальные faster-whisper и SenseVoice или облачный OpenAI Whisper
Голосовой вывод
Локальный Piper или облачные Edge / OpenAI, можно подключить свою команду
Как инструмент
Речь сама по себе — инструмент, который модель вызывает по необходимости
На всех поверхностях
Десктоп и терминал используют одну и ту же голосовую службу
Работа без рук · Многозадачность · Доступность · Голосовые команды · Скажите где угодно — и всё сделано
Второй мозг
База знаний → память → события сеансов: три уровня контекста с поиском, все хранятся на вашей машине
База знаний
Markdown на диске и семантическая индексация; в результатах поиска указан источник
Система памяти
Многоуровневая память и векторные таблицы SQLite, выборка с весами по релевантности
Журнал событий сеансов
Всё, что попадает в запрос к модели, становится событием сеанса, которое можно воспроизвести
Упорядочивание и управление
Упорядочиваем знания в простое, сжимаем контекст при переполнении — два реально существующих фоновых конвейера
Пятиэтапный конвейер DreamEngine
Уровневое управление контекстом
При переполнении длинного диалога первыми отбрасываются самые старые ходы, и потребление памяти при сборке снижается с O(всего) до O(окна). После обрезки остаётся пометка «исходный текст можно вернуть», детали подгружаются постранично, а по достижении порога токенов контекст сжимается автоматически.
Цикл самоитерации PDCA
Для длительных задач Liri самостоятельно выполняет цикл Plan-Do-Check-Act: декомпозиция задачи → выполнение шагов → проверка результата → коррекция плана, пока задача не завершится или не сработает условие остановки.
Десктопный клиент
Сборка на Tauri 2.11 + React 19 · 429 TSX-компонентов · 32 функциональных страниц · полноценный десктопный опыт
Схема структуры интерфейса, а не настоящий скриншот
27 каналов сообщений
У каждого из 27 каналов есть собственный адаптер. Задайте его переменные окружения, чтобы включить канал, или уберите его на этапе сборки.
Всего 27 каналов · единый каталог · включение по каналу · урезание на этапе компиляции
Экосистема
Маркетплейс плагинов + маркетплейс MCP + три источника навыков + маркетплейс шаблонов = композируемая экосистема Liri
Маркетплейс MCP
5 адаптеров источников, единый поиск
Маркетплейс плагинов
Локальный каталог, npm и удалённые реестры
Три источника навыков
Встроенные, пользовательские и сторонние — физически изолированы
Шаблоны и протоколы
Шаблоны агентов и документов, готовые к подключению
Больше, чем список функций
Три вещи, которые легко упустить, но которыми пользуются каждый день.
Система персон Buddy
Не инструмент, а спутник: внешний вид детерминированно генерируется из зерна, поэтому один и тот же Buddy всегда выглядит одинаково; состояние роста сохраняется и накапливается между сеансами.
Прозрачность затрат
Цены читаются из базы, атрибуция идёт по реальному имени модели, которое вернул провайдер, каждый вызов записывается в cost_records; при превышении порога бюджета — сначала предупреждение, затем сжатие, затем блокировка.
Четыре категории пользователей
Разработчики запускают команды и правят код, ответственные за безопасность получают блокировки на уровне AST и аудит, эксплуатация держит его как службу, остальные обращаются к нему прямо из мессенджера.
Текущие ограничения
Что ещё не готово в период быстрой итерации — мы пишем это заранее, чтобы вам не пришлось узнавать на своём опыте.
Безопасность ждёт внешнего аудита
Ждёт внешнего аудита5 рубежей защиты и 6 бэкендов песочницы реализованы, 51 файлов, связанных с песочницей, можно проверить по одному — но сторонний аудит безопасности ещё не пройден.
Взаимодействие в десктопе дорабатывается
Дорабатывается429 TSX-компонентов и 32 страниц готовы; горячие клавиши, анимации и граничные сценарии всё ещё настраиваются.
Каталог маркетплейса пока небольшой
В разработкеМаркетплейс плагинов, маркетплейс MCP и источники навыков работают сквозным образом, но каталог устанавливаемого ещё пополняется.
Быстрый старт
Три шага: установить зависимости → настроить API-ключ → запустить dev
Установка зависимостей
$ git clone https://github.com/cocosoft/Liri.git
$ cd Liri/app && bun install
Настройка API-ключа
$ cp .env.example .env
$ # отредактируйте .env и укажите свой API-ключ Запуск Liri
$
bun run dev
Открытый код · Сообщество
Liri — проект с открытым исходным кодом, мы рады каждому участнику