Visión general del proyecto
Archivos fuente
Esta página se genera a partir de los siguientes archivos fuente:
Sim es una plataforma de código abierto diseñada para construir agentes de IA y orquestar flujos de trabajo agentivos. El proyecto permite conectar más de 1,000 integraciones y múltiples LLMs para crear workforce agentivo completos. La plataforma ofrece un constructor visual de flujos de trabajo donde los usuarios pueden diseñar, conectar agentes y herramientas, y ejecutarlos instantáneamente (README.md:5-45).
La plataforma se distingue por tres capacidades principales: un constructor de flujos de trabajo visual tipo canvas, un sistema Copilot que permite generar nodos y corregir errores desde lenguaje natural, y la integración con bases de datos vectoriales para cargar documentos y realizar consultas basadas en contenido específico. Sim está posicionado como una solución completa para automatización inteligente que combina interfaces visuales con capacidades avanzadas de IA.
Arquitectura de la Aplicación
La aplicación está construida sobre Next.js con React, implementando una arquitectura modular basada en proveedores anidados. El punto de entrada principal layout.tsx configura la infraestructura base incluyendo viewport, metadata y polyfills para compatibilidad (apps/sim/app/layout.tsx:1-60).
Estructura de Proveedores
El sistema implementa una cadena de proveedores que encapsulan la funcionalidad core:
| Proveedor | Responsabilidad |
|---|---|
| PostHogProvider | Análisis y telemetría de uso |
| ThemeProvider | Gestión de temas visuales (claro/oscuro) |
| QueryProvider | Estado del servidor y cache |
| SessionProvider | Autenticación y sesión de usuario |
| TooltipProvider | Sistema de tooltips global |
La configuración de proveedores se establece en el layout raíz, donde cada capa añade capacidades específicas a la aplicación (apps/sim/app/layout.tsx:230-257).
Módulos Core del Sistema
正在加载图表渲染器...
Puntos clave del diagrama:
- Cadena de proveedores: Los proveedores se anidan en orden específico donde PostHog (analytics) envuelve todo, seguido de Theme, Query, Session y Tooltip
- Layout raíz como orquestador: El archivo
layout.tsxcoordina la inicialización de todos los servicios y polyfills necesarios - Separación de concerns: Los servicios core (modelos, herramientas) están desacoplados de la capa de presentación
- Enterprise Edition: El módulo de whitelabeling permite personalización de marca sin modificar el core
Evidencia de implementación:
- La estructura de proveedores anidados está definida en apps/sim/app/layout.tsx:243-253
- Los metadatos SEO y configuración de página en apps/sim/app/page.tsx:31-93
Sistema de Proveedores de Modelos
El sistema de gestión de modelos de IA está centralizado en providers/models.ts, que actúa como registro único para todos los LLMs soportados. Este módulo expone funciones para consultar modelos disponibles, capacidades, precios y configuraciones por defecto (apps/sim/providers/models.ts:2282-2299).
Funciones Principales del Sistema de Modelos
| Función | Propósito | Valor de Retorno |
|---|---|---|
getProviderModels() | Lista modelos por proveedor | string[] de IDs de modelos |
getProviderDefaultModel() | Obtiene modelo por defecto | ID del modelo default |
getModelPricing() | Consulta precios de modelo | ModelPricing | null |
getModelCapabilities() | Obtiene capacidades | ModelCapabilities | null |
getModelsWithTemperatureSupport() | Filtra por soporte de temperatura | string[] de modelos |
Flujo de Resolución de Capacidades
正在加载图表渲染器...
Puntos clave del diagrama:
- Búsqueda en dos fases: Primero busca coincidencia exacta por ID, luego por patrones regex si no encuentra
- Herencia de capacidades: Las capacidades del modelo se fusionan con las del proveedor base
- Manejo de null: Retorna null explícitamente si no hay coincidencias, permitiendo fallbacks
- Patrones dinámicos: Soporta modelos con IDs variables mediante expresiones regulares
Evidencia de implementación:
- La lógica de búsqueda de capacidades con patrones está en apps/sim/providers/models.ts:2301-2321
- El filtrado por soporte de temperatura en apps/sim/providers/models.ts:2323-2329
Estructura de Datos de Capacidades
El sistema define capacidades que incluyen soporte de visión, temperatura configurable, streaming, y otras características específicas del modelo. La función getModelCapabilities() implementa una estrategia de resolución que primero busca en la lista de modelos explícitos del proveedor, y si no encuentra coincidencia, itera sobre patrones definidos para modelos con IDs dinámicos.
Opciones de Despliegue
Sim ofrece múltiples estrategias de despliegue adaptadas a diferentes necesidades operativas. La plataforma está disponible como servicio en la nube a través de sim.ai, o puede ser autoalojada mediante Docker Compose para mayor control (README.md:41-72).
Matriz de Opciones de Despliegue
| Método | Complejidad | Control | Caso de Uso |
|---|---|---|---|
| Cloud (sim.ai) | Mínima | Bajo | Evaluación rápida, equipos pequeños |
| Docker Compose | Media | Medio | Producción autoalojada estándar |
| Dev Containers | Media | Alto | Desarrollo local consistente |
| Manual Setup | Alta | Máximo | Personalización extrema |
Configuración con Modelos Locales
El soporte para modelos locales se implementa mediante integración con Ollama y vLLM. Para sistemas con GPU, el despliegue incluye descarga automática del modelo gemma3:4b:
bash1# Con soporte GPU (descarga automática de gemma3:4b) 2docker compose -f docker-compose.ollama.yml --profile setup up -d 3 4# Para sistemas solo CPU 5docker compose -f docker-compose.ollama.yml --profile cpu --profile setup up -d
Para instancias externas de Ollama ejecutándose en el host, la configuración utiliza host.docker.internal para la comunicación entre contenedores (README.md:73-102).
Requisitos de Infraestructura
El despliegue manual requiere:
- Runtime: Bun o Node.js v20+
- Base de datos: PostgreSQL 12+ con extensión pgvector
- Memoria: Mínimo 12GB RAM recomendados
- Puertos: 3000 (app), 3002 (socket), 5432 (PostgreSQL)
Ecosistema de Herramientas e Integraciones
La plataforma implementa un sistema modular de herramientas que permite la integración con servicios externos. Cada herramienta sigue un patrón de configuración estandarizado con definición de parámetros, manejo de requests y transformación de respuestas.
Dependencias Clave del Ecosistema
El archivo package.json revela un ecosistema rico en integraciones (apps/sim/package.json:39-78):
| Categoría | Dependencias Principales |
|---|---|
| Cloud Services | AWS SDK, Azure Storage/Blob, Google GenAI |
| IA/ML | Cerebras SDK, E2B Code Interpreter, MCP SDK |
| Colaboración | Linear SDK, Radix UI Components |
| Observabilidad | OpenTelemetry (API, SDK, Exporters) |
| UI Framework | Radix UI (15+ componentes) |
Arquitectura del Sistema de Herramientas
正在加载图表渲染器...
Puntos clave del diagrama:
- Patrón de registro centralizado: Todas las herramientas se registran en un repositorio común accesible por los agentes
- Validación previa: Los parámetros se validan antes de realizar llamadas a APIs externas
- Transformación estandarizada: Las respuestas de APIs externas se normalizan al formato
ToolResponse - Manejo de errores explícito: Los fallos de validación se comunican inmediatamente sin llamadas externas
Evidencia de implementación:
- El patrón de configuración de herramientas en apps/sim/tools/github/delete_gist.ts:2-46
- Tipos de respuesta de herramientas en apps/sim/tools/vision/types.ts:3-25
Ejemplo de Implementación: GitHub Delete Gist
La herramienta delete_gist ilustra el patrón de configuración estándar:
typescript1export const deleteGistTool: ToolConfig<DeleteGistParams, DeleteGistResponse> = { 2 id: 'github_delete_gist', 3 name: 'GitHub Delete Gist', 4 description: 'Delete a gist by ID', 5 version: '1.0.0', 6 params: { 7 gist_id: { 8 type: 'string', 9 required: true, 10 visibility: 'user-or-llm', 11 description: 'The gist ID to delete', 12 }, 13 apiKey: { 14 type: 'string', 15 required: true, 16 visibility: 'user-only', 17 description: 'GitHub API token', 18 }, 19 }, 20 // ... request configuration 21}
La configuración define visibilidad de parámetros (user-or-llm vs user-only), permitiendo control granular sobre qué datos son accesibles para el agente versus exclusivos del usuario.
Stack Tecnológico
| Tecnología | Versión | Propósito |
|---|---|---|
| Next.js | - | Framework de aplicación |
| React | - | Biblioteca de UI |
| Bun | - | Runtime y gestor de paquetes |
| PostgreSQL | 12+ | Base de datos relacional |
| pgvector | pg17 | Extensión vectorial |
| Docker | - | Contenedorización |
| OpenTelemetry | 2.x | Observabilidad distribuida |
| Radix UI | - | Componentes accesibles |
Estructura de Directorios
sim/
├── apps/
│ └── sim/ # Aplicación principal
│ ├── app/ # Rutas y páginas Next.js
│ │ ├── layout.tsx # Layout raíz con providers
│ │ └── page.tsx # Página de inicio
│ ├── providers/ # Configuración de LLMs
│ │ └── models.ts # Registro de modelos
│ ├── tools/ # Herramientas de integración
│ │ ├── github/ # Herramientas GitHub
│ │ ├── gmail/ # Herramientas Gmail
│ │ ├── cursor/ # Herramientas Cursor
│ │ └── vision/ # Herramientas de visión
│ ├── components/ # Componentes React
│ └── lib/ # Utilidades core
├── docker-compose.prod.yml # Despliegue producción
└── docker-compose.ollama.yml # Despliegue con Ollama
Características Principales
- Constructor Visual de Flujos: Diseño de workflows en canvas interactivo con drag-and-drop
- Copilot Integrado: Generación de nodos y corrección de errores desde lenguaje natural
- Bases de Datos Vectoriales: Carga de documentos y consultas basadas en contenido específico
- Multi-LLM: Soporte para OpenAI, Anthropic, Google AI, Mistral, xAI, Perplexity, Ollama y vLLM
- 1000+ Integraciones: Conexión con Slack, Gmail, Discord, Notion, Airtable, Supabase, GitHub
- Autoalojamiento: Despliegue flexible con Docker Compose o configuración manual
- Modelos Locales: Soporte completo para Ollama y vLLM sin dependencia de APIs externas
- Observabilidad: Instrumentación con OpenTelemetry para tracing distribuido
Casos de Uso
| Escenario | Descripción |
|---|---|
| Automatización de Email | Agentes que procesan, clasifican y responden correos automáticamente |
| Bots de Slack/Discord | Asistentes conversacionales integrados en canales de comunicación |
| Análisis de Datos | Procesamiento y visualización automatizada de conjuntos de datos |
| Soporte al Cliente | Sistemas de respuesta automática basados en knowledge bases |
| Generación de Contenido | Creación automatizada de documentos, reportes y contenido |
| Integraciones GitHub | Automatización de workflows de desarrollo y gestión de repositorios |
Métricas Cuantitativas del Proyecto
| Métrica | Valor |
|---|---|
| Integraciones soportadas | 1,000+ |
| Proveedores LLM | 8+ (OpenAI, Anthropic, Google, Mistral, xAI, Perplexity, Ollama, vLLM) |
| Componentes UI | 15+ (Radix UI) |
| Herramientas documentadas | 50+ (GitHub, Gmail, Vision, Cursor, etc.) |
| Opciones de despliegue | 4 (Cloud, Docker, Dev Containers, Manual) |
| Requisito de memoria | 12GB+ RAM |
Ruta de Lectura del Reporte
正在加载图表渲染器...
Recomendación de lectura:
- Visión General (documento actual): Contexto general y capacidades del proyecto
- Arquitectura y Módulos: Profundización en la estructura técnica y componentes
- Flujo de Datos: Comprensión del procesamiento de información a través del sistema
- Diseño de API: Detalles de integración y extensibilidad
- Guía de Despliegue: Instrucciones prácticas para implementación
Para desarrolladores que buscan implementación rápida, se recomienda saltar directamente a la Guía de Despliegue y luego consultar los documentos de arquitectura según necesidad.
