Saltar al contenido principal

Canales

Los canales incorporan las conversaciones de equipo a Libre WebUI: salas públicas y privadas, además de mensajes directos, con hilos, reacciones, mensajes fijados, seguimiento de no leídos, archivos adjuntos y respuestas de @model, todo sobre los mismos cimientos duraderos y cifrados que el chat.

Tipos de canal y pertenencia​

TipoQuién puede verloQuién se une
publicCualquiera puede explorarloCada persona se une por sí misma
privateSolo los miembrosEl propietario invita a los miembros
dmSolo los dos participantesSe abre automáticamente; siempre son dos

La pertenencia es la única autoridad sobre el contenido del canal: cada lectura y escritura, incluidas las descargas de adjuntos y la entrega de eventos en directo, comprueba primero la pertenencia del solicitante. Quienes no son miembros reciben un 404 que no revela la existencia del recurso. El rol de administrador global no otorga deliberadamente acceso al contenido de los canales.

Quien crea un canal público o privado es su propietario. Los propietarios pueden cambiar el nombre, archivar, invitar (en canales privados), eliminar miembros, moderar mensajes y borrar el canal; un propietario se marcha eliminándolo, nunca abandonándolo. Los mensajes directos se deduplican por pareja: abrir un DM con la misma persona siempre lleva a la misma conversación.

La cronología​

Los mensajes forman una cronología persistente y ordenada que se lee en ambas direcciones con cursores por clave (created_at más el ID del mensaje), por lo que la paginación nunca omite ni duplica entradas.

  • Publicaciones idempotentes. El cliente proporciona la identidad del mensaje; una solicitud repetida llega exactamente una vez a la misma entrada.
  • Eliminación con lápida. Borrar un mensaje elimina su contenido, pero conserva la entrada de la cronología, para que los hilos no queden colgando ni cambie el orden. Los autores borran sus propios mensajes; los propietarios pueden moderar cualquiera.
  • Las ediciones son exclusivas del autor y llevan una marca editedAt.
  • Los hilos tienen un solo nivel. Cualquier mensaje raíz puede alojar un hilo; se rechazan las respuestas a respuestas. Los mensajes raíz muestran recuentos de respuestas en directo.
  • Las reacciones son por usuario y emoji, y se cuentan sin duplicados.
  • Los mensajes fijados son gestionados por los miembros y se enumeran por canal.

Los nombres y las descripciones de los canales y el contenido de los mensajes se cifran en reposo con el mismo límite que los mensajes de chat.

Estado de lectura​

Cada pertenencia mantiene un cursor de lectura monótono. El servidor calcula los no leídos por canal (tus propios mensajes nunca se consideran sin leer) y POST /api/channels/:channelId/read avanza el cursor, sin hacerlo retroceder jamás; un cliente obsoleto no puede resucitar mensajes ya leídos.

Entrega en tiempo real​

Cada cambio de la cronología se añade al flujo duradero channel:<id> y se distribuye mediante GET /api/channels/:channelId/events (SSE). La pertenencia se vuelve a comprobar antes de cada entrega, por lo que eliminar a un miembro cierra su flujo de forma segura. La cronología SQL sigue siendo la autoridad: un suscriptor que pierda eventos simplemente vuelve a leerla; el registro sirve para entregar, no para establecer la verdad.

Archivos adjuntos​

Los archivos se suben primero (POST /api/channels/:channelId/attachments), esperan brevemente en una caché compartida de reclamaciones y se adjuntan cuando se publica el mensaje. Una reclamación de subida es de un solo uso y caduca sin reclamar a los 15 minutos. Los bytes del blob pertenecen a quien los subió (y cuentan en su cuota), y cada descarga vuelve a comprobar la pertenencia al canal.

Respuestas de @model​

El redactor permite dirigir un mensaje a un modelo. La respuesta aparece de inmediato como un mensaje pendiente atribuido al modelo y se completa mediante un trabajo duradero que se ejecuta estrictamente con la identidad del miembro que lo invocó: su acceso a modelos, sus credenciales y su enrutamiento, nunca los del propietario ni otro miembro. Si se elimina a un miembro mientras su mención está en cola, no puede mantenerla viva: el trabajo vuelve a comprobar la pertenencia antes de generar y registra un fallo visible. Los fallos del modelo aparecen en la propia respuesta en lugar de desaparecer en una cola.

Una mención también llega al miembro mencionado por correo cuando ha activado Menciones en canales en Configuración → Notificaciones y un administrador ha configurado el servidor de correo saliente (consulta Notificaciones).

Las respuestas del modelo usan como contexto la conversación reciente del canal (hasta 30 mensajes).

Las herramientas de chat están conectadas: cuando el miembro que menciona pasa el filtro de la función de herramientas y tiene un catálogo no vacío, la respuesta ejecuta el mismo bucle de herramientas de varias rondas que ejecuta un turno de chat, contra los servidores de herramientas visibles y las herramientas integradas de ese propio miembro. Un canal no vincula ninguna persona, así que ninguna vinculación de herramientas de persona reduce el catálogo.

Nadie está observando una mención como observa un chat, así que una llamada a una herramienta con efectos secundarios se rechaza directamente salvo que el miembro ya tenga una aprobación permanente para ella. La respuesta lo indica, y se le dice al modelo que la ejecute desde un chat en su lugar. Las herramientas de solo lectura se ejecutan sin preguntar, igual que en el chat. Las aprobaciones permanentes tienen ámbito por canal: una decisión de "permitir para este chat" nunca se traslada a un canal, y una aprobación por canal nunca se filtra a otro canal ni al chat. Como solo puede ejecutarse sin supervisión el trabajo de solo lectura, repetir un trabajo de mención reintentado es seguro.

La respuesta lleva un resumen acotado de las llamadas que hizo (como máximo 12, con argumentos y vistas previas de resultados truncados), mostrado como un desplegable "Herramientas usadas" bajo el mensaje. La recuperación de conocimientos y la búsqueda web aún no están conectadas a las menciones de canal.

Límites​

LímiteValor
Canales creados por usuario50
Miembros por canal200
Mensajes por canal50,000
Longitud del mensaje8,000 caracteres
Adjuntos por mensaje5 × 10 MB
Reacciones por mensaje200

Restricciones​

  • No se han implementado los indicadores de presencia ni el estado de escritura.
  • La exportación del contenido y las políticas de conservación de los canales siguen el mecanismo de copias de la instancia; aún no existe exportación por canal.
  • Las menciones notifican mediante el servicio integrado; aún no hay preferencias por canal más allá de abandonarlo.