Заметочник поддерживает обратные ссылки и граф знаний, дерево файлов, лайв-превью, работу с несколькими базами знаний, анализ данных с помощью аналога Dataview, мгновенный поиск связных и похожих заметок, историю изменений внутри каждой заметки и многое другое, о чем расскажу в статье.
Прилагаю описание проекта на Github и страницу релиза с установщиком для Windows. Да, протестировать его пока можно только на винде.
Aquilum пока не пытается заменить Obsidian во всех сценариях. Это активно развиваемый Windows-прототип local-first заметочника.
Зачем создавался заметочник Aquilum
Я фанат Obsidian, но меня невероятно задолбало, что он ест так много ОЗУ. Особенно это мешает, когда открыто несколько тяжелых приложений, и память особенно ценна.
На моём компьютере Obsidian заметно увеличивает нагрузку при запуске и особенно тяжело работает с большими хранилищами и несколькими тяжёлыми приложениями.
Ниже я разместил скриншот с потреблением ресурсов Obsidian и Aquilum. Я реализовал на Rust аналоги привычных возможностей Obsidian: Dataview-подобные запросы, граф, backlinks, историю, задачи и другие функции, поэтому в моем случае условия максимально похожие.
Видно, что Obsidian может потреблять гигабайт с лишним памяти, в то время как аквилум кушает всего 27 мегабайт! Т.е. я еще занизил показатели в заголовке статьи…
Разница в том, что обсидиан тянет за собой отдельный браузерный движок, который и нагружает систему. Я решил действовать иначе и написать заметочник на Tauri, чтобы расход ресурсов был минимален. Это позволило ограничить потребление ОЗУ в 27Мб, а установщик запаковать в 11Мб дискового пространства.
Также мне не нравится, что у всех плагинов в Obsidian разрозненный визуальный дизайн. Я сам дизайнер, поэтому в глаза мне постоянно бьет ключом этот нюанс. Хочется единой дизайн-системы и контроля над токенами (отступами, размерами и цветами). Плюс для меня разработка объемного продукта стала хорошей практикой, так как в данный момент работаю я в команде дизайн-систем.
А еще мне хотелось открытости и портативности, чтобы все данные всегда были у меня! В обсидиане некоторые плагины не всегда очевидно хранят данные (это характерно для табличных плагинов). В аквилуме же все данные хранятся в заметках, что означает полную портативность базы знаний.
Обзор функционала
Aquilum использует CodeMirror 6 — тот же редакторский движок, который используется в Obsidian. Поэтому базовые ощущения от редактирования Markdown во многом знакомы пользователям Obsidian.
Далее рассмотрим весь функционал приложения, разбитый по разделам.
Основные визуальные элементы:
-
Маркеры списков — с подсветкой строки с помощью символов !, &, ~ или $
-
Виджеты — их сейчас несколько в приложении, и о них расскажу дальше
-
Цитаты — их можно добавлять прямо из читалки, о которой также расскажу ниже
Таблицы
В редакторе есть удобные Markdown-таблицы с расширенными возможностями. В них можно объединять и разделять ячейки, менять порядок строк и столбцов вручную, а также использовать форматирование текста прямо внутри ячеек.
Контекстное меню позволяет быстро создавать таблицы, удалять отдельные строки и столбцы или удалять таблицу целиком. Все основные операции — включая объединение и разъединение ячеек, доступны непосредственно из этого меню.
Ниже я разместил пример таблицы:
Вот так выглядит код таблицы со скриншота выше:
| <!--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 мс на моей машине, и момент поиска вообще незаметен глазу. Также поиск поддерживает горячие клавиши для быстрого открытия или создания заметки.
При этом совпадения подсвечиваются, а общее количество совпадений выводится справа сверху в карточке источника.
Ниже размещен скрин того, как это выглядит:
Отображение медиа
Приложение поддерживает отображение фото и видео, а также кадрирование и центрирование. Вы можете скопировать изображение из нужного источника, а затем вставить на холст, и исходник автоматически поместится в папку Files, а само изображение появится на холсте.
При этом все настройки изображения хранятся в Markdown формате:

Виджеты, страницы книги и читалка
В приложении поддерживаются виджеты, внутри которых в перспективе можно помещать любую информацию, которая должна быть визуально выстроена в единый блок.
Например, сейчас есть виджеты книги, которые вы можете увидеть на скриншоте ниже:
Вы можете создать заметку книги: загрузить обложку, вписать название, автора, а также прикрепить файл самой книги, после чего с помощью конструкции виджета сформировать таблицу из прочитанных книг. Пример такой конструкции можно посмотреть ниже:
> [!book] [[📖 Победители недр]]> [!book] [[📖 Книга-тренажер для вашего мозга]]> [!book] [[📖 Как убедить кого угодно в чем угодно]]> [!book] [[📖 20 тысяч лье под водой]]> [!book] [[📖 Краткая история почти всего на свете]]> [!book] [[📖 Марсианские хроники]]> [!book] [[📖 Плененная вселенная]]> [!book] [[📖 Господин из Сан-Франциско]]> [!book] [[📖 Олеся]]> [!book] [[📖 Поединок]]> [!book] [[📖 Думай]]
Мне очень хотелось, чтобы все мои прочитанные книги хранились в едином файле с прогрессом, названием и автором. Для этого и предназначен данный блок.
И, да, читать книгу можно не выходя из приложения!
Вы можете читать книгу в любом формате и цитировать текст, выделяя его. При цитировании текст сразу же появляется внизу заметки со ссылкой на конкретный фрагмент в книге, и вы в любой момент можете вернуться к нему!
Метаданные и frontmatter и шаблоны
В заметочнике также есть блок frontmatter, внутри которого вы можете разместить различную информацию.
Например, можно указать дату и время создания, отображение обложки страницы или книги, теги, рейтинг книги. Также имеются и технические поля, например, прогресс прочтения, привязанный к размеру файла книги. Это значит, что вы можете открыть книгу через Aquilum на любом устройстве, и чтение начнется именно оттуда, откуда вы начали! Все сделано для того, чтобы все данные были у вас!
Настройки и корзина
Также имеются настройки приложения, с помощью которых вы можете гибко кастомизировть приложение.
Сейчас доступны базовые настройки внешнего вида, языка, шрифтов и стартовой страницы; расширенная система тем находится в разработке.
Также есть корзина, в которую попадают удаленные файлы. В обсидиане я, бывало, по случайности сносил очень важные заметки, и они полностью пропадали! В аквилуме эта проблема исправлена — заметки всегда попадают в корзину!
MCP server и работа с ИИ моделями
Для меня было важно, чтобы я мог автоматизировать работу с заметками через MCP, потому что иногда нужно, например, сменить формат даты во всех заметках или переносить заметки между базами знаний, с чем очень сильно помогает автоматизация, особенно когда на работе много задач.
Приложение поддерживает подключение к Claude Code, Codex CLI и Gemini Antigravity. Агенты могут искать информацию через мгновенный BM25F поиск, смотреть связи между заметками, а также редактировать заметки в нескольких базах знаний одновременно!
Это очень сильно ускоряет работу с базами знаний проекта, потому что все инструменты работают из коробки и не требуют дополнительной настройки или написания кастомных скриптов.
История изменений заметки
Еще одним преимуществом является встроенное версионирование, позволяющее откатывать ваши правки и смотреть эволюцию ваших мыслей. То же самое работает и с правками ИИ-агента, который может удалить важную для вас информацию. Теперь вы всегда можете вернуть утраченное!
Граф знаний
Я хотел сделать граф не декоративной визуализацией, а рабочим инструментом навигации и анализа базы знаний.
Он работает с любым количеством заметок мгновенно, а также позволяет отображать тепловую карту изменения и создания заметок в базе знаний. Т.е. теперь вы можете смотреть, какие разделы давно не обновлялись, а над какими вы работаете прямо сейчас.
Плюс можно отфильтровать заметки по дате создания, что может быть удобно для анализа.
Работа с задачами
Работа с задачами пока находится на раннем этапе, но уже поддерживает базовые Markdown-чекбоксы и запросы по их состоянию.
Dataview и работа с данными
Приложение поддерживает написание кастомных скриптов прямо в теле заметки, чтобы работать с данными. Синтаксис очень похож на тот, что есть в плагине Dataview в обсидиане, но все же переработан для простоты и расширен под мои задачи, а также переписан на Rust и мгновенно откликается на изменения в системе.
Вот пример всех трех блоков со скриншота выше:
Последние заметки
```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.
Там, куда выпоставите каретку (курсор), отобразится форматирование, и вы сможете редактировать буллиты, символы жирности текста, код, уровень заголовков и все, что как-то влияет на внешний вид текста.
Техническая часть
-
Rust + Tauri 2;
-
React + TypeScript;
-
CodeMirror 6;
-
Markdown как основной формат хранения;
-
Yjs для локальной модели документа;
-
SQLite для состояния приложения;
-
BM25F для полнотекстового поиска;
-
Windows как текущая платформа.
Заключение
Aquilum пока находится в активной разработке. Уже сейчас он закрывает мой основной сценарий работы с Markdown-базой знаний: редактирование, поиск, связи между заметками, книги, задачи, история изменений и автоматизация через MCP. В следующих версиях я планирую улучшить совместимость, добавить синхронизацию и мультиплеер, а также продолжить работу над расширяемостью и производительностью.
Проект можно скачать для Windows со страницы релизов GitHub. Буду рад отзывам, особенно от пользователей Obsidian, которые работают с большими базами знаний.
Если у вас появится фидбек, то связаться со мной можно в тг
ссылка на оригинал статьи https://habr.com/ru/articles/1090122/