Aquilum — быстрый аналог Obsidian на Rust, который потребляет около 27 МБ ОЗУ

—

от автора

Заметочник поддерживает обратные ссылки и граф знаний, дерево файлов, лайв-превью, работу с несколькими базами знаний, анализ данных с помощью аналога Dataview, мгновенный поиск связных и похожих заметок, историю изменений внутри каждой заметки и многое другое, о чем расскажу в статье.

Домашняя страница заметочника Aquilum

Домашняя страница заметочника Aquilum

Прилагаю описание проекта на Github и страницу релиза с установщиком для Windows. Да, протестировать его пока можно только на винде.

Aquilum пока не пытается заменить Obsidian во всех сценариях. Это активно развиваемый Windows-прототип local-first заметочника.

Зачем создавался заметочник Aquilum

Я фанат Obsidian, но меня невероятно задолбало, что он ест так много ОЗУ. Особенно это мешает, когда открыто несколько тяжелых приложений, и память особенно ценна.

На моём компьютере Obsidian заметно увеличивает нагрузку при запуске и особенно тяжело работает с большими хранилищами и несколькими тяжёлыми приложениями.

Ниже я разместил скриншот с потреблением ресурсов Obsidian и Aquilum. Я реализовал на Rust аналоги привычных возможностей Obsidian: Dataview-подобные запросы, граф, backlinks, историю, задачи и другие функции, поэтому в моем случае условия максимально похожие.

Видно, что Obsidian может потреблять гигабайт с лишним памяти, в то время как аквилум кушает всего 27 мегабайт! Т.е. я еще занизил показатели в заголовке статьи…

Сравнение потребления ресурсов у Obsidian и Aquilum

Сравнение потребления ресурсов у Obsidian и Aquilum

Разница в том, что обсидиан тянет за собой отдельный браузерный движок, который и нагружает систему. Я решил действовать иначе и написать заметочник на Tauri, чтобы расход ресурсов был минимален. Это позволило ограничить потребление ОЗУ в 27Мб, а установщик запаковать в 11Мб дискового пространства.

Также мне не нравится, что у всех плагинов в Obsidian разрозненный визуальный дизайн. Я сам дизайнер, поэтому в глаза мне постоянно бьет ключом этот нюанс. Хочется единой дизайн-системы и контроля над токенами (отступами, размерами и цветами). Плюс для меня разработка объемного продукта стала хорошей практикой, так как в данный момент работаю я в команде дизайн-систем.

А еще мне хотелось открытости и портативности, чтобы все данные всегда были у меня! В обсидиане некоторые плагины не всегда очевидно хранят данные (это характерно для табличных плагинов). В аквилуме же все данные хранятся в заметках, что означает полную портативность базы знаний.

Обзор функционала

Aquilum использует CodeMirror 6 — тот же редакторский движок, который используется в Obsidian. Поэтому базовые ощущения от редактирования Markdown во многом знакомы пользователям Obsidian.

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

Основные визуальные элементы:

  1. Маркеры списков — с подсветкой строки с помощью символов !, &, ~ или $

  2. Виджеты — их сейчас несколько в приложении, и о них расскажу дальше

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

Визуальный обзор редактора Aquilum

Визуальный обзор редактора Aquilum

Таблицы

В редакторе есть удобные Markdown-таблицы с расширенными возможностями. В них можно объединять и разделять ячейки, менять порядок строк и столбцов вручную, а также использовать форматирование текста прямо внутри ячеек.

Контекстное меню позволяет быстро создавать таблицы, удалять отдельные строки и столбцы или удалять таблицу целиком. Все основные операции — включая объединение и разъединение ячеек, доступны непосредственно из этого меню.

Ниже я разместил пример таблицы:

Таблицы в редакторе Aquilum

Таблицы в редакторе Aquilum

Вот так выглядит код таблицы со скриншота выше:

| <!--q-empty--> | ываыва |  | <!--q-empty--> | ыав | <!--q-empty--> | <!--q-empty--> | <!--q-empty--> | <!--q-empty--> || --- | :---: | --- | --- | --- | --- | --- | --- | --- || ghbdtn | ыав |  | [[книга]] |  | <!--q-empty--> | <!--q-empty--> | <!--q-empty--> | <!--q-empty--> || **dsfsdываf** |  |  | ^^ | ^^ | <!--q-empty--> | ^^ | <!--q-empty--> | <!--q-empty--> || ^^ | ^^ | ^^ | <!--q-empty--> | <!--q-empty--> | <!--q-empty--> | ываываываыва | <!--q-empty--> | <!--q-empty--> || выа | ыав |  | kjhgkjhgkjhgk | <!--q-empty--> | <!--q-empty--> | <!--q-empty--> | <!--q-empty--> | <!--q-empty--> || ыва |  |  | <!--q-empty--> |  | <!--q-empty--> | <!--q-empty--> | <!--q-empty--> | <!--q-empty--> || <!--q-empty--> | <!--q-empty--> | <!--q-empty--> | <!--q-empty--> | <!--q-empty--> | <!--q-empty--> | <!--q-empty--> | <!--q-empty--> | <!--q-empty--> |<!--q-table:{"merges":[[0,1,0,2],[1,1,1,2],[1,3,2,4],[1,6,2,6],[2,0,3,2],[4,1,4,2],[5,0,5,2],[5,3,5,4]],"rows":[111,28,28,41,191,40,45],"cols":[123,60,141,120,100,65,145,60,60]}-->

Поиск по базе знаний

Для меня было важно, чтобы поиск работал мгновенно даже на базе с миллионом заметок. Это центральная часть всего приложения, которая должна быть надежной и молниеносной. В итоге тысяча полноценных заметок обрабатывается за 1-2 мс на моей машине, и момент поиска вообще незаметен глазу. Также поиск поддерживает горячие клавиши для быстрого открытия или создания заметки.

При этом совпадения подсвечиваются, а общее количество совпадений выводится справа сверху в карточке источника.

Ниже размещен скрин того, как это выглядит:

Окно поиска в Aquilum

Окно поиска в Aquilum

Отображение медиа

Приложение поддерживает отображение фото и видео, а также кадрирование и центрирование. Вы можете скопировать изображение из нужного источника, а затем вставить на холст, и исходник автоматически поместится в папку Files, а само изображение появится на холсте.

Отображение медиа в заметочнике Aquilum

Отображение медиа в заметочнике Aquilum

При этом все настройки изображения хранятся в Markdown формате:

![472|crop=0,0,93.3,91.8](<Files/image 6.png>)

Виджеты, страницы книги и читалка

В приложении поддерживаются виджеты, внутри которых в перспективе можно помещать любую информацию, которая должна быть визуально выстроена в единый блок.

Например, сейчас есть виджеты книги, которые вы можете увидеть на скриншоте ниже:

Виджеты книги в заметочнике Aquilum

Виджеты книги в заметочнике Aquilum

Вы можете создать заметку книги: загрузить обложку, вписать название, автора, а также прикрепить файл самой книги, после чего с помощью конструкции виджета сформировать таблицу из прочитанных книг. Пример такой конструкции можно посмотреть ниже:

> [!book] [[📖 Победители недр]]> [!book] [[📖 Книга-тренажер для вашего мозга]]> [!book] [[📖 Как убедить кого угодно в чем угодно]]> [!book] [[📖 20 тысяч лье под водой]]> [!book] [[📖 Краткая история почти всего на свете]]> [!book] [[📖 Марсианские хроники]]> [!book] [[📖 Плененная вселенная]]> [!book] [[📖 Господин из Сан-Франциско]]> [!book] [[📖 Олеся]]> [!book] [[📖 Поединок]]> [!book] [[📖 Думай]]

Мне очень хотелось, чтобы все мои прочитанные книги хранились в едином файле с прогрессом, названием и автором. Для этого и предназначен данный блок.

И, да, читать книгу можно не выходя из приложения!

Читалка в Aquilum

Читалка в Aquilum

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

Метаданные и frontmatter и шаблоны

В заметочнике также есть блок frontmatter, внутри которого вы можете разместить различную информацию.

Например, можно указать дату и время создания, отображение обложки страницы или книги, теги, рейтинг книги. Также имеются и технические поля, например, прогресс прочтения, привязанный к размеру файла книги. Это значит, что вы можете открыть книгу через Aquilum на любом устройстве, и чтение начнется именно оттуда, откуда вы начали! Все сделано для того, чтобы все данные были у вас!

frontmatter в заметочнике Aquilum

frontmatter в заметочнике Aquilum

Настройки и корзина

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

Сейчас доступны базовые настройки внешнего вида, языка, шрифтов и стартовой страницы; расширенная система тем находится в разработке.

Панель настроек Aquilum

Панель настроек Aquilum

Также есть корзина, в которую попадают удаленные файлы. В обсидиане я, бывало, по случайности сносил очень важные заметки, и они полностью пропадали! В аквилуме эта проблема исправлена — заметки всегда попадают в корзину!

Корзина в приложении Aquilum

Корзина в приложении Aquilum

MCP server и работа с ИИ моделями

Для меня было важно, чтобы я мог автоматизировать работу с заметками через MCP, потому что иногда нужно, например, сменить формат даты во всех заметках или переносить заметки между базами знаний, с чем очень сильно помогает автоматизация, особенно когда на работе много задач.

Окно настроек MCP сервера в приложении Aquilum

Окно настроек MCP сервера в приложении Aquilum

Приложение поддерживает подключение к Claude Code, Codex CLI и Gemini Antigravity. Агенты могут искать информацию через мгновенный BM25F поиск, смотреть связи между заметками, а также редактировать заметки в нескольких базах знаний одновременно!

Это очень сильно ускоряет работу с базами знаний проекта, потому что все инструменты работают из коробки и не требуют дополнительной настройки или написания кастомных скриптов.

История изменений заметки

Еще одним преимуществом является встроенное версионирование, позволяющее откатывать ваши правки и смотреть эволюцию ваших мыслей. То же самое работает и с правками ИИ-агента, который может удалить важную для вас информацию. Теперь вы всегда можете вернуть утраченное!

Панель версионирования в Aquilum

Панель версионирования в Aquilum

Граф знаний

Я хотел сделать граф не декоративной визуализацией, а рабочим инструментом навигации и анализа базы знаний.

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

Плюс можно отфильтровать заметки по дате создания, что может быть удобно для анализа.

Граф знаний в Aquilum

Граф знаний в Aquilum

Работа с задачами

Работа с задачами пока находится на раннем этапе, но уже поддерживает базовые Markdown-чекбоксы и запросы по их состоянию.

Задачи в Aquilum

Задачи в Aquilum

Dataview и работа с данными

Приложение поддерживает написание кастомных скриптов прямо в теле заметки, чтобы работать с данными. Синтаксис очень похож на тот, что есть в плагине Dataview в обсидиане, но все же переработан для простоты и расширен под мои задачи, а также переписан на Rust и мгновенно откликается на изменения в системе.

Таблицы Dataview в заметочнике Aquilum

Таблицы Dataview в заметочнике Aquilum

Вот пример всех трех блоков со скриншота выше:

Последние заметки

```dataviewTABLE WITHOUT ID    link(file.link, title) AS "Последние заметки",    dateformat(file.ctime, "d MMM") AS "Дата"WHERE file.ctime >= (date(today) - dur(1 week))SORT file.ctime DESCLIMIT 10```

Стата заметок

```dataviewTABLE WITHOUT ID    item.name AS "Стата заметок",    count(rows.file.ctime, item.span) AS "Всего",    delta(count(rows.file.ctime, item.span),          count(rows.file.ctime, previous(item.span))) AS "Динамика"FROM ""GROUP BY ""FLATTEN list(    object("name", "Сегодня", "span", span(today, now)),    object("name", "Неделя", "span", span(today - dur(1 week), now)),    object("name", "Месяц", "span", span(today - dur(1 month), now)),    object("name", "Год", "span", span(today - dur(1 year), now)),    object("name", "За всё время", "span", ever)) AS item```

Невыполненные задачи

```dataviewTASK TITLE "Невыполненные задачи"WHERE !completedSORT file.mtime DESCLIMIT 10```

Лайв-превью и удобство использования

Честно признаться, я уже давно не запускал обсидиан и искренне кайфую от работы в своем заметочнике мечты. Он не идеален, но уже поддерживает необходимые для меня функции, а лайв-превью позволяет бесшовно работать со скриптовыми блоками и быстро править форматирование Markdown.

Там, куда выпоставите каретку (курсор), отобразится форматирование, и вы сможете редактировать буллиты, символы жирности текста, код, уровень заголовков и все, что как-то влияет на внешний вид текста.

Отображение форматирования в лайв-превью режиме заметочника Aquilum

Отображение форматирования в лайв-превью режиме заметочника Aquilum

Техническая часть

  • Rust + Tauri 2;

  • React + TypeScript;

  • CodeMirror 6;

  • Markdown как основной формат хранения;

  • Yjs для локальной модели документа;

  • SQLite для состояния приложения;

  • BM25F для полнотекстового поиска;

  • Windows как текущая платформа.

Заключение

Aquilum пока находится в активной разработке. Уже сейчас он закрывает мой основной сценарий работы с Markdown-базой знаний: редактирование, поиск, связи между заметками, книги, задачи, история изменений и автоматизация через MCP. В следующих версиях я планирую улучшить совместимость, добавить синхронизацию и мультиплеер, а также продолжить работу над расширяемостью и производительностью.

Проект можно скачать для Windows со страницы релизов GitHub. Буду рад отзывам, особенно от пользователей Obsidian, которые работают с большими базами знаний.

Если у вас появится фидбек, то связаться со мной можно в тг

ссылка на оригинал статьи https://habr.com/ru/articles/1090122/