Skills Agentes

Agent Resource Allocator

Asignación adaptativa de recursos, escalado predictivo y planificación inteligente de capacidad.

Estrellas
69.4k

en todo el repo

Actividad
27

0–100, la ruta de este skill

Actualizado
hace 6 meses

último commit aquí

Commits
0

últimos 90 días

Contexto
4.9k tok

19 tok en reposo

Paquete
1 archivo

19 KB

Instalar

Funciona con cualquier agente que lea SKILL.md

npx -y skills add ruvnet/ruflo --skill agent-resource-allocator --agent claude-code

Se instala solo en este repositorio.

Qué hace

  • Asigna recursos (CPU, memoria, almacenamiento, red, agentes) de forma adaptativa según patrones de carga temporales y correlaciones.
  • Predice necesidades futuras de escalado con modelos LSTM, regresión y aprendizaje por refuerzo, y calcula un plan de scaling.
  • Implementa circuit breakers adaptativos y el patrón bulkhead para aislar fallos por pool de recursos.
  • Perfila rendimiento (CPU, memoria, I/O, red) generando flame graphs y detectando fugas de memoria.
  • Aplica optimización multiobjetivo (algoritmo genético) para balancear utilización, coste y tolerancia a fallos.

Úsalo cuando

  • Cuando hay que asignar o reasignar recursos de forma dinámica entre agentes de un swarm.
  • Cuando se necesita predecir necesidades de escalado futuro con modelos de machine learning.
  • Cuando hace falta perfilar rendimiento (CPU, memoria) o proteger un servicio con circuit breakers.

No lo uses cuando

    Qué lo activa

    Di cualquiera de estas frases y el agente debería cargar este skill.

    • Asigna recursos de forma adaptativa según la carga actual del swarm
    • Predice si necesitaremos escalar en la próxima hora
    • Perfila el uso de CPU y memoria durante 60 segundos y busca fugas

    SKILL.md

    En inglés

    name: Resource Allocator type: agent category: optimization description: Adaptive resource allocation, predictive scaling and intelligent capacity planning

    Resource Allocator Agent

    Agent Profile

    • Name: Resource Allocator
    • Type: Performance Optimization Agent
    • Specialization: Adaptive resource allocation and predictive scaling
    • Performance Focus: Intelligent resource management and capacity planning

    Core Capabilities

    1. Adaptive Resource Allocation

    // Advanced adaptive resource allocation system
    class AdaptiveResourceAllocator {
      constructor() {
        this.allocators = {
          cpu: new CPUAllocator(),
          memory: new MemoryAllocator(),
          storage: new StorageAllocator(),
          network: new NetworkAllocator(),
          agents: new AgentAllocator()
        };
        
        this.predictor = new ResourcePredictor();
        this.optimizer = new AllocationOptimizer();
        this.monitor = new ResourceMonitor();
      }
      
      // Dynamic resource allocation based on workload patterns
      async allocateResources(swarmId, workloadProfile, constraints = {}) {
        // Analyze current resource usage
        const currentUsage = await this.analyzeCurrentUsage(swarmId);
        
        // Predict future resource needs
        const predictions = await this.predictor.predict(workloadProfile, currentUsage);
        
        // Calculate optimal allocation
        const allocation = await this.optimizer.optimize(predictions, constraints);
        
        // Apply allocation with gradual rollout
        const rolloutPlan = await this.planGradualRollout(allocation, currentUsage);
        
        // Execute allocation
        const result = await this.executeAllocation(rolloutPlan);
        
        return {
          allocation,
          rolloutPlan,
          result,
          monitoring: await this.setupMonitoring(allocation)
        };
      }
      
      // Workload pattern analysis
      async analyzeWorkloadPatterns(historicalData, timeWindow = '7d') {
        const patterns = {
          // Temporal patterns
          temporal: {
            hourly: this.analyzeHourlyPatterns(historicalData),
            daily: this.analyzeDailyPatterns(historicalData),
            weekly: this.analyzeWeeklyPatterns(historicalData),
            seasonal: this.analyzeSeasonalPatterns(historicalData)
          },
          
          // Load patterns
          load: {
            baseline: this.calculateBaselineLoad(historicalData),
            peaks: this.identifyPeakPatterns(historicalData),
            valleys: this.identifyValleyPatterns(historicalData),
            spikes: this.detectAnomalousSpikes(historicalData)
          },
          
          // Resource correlation patterns
          correlations: {
            cpu_memory: this.analyzeCPUMemoryCorrelation(historicalData),
            network_load: this.analyzeNetworkLoadCorrelation(historicalData),
            agent_resource: this.analyzeAgentResourceCorrelation(historicalData)
          },
          
          // Predictive indicators
          indicators: {
            growth_rate: this.calculateGrowthRate(historicalData),
            volatility: this.calculateVolatility(historicalData),
            predictability: this.calculatePredictability(historicalData)
          }
        };
        
        return patterns;
      }
      
      // Multi-objective resource optimization
      async optimizeResourceAllocation(resources, demands, objectives) {
        const optimizationProblem = {
          variables: this.defineOptimizationVariables(resources),
          constraints: this.defineConstraints(resources, demands),
          objectives: this.defineObjectives(objectives)
        };
        
        // Use multi-objective genetic algorithm
        const solver = new MultiObjectiveGeneticSolver({
          populationSize: 100,
          generations: 200,
          mutationRate: 0.1,
          crossoverRate: 0.8
        });
        
        const solutions = await solver.solve(optimizationProblem);
        
        // Select solution from Pareto front
        const selectedSolution = this.selectFromParetoFront(solutions, objectives);
        
        return {
          optimalAllocation: selectedSolution.allocation,
          paretoFront: solutions.paretoFront,
          tradeoffs: solutions.tradeoffs,
          confidence: selectedSolution.confidence
        };
      }
    }
    

    2. Predictive Scaling with Machine Learning

    // ML-powered predictive scaling system
    class PredictiveScaler {
      constructor() {
        this.models = {
          time_series: new LSTMTimeSeriesModel(),
          regression: new RandomForestRegressor(),
          anomaly: new IsolationForestModel(),
          ensemble: new EnsemblePredictor()
        };
        
        this.featureEngineering = new FeatureEngineer();
        this.dataPreprocessor = new DataPreprocessor();
      }
      
      // Predict scaling requirements
      async predictScaling(swarmId, timeHorizon = 3600, confidence = 0.95) {
        // Collect training data
        const trainingData = await this.collectTrainingData(swarmId);
        
        // Engineer features
        const features = await this.featureEngineering.engineer(trainingData);
        
        // Train$update models
        await this.updateModels(features);
        
        // Generate predictions
        const predictions = await this.generatePredictions(timeHorizon, confidence);
        
        // Calculate scaling recommendations
        const scalingPlan = await this.calculateScalingPlan(predictions);
        
        return {
          predictions,
          scalingPlan,
          confidence: predictions.confidence,
          timeHorizon,
          features: features.summary
        };
      }
      
      // LSTM-based time series prediction
      async trainTimeSeriesModel(data, config = {}) {
        const model = await mcp.neural_train({
          pattern_type: 'prediction',
          training_data: JSON.stringify({
            sequences: data.sequences,
            targets: data.targets,
            features: data.features
          }),
          epochs: config.epochs || 100
        });
        
        // Validate model performance
        const validation = await this.validateModel(model, data.validation);
        
        if (validation.accuracy > 0.85) {
          await mcp.model_save({
            modelId: model.modelId,
            path: '$models$scaling_predictor.model'
          });
          
          return {
            model,
            validation,
            ready: true
          };
        }
        
        return {
          model: null,
          validation,
          ready: false,
          reason: 'Model accuracy below threshold'
        };
      }
      
      // Reinforcement learning for scaling decisions
      async trainScalingAgent(environment, episodes = 1000) {
        const agent = new DeepQNetworkAgent({
          stateSize: environment.stateSize,
          actionSize: environment.actionSize,
          learningRate: 0.001,
          epsilon: 1.0,
          epsilonDecay: 0.995,
          memorySize: 10000
        });
        
        const trainingHistory = [];
        
        for (let episode = 0; episode < episodes; episode++) {
          let state = environment.reset();
          let totalReward = 0;
          let done = false;
          
          while (!done) {
            // Agent selects action
            const action = agent.selectAction(state);
            
            // Environment responds
            const { nextState, reward, terminated } = environment.step(action);
            
            // Agent learns from experience
            agent.remember(state, action, reward, nextState, terminated);
            
            state = nextState;
            totalReward += reward;
            done = terminated;
            
            // Train agent periodically
            if (agent.memory.length > agent.batchSize) {
              await agent.train();
            }
          }
          
          trainingHistory.push({
            episode,
            reward: totalReward,
            epsilon: agent.epsilon
          });
          
          // Log progress
          if (episode % 100 === 0) {
            console.log(`Episode ${episode}: Reward ${totalReward}, Epsilon ${agent.epsilon}`);
          }
        }
        
        return {
          agent,
          trainingHistory,
          performance: this.evaluateAgentPerformance(trainingHistory)
        };
      }
    }
    

    3. Circuit Breaker and Fault Tolerance

    // Advanced circuit breaker with adaptive thresholds
    class AdaptiveCircuitBreaker {
      constructor(config = {}) {
        this.failureThreshold = config.failureThreshold || 5;
        this.recoveryTimeout = config.recoveryTimeout || 60000;
        this.successThreshold = config.successThreshold || 3;
        
        this.state = 'CLOSED'; // CLOSED, OPEN, HALF_OPEN
        this.failureCount = 0;
        this.successCount = 0;
        this.lastFailureTime = null;
        
        // Adaptive thresholds
        this.adaptiveThresholds = new AdaptiveThresholdManager();
        this.performanceHistory = new CircularBuffer(1000);
        
        // Metrics
        this.metrics = {
          totalRequests: 0,
          successfulRequests: 0,
          failedRequests: 0,
          circuitOpenEvents: 0,
          circuitHalfOpenEvents: 0,
          circuitClosedEvents: 0
        };
      }
      
      // Execute operation with circuit breaker protection
      async execute(operation, fallback = null) {
        this.metrics.totalRequests++;
        
        // Check circuit state
        if (this.state === 'OPEN') {
          if (this.shouldAttemptReset()) {
            this.state = 'HALF_OPEN';
            this.successCount = 0;
            this.metrics.circuitHalfOpenEvents++;
          } else {
            return await this.executeFallback(fallback);
          }
        }
        
        try {
          const startTime = performance.now();
          const result = await operation();
          const endTime = performance.now();
          
          // Record success
          this.onSuccess(endTime - startTime);
          return result;
          
        } catch (error) {
          // Record failure
          this.onFailure(error);
          
          // Execute fallback if available
          if (fallback) {
            return await this.executeFallback(fallback);
          }
          
          throw error;
        }
      }
      
      // Adaptive threshold adjustment
      adjustThresholds(performanceData) {
        const analysis = this.adaptiveThresholds.analyze(performanceData);
        
        if (analysis.recommendAdjustment) {
          this.failureThreshold = Math.max(
            1, 
            Math.round(this.failureThreshold * analysis.thresholdMultiplier)
          );
          
          this.recoveryTimeout = Math.max(
            1000,
            Math.round(this.recoveryTimeout * analysis.timeoutMultiplier)
          );
        }
      }
      
      // Bulk head pattern for resource isolation
      createBulkhead(resourcePools) {
        return resourcePools.map(pool => ({
          name: pool.name,
          capacity: pool.capacity,
          queue: new PriorityQueue(),
          semaphore: new Semaphore(pool.capacity),
          circuitBreaker: new AdaptiveCircuitBreaker(pool.config),
          metrics: new BulkheadMetrics()
        }));
      }
    }
    

    4. Performance Profiling and Optimization

    // Comprehensive performance profiling system
    class PerformanceProfiler {
      constructor() {
        this.profilers = {
          cpu: new CPUProfiler(),
          memory: new MemoryProfiler(),
          io: new IOProfiler(),
          network: new NetworkProfiler(),
          application: new ApplicationProfiler()
        };
        
        this.analyzer = new ProfileAnalyzer();
        this.optimizer = new PerformanceOptimizer();
      }
      
      // Comprehensive performance profiling
      async profilePerformance(swarmId, duration = 60000) {
        const profilingSession = {
          swarmId,
          startTime: Date.now(),
          duration,
          profiles: new Map()
        };
        
        // Start all profilers concurrently
        const profilingTasks = Object.entries(this.profilers).map(
          async ([type, profiler]) => {
            const profile = await profiler.profile(duration);
            return [type, profile];
          }
        );
        
        const profiles = await Promise.all(profilingTasks);
        
        for (const [type, profile] of profiles) {
          profilingSession.profiles.set(type, profile);
        }
        
        // Analyze performance data
        const analysis = await this.analyzer.analyze(profilingSession);
        
        // Generate optimization recommendations
        const recommendations = await this.optimizer.recommend(analysis);
        
        return {
          session: profilingSession,
          analysis,
          recommendations,
          summary: this.generateSummary(analysis, recommendations)
        };
      }
      
      // CPU profiling with flame graphs
      async profileCPU(duration) {
        const cpuProfile = {
          samples: [],
          functions: new Map(),
          hotspots: [],
          flamegraph: null
        };
        
        // Sample CPU usage at high frequency
        const sampleInterval = 10; // 10ms
        const samples = duration / sampleInterval;
        
        for (let i = 0; i < samples; i++) {
          const sample = await this.sampleCPU();
          cpuProfile.samples.push(sample);
          
          // Update function statistics
          this.updateFunctionStats(cpuProfile.functions, sample);
          
          await this.sleep(sampleInterval);
        }
        
        // Generate flame graph
        cpuProfile.flamegraph = this.generateFlameGraph(cpuProfile.samples);
        
        // Identify hotspots
        cpuProfile.hotspots = this.identifyHotspots(cpuProfile.functions);
        
        return cpuProfile;
      }
      
      // Memory profiling with leak detection
      async profileMemory(duration) {
        const memoryProfile = {
          snapshots: [],
          allocations: [],
          deallocations: [],
          leaks: [],
          growth: []
        };
        
        // Take initial snapshot
        let previousSnapshot = await this.takeMemorySnapshot();
        memoryProfile.snapshots.push(previousSnapshot);
        
        const snapshotInterval = 5000; // 5 seconds
        const snapshots = duration / snapshotInterval;
        
        for (let i = 0; i < snapshots; i++) {
          await this.sleep(snapshotInterval);
          
          const snapshot = await this.takeMemorySnapshot();
          memoryProfile.snapshots.push(snapshot);
          
          // Analyze memory changes
          const changes = this.analyzeMemoryChanges(previousSnapshot, snapshot);
          memoryProfile.allocations.push(...changes.allocations);
          memoryProfile.deallocations.push(...changes.deallocations);
          
          // Detect potential leaks
          const leaks = this.detectMemoryLeaks(changes);
          memoryProfile.leaks.push(...leaks);
          
          previousSnapshot = snapshot;
        }
        
        // Analyze memory growth patterns
        memoryProfile.growth = this.analyzeMemoryGrowth(memoryProfile.snapshots);
        
        return memoryProfile;
      }
    }
    

    MCP Integration Hooks

    Resource Management Integration

    // Comprehensive MCP resource management
    const resourceIntegration = {
      // Dynamic resource allocation
      async allocateResources(swarmId, requirements) {
        // Analyze current resource usage
        const currentUsage = await mcp.metrics_collect({
          components: ['cpu', 'memory', 'network', 'agents']
        });
        
        // Get performance metrics
        const performance = await mcp.performance_report({ format: 'detailed' });
        
        // Identify bottlenecks
        const bottlenecks = await mcp.bottleneck_analyze({});
        
        // Calculate optimal allocation
        const allocation = await this.calculateOptimalAllocation(
          currentUsage,
          performance,
          bottlenecks,
          requirements
        );
        
        // Apply resource allocation
        const result = await mcp.daa_resource_alloc({
          resources: allocation.resources,
          agents: allocation.agents
        });
        
        return {
          allocation,
          result,
          monitoring: await this.setupResourceMonitoring(allocation)
        };
      },
      
      // Predictive scaling
      async predictiveScale(swarmId, predictions) {
        // Get current swarm status
        const status = await mcp.swarm_status({ swarmId });
        
        // Calculate scaling requirements
        const scalingPlan = this.calculateScalingPlan(status, predictions);
        
        if (scalingPlan.scaleRequired) {
          // Execute scaling
          const scalingResult = await mcp.swarm_scale({
            swarmId,
            targetSize: scalingPlan.targetSize
          });
          
          // Optimize topology after scaling
          if (scalingResult.success) {
            await mcp.topology_optimize({ swarmId });
          }
          
          return {
            scaled: true,
            plan: scalingPlan,
            result: scalingResult
          };
        }
        
        return {
          scaled: false,
          reason: 'No scaling required',
          plan: scalingPlan
        };
      },
      
      // Performance optimization
      async optimizePerformance(swarmId) {
        // Collect comprehensive metrics
        const metrics = await Promise.all([
          mcp.performance_report({ format: 'json' }),
          mcp.bottleneck_analyze({}),
          mcp.agent_metrics({}),
          mcp.metrics_collect({ components: ['system', 'agents', 'coordination'] })
        ]);
        
        const [performance, bottlenecks, agentMetrics, systemMetrics] = metrics;
        
        // Generate optimization recommendations
        const optimizations = await this.generateOptimizations({
          performance,
          bottlenecks,
          agentMetrics,
          systemMetrics
        });
        
        // Apply optimizations
        const results = await this.applyOptimizations(swarmId, optimizations);
        
        return {
          optimizations,
          results,
          impact: await this.measureOptimizationImpact(swarmId, results)
        };
      }
    };
    

    Operational Commands

    Resource Management Commands

    # Analyze resource usage
    npx claude-flow metrics-collect --components ["cpu", "memory", "network"]
    
    # Optimize resource allocation
    npx claude-flow daa-resource-alloc --resources <resource-config>
    
    # Predictive scaling
    npx claude-flow swarm-scale --swarm-id <id> --target-size <size>
    
    # Performance profiling
    npx claude-flow performance-report --format detailed --timeframe 24h
    
    # Circuit breaker configuration
    npx claude-flow fault-tolerance --strategy circuit-breaker --config <config>
    

    Optimization Commands

    # Run performance optimization
    npx claude-flow optimize-performance --swarm-id <id> --strategy adaptive
    
    # Generate resource forecasts
    npx claude-flow forecast-resources --time-horizon 3600 --confidence 0.95
    
    # Profile system performance
    npx claude-flow profile-performance --duration 60000 --components all
    
    # Analyze bottlenecks
    npx claude-flow bottleneck-analyze --component swarm-coordination
    

    Integration Points

    With Other Optimization Agents

    • Load Balancer: Provides resource allocation data for load balancing decisions
    • Performance Monitor: Shares performance metrics and bottleneck analysis
    • Topology Optimizer: Coordinates resource allocation with topology changes

    With Swarm Infrastructure

    • Task Orchestrator: Allocates resources for task execution
    • Agent Coordinator: Manages agent resource requirements
    • Memory System: Stores resource allocation history and patterns

    Performance Metrics

    Resource Allocation KPIs

    // Resource allocation performance metrics
    const allocationMetrics = {
      efficiency: {
        utilization_rate: this.calculateUtilizationRate(),
        waste_percentage: this.calculateWastePercentage(),
        allocation_accuracy: this.calculateAllocationAccuracy(),
        prediction_accuracy: this.calculatePredictionAccuracy()
      },
      
      performance: {
        allocation_latency: this.calculateAllocationLatency(),
        scaling_response_time: this.calculateScalingResponseTime(),
        optimization_impact: this.calculateOptimizationImpact(),
        cost_efficiency: this.calculateCostEfficiency()
      },
      
      reliability: {
        availability: this.calculateAvailability(),
        fault_tolerance: this.calculateFaultTolerance(),
        recovery_time: this.calculateRecoveryTime(),
        circuit_breaker_effectiveness: this.calculateCircuitBreakerEffectiveness()
      }
    };
    

    This Resource Allocator agent provides comprehensive adaptive resource allocation with ML-powered predictive scaling, fault tolerance patterns, and advanced performance optimization for efficient swarm resource management.

    Reproducido de ruvnet/ruflo bajo licencia MIT. Leer esta página en markdown.

    Archivos

    1 archivo en el paquete. Solo se lee SKILL.md al activarse — las referencias se cargan si el skill decide que las necesita.

    Antes de instalar

    Usa comandos npx claude-flow (metrics-collect, daa-resource-alloc, swarm-scale, performance-report) y herramientas MCP como mcp.neural_train.

    Necesita en el PATH:npx

    Detalles

    Creador
    ruvnet
    Licencia
    MIT
    Recursos incluidos
    Solo SKILL.md
    Repositorio
    ruvnet/ruflo
    Código fuente
    Ver SKILL.md

    Etiquetas

    Más de ruvnet/ruflo

    Este repo incluye 275 skills. Si instalas uno, normalmente ya tienes los demás.

    Inspecciona y audita genomas GEPA: carga y valida un genoma, renderiza el system prompt que compila, o clasifica los modos de fallo de una transcripción de ejecución.

    Costo de contexto al activarse
    833 tok
    Tamaño del paquete
    1 archivo
    Última actualización
    hace 4 días
    Permisos
    herramientas desarrollo

    Completion en modo razonamiento contra deepseek-reasoner (R1) de DeepSeek. Devuelve el chain-of-thought por separado de la respuesta final. Lee DEEPSEEK_API_KEY y degrada si falta o la API no responde.

    Costo de contexto al activarse
    627 tok
    Tamaño del paquete
    1 archivo
    Última actualización
    hace 4 días
    Permisos
    automatizacion

    Completion de un solo turno contra el modelo deepseek-chat de DeepSeek vía /v1/chat/completions. Lee DEEPSEEK_API_KEY y degrada con status:degraded si falta o la API no responde. Para tareas sin razonamiento.

    Costo de contexto al activarse
    566 tok
    Tamaño del paquete
    1 archivo
    Última actualización
    hace 4 días
    Permisos
    automatizacion

    Construye o reconstruye el índice de ADRs y su grafo de dependencias ejecutando scripts/import.mjs, en vez de cientos de llamadas MCP.

    Costo de contexto al activarse
    866 tok
    Tamaño del paquete
    1 archivo
    Última actualización
    hace 27 días
    herramientas desarrollo

    Muestra el estado de la integración AGNTCY/SLIM/CASA: si los paquetes están instalados, qué transporte está activo y si el enforcement de CASA está habilitado.

    Costo de contexto al activarse
    443 tok
    Tamaño del paquete
    1 archivo
    Última actualización
    hace 26 días
    devops infraestructura

    Ejecuta escaneos de seguridad completos sobre el código con las herramientas de seguridad de Ruflo, a profundidad quick, standard o deep.

    Costo de contexto al activarse
    298 tok
    Tamaño del paquete
    1 archivo
    Última actualización
    el mes pasado
    seguridad