跳到正文
cccskills
免费在 GitHub 公开中文介绍

agent-performance-monitor

收集多个AI智能体和系统的运行指标,分析延迟原因与异常,跟踪CPU和内存使用情况、响应时间及服务水平,并整理监控仪表板所需数据。

原文查看原文说明

Agent skill for performance-monitor - invoke with $agent-performance-monitor

实测评分 未实测

查看安装方法

适用场景

  • 排查智能体协作延迟
  • 跟踪CPU和内存使用情况
  • 监控响应时间与服务水平
  • 整理监控仪表板数据

中文介绍

功能

这项技能用于测量AI智能体和系统的运行状况,调查任务延迟与异常。它汇集了收集和分析CPU、内存、通信、任务执行以及智能体协作指标的步骤与代码示例。内容还包括依据SLA进行监控、设置告警,以及为仪表板提供数据。SLA指对服务质量作出的约定。

适用场景

适合需要排查多个智能体协作缓慢原因,或持续检查响应时间与可用率的运维人员。也可用于研究资源使用趋势和未来所需容量,整理支持负载均衡与资源管理决策的信息。

使用示例

  • “汇总最近24小时的性能,调查主要延迟原因。”
  • “收集CPU和内存使用情况,检查是否存在异常变化。”
  • “将响应时间和可用率与设定的服务水平进行比较。”

注意事项

原文包含claude-flow的CLI命令和MCP集成代码示例,前提是环境能够使用这些工具。部分采集流程和检测模型引用了其他实现,仅靠所列代码无法完成全部监控功能。

本介绍由 AI(OpenAI Codex)根据公开的 SKILL.md 撰写。准确的规格请查看下方原文。

文档检查

AI 根据 SKILL.md 的内容检查了需要注意的操作和使用前提。评分只依据实际运行的结果(实测对比)。

安全性发送数据、删除文件、执行命令等是否有说明
B部分不足所给片段涉及告警渠道与违规处理,但未说明通知内容或发送前的检查。
安装难易度所需工具和 API 密钥是否少且有说明
B部分不足通过MCP获取指标,但未提供连接配置或所引用检测器的安装步骤。

不计入评分。 由 AI(OpenAI Codex)于 2026年10月21日 评估。仅供参考,安装前请同时查看原文。

如果您认为评估有误,请申请复核

请写明哪一项有误以及原因。无需登录。我们会对照 SKILL.md 重新评估,并在此处更新结果。

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

包含的文件(1)

  • SKILL.md19.2 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。


name: Performance Monitor type: agent category: optimization description: Real-time metrics collection, bottleneck analysis, SLA monitoring and anomaly detection

Performance Monitor Agent

Agent Profile

  • Name: Performance Monitor
  • Type: Performance Optimization Agent
  • Specialization: Real-time metrics collection and bottleneck analysis
  • Performance Focus: SLA monitoring, resource tracking, and anomaly detection

Core Capabilities

1. Real-Time Metrics Collection

// Advanced metrics collection system
class MetricsCollector {
  constructor() {
    this.collectors = new Map();
    this.aggregators = new Map();
    this.streams = new Map();
    this.alertThresholds = new Map();
  }
  
  // Multi-dimensional metrics collection
  async collectMetrics() {
    const metrics = {
      // System metrics
      system: await this.collectSystemMetrics(),
      
      // Agent-specific metrics
      agents: await this.collectAgentMetrics(),
      
      // Swarm coordination metrics
      coordination: await this.collectCoordinationMetrics(),
      
      // Task execution metrics
      tasks: await this.collectTaskMetrics(),
      
      // Resource utilization metrics
      resources: await this.collectResourceMetrics(),
      
      // Network and communication metrics
      network: await this.collectNetworkMetrics()
    };
    
    // Real-time processing and analysis
    await this.processMetrics(metrics);
    return metrics;
  }
  
  // System-level metrics
  async collectSystemMetrics() {
    return {
      cpu: {
        usage: await this.getCPUUsage(),
        loadAverage: await this.getLoadAverage(),
        coreUtilization: await this.getCoreUtilization()
      },
      memory: {
        usage: await this.getMemoryUsage(),
        available: await this.getAvailableMemory(),
        pressure: await this.getMemoryPressure()
      },
      io: {
        diskUsage: await this.getDiskUsage(),
        diskIO: await this.getDiskIOStats(),
        networkIO: await this.getNetworkIOStats()
      },
      processes: {
        count: await this.getProcessCount(),
        threads: await this.getThreadCount(),
        handles: await this.getHandleCount()
      }
    };
  }
  
  // Agent performance metrics
  async collectAgentMetrics() {
    const agents = await mcp.agent_list({});
    const agentMetrics = new Map();
    
    for (const agent of agents) {
      const metrics = await mcp.agent_metrics({ agentId: agent.id });
      agentMetrics.set(agent.id, {
        ...metrics,
        efficiency: this.calculateEfficiency(metrics),
        responsiveness: this.calculateResponsiveness(metrics),
        reliability: this.calculateReliability(metrics)
      });
    }
    
    return agentMetrics;
  }
}

2. Bottleneck Detection & Analysis

// Intelligent bottleneck detection
class BottleneckAnalyzer {
  constructor() {
    this.detectors = [
      new CPUBottleneckDetector(),
      new MemoryBottleneckDetector(),
      new IOBottleneckDetector(),
      new NetworkBottleneckDetector(),
      new CoordinationBottleneckDetector(),
      new TaskQueueBottleneckDetector()
    ];
    
    this.patterns = new Map();
    this.history = new CircularBuffer(1000);
  }
  
  // Multi-layer bottleneck analysis
  async analyzeBottlenecks(metrics) {
    const bottlenecks = [];
    
    // Parallel detection across all layers
    const detectionPromises = this.detectors.map(detector => 
      detector.detect(metrics)
    );
    
    const results = await Promise.all(detectionPromises);
    
    // Correlate and prioritize bottlenecks
    for (const result of results) {
      if (result.detected) {
        bottlenecks.push({
          type: result.type,
          severity: result.severity,
          component: result.component,
          rootCause: result.rootCause,
          impact: result.impact,
          recommendations: result.recommendations,
          timestamp: Date.now()
        });
      }
    }
    
    // Pattern recognition for recurring bottlenecks
    await this.updatePatterns(bottlenecks);
    
    return this.prioritizeBottlenecks(bottlenecks);
  }
  
  // Advanced pattern recognition
  async updatePatterns(bottlenecks) {
    for (const bottleneck of bottlenecks) {
      const signature = this.createBottleneckSignature(bottleneck);
      
      if (this.patterns.has(signature)) {
        const pattern = this.patterns.get(signature);
        pattern.frequency++;
        pattern.lastOccurrence = Date.now();
        pattern.averageInterval = this.calculateAverageInterval(pattern);
      } else {
        this.patterns.set(signature, {
          signature,
          frequency: 1,
          firstOccurrence: Date.now(),
          lastOccurrence: Date.now(),
          averageInterval: 0,
          predictedNext: null
        });
      }
    }
  }
}

3. SLA Monitoring & Alerting

// Service Level Agreement monitoring
class SLAMonitor {
  constructor() {
    this.slaDefinitions = new Map();
    this.violations = new Map();
    this.alertChannels = new Set();
    this.escalationRules = new Map();
  }
  
  // Define SLA metrics and thresholds
  defineSLA(service, slaConfig) {
    this.slaDefinitions.set(service, {
      availability: slaConfig.availability || 99.9, // percentage
      responseTime: slaConfig.responseTime || 1000, // milliseconds
      throughput: slaConfig.throughput || 100, // requests per second
      errorRate: slaConfig.errorRate || 0.1, // percentage
      recoveryTime: slaConfig.recoveryTime || 300, // seconds
      
      // Time windows for measurements
      measurementWindow: slaConfig.measurementWindow || 300, // seconds
      evaluationInterval: slaConfig.evaluationInterval || 60, // seconds
      
      // Alerting configuration
      alertThresholds: slaConfig.alertThresholds || {
        warning: 0.8, // 80% of SLA threshold
        critical: 0.9, // 90% of SLA threshold
        breach: 1.0 // 100% of SLA threshold
      }
    });
  }
  
  // Continuous SLA monitoring
  async monitorSLA() {
    const violations = [];
    
    for (const [service, sla] of this.slaDefinitions) {
      const metrics = await this.getServiceMetrics(service);
      const evaluation = this.evaluateSLA(service, sla, metrics);
      
      if (evaluation.violated) {
        violations.push(evaluation);
        await this.handleViolation(service, evaluation);
      }
    }
    
    return violations;
  }
  
  // SLA evaluation logic
  evaluateSLA(service, sla, metrics) {
    const evaluation = {
      service,
      timestamp: Date.now(),
      violated: false,
      violations: []
    };
    
    // Availability check
    if (metrics.availability < sla.availability) {
      evaluation.violations.push({
        metric: 'availability',
        expected: sla.availability,
        actual: metrics.availability,
        severity: this.calculateSeverity(metrics.availability, sla.availability, sla.alertThresholds)
      });
      evaluation.violated = true;
    }
    
    // Response time check
    if (metrics.responseTime > sla.responseTime) {
      evaluation.violations.push({
        metric: 'responseTime',
        expected: sla.responseTime,
        actual: metrics.responseTime,
        severity: this.calculateSeverity(metrics.responseTime, sla.responseTime, sla.alertThresholds)
      });
      evaluation.violated = true;
    }
    
    // Additional SLA checks...
    
    return evaluation;
  }
}

4. Resource Utilization Tracking

// Comprehensive resource tracking
class ResourceTracker {
  constructor() {
    this.trackers = {
      cpu: new CPUTracker(),
      memory: new MemoryTracker(),
      disk: new DiskTracker(),
      network: new NetworkTracker(),
      gpu: new GPUTracker(),
      agents: new AgentResourceTracker()
    };
    
    this.forecaster = new ResourceForecaster();
    this.optimizer = new ResourceOptimizer();
  }
  
  // Real-time resource tracking
  async trackResources() {
    const resources = {};
    
    // Parallel resource collection
    const trackingPromises = Object.entries(this.trackers).map(
      async ([type, tracker]) => [type, await tracker.collect()]
    );
    
    const results = await Promise.all(trackingPromises);
    
    for (const [type, data] of results) {
      resources[type] = {
        ...data,
        utilization: this.calculateUtilization(data),
        efficiency: this.calculateEfficiency(data),
        trend: this.calculateTrend(type, data),
        forecast: await this.forecaster.forecast(type, data)
      };
    }
    
    return resources;
  }
  
  // Resource utilization analysis
  calculateUtilization(resourceData) {
    return {
      current: resourceData.used / resourceData.total,
      peak: resourceData.peak / resourceData.total,
      average: resourceData.average / resourceData.total,
      percentiles: {
        p50: resourceData.p50 / resourceData.total,
        p90: resourceData.p90 / resourceData.total,
        p95: resourceData.p95 / resourceData.total,
        p99: resourceData.p99 / resourceData.total
      }
    };
  }
  
  // Predictive resource forecasting
  async forecastResourceNeeds(timeHorizon = 3600) { // 1 hour default
    const currentResources = await this.trackResources();
    const forecasts = {};
    
    for (const [type, data] of Object.entries(currentResources)) {
      forecasts[type] = await this.forecaster.forecast(type, data, timeHorizon);
    }
    
    return {
      timeHorizon,
      forecasts,
      recommendations: await this.optimizer.generateRecommendations(forecasts),
      confidence: this.calculateForecastConfidence(forecasts)
    };
  }
}

MCP Integration Hooks

Performance Data Collection

// Comprehensive MCP integration
const performanceIntegration = {
  // Real-time performance monitoring
  async startMonitoring(config = {}) {
    const monitoringTasks = [
      this.monitorSwarmHealth(),
      this.monitorAgentPerformance(),
      this.monitorResourceUtilization(),
      this.monitorBottlenecks(),
      this.monitorSLACompliance()
    ];
    
    // Start all monitoring tasks concurrently
    const monitors = await Promise.all(monitoringTasks);
    
    return {
      swarmHealthMonitor: monitors[0],
      agentPerformanceMonitor: monitors[1],
      resourceMonitor: monitors[2],
      bottleneckMonitor: monitors[3],
      slaMonitor: monitors[4]
    };
  },
  
  // Swarm health monitoring
  async monitorSwarmHealth() {
    const healthMetrics = await mcp.health_check({
      components: ['swarm', 'coordination', 'communication']
    });
    
    return {
      status: healthMetrics.overall,
      components: healthMetrics.components,
      issues: healthMetrics.issues,
      recommendations: healthMetrics.recommendations
    };
  },
  
  // Agent performance monitoring
  async monitorAgentPerformance() {
    const agents = await mcp.agent_list({});
    const performanceData = new Map();
    
    for (const agent of agents) {
      const metrics = await mcp.agent_metrics({ agentId: agent.id });
      const performance = await mcp.performance_report({
        format: 'detailed',
        timeframe: '24h'
      });
      
      performanceData.set(agent.id, {
        ...metrics,
        performance,
        efficiency: this.calculateAgentEfficiency(metrics, performance),
        bottlenecks: await mcp.bottleneck_analyze({ component: agent.id })
      });
    }
    
    return performanceData;
  },
  
  // Bottleneck monitoring and analysis
  async monitorBottlenecks() {
    const bottlenecks = await mcp.bottleneck_analyze({});
    
    // Enhanced bottleneck analysis
    const analysis = {
      detected: bottlenecks.length > 0,
      count: bottlenecks.length,
      severity: this.calculateOverallSeverity(bottlenecks),
      categories: this.categorizeBottlenecks(bottlenecks),
      trends: await this.analyzeBottleneckTrends(bottlenecks),
      predictions: await this.predictBottlenecks(bottlenecks)
    };
    
    return analysis;
  }
};

Anomaly Detection

// Advanced anomaly detection system
class AnomalyDetector {
  constructor() {
    this.models = {
      statistical: new StatisticalAnomalyDetector(),
      machine_learning: new MLAnomalyDetector(),
      time_series: new TimeSeriesAnomalyDetector(),
      behavioral: new BehavioralAnomalyDetector()
    };
    
    this.ensemble = new EnsembleDetector(this.models);
  }
  
  // Multi-model anomaly detection
  async detectAnomalies(metrics) {
    const anomalies = [];
    
    // Parallel detection across all models
    const detectionPromises = Object.entries(this.models).map(
      async ([modelType, model]) => {
        const detected = await model.detect(metrics);
        return { modelType, detected };
      }
    );
    
    const results = await Promise.all(detectionPromises);
    
    // Ensemble voting for final decision
    const ensembleResult = await this.ensemble.vote(results);
    
    return {
      anomalies: ensembleResult.anomalies,
      confidence: ensembleResult.confidence,
      consensus: ensembleResult.consensus,
      individualResults: results
    };
  }
  
  // Statistical anomaly detection
  detectStatisticalAnomalies(data) {
    const mean = this.calculateMean(data);
    const stdDev = this.calculateStandardDeviation(data, mean);
    const threshold = 3 * stdDev; // 3-sigma rule
    
    return data.filter(point => Math.abs(point - mean) > threshold)
               .map(point => ({
                 value: point,
                 type: 'statistical',
                 deviation: Math.abs(point - mean) / stdDev,
                 probability: this.calculateProbability(point, mean, stdDev)
               }));
  }
  
  // Time series anomaly detection
  async detectTimeSeriesAnomalies(timeSeries) {
    // LSTM-based anomaly detection
    const model = await this.loadTimeSeriesModel();
    const predictions = await model.predict(timeSeries);
    
    const anomalies = [];
    for (let i = 0; i < timeSeries.length; i++) {
      const error = Math.abs(timeSeries[i] - predictions[i]);
      const threshold = this.calculateDynamicThreshold(timeSeries, i);
      
      if (error > threshold) {
        anomalies.push({
          timestamp: i,
          actual: timeSeries[i],
          predicted: predictions[i],
          error: error,
          type: 'time_series'
        });
      }
    }
    
    return anomalies;
  }
}

Dashboard Integration

Real-Time Performance Dashboard

// Dashboard data provider
class DashboardProvider {
  constructor() {
    this.updateInterval = 1000; // 1 second updates
    this.subscribers = new Set();
    this.dataBuffer = new CircularBuffer(1000);
  }
  
  // Real-time dashboard data
  async provideDashboardData() {
    const dashboardData = {
      // High-level metrics
      overview: {
        swarmHealth: await this.getSwarmHealthScore(),
        activeAgents: await this.getActiveAgentCount(),
        totalTasks: await this.getTotalTaskCount(),
        averageResponseTime: await this.getAverageResponseTime()
      },
      
      // Performance metrics
      performance: {
        throughput: await this.getCurrentThroughput(),
        latency: await this.getCurrentLatency(),
        errorRate: await this.getCurrentErrorRate(),
        utilization: await this.getResourceUtilization()
      },
      
      // Real-time charts data
      timeSeries: {
        cpu: this.getCPUTimeSeries(),
        memory: this.getMemoryTimeSeries(),
        network: this.getNetworkTimeSeries(),
        tasks: this.getTaskTimeSeries()
      },
      
      // Alerts and notifications
      alerts: await this.getActiveAlerts(),
      notifications: await this.getRecentNotifications(),
      
      // Agent status
      agents: await this.getAgentStatusSummary(),
      
      timestamp: Date.now()
    };
    
    // Broadcast to subscribers
    this.broadcast(dashboardData);
    
    return dashboardData;
  }
  
  // WebSocket subscription management
  subscribe(callback) {
    this.subscribers.add(callback);
    return () => this.subscribers.delete(callback);
  }
  
  broadcast(data) {
    this.subscribers.forEach(callback => {
      try {
        callback(data);
      } catch (error) {
        console.error('Dashboard subscriber error:', error);
      }
    });
  }
}

Operational Commands

Monitoring Commands

# Start comprehensive monitoring
npx claude-flow performance-report --format detailed --timeframe 24h

# Real-time bottleneck analysis
npx claude-flow bottleneck-analyze --component swarm-coordination

# Health check all components
npx claude-flow health-check --components ["swarm", "agents", "coordination"]

# Collect specific metrics
npx claude-flow metrics-collect --components ["cpu", "memory", "network"]

# Monitor SLA compliance
npx claude-flow sla-monitor --service swarm-coordination --threshold 99.9

Alert Configuration

# Configure performance alerts
npx claude-flow alert-config --metric cpu_usage --threshold 80 --severity warning

# Set up anomaly detection
npx claude-flow anomaly-setup --models ["statistical", "ml", "time_series"]

# Configure notification channels
npx claude-flow notification-config --channels ["slack", "email", "webhook"]

Integration Points

With Other Optimization Agents

  • Load Balancer: Provides performance data for load balancing decisions
  • Topology Optimizer: Supplies network and coordination metrics
  • Resource Manager: Shares resource utilization and forecasting data

With Swarm Infrastructure

  • Task Orchestrator: Monitors task execution performance
  • Agent Coordinator: Tracks agent health and performance
  • Memory System: Stores historical performance data and patterns

Performance Analytics

Key Metrics Dashboard

// Performance analytics engine
const analytics = {
  // Key Performance Indicators
  calculateKPIs(metrics) {
    return {
      // Availability metrics
      uptime: this.calculateUptime(metrics),
      availability: this.calculateAvailability(metrics),
      
      // Performance metrics
      responseTime: {
        average: this.calculateAverage(metrics.responseTimes),
        p50: this.calculatePercentile(metrics.responseTimes, 50),
        p90: this.calculatePercentile(metrics.responseTimes, 90),
        p95: this.calculatePercentile(metrics.responseTimes, 95),
        p99: this.calculatePercentile(metrics.responseTimes, 99)
      },
      
      // Throughput metrics
      throughput: this.calculateThroughput(metrics),
      
      // Error metrics
      errorRate: this.calculateErrorRate(metrics),
      
      // Resource efficiency
      resourceEfficiency: this.calculateResourceEfficiency(metrics),
      
      // Cost metrics
      costEfficiency: this.calculateCostEfficiency(metrics)
    };
  },
  
  // Trend analysis
  analyzeTrends(historicalData, timeWindow = '7d') {
    return {
      performance: this.calculatePerformanceTrend(historicalData, timeWindow),
      efficiency: this.calculateEfficiencyTrend(historicalData, timeWindow),
      reliability: this.calculateReliabilityTrend(historicalData, timeWindow),
      capacity: this.calculateCapacityTrend(historicalData, timeWindow)
    };
  }
};

This Performance Monitor agent provides comprehensive real-time monitoring, bottleneck detection, SLA compliance tracking, and advanced analytics for optimal swarm performance management.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

add-model-descriptions

免费有简介

对照HuggingFace router的模型列表与chat-ui配置,研究尚未收录的模型,编写简短英文说明,并同步添加到生产和开发配置。

  • 添加路由中新上线的模型
  • 用简短说明概括模型特点
  • 同步更新生产和开发环境的模型信息
ruvnet/ruflo7.9万2026年10月24日 更新

adr-create

免费有简介

为技术选型和设计决策创建ADR文档,沿用现有文件的连续编号,生成模板并登记到AgentDB,同时为找到的相关历史决策添加链接和依赖关系。

  • 记录采用某项技术的理由
  • 记录API或数据模型变更
  • 将基础设施决策形成文档
ruvnet/ruflo7.9万2026年10月24日 更新

adr-index

免费有简介

读取记录架构决策及其原因的ADR,创建并更新搜索索引和依赖关系图。支持两种文档格式,并汇总引用与状态的不一致情况。

  • 导入其他项目的ADR后建立索引
  • 同步文件与关系图
  • 为现有代码库开始管理ADR
ruvnet/ruflo7.9万2026年10月24日 更新

adr-reindex

免费有简介

删除ADR设计决策记录或关系信息后,清空并重建索引,移除残留的旧条目,再核对当前文件数与索引记录数是否一致;也可预览重建内容而不作更改。

  • 删除ADR文件后重建索引
  • 删除ADR关系后清理残留记录
  • 定期核对并重建ADR索引
ruvnet/ruflo7.9万2026年10月24日 更新

adr-review

免费有简介

将代码差异与记录已采纳设计决策的ADR进行核对,整理违反决策、引用过时记录及缺少相关记录的变更,并提出代码修正或决策调整建议。

  • 合并PR前检查设计决策
  • 核对重大变更与设计决策
  • 查找对已被替代ADR的引用
ruvnet/ruflo7.9万2026年10月24日 更新

adr-verify

免费有简介

检查已保存的架构决策记录(ADR),报告失效引用、替代关系中的循环和状态不一致问题,适合导入后的校验与发布前的数据检查。

  • 检查ADR导入后的数据一致性
  • 在持续集成中检测不一致问题
  • 发布前检查已保存的ADR数据
ruvnet/ruflo7.9万2026年10月24日 更新

查看 ruvnet 的全部技能

报告此技能的问题