Motor Strands
Libre WebUI integra un motor de agentes basado en el
harness de código abierto de Strands Agents
(@strands-agents/harness 0.1.1 sobre @strands-agents/sdk 1.19.0). Se ejecuta
dentro del proceso del backend de Libre WebUI, así que no hay que instalar ningún
daemon aparte. El SDK se carga la primera vez que se usa el motor; un servidor
con Strands desactivado nunca lo carga.
El motor trabaja con los modelos que Libre WebUI ya sirve:
- modelos de Ollama, cuando Ollama está habilitado
- modelos de los plugins de proveedores de chat o de completado que estén activos
Cada llamada al modelo pasa por los mismos servicios de Ollama y de plugins que usa Chat. No hay una configuración de proveedores aparte ni una clave API aparte. Las credenciales de los proveedores y el interruptor de Ollama se aplican sin cambios.
Puedes usar el motor en tres lugares:
- la página Strands, para sesiones de agente persistentes
- Chat, mediante las entradas Strands del selector de modelos
- Work, como la opción Strands del control Motor del compositor
Acceso
Un administrador elige quién puede usar el motor en Configuración → Gestión de usuarios → Acceso y políticas → Motor Strands:
| Modo | Etiqueta en el ajuste | Quién puede usar Strands |
|---|---|---|
disabled | Desactivado | Nadie, administradores incluidos (predeterminado) |
admins | Administradores | Administradores activos |
all-users | Todos los usuarios | Todas las cuentas activas |
Los cambios surten efecto en la siguiente solicitud, sin reiniciar.
Para fijar el modo a nivel de despliegue, define LIBRE_STRANDS_ACCESS:
LIBRE_STRANDS_ACCESS=admins # or disabled, all-users
Un modo fijado bloquea el control en Gestión de usuarios. Cualquier valor
distinto de disabled, admins o all-users deja el motor bloqueado en
desactivado en lugar de recurrir al ajuste guardado.
El servidor aplica el modo en cada solicitud REST, en el chat por WebSocket y en
cada llamada al modelo de una ejecución de Work. Si no se puede leer el modo, se
deniega el acceso. Las cuentas sin acceso no ven la página Strands, las entradas
Strands del chat ni el motor Strands de Work, y la API responde 403.
Página Strands
Abre Strands desde la barra lateral (/strands).
- Las sesiones se conservan tras reiniciar, hasta 200 por cuenta. El primer mensaje da nombre a una sesión nueva.
- Elige un modelo para cada sesión. Modelo predeterminado usa tu modelo de chat predeterminado.
- Las respuestas se transmiten a medida que se generan, con el razonamiento del modelo y una tarjeta por cada llamada a herramientas.
- Detener cancela el turno en curso. Una sesión ejecuta un solo turno a la vez.
- Eliminar una sesión borra su historial y su espacio de trabajo.
Chat
Elige Strands en el selector de modelos. Aparece en el grupo Agentes, junto a los modelos de agentes CLI:
- Strands (
strands) usa el valor predeterminado del motor, que es tu modelo de chat predeterminado. - Strands · modelo (proveedor) (
strands:<route>) fija un modelo y su proveedor para la conversación.
Strands en Chat depende únicamente del acceso a Strands. No necesita el interruptor de modelos de agentes CLI y aparece aunque ese interruptor esté desactivado. En Chat, el agente tiene las mismas herramientas de archivos que en la página Strands, en un espacio de trabajo privado por cuenta, y sus respuestas llegan como texto y razonamiento. Consulta Agentes de programación instalados para conocer el grupo Agentes y cómo usar una entrada Strands como modelo de tareas para títulos y resúmenes de razonamiento.
Work
En el compositor de Work, elige Libre WebUI o Strands en el control Motor y selecciona el modelo por separado. Con Strands, un agente Strands planifica cada paso y Work ejecuta las herramientas que solicita en el entorno aislado de Work, bajo la política de aprobación habitual de Work. Work sigue siendo la referencia para la transcripción, las aprobaciones, la ejecución de herramientas y el historial de ejecuciones; el agente Strands no ejecuta herramientas propias en Work.
El modelo del proveedor subyacente debe admitir llamadas a herramientas. Work lo comprueba antes de que empiece una ejecución y rechaza los modelos que no declaran compatibilidad con herramientas.
Las ejecuciones de Work guardadas por versiones anteriores con el prefijo de
modelo dsh: se abren como ejecuciones de Strands. Consulta
Work: motor Strands para ver cómo interactúa la
elección del motor con los modelos que llegan desde Chat.
Modelo de seguridad
En la página Strands y en Chat, el agente tiene un conjunto de herramientas deliberadamente reducido:
read,writeyedit, para los archivos de su espacio de trabajo- el plugin
todosdel harness, para planificar trabajo de varios pasos
No tiene shell, ni descarga de páginas web, ni memoria, ni habilidades, y no se
inyecta ningún archivo AGENTS.md en sus instrucciones.
Cada sesión tiene un directorio de espacio de trabajo privado, que el agente ve
como /workspace. Cada ruta se resuelve después de seguir los enlaces
simbólicos y debe quedar dentro de ese directorio, así que un enlace del espacio
de trabajo no puede llegar al resto del disco. El entorno aislado se niega a
ejecutar comandos.
| Elemento | Límite |
|---|---|
| Sesiones por cuenta | 200 |
| Longitud del prompt | 32 000 caracteres |
| Turnos del agente por mensaje | 24 |
| Lectura o escritura de archivo | 2 MB por llamada |
| Título de la sesión | 120 caracteres |
Un turno que alcanza el límite de turnos se detiene y lo indica. Cada turno puede hacer varias llamadas al modelo a tus proveedores, así que concede el acceso con el mismo cuidado que cualquier otro acceso a modelos que consuma presupuesto de proveedores.
Almacenamiento
Los datos de Strands se guardan en <DATA_DIR>/strands/, no en la base de datos
de la aplicación. Cada cuenta tiene su propio directorio,
<DATA_DIR>/strands/users/<account-hash>/, que contiene:
registry.json: la lista de sesiones de la cuentasessions/: las instantáneas de sesión de Strands que el agente usa como contextotranscripts/: la transcripción que se muestra en la página Strands para cada sesiónworkspaces/: el espacio de trabajo privado de cada sesiónchat-workspace/: el espacio de trabajo que usan los turnos de Chat
Incluye <DATA_DIR>/strands/ en las copias de seguridad si las sesiones te
importan.
Uso
Uso del proveedor (/usage) atribuye las llamadas de Strands al agente
Strands en su sección Agentes. Consulta
Uso de agentes.
API
Todas las rutas requieren una cuenta autenticada con acceso a Strands, excepto
/api/strands/access, que requiere un administrador.
| Método | Ruta | Finalidad |
|---|---|---|
GET | /api/strands/access | Leer el modo de acceso y si LIBRE_STRANDS_ACCESS lo fija (administrador) |
PUT | /api/strands/access | Establecer mode en disabled, admins o all-users (administrador; 409 si está fijado) |
GET | /api/strands/health | Disponibilidad del motor y versiones del harness y del SDK |
GET | /api/strands/models | Modelos que el motor puede usar para esta cuenta |
GET | /api/strands/sessions | Listar las sesiones |
POST | /api/strands/sessions | Crear una sesión (title y model opcionales) |
GET | /api/strands/sessions/:sessionId | Leer una sesión, su transcripción y si hay un turno en curso |
PATCH | /api/strands/sessions/:sessionId | Cambiar el título o el modelo de una sesión |
DELETE | /api/strands/sessions/:sessionId | Eliminar una sesión junto con su transcripción y su espacio de trabajo |
POST | /api/strands/sessions/:sessionId/messages | Enviar { "text": "..." } y transmitir el turno como NDJSON |
POST | /api/strands/sessions/:sessionId/cancel | Detener el turno en curso |
El flujo de mensajes escribe un evento JSON por línea: turn-start, text,
reasoning, tool-start, tool-result, done (con el motivo de parada y el
uso de tokens cuando el proveedor lo informa) y error. Cerrar la conexión
cancela el turno. Enviar un mensaje mientras hay un turno en curso devuelve
409.
Configuración
| Variable | Predeterminado | Finalidad |
|---|---|---|
LIBRE_STRANDS_ACCESS | sin definir (ajuste administrativo, admins) | Fijar disabled, admins o all-users; cualquier otro valor deja el motor bloqueado en desactivado |
Solución de problemas
Consulta Problemas del motor Strands.