Saltar al contenido principal
Guía parcial — vista pública

Esta es una guía parcial de uso y operación. La guía completa está reservada a suscriptores y usuarios activos de la plataforma. Ofrecemos esta selección pública para que quien evalúe el sistema obtenga una primera noción de sus capacidades y flujos. El contenido de la guía privada puede variar con las mejoras continuas del producto.

Chat

Quien no es admin encarga trabajo aquí, no en la Consola. Hay dos Conversation UI en Development; ambas hablan con el mismo gateway society-chat (API OpenAI-compatible).

Relacionado: Sessions · RAGs.

Dónde apunta​

EntornoConversation UIConversation UIGateway
Developmenthttp://127.0.0.1:3000 (contenedor aparte)http://127.0.0.1:3080 (stack infra/conversation-ui/)http://127.0.0.1:8094/v1
Identiacopilot.identia.do (proveedor de identidad (OIDC))chat.identia.do → :3080; admin chat-admin.identia.do → :3081society-chat:8094/v1
LegalDesigncopiloto público detrás de proveedor de identidad (OIDC)chat.legaldesign.do → :3080; admin chat-admin.legaldesign.do → :3081society-chat:8094/v1

Conexión OpenAI-compatible (lo que configura cada UI hacia SiS):

  • Base URL: …/v1 (en Dev: http://127.0.0.1:8094/v1 desde el host; http://society-chat:8094/v1 dentro de orquestador de contenedores)
  • API key: SOCIETY_CHAT_API_KEY (en Dev puede ir vacío; en Conversation UI va en infra/conversation-ui/.env)
  • Modelos: ids society/* que lista GET /v1/models

Decisión sustituir-o-coexistir Conversation UI vs Conversation UI: abierta. Hoy conviven en los dos entornos.


Conversation UI — configuración paso a paso (Dev)​

Conversation UI no es society-chat. Connections y modelos viven en su SQLite (webui.db), no en variables de entorno del compose R6.

1. Arrancar y autenticar​

  1. Comprueba que responde: curl -sf http://localhost:3000/ → 200.
  2. Abre http://localhost:3000 (no 127.0.0.1 — proveedor de identidad (OIDC)/IdentIA registra el redirect en localhost).
  3. Si ves Continue with IdentIA, pulsa y completa proveedor de identidad (OIDC) (misma cuenta que la Consola en clientes con SSO).

Conversation UI tras login

2. Conectar society-chat​

  1. Menú Admin (o engranaje) → Settings → Connections (ruta típica: /admin/settings/connections).
  2. Add connection → tipo OpenAI / OpenAI-compatible.
  3. Rellena:
CampoValor Dev
URL / Base URLhttp://society-chat:8094/v1 desde el contenedor Conversation UI (red compose). En UI manual: Admin → Settings → Connections → OpenAI API → Add connection con esa URL y la clave de SOCIETY_CHAT_API_KEY. Atajo Dev: docusaurus/scripts/sync-conversation-ui-society-key.sh (escribe lo mismo en webui.db).
API Keyvalor de SOCIETY_CHAT_API_KEY en .env (si rotas la clave, vuelve a ejecutar el script de sync)
Model IDsdejar que el cliente descubra vía GET /v1/models
  1. Save y Verify si la UI lo ofrece.

Si el selector de modelos está vacío: la conexión no está guardada o la URL no alcanza society-chat desde el contenedor Conversation UI.

Selector de modelos

En la captura: tras guardar la conexión a society-chat (paso 2), el desplegable Search a model (a la izquierda del micrófono en la barra del chat) lista ids society/* (p. ej. society/ask-rag, society/architect).

3. Elegir modelo y chatear​

  1. En la barra del chat, abre el selector de modelo a la izquierda del micrófono (muestra el id actual, p. ej. society/architect, o Search a model si aún no hay uno).
  2. En el desplegable Search a model, elige según el caso (tabla abajo).
  3. Escribe el prompt y envía.

Componer mensaje

ModeloCuándo usarlo
society/architectIntake de institución; persiste el SPEC (única puerta curada al architect del Primary)
society/operatorChat con el operator del Primary
society/ask-ragConsulta RAG del researcher configurado en SOCIETY_CHAT_RESEARCH_BRIEF_*
society/research-briefPipeline researcher → writer → auditor; auto-RAG si hay corpus
society/profile/<host>/<profile>Chat directo con un profile vivo (p. ej. society/profile/ldteam-operaciones/ld-chief-of-staff)

SSO de copilotos públicos: tools/ops/copilots-sso.sh. Contraseña local bloqueada en servidor (403).


Conversation UI — configuración paso a paso (Dev)​

No es un servicio del compose R6. Proyecto Compose sis-conversation-ui en infra/conversation-ui/ (api + mongo + meilisearch + admin-panel). Requiere la red externa self-improving-society_default (SiS ya arriba).

La conexión a society-chat ya viene cableada en infra/conversation-ui/conversation-ui.yaml (endpoint SIS → http://society-chat:8094/v1, fetch: true para descubrir modelos society/*). No hace falta añadir Connections como en Conversation UI.

1. Arrancar el stack​

cd infra/conversation-ui
cp .env.example .env # rellenar secretos; SOCIETY_CHAT_API_KEY = misma clave que .env raíz de SiS
container orchestration up -d
# UI: http://127.0.0.1:3080
# Admin: http://127.0.0.1:3081
ContenedorOficioHost
sis-conversation-uiConversation UI + API:3080
sis-conversation-ui-adminaltas / bajas / roles de usuarios:3081
sis-conversation-ui-mongoestado Conversation UIsin publicar
sis-conversation-ui-meilibúsqueda del historialsin publicar

2. Autenticar (Dev con SSO)​

  1. Abre http://127.0.0.1:3080/login.
  2. Pulsa Entrar con IdentIA (SSO proveedor de identidad (OIDC); en .env debe estar ALLOW_SOCIAL_LOGIN=true y el bloque OPENID_*).
  3. Completa proveedor de identidad (OIDC) con tu cuenta (misma que Consola / Conversation UI).
  4. Tras el redirect deberías ver el chat con My Agents arriba a la izquierda.

Conversation UI tras login

Redirect URI en proveedor de identidad (OIDC): http://localhost:3080/oauth/openid/callback (no la URL base sola). Panel admin usa http://localhost:3080/api/admin/oauth/openid/callback.

3. Elegir modelo y chatear​

Conversation UI no usa Search a model (eso es Conversation UI). Aquí el flujo es en tres pasos:

  1. Pulsa My Agents (arriba a la izquierda).
  2. Elige el endpoint SIS (conexión precableada a society-chat).
  3. Elige el agente, p. ej. society/ask-rag (u otro society/* o society/profile/...).

Hasta completar el paso 3 el compositor puede mostrar Please select an Agent y el envío queda deshabilitado. Luego escribe el prompt y envía.

Selector de modelos Conversation UI

Compositor Conversation UI

ModeloCuándo usarlo
society/architectIntake de institución (default en conversation-ui.yaml)
society/operatorOperator del Primary
society/ask-ragConsulta RAG del researcher (SOCIETY_CHAT_RESEARCH_BRIEF_*)
society/profile/<host>/<profile>Chat directo con un profile vivo

4. Panel de administración (:3081)​

Altas, bajas y roles de usuarios de Conversation UI (no confundir con proveedor de identidad (OIDC) ni con Operar → Users). En clientes se llega por malla privada/SSH; no se publica en proxy de entrada salvo decisión explícita.

Cuándo Conversation UI vs Conversation UI: mismo gateway society-chat. Conversation UI trae endpoint SIS preconfigurado, buscador de historial (Meilisearch) y panel admin de usuarios; Conversation UI es el copiloto IdentIA por defecto en Dev (:3000) pero exige configurar Connections a mano.

Branding por configuración (APP_TITLE, assets en infra/conversation-ui/assets/). Snippet proxy de entrada: infra/conversation-ui/edge-proxy-vhosts.snippet.


Widget Society Chat (Consola)​

Burbuja teal abajo-derecha en Operar y Explorar — copilot integrado que:

  • Lee el snapshot del grafo y el contexto de la vista Operar actual.
  • Responde preguntas de estado (hosts, agentes, tasks, warnings).
  • Puede navegar a otras vistas de Operar (si tienes permisos).
  • Admins: triaje de la bandeja de Approvals.

Copilot abierto en Explorar

Relacionado: Operar → Sessions (sessions) para hilos de society-chat en tabla.


Consulta RAG tras ingesta (E2E)​

El chat no usa RAG solo porque exista corpus en VectorDB. Hacen falta dos piezas:

  1. Ingesta en la colección correcta (RAGs).
  2. MCP society_rag en el arnés del agente config del profile (o modo ask-rag / research-brief con env apuntando al host/profile correcto).

Opción A — Código único en markdown (ld-chief-of-staff)​

PasoAcciónVerificación
1Ingesta un .md con código único (p. ej. LD-E2E-2026) en RAG de ld-chief-of-staff @ ldteam-operacionesVista RAGs: estado ok; smoke search devuelve el fragmento
2Confirma MCP en profile: society_rag en arnés del agente config (re-provision si hace falta)containers exec society-executor society profile show ld-chief-of-staff --host ldteam-operaciones
3Chat con society/profile/ldteam-operaciones/ld-chief-of-staff o society/ask-rag con SOCIETY_CHAT_RESEARCH_BRIEF_HOST_NAME / PROFILES en .env de society-chatRespuesta cita el código ingestado
4(Opcional) Mismo prompt en Conversation UI con el modelo profile elegidoMisma cita

Pregunta de ejemplo: «¿Cuál es el código interno del proyecto LDTeam?»

Opción B — PDF Ley 47-20 + Conversation UI + ask-rag (verificado Dev 2026-08-30)​

Corpus legal en el RAG del researcher (ld-researcher @ ldteam-operaciones), consultado vía modo society/ask-rag (env SOCIETY_CHAT_RESEARCH_BRIEF_* → primer profile de la lista, hoy ld-researcher).

PasoAcciónVerificación
1Copia el PDF a data/rag-fixtures/ (p. ej. Ley-47-20-APP.pdf) e ingesta en ld-researcher @ ldteam-operaciones (SOCIETY_RAG_WRITE_ENABLED=true)society rag list --profile ld-researcher --host ldteam-operaciones muestra chunks del PDF
2Confirma env en society-chat: SOCIETY_CHAT_RESEARCH_BRIEF_HOST_NAME=ldteam-operaciones, SOCIETY_CHAT_RESEARCH_BRIEF_PROFILES=ld-researcher,...containers exec society-chat sh -c 'echo $SOCIETY_CHAT_RESEARCH_BRIEF_HOST_NAME $SOCIETY_CHAT_RESEARCH_BRIEF_PROFILES'
3Conversation UI (:3080): login IdentIA → My Agents → SIS → society/ask-ragCompositor habilitado; no uses Search a model (eso es Conversation UI)
4Pregunta sobre el objeto/finalidad de la Ley 47-20Respuesta en prosa con cita Ley-47-20-APP.pdf#chunk-N (~1–2 min)

Pregunta de ejemplo:

Según la Ley 47-20 de Alianzas Público-Privadas en mi RAG: ¿cuál es su objeto o finalidad principal? Responde en 2-3 frases y cita el documento.

Smoke automatizado (Conversation UI, agente ya elegido):

cd docusaurus
SIS_SKIP_LOGIN=1 SIS_SKIP_AGENT_SELECT=1 node scripts/validate-conversation-ui-ask-rag.mjs

Capturas de la validación: docusaurus/.cache/validate-conversation-ui/validate-lc-*.png (incluye validate-lc-04-response.png).

SuperficieURLUso
Widget ConsolaBurbuja en :8093Pregunta con contexto de sesión / snapshot
Society Chat APIhttp://localhost:8094/v1Conversation UI / Conversation UI / curl
Conversation UIhttp://localhost:3000Chat usuario final
# Smoke API directo (sin UI)
curl -sS http://127.0.0.1:8094/v1/models | jq '.data[].id' | head

Qué no hacer​

  • No uses society/profile/<primary>/architect ni …/operator del Primary Host: las puertas curadas son society/architect y society/operator. El architect crudo conversa pero no persiste el SPEC.
  • society/inventory-check y society/debate-map están retirados. Un request cae en modelo desconocido.
  • society/goal-intake y society/research-brief-rag rutean como alias ocultos; no salen en el selector.
  • CLI RAG ≠ chat RAG: society rag list puede funcionar mientras el chat no ve corpus si falta MCP society_rag en el profile.

Solución de problemas​

SíntomaCausa probableQué hacer
Modelos vacíos en Conversation UISin conexión a :8094/v1 o clave vieja en webui.dbSettings → Connections (o docusaurus/scripts/sync-conversation-ui-society-key.sh); la URL debe alcanzar society-chat desde el contenedor
Respuesta sin citas RAGProfile sin society_rag o colección/host distinto al ingestReprovisionar template; alinear --host en ingest y MCP
ask-rag responde de otra instituciónSOCIETY_CHAT_RESEARCH_BRIEF_* desalineadoRecrear society-chat con env correcto
401 en Consola copilotSesión caducadaRe-login por localhost:8093

Regenerar capturas (operadores)​

cd docusaurus
SIS_CAPTURE_EMAIL=... SIS_CAPTURE_PASSWORD=... \
node scripts/capture-explorar-chat.mjs

Salida: static/img/chat/es/chat-step-*.png y copilot desde Explorar.