Перейти к основному содержимому

Каналы

Каналы добавляют командные разговоры в Libre WebUI: публичные и закрытые комнаты, личные сообщения, ветки, реакции, закрепления, непрочитанное, вложения и ответы @model на той же долговечной шифрованной основе чата.

Типы и участники​

ТипКто видитКто входит
publicВсе могут смотретьЛюбой вступает сам
privateТолько участникиВладелец приглашает
dmТолько двоеАвтоматически, всегда ровно двое

Участие — единственное основание доступа: каждое чтение/запись, загрузка вложения и живая доставка проверяют участника. Посторонний получает нераскрывающий 404. Глобальный администратор намеренно не имеет доступа к содержимому.

Создатель публичного/закрытого канала — владелец: переименовывает, архивирует, приглашает, удаляет участников, модерирует и удаляет канал; уходит удалением, не оставлением. DM дедуплицируется для пары.

Хронология​

Сообщения — долговечная упорядоченная хронология с keyset-курсорами (created_at и ID) в обе стороны без пропусков/дублей.

  • Идемпотентная публикация. Клиент задаёт ID; повтор попадает в ту же запись один раз.
  • Удаление с tombstone. Содержимое стирается, запись остаётся, ветки и порядок стабильны. Автор удаляет своё, владелец любое.
  • Редактирование только автора с editedAt.
  • Ветка одного уровня. Ответ на ответ отклоняется; корень имеет живой счётчик.
  • Реакции уникальны для каждой пары пользователя и эмодзи, без дублей.
  • Закрепления управляются участниками.

Имена, описания и сообщения шифруются в той же границе, что чат.

Непрочитанное​

Участник имеет монотонный курсор. Сервер считает непрочитанное отдельно для каждого канала, собственные сообщения не непрочитаны; POST /api/channels/:channelId/read идёт только вперёд, старый клиент не воскресит прочитанное.

Доставка в реальном времени​

Изменения идут в channel:<id> и GET /api/channels/:channelId/events (SSE). Перед доставкой участие проверяется, удаление закрывает поток. SQL авторитетен: пропуск восстанавливается чтением, реестр — доставка, не истина.

Вложения​

Файл сначала POST /api/channels/:channelId/attachments, ждёт в общей памяти claims и привязывается при сообщении. Claim одноразовый, истекает через 15 минут. Байтами и квотой владеет загрузивший; скачивание проверяет участие.

Ответы @model​

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

Упоминание также доходит до участника по почте, если он включил Упоминания в каналах в Настройки → Уведомления, а администратор настроил сервер исходящей почты (см. Уведомления).

Контекст — до 30 последних сообщений.

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

За упоминанием никто не следит так, как следят за чатом, поэтому вызов инструмента с побочным эффектом отклоняется сразу, если у участника уже нет действующего разрешения на него. Ответ сообщает об этом и предлагает модели выполнить вызов из чата. Инструменты только для чтения выполняются без вопросов, как в чате. Действующие разрешения привязаны к каналу: решение «разрешить для этого чата» никогда не переходит в канал, а разрешение для канала не утекает ни в другой канал, ни в чат. Поскольку без присмотра может выполняться только чтение, повторная попытка задания на упоминание безопасна.

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

Ограничения​

ОграничениеЗначение
Каналов на пользователя50
Участников на канал200
Сообщений50,000
Длина сообщения8,000 символов
Вложений5 × 10 MB
Реакций200

Границы​

  • Нет присутствия и набора текста.
  • Экспорт и хранение следуют правилам резервного копирования инстанции; отдельного экспорта для каждого канала пока нет.
  • Упоминания создают уведомления в приложении; отдельных настроек уведомлений для каждого канала, кроме выхода из него, пока нет.