Yuga Planner
Planificación de programación de tareas de IA con LLamaIndex y Timefold: desglosa una descripción de tarea y la programa alrededor de un calendario existente
Documentación
title: Yuga Planner emoji: 🐍 colorFrom: purple colorTo: gray sdk: docker app_port: 7860 license: apache-2.0 tags: ["agent-demo-track"]
Yuga Planner 🐍
¡Este proyecto fue desarrollado para el Hackathon de Agentes MCP de Hugging Face!
Yuga Planner es un prototipo de sistema neuro-simbólico: proporciona una plataforma de planificación de equipos y asignación de tareas impulsada por agentes, construida sobre Gradio.
Toma una descripción de proyecto, la descompone en tareas accionables mediante un agente de LLamaIndex, y luego utiliza Timefold para generar horarios óptimos de empleados para proyectos complejos.
🚀 Pruébalo Ahora
Demo en Vivo: https://huggingface.co/spaces/blackopsrepl/yuga-planner
Código Fuente en GitHub: https://github.com/blackopsrepl/yuga-planner
Uso de la Interfaz de Chat MCP
- Navega a la pestaña Chat en la interfaz de Gradio
- Sube tu archivo de calendario (.ics) para proporcionar compromisos existentes (opcional)
- Escribe tu solicitud de planificación usando lenguaje natural:
"Create a new EC2 instance on AWS" "Create a Svelte UI that allows me to query a postgresql database" "Develop a chatbot UI based on Gradio" - Recibe respuestas inteligentes que combinan IA conversacional con capacidades de planificación de tareas
- Visualiza horarios formateados con salida de tablas enriquecidas e indicadores de estado
Uso de la Herramienta MCP
- En cualquier chatbot o plataforma de agentes compatible con MCP:
use yuga-planner mcp tool Task Description: [Your task description] - Adjunta tu archivo de calendario (.ics) para proporcionar compromisos existentes
- Recibe un horario optimizado que integra tu nueva tarea con los eventos de calendario existentes
Arquitectura
Yuga Planner sigue una arquitectura orientada a servicios con una clara separación de responsabilidades:
Capa de Servicios Principales
- DataService: Gestiona la carga, procesamiento y conversión de formatos de datos de diversas fuentes (Markdown, calendarios)
- ScheduleService: Orquesta la generación de horarios, la gestión del solucionador y el sondeo de soluciones
- StateService: Gestión centralizada del estado para el seguimiento de trabajos y almacenamiento de horarios
- LoggingService: Transmisión de registros en tiempo real para retroalimentación en la interfaz y depuración
- MockProjectService: Proporciona datos de proyectos de muestra para pruebas y demostraciones
- MCPClientWrapper: Gestiona la funcionalidad del servidor MCP y las definiciones de herramientas
Componentes de Integración MCP
- ToolCallAssembler: Procesa los deltas de llamadas a herramientas en streaming de la API de Nebius para convertirlos en llamadas completas
- ToolCallProcessor: Ejecuta llamadas a herramientas completadas a través del backend MCP con funcionalidad de reparación JSON
- Interfaz de Chat: IA conversacional unificada + planificación de tareas con detección inteligente de herramientas
- Manejador de Streaming: Procesamiento de respuestas en tiempo real con indicadores de progreso y recuperación de errores
Componentes del Sistema
- Interfaz Gradio: Interfaz web moderna con actualizaciones en tiempo real y visualización interactiva de horarios
- Agente Compositor de Tareas: Utiliza LLamaIndex + Nebius AI para la descomposición y estimación inteligente de tareas
- Solucionador de Restricciones: Motor de optimización Timefold para asignaciones óptimas de tareas a empleados
- Integración MCP: Endpoint del Protocolo de Contexto de Modelo para la integración de flujos de trabajo de agentes
🌟 Características Clave
| Característica | Descripción | Estado |
|---|---|---|
| Análisis de Proyectos Markdown | Extracción automática de tareas de documentos Markdown | ✅ |
| Análisis de Tareas Impulsado por LLM | LLamaIndex + Nebius AI para descomposición y estimación de tareas | ✅ |
| Planificación Basada en Restricciones | Motor de optimización Timefold para asignaciones de horarios | ✅ |
| Coincidencia de Habilidades | Detección de habilidades requeridas para cada tarea | ✅ |
| Dependencias de Tareas | Modelado de flujos de trabajo secuenciales | ✅ |
| Soporte de Múltiples Proyectos | Cargar y planificar múltiples proyectos simultáneamente | ✅ |
| Transmisión de Registros en Vivo | Progreso del solucionador y actualizaciones de estado en tiempo real en la interfaz | ✅ |
| Parámetros Configurables | Número de empleados y duración del horario ajustables | ✅ |
| Carga de Proyectos de Muestra | Proyectos de muestra preconfigurados para pruebas rápidas | ✅ |
| Análisis y Fijación de Calendarios | Extrae y conserva eventos de calendario de archivos .ics en sus horarios originales | ✅ |
| Cumplimiento de Horario Laboral | Respeta el horario laboral de 9:00-18:00 con exclusión de la pausa de almuerzo | ✅ |
| Prevención de Planificación en Fines de Semana | Restricción estricta que evita asignaciones de tareas en fines de semana | ✅ |
| Endpoint MCP | Endpoint de API para integración de herramientas MCP con soporte de calendario | ✅ |
| Interfaz de Chat con MCP | Interfaz unificada de IA conversacional + planificación de tareas | ✅ |
| Llamadas a Herramientas en Streaming | Procesamiento en tiempo real de llamadas a herramientas desde la API de Nebius | ✅ |
| Detección Inteligente de Herramientas | Detección basada en palabras clave para solicitudes de planificación | ✅ |
| Reparación y Recuperación JSON | Manejo robusto de datos de streaming malformados | ✅ |
| Sistema de Doble Respuesta | API de Nebius con respaldo MCP para mayor confiabilidad | ✅ |
🎯 Dos Modos de Uso
Yuga Planner opera como dos sistemas separados que sirven diferentes casos de uso:
1. 💬 Interfaz de Chat MCP
Propósito: IA conversacional con capacidades integradas de planificación de tareas
- Acceso: Pestaña Chat en la interfaz de Gradio
- Entrada: Solicitudes en lenguaje natural + archivos de calendario
.icsopcionales - Características:
- Detección inteligente de herramientas basada en palabras clave de planificación
- Respuestas en streaming con ensamblaje de llamadas a herramientas en tiempo real
- Formato de tablas enriquecidas para resultados de horarios
- Sistema de doble respuesta (API de Nebius + respaldo MCP)
- Caso de Uso: Planificación interactiva a través de conversación natural
2. 🤖 Herramienta Personal MCP
Propósito: Planificación de tareas individuales integrada con calendarios personales
- Acceso: A través de chatbots y plataformas de agentes compatibles con MCP
- Entrada: Adjuntar archivos de calendario
.ics+ descripciones de tareas en lenguaje natural - Equipo: Planifica según tu calendario personal y compromisos existentes
- Caso de Uso: Productividad personal y planificación de tareas alrededor de citas existentes
Ejemplo de Uso MCP:
User: use yuga-planner mcp tool
Task Description: Create a new EC2 instance on AWS
[Attaches calendar.ics file]
Tool Response: Optimized schedule created - EC2 setup task assigned to
available time slots around your existing meetings
🧩 Detalles Técnicos de la Interfaz de Chat MCP
Detección Inteligente de Herramientas
La interfaz de chat detecta automáticamente solicitudes de planificación mediante análisis de palabras clave:
scheduling_keywords = [
'schedule', 'task', 'calendar', 'plan', 'organize',
'meeting', 'appointment', 'project', 'deadline',
'create', 'setup', 'implement', 'develop'
]
Procesamiento de Llamadas a Herramientas en Streaming
- Ensamblaje de Deltas: Recopila más de 200 deltas de streaming en llamadas a herramientas completas
- Reparación JSON: Maneja JSON malformado de respuestas en streaming
- Indicadores de Progreso: Retroalimentación en tiempo real durante el procesamiento de herramientas
- Protección de Tiempo de Espera: Tiempo de espera de 60 segundos para operaciones MCP
Sistema de Doble Respuesta
- Principal: API de Nebius con capacidades de llamada a herramientas
- Respaldo: Invocación directa del backend MCP cuando falla el ensamblaje de herramientas
- Recuperación de Errores: Manejo integral de errores y degradación gradual
Características:
- Acepta archivos de calendario y descripciones de tareas de usuario a través de la interfaz de chat
- Analiza eventos de calendario existentes y nuevos requisitos de tareas
- Soporte completo de resolución de horarios - genera asignaciones de tareas optimizadas
- Devuelve horarios resueltos completos integrados con el calendario personal
- Diseñado para una integración fluida con chatbots y flujos de trabajo de agentes
Limitaciones Actuales:
- Soporte de múltiples zonas horarias: Actualmente opera en un contexto de zona horaria única con conversión a UTC para consistencia. Los eventos de calendario de diferentes zonas horarias se normalizan al mismo contexto de planificación.
Consulta el CHANGELOG.md para detalles sobre cambios recientes relacionados con MCP.
Trabajo en Progreso
- 🔧 Renovación de la interfaz Gradio: Experiencia de usuario mejorada y mejoras visuales
- 🔍 Migración a modelos Pydantic: Validación de datos y serialización con seguridad de tipos
- ⚡ Soporte mejorado de zonas horarias: Integración de calendarios multi-zona horaria para planificación internacional
Trabajo Futuro
Hoja de Ruta de Integración del Sistema
- Motor de planificación unificado que pueda manejar tanto la gestión de equipos como la productividad personal en una sola interfaz
- Flujos de trabajo híbridos donde las tareas personales puedan coordinarse con proyectos de equipo
- Intercambio de datos entre sistemas entre proyectos de demostración web y calendarios MCP personales
- Cambio fluido entre modos de gestión de equipos y planificación de tareas individuales
Mejoras de Características Principales
- Soporte Multi-Herramienta: Extender la interfaz de chat para admitir herramientas MCP adicionales más allá de la planificación
- Integración de Calendarios: Integración directa con servicios de calendario (Google, Outlook)
- Optimización de Rendimiento: Ensamblaje de streaming mejorado para llamadas a herramientas grandes
- RAG: Validación de la descomposición y estimación de tareas contra literatura relevante de la industria
- Dependencias de tareas más granulares: Representación de tareas en un DAG en lugar de una lista para permitir superposición dentro de proyectos, cuando sea factible/conveniente
- Entrada desde issues de GitHub: En lugar de procesar markdown directamente, crea una lista analizando issues
- Aprendizaje por refuerzo: Entrenar al agente para mejorar la descomposición y estimación de tareas a partir del historial de GitHub (por ejemplo, diferencias en marcas de tiempo, comentarios de issues, etc.)
Requisitos Previos (Local/GitHub)
- Python 3.10
- Java 17+
- Docker (opcional, para despliegue en contenedores)
- Credenciales de la API de Nebius (para funciones impulsadas por LLM)
Instalación
- Clona el repositorio:
git clone https://github.com/blackopsrepl/yuga-planner.git cd yuga-planner - Crea un entorno virtual:
make venv - Instala las dependencias:
make install - Configura las variables de entorno / secretos:
make setup-secrets # Then edit tests/secrets/cred.py to add your API credentials - Ejecuta la aplicación:
make run
Docker (Local/GitHub)
- Construye la imagen:
docker build -t yuga-planner . - Ejecuta el contenedor:
docker run -p 7860:7860 yuga-planner
Dependencias de Python
Consulta requirements.txt para la lista completa.
Licencia
Este proyecto está licenciado bajo la Licencia Apache 2.0. Consulta LICENSE.txt para más detalles.