Я впервые воспользовался Roam шесть лет назад, в конце 2020 года. Примерно тогда же — вскоре после выхода GPT-3 — я написал пост Социальная информационная платформа будущего о том, как модели GPT-n изменят мир. Как ни удивительно, в основном я оказался прав — а кое в чём ошибся весьма любопытным образом.
И мир действительно изменился. Roam — прекрасная среда для мышления, и я представлял, что со временем он может даже стать основой для всего веба, в духе Xanadu. Реальность сильно не дотянула до этих ожиданий. Но я по-прежнему полон энтузиазма — во многом благодаря тем самым моделям GPT-n: думаю, у Roam есть потенциал стать лучшей средой для совместного мышления агентов и людей.
Составлять этот план развития было увлекательно, особенно теперь, когда я смотрю со стороны (раньше я проработал в Roam почти год), и с учётом отношения Roam к планам развития :) Надеюсь, что либо сам сделаю плагины для каких-то из этих вещей, либо соблазню команду реализовать их самостоятельно…
Улучшение того, что уже есть
- Более удобные средства работы с визуальными компонентами высокого уровня
- В Roam есть визуальные компоненты вроде
tableиkanban, построенные из базовых блоков. После недавнего обновления таблиц их больше не нужно прописывать вручную; можно сортировать столбцы и так далее.- Канбанам не помешало бы такое же внимание:
- Пустые таблицы сейчас выглядят так:
- А пустые канбаны — вот так:
- Некоторые проблемы:
- Элементы канбана не охватывают вложенные блоки, только карточки (например, блок, вложенный в карточку, не виден).
- Канбаны не занимают всю доступную ширину.
- Навигация с клавиатуры реализована не полностью — нельзя легко перейти к следующему столбцу, выбрать карточку через Esc или выделить весь столбец.
- У агентов тоже нет высокоуровневых средств работы с большинством компонентов вроде таблиц и канбанов, и вместо этого им приходится работать на уровне блоков.
- Не хватает многих возможностей канбана: сортировки, перемещения столбцов, фильтрации и поиска по канбану (это частный случай более общей функции, которая должна существовать: сохраняемых фильтров на уровне блоков).
- Запросам тоже не помешало бы внимание :(
- Канбанам не помешало бы такое же внимание:
- В Roam есть визуальные компоненты вроде
- Более удобная публикация содержимого Roam, в частности возможность создавать статические сайты и улучшенное SEO для публикуемых графов Roam.
- Готов поспорить, что сейчас команда Roam может очень дёшево реализовать генерацию статических сайтов и улучшения SEO, поручив это агенту типа GPT-5.5 / Fable и просто попросив его повторять попытки, пока поведение по большей части не воспроизведёт веб-приложение. Именно по этой причине я на 90% и публикую свои материалы на quartz (и пользуюсь Obsidian). Раньше сообщество уже предпринимало такие попытки, но, насколько мне известно, никто так и не сделал актуальную версию, с которой всё работало бы без лишних хлопот.
- Улучшения представления графа
- Здесь слишком много простых возможностей для улучшения — на их описание ушёл бы целый день, — но представление графа может быть намного, намного полезнее.
- Семантическое расположение узлов, а не только по явным ссылкам.
- Теперь, когда у нас есть векторные представления, можно в какой-то мере располагать узлы по сходству и накладывать поверх связи. А ещё можно раскрашивать кластеры по темам или как-то похоже…
- Вот пример представления графа, которое я сделал для экспортированных данных Twitter, чтобы было понятнее:
- Время как ось графа.
- Полноценные поиск, фильтрация и запросы в представлении графа.
- Уровень детализации / разные масштабы / приближение и отдаление.
- Семантическое расположение узлов, а не только по явным ссылкам.
- Для сравнения: вот как это выглядит сейчас:
- Здесь слишком много простых возможностей для улучшения — на их описание ушёл бы целый день, — но представление графа может быть намного, намного полезнее.
- Сделать высокоуровневые возможности сочетаемыми
- Можно ли сделать полноценную встроенную поддержку фрактальных канбанов?
- Можно ли использовать канбаны, таблицы и запросы как входные данные для других компонентов?
- Можно ли сделать полноценную встроенную поддержку фрактальных канбанов?
- Более качественный экспорт
- Пользователи Roam часто пишут о чём-то за пределами страницы, посвящённой этому предмету. Например, я могу писать о
[[People/Charles Darwin]]на странице под названием[[Evolution]]. Но если экспортировать граф в markdown, то при открытииCharles Darwin.mdтам ничего не будет.- Очевидное решение — добавлять в экспорт каждой страницы раздел с упоминаниями, который содержал бы хотя бы их количество, страницы, на которых они встречаются, тексты блоков и так далее.
- Можно было бы сделать предварительный просмотр экспорта, экспорт в pdf, встроенную кнопку печати и так далее…
- Пользователи Roam часто пишут о чём-то за пределами страницы, посвящённой этому предмету. Например, я могу писать о
- Объединить запросы, фильтрацию и поиск
- Работу с фильтрами в целом можно значительно улучшить.
- Если задуматься, это очень похожие способы работы, и их часто нужно использовать вместе в схожих частях интерфейса.
- В чём разница?
-
Запрос — это просто сохранённая форма поиска, которую можно повторно использовать по всему графу; он также позволяет применять логические операторы поиска, но не поддерживает полнотекстовый поиск:
[[Important]] AND [[Project: Work]] -
Поиск формирует представление подходящих блоков, в основном на основе текстового или семантического поиска — сейчас в нём нельзя использовать операции запросов вроде or/and.
-
Фильтр, ну, фильтрует любой список блоков — в разных областях (везде, только страницы, связанные упоминания и так далее). Но он сразу предлагает страницы для фильтрации (вместо того чтобы заставлять вас придумывать, что искать запросом), и иногда такой способ отбора можно сохранить.
-
- Так вот, всё это должно быть одним и тем же! Я должен иметь возможность использовать логические операторы в поиске! Я должен иметь возможность временно отфильтровать результаты поиска! Я должен иметь возможность искать по подстроке после того, как определю, какие страницы или блоки мне нужны!
- В чём разница?
- Обновите уже этот чёртов сайт
- Его нужно переделать, чтобы всё стало понятнее. Roam — не инструмент для ведения заметок, хотя именно с этого он начинался. А если бы у нас была генерация статических сайтов, графы со справкой и документацией для разработчиков было бы действительно легко найти и так далее.
- Более удобные TODO
- Добавить состояние TODONT (у меня часто бывают TODO, которые я в итоге так и не выполняю)? Записывать, когда задача была отмечена как выполненная? Лучше реализовать откладывание задач? Добавить возможность повторяющихся TODO, например
{{[[TODO]]: recurs: [[weekly]]}}или что-то подобное?
- Добавить состояние TODONT (у меня часто бывают TODO, которые я в итоге так и не выполняю)? Записывать, когда задача была отмечена как выполненная? Лучше реализовать откладывание задач? Добавить возможность повторяющихся TODO, например
- Реализовать
Move block to...— тут всё довольно очевидно. - Ввод
1.должен автоматически переключать представление блоков на нумерованный список.- Мне всё равно, что технически «нумерованный список» — это родительский блок того блока, в котором я набираю
1.: это должно срабатывать! Добавьте невидимый родительский блок, что угодно, мне всё равно.
- Мне всё равно, что технически «нумерованный список» — это родительский блок того блока, в котором я набираю
Совершенно новые базовые элементы
Агенты и ИИ-чаты как полноправные участники
- Примерить идею Roam как полноценной среды для знаний, по которым можно перемещаться через чаты с LLM.
- Все приложения для чатов с LLM страдают одной и той же проблемой: информация теряется внутри переписок. Roam как никакая другая среда подходит для того, чтобы в нём одновременно и велись эти разговоры, и извлекались из них знания для графа.
- Иными словами, и входные данные (чаты), и результаты (артефакты) могут существовать в одной среде.
- Первый шаг в этом направлении — вероятно, более продуманные базовые элементы для чатов, как набросано в разделе Нам нужны более продуманные базовые элементы для чатов и совместной работы .
- Тогда внутри Roam могли бы появиться ИИ-чаты, похожие на те, что есть в Notion. Плагины сообщества уже это делают, но, честно говоря, думаю, это заслуживает полноценной встроенной поддержки.
- Все приложения для чатов с LLM страдают одной и той же проблемой: информация теряется внутри переписок. Roam как никакая другая среда подходит для того, чтобы в нём одновременно и велись эти разговоры, и извлекались из них знания для графа.
- Полная поддержка MCP/CLI для агентов.
- На самом деле сейчас это уже почти полностью реализовано, но я всё равно считаю важным об этом упомянуть. Агенты изначально не понимают ни Roam, ни принятых в нём способов работы, ни его компонентов.
- Более удобные инструменты для агентов, как в IDE. В Roam есть компоненты roam/js, позволяющие запускать код внутри графа, — но, возможно, можно что-то сделать, чтобы агентам было удобнее ими пользоваться. Например, документ с описанием навыка, более подробные аннотации для инструментов MCP, инструмент семантического поиска для агентов и так далее…
Нам нужны более продуманные базовые элементы для чатов и совместной работы
- a) Нам нужно представление блоков / компонент для чата.
- Сейчас у нас есть комментарии Roam — по сути, это лишь сочетание клавиш и мыши (Cmd + щелчок по кнопке комментария), которое создаёт структуру блоков для комментария через боковую панель.
- Но даже чисто визуально это можно улучшить.
- Показывать имя автора на блоке, представления конечных блоков и веток обсуждения и так далее. Вот очень быстрый эксперимент, для которого я подал на вход статью Макса Кригера Общение с Glue .
- Можно было бы задать чат с правами доступа на уровне блоков — чтобы только определённые люди или агенты могли видеть эту ветку или писать в ней? И так далее.
- b) Нам нужен интерфейс для PR в Roam — предлагаемых блоков — вместо их немедленного внесения.
- Думаю, при совместной работе и работе с агентами нужен способ просматривать, одобрять и отклонять блоки и изменения, вместо того чтобы сразу их вносить.
- c) Более удобная работа с версиями блоков.
- Сайты с ИИ-чатами реализовали первую на моей памяти систему версий блоков, пригодную для полноценного использования. В Roam версии блоков появились раньше, но пользоваться ими почти невозможно. Им нужно больше внимания.
Нам нужна более продуманная модель времени
- a) Нам нужно представление блоков в виде временной шкалы / Google Calendar.
- Значительная часть команды и пользователей Roam ведёт дневник в промежутках между делами, а полноценной поддержки времени на этом уровне всё ещё нет! Было бы очень полезно воспроизвести возможности Google Calendar внутри ежедневной заметки:
- Значительная часть команды и пользователей Roam ведёт дневник в промежутках между делами, а полноценной поддержки времени на этом уровне всё ещё нет! Было бы очень полезно воспроизвести возможности Google Calendar внутри ежедневной заметки:
- b) Сочетаемые абстракции времени (часы > день > неделя > месяц > год > десятилетие / век).
- Одна из больших проблем Roam — то, как всё теряется и как трудно увидеть общую картину во времени.
- Сейчас есть ежедневные заметки, но нельзя увидеть «неделю», месяц или год в целом либо сослаться на них.
- С визуальной стороны даже простая раскладка заметок за неделю в виде плиток разной высоты или календарное представление месяца были бы отличным подспорьем.
- Реализовать поддержку времени во всём поиске, фильтрах, запросах и так далее — тут всё очевидно: я не могу сказать «покажи мне все результаты этого запроса за прошлую неделю» и так далее…
- Часть проблемы в том, что время здесь одновременно непрерывно и дискретно, — так что, подозреваю, тут придётся серьёзно поработать с математикой…
Roam как встраиваемая среда
- Думаю, идея не нова, но мне часто хотелось использовать Roam как среду и для ввода, и для вывода данных в других местах веба. Например:
- Представьте форму на основе Roam, которую можно встраивать на сайты?
- Встроить «лист Roam», чтобы делать заметки рядом с видео.
- Поделиться черновыми заметками с другом.
- Встроить содержимое Roam в пост блога.
- Теперь, когда ряд их API уже готов, возможностей для этого стало больше…
Настоящий обход графа и возможности гиперграфа
- Рёбра могут давать гораздо больше возможностей. Сейчас в Roam нельзя работать с ними напрямую. Думаю, атрибуты развиваются примерно в этом направлении, но я могу ошибаться…
- Также нет способа работать с «кластерами» или рассматривать графы на более высоких уровнях…
P.S. Этот пост никак не связан с Notion. Мне нравится пользоваться их продуктом, и у них работает много талантливых людей, в том числе замечательный Джеффри Литт . Просто мне показалось, что это забавный заголовок.