Быстрая итерация · API и документация могут меняться
Liri Logo

Liri

Linglong Bird · Личный ИИ-ассистент · Локально в первую очередь · Безопасность по умолчанию

4,109 файлов TS 69 встроенных инструментов 5 рубежей защиты 27 каналов сообщений 18 видов Buddy
$ git clone https://github.com/cocosoft/Liri.git
BUILD LOG

Дорога, которая ещё не пройдена

25 мая 2026 года это был один v0.1 и 100 коммитов. Пять месяцев спустя — более 4000 файлов и 27 каналов, и счёт за ними: монолит на 7000 строк, 105 файлов сверх лимита, которые никто не зарегистрировал, и одна «уборка мёртвого кода», удалившая всю подсистему песочницы.

Мы откатили и восстановили, а затем превратили удаление, границы и словари состояний в гейты CI — одно за другим. Дорога ещё не пройдена.

156 дней 116 релизов 20+ проверок архитектуры
Прочитать всю историю

Что такое 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 FFI разбирает Bash AST
  • Разбор Bash AST с 37 правилами опасных команд
  • Обнаружение инъекций в переменные и блокировка обхода путей
  • Распознавание подмены аргументов и проверка команд по списку разрешённых
🔍

Семантический анализ TypeScript

Выполнение

Составные команды оцениваются посегментно во время выполнения, причина отказа привязана к конкретному оператору

  • Составные команды только для чтения пропускаются посегментно, а не отклоняются целиком
  • 14 шаблонов инъекций (включая символы нулевой ширины и загрязнение переменных окружения)
  • 10 правил для Shell (bash / PowerShell / cmd)
  • Сообщение об отказе указывает реальную причину и конкретный оператор
⚙️

Движок правил Guardrail

Политика

Настраиваемая система правил политик с точной авторизацией по инструменту, каналу и группе пользователей

  • Режим deny-by-default со списками разрешений
  • Гранулярность прав: инструмент → правило → отпечаток
  • Изменения правил применяются сразу, без перезапуска
  • При отказе возвращаются источник правила и совпавший оператор
🤖

Классификатор AutoMode

Адаптивность

Оценивает риск по контексту задачи и инструмента и решает: разрешить, спросить или отклонить

  • Градация риска по семантике команды и контексту инструмента
  • Команды с низким риском автоматически разрешаются согласно политике
  • Команды с высоким риском уходят на одобрение и попадают в Inbox
  • Недоверенные команды по умолчанию вызывают вопрос, а не отказ
🔒

Изолированное выполнение в песочнице

Изоляция

6 бэкендов изоляции — Landlock / macOS / Windows / Docker / SSH / PTY — команды с превышением прав не достигают хоста

  • Linux Landlock: ограничение файловой системы на уровне ядра
  • Песочница macOS / Windows Low IL + объект Job как запасной вариант
  • Контейнер Docker: полная изоляция + политики ресурсов и сети
  • Удалённое выполнение по SSH и управление путями псевдотерминала PTY
  • При отсутствии доступного бэкенда — честная деградация с уведомлением

Безопасность в цифрах

37
Правила опасных команд
Сопоставление на уровне AST для bash / PowerShell / cmd
14
Правила обнаружения инъекций
Охватывают символы нулевой ширины, загрязнение переменных окружения и другие формы
6
Бэкенды песочницы
Landlock / macOS / Windows / Docker / SSH / PTY
51
Файлы реализации песочницы
Реализации на TypeScript в app/src/sandbox

Компиляционный анализ Rust AST · Семантический анализ TypeScript · Движок правил Guardrail · Классификатор AutoMode · Изолированное выполнение в песочнице

Интеллектуальная маршрутизация

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

Автоматически определяет 19 типов задач (ниже 8 распространённых)

💻
Код
Генерация, отладка, ревью кода
✍️
Текст
Документация, тексты, перевод
📊
Анализ
Анализ данных, рассуждения, планирование
🔧
Инструменты
Файлы, поиск, системные операции
🌐
Перевод
Многоязычный перевод и локализация
🔍
Поиск
Веб-поиск и поиск информации
🎨
Креатив
Мозговой штурм, дизайн, идеи
💬
Беседа
Повседневный разговор

Конвейер решений из 5 этапов

1 L1: Переключатель маршрутизации Когда выключен, запросы идут напрямую к модели по умолчанию без дополнительных проверок
2 L2: Быстрый путь Простые задачи или правила по префиксу сразу идут к модели низкого уровня
3 L3: Закрепление за сеансом За одним диалогом сохраняется одна модель, чтобы не было частых переключений
4 L4: Классификатор LLM Небольшая модель определяет тип и сложность задачи и назначает tier
5 L5: Разрешение tier Сопоставляет simple/medium/complex/reasoning с конкретными моделями

Цепочка отката провайдеров

Основная модель недоступна → автоматический откат → деградация без остановки

Основной Основной провайдер · модель текущего уровня
Откат 1 Резервный провайдер того же уровня
Откат 2 Провайдер другого уровня
Откат 3 Любой другой настроенный провайдер
Последний рубеж Локальные Ollama / llama.cpp

Голосовое взаимодействие

Больше, чем ввод с клавиатуры — скажите, что нужно, и Liri поймёт, выполнит и ответит

🎤

Голосовой ввод

Локальные faster-whisper и SenseVoice или облачный OpenAI Whisper

Локальный faster-whisper
SenseVoice
OpenAI Whisper
Потоковое распознавание
🔊

Голосовой вывод

Локальный Piper или облачные Edge / OpenAI, можно подключить свою команду

Локальный Piper
Edge TTS
OpenAI TTS
Своя команда
⚡

Как инструмент

Речь сама по себе — инструмент, который модель вызывает по необходимости

Инструмент tts
Инструмент audio_play
Голосовой ввод
Озвучивание ответов
📱

На всех поверхностях

Десктоп и терминал используют одну и ту же голосовую службу

Tauri desktop
Терминал CLI
HTTP API

Работа без рук · Многозадачность · Доступность · Голосовые команды · Скажите где угодно — и всё сделано

Второй мозг

База знаний → память → события сеансов: три уровня контекста с поиском, все хранятся на вашей машине

Уровень 1: База знаний

База знаний

Markdown на диске и семантическая индексация; в результатах поиска указан источник

Markdown на диске Семантический индекс JSONL Поиск по ключевым словам Векторный поиск Слияние RRF
Уровень 2: Память

Система памяти

Многоуровневая память и векторные таблицы SQLite, выборка с весами по релевантности

Многоуровневая память memory_vectors Веса по релевантности Очистка памяти Инъекция контекста
Уровень 3: Источник истины

Журнал событий сеансов

Всё, что попадает в запрос к модели, становится событием сеанса, которое можно воспроизвести

Дописывание events.jsonl Запись до отправки Воспроизведение сеанса Проверяемый след Регистрация на этапе компиляции

Упорядочивание и управление

Упорядочиваем знания в простое, сжимаем контекст при переполнении — два реально существующих фоновых конвейера

Пятиэтапный конвейер DreamEngine

01 Gather
Сбор
Собрать сеансы и документы, ожидающие обработки
02 Analyze
Анализ
Извлечь темы и пригодные к повторному использованию выводы
03 Generate
Генерация
Подготовить заметки для верхних уровней
04 Write
Запись
Записать в базу знаний и память
05 Index
Индексация
Перестроить векторные и ключевые индексы
🧠

Уровневое управление контекстом

При переполнении длинного диалога первыми отбрасываются самые старые ходы, и потребление памяти при сборке снижается с O(всего) до O(окна). После обрезки остаётся пометка «исходный текст можно вернуть», детали подгружаются постранично, а по достижении порога токенов контекст сжимается автоматически.

Уровневое окно
При переполнении сначала обрезаются старые ходы
Подгрузка по требованию
Исходный текст можно вернуть по частям
Трёхуровневое сжатие
Tier 1/2 синхронно + Tier 3 в фоне
🔄

Цикл самоитерации PDCA

Для длительных задач Liri самостоятельно выполняет цикл Plan-Do-Check-Act: декомпозиция задачи → выполнение шагов → проверка результата → коррекция плана, пока задача не завершится или не сработает условие остановки.

Plan
Автодекомпозиция
Do
Пошаговое выполнение
Check
Автопроверка
Act
Автокоррекция

Десктопный клиент

Сборка на Tauri 2.11 + React 19 · 429 TSX-компонентов · 32 функциональных страниц · полноценный десктопный опыт

Liri Desktop · Tauri 2.11
💬
Панель чата
Liri · Linglong Bird
Здравствуйте! Я Liri. Чем могу помочь?
Помогите проанализировать данные этого проекта
Хорошо, анализирую...
Введите сообщение и нажмите Enter...

Схема структуры интерфейса, а не настоящий скриншот

💬
Панель чата
Многоходовой диалог
🤖
Управление моделями
Переключение между моделями
📚
База знаний
Поиск по файлам
🧠
Управление памятью
Просмотр истории
⏰
Задачи по расписанию
Планирование Cron
🔌
Подключение MCP
Обнаружение и установка серверов
💰
Центр затрат
Учёт использования и расходов
🎭
Buddy
Внешний вид и данные роста

27 каналов сообщений

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

Мессенджеры
Telegram
Discord
Slack
WhatsApp
Signal
Matrix
IRC
Line
Zalo
Платформы Китая
WeChat
WeCom
DingTalk
Feishu
QQ
Yuanbao
Совместная работа и соцсети
Microsoft Teams
Google Chat
Mattermost
Facebook Messenger
Twitter/X
Другие каналы
Email
SMS
Webhook
Nostr
Claude
iMessage
Мобильный доступ

Всего 27 каналов · единый каталог · включение по каналу · урезание на этапе компиляции

Экосистема

Маркетплейс плагинов + маркетплейс MCP + три источника навыков + маркетплейс шаблонов = композируемая экосистема Liri

🔌

Маркетплейс MCP

5 адаптеров источников, единый поиск

GitHub
npm
Официальный каталог
Smithery
Встроенные сервисы
🧩

Маркетплейс плагинов

Локальный каталог, npm и удалённые реестры

SDK плагинов + адаптеры
Жизненный цикл и горячая перезагрузка
Проверка подписи
Конечные точки конфигурации + CLI
5 вариантов сборки
⚡

Три источника навыков

Встроенные, пользовательские и сторонние — физически изолированы

11 встроенных навыков
Пользовательские навыки
Сторонний источник ClawHub
Условная оркестрация
Композиция и сопоставление навыков
📚

Шаблоны и протоколы

Шаблоны агентов и документов, готовые к подключению

Маркетплейс шаблонов агентов
Маркетплейс шаблонов документов
MCP / ACP / A2A / LSP
Композируемые плагины и навыки
Параметризованное повторное использование шаблонов

Больше, чем список функций

Три вещи, которые легко упустить, но которыми пользуются каждый день.

🐣

Система персон Buddy

Не инструмент, а спутник: внешний вид детерминированно генерируется из зерна, поэтому один и тот же Buddy всегда выглядит одинаково; состояние роста сохраняется и накапливается между сеансами.

18 видов 8 шляп 6 глаз 5 уровней редкости
🧾

Прозрачность затрат

Цены читаются из базы, атрибуция идёт по реальному имени модели, которое вернул провайдер, каждый вызов записывается в cost_records; при превышении порога бюджета — сначала предупреждение, затем сжатие, затем блокировка.

Таблица цен model_registry Реальный usage Запись по каждому вызову Дневной бюджет
🎯

Четыре категории пользователей

Разработчики запускают команды и правят код, ответственные за безопасность получают блокировки на уровне AST и аудит, эксплуатация держит его как службу, остальные обращаются к нему прямо из мессенджера.

Разработчики Ответственные за безопасность Эксплуатация Обычные пользователи

Текущие ограничения

Что ещё не готово в период быстрой итерации — мы пишем это заранее, чтобы вам не пришлось узнавать на своём опыте.

Безопасность ждёт внешнего аудита

Ждёт внешнего аудита

5 рубежей защиты и 6 бэкендов песочницы реализованы, 51 файлов, связанных с песочницей, можно проверить по одному — но сторонний аудит безопасности ещё не пройден.

Взаимодействие в десктопе дорабатывается

Дорабатывается

429 TSX-компонентов и 32 страниц готовы; горячие клавиши, анимации и граничные сценарии всё ещё настраиваются.

Каталог маркетплейса пока небольшой

В разработке

Маркетплейс плагинов, маркетплейс MCP и источники навыков работают сквозным образом, но каталог устанавливаемого ещё пополняется.

Быстрый старт

Три шага: установить зависимости → настроить API-ключ → запустить dev

1

Установка зависимостей

$ git clone https://github.com/cocosoft/Liri.git
$ cd Liri/app && bun install
2

Настройка API-ключа

$ cp .env.example .env
$ # отредактируйте .env и укажите свой API-ключ
3

Запуск Liri

$ bun run dev

Открытый код · Сообщество

Liri — проект с открытым исходным кодом, мы рады каждому участнику

GitHub

Следите за проектом на GitHub, открывайте Issue или присылайте PR

github.com/cocosoft/liri

Присоединяйтесь к сообществу

Участвуйте в обсуждениях, открывайте Issue или присылайте PR