mirror of
https://github.com/proffesor-for-testing/agentic-qe.git
synced 2026-09-19 08:45:47 +08:00
514313d416
Phase 3 Track H - Tool Categories: - Add category comments to all 95 tool definitions - Organize tools with section headers (11 major sections) - Enhance tools_discover with category filtering (comma-separated) - Add tools_discover and tools_load_domain to TOOL_NAMES Phase 3 Track I - Keyword Auto-Loading: - Expand keywords from 81 to 341 across 7 domains - Add domain relationships (security→quality, coverage→quality, etc.) - Implement tool caching with usage tracking - Add auto-load metrics and history tracking Verified Metrics: - Initial load: 95 → 12 core tools (87% reduction) - Token cost: ~18,652 → ~2,463 tokens (87% savings) - Keyword coverage: 341 keywords across 9 domains - Auto-detection: Working for all domains Files Changed: - src/mcp/tools.ts - Category comments, section headers - src/mcp/tool-categories.ts - 341 keywords, domain relationships - src/mcp/lazy-loader.ts - Usage tracking, caching - src/mcp/server.ts - Enhanced tools_discover handler Documentation: - docs/analysis/phase3-track-h-category-assignment.md - docs/analysis/phase3-tracki-keyword-enhancements.md 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
109 lines
4.6 KiB
TypeScript
109 lines
4.6 KiB
TypeScript
/**
|
|
* Usage Tracking and Caching Example
|
|
* Demonstrates the new usage tracking and frequency-based preloading features
|
|
*
|
|
* Issue #115 Phase 3 Track I Implementation
|
|
*/
|
|
|
|
import { getToolLoader } from '../src/mcp/lazy-loader.js';
|
|
|
|
// Get the singleton loader instance
|
|
const loader = getToolLoader();
|
|
|
|
console.log('=== Usage Tracking and Caching Demo ===\n');
|
|
|
|
// 1. Simulate tool usage patterns
|
|
console.log('1. Simulating tool usage...');
|
|
loader.trackToolUsage('mcp__agentic_qe__test_generate_enhanced');
|
|
loader.trackToolUsage('mcp__agentic_qe__test_execute');
|
|
loader.trackToolUsage('mcp__agentic_qe__coverage_analyze_stream');
|
|
loader.trackToolUsage('mcp__agentic_qe__coverage_detect_gaps_ml');
|
|
loader.trackToolUsage('mcp__agentic_qe__coverage_recommend_tests');
|
|
loader.trackToolUsage('mcp__agentic_qe__test_generate_enhanced'); // Used again
|
|
loader.trackToolUsage('mcp__agentic_qe__coverage_analyze_stream'); // Used again
|
|
loader.trackToolUsage('mcp__agentic_qe__qe_qualitygate_evaluate');
|
|
loader.trackToolUsage('mcp__agentic_qe__qe_code_quality_complexity');
|
|
|
|
// 2. Load some domains to track domain usage
|
|
console.log('\n2. Loading domains...');
|
|
loader.loadDomain('coverage');
|
|
loader.loadDomain('quality');
|
|
loader.loadDomain('coverage'); // Load again (should show already loaded)
|
|
|
|
// 3. Simulate more tool usage
|
|
console.log('\n3. Simulating more tool usage...');
|
|
loader.trackToolUsage('mcp__agentic_qe__coverage_analyze_stream'); // Coverage tool
|
|
loader.trackToolUsage('mcp__agentic_qe__coverage_detect_gaps_ml'); // Coverage tool
|
|
loader.trackToolUsage('mcp__agentic_qe__qe_qualitygate_evaluate'); // Quality tool
|
|
loader.trackToolUsage('mcp__agentic_qe__performance_run_benchmark');
|
|
|
|
// 4. Get top tools usage statistics
|
|
console.log('\n4. Top 5 Most Used Tools:');
|
|
const topTools = loader.getTopTools(5);
|
|
topTools.forEach((stat, index) => {
|
|
console.log(` ${index + 1}. ${stat.toolName}`);
|
|
console.log(` - Call count: ${stat.callCount}`);
|
|
console.log(` - Domain: ${stat.domain || 'unknown'}`);
|
|
console.log(` - Last used: ${new Date(stat.lastUsed).toLocaleString()}`);
|
|
});
|
|
|
|
// 5. Get domain usage statistics
|
|
console.log('\n5. Domain Usage Statistics:');
|
|
const domainStats = loader.getDomainUsageStats();
|
|
domainStats.forEach((stat) => {
|
|
console.log(` ${stat.domain}:`);
|
|
console.log(` - Load count: ${stat.loadCount}`);
|
|
console.log(` - Tool usage count: ${stat.toolUsageCount}`);
|
|
console.log(` - Average tools per load: ${stat.averageToolsPerLoad.toFixed(2)}`);
|
|
console.log(` - Last loaded: ${new Date(stat.lastLoaded).toLocaleString()}`);
|
|
});
|
|
|
|
// 6. Demonstrate preloading frequent domains
|
|
console.log('\n6. Preloading frequently used domains (threshold: 2)...');
|
|
const preloadResults = loader.preloadFrequentDomains(2);
|
|
preloadResults.forEach((result) => {
|
|
console.log(` - Loaded ${result.domain}: ${result.toolsLoaded.length} tools`);
|
|
});
|
|
|
|
// 7. Export usage statistics
|
|
console.log('\n7. Exporting usage statistics...');
|
|
const exportedStats = loader.exportUsageStats();
|
|
console.log(` - Exported ${exportedStats.toolStats.length} tool stats`);
|
|
console.log(` - Exported ${exportedStats.domainStats.length} domain stats`);
|
|
console.log(` - Export timestamp: ${new Date(exportedStats.exportedAt).toLocaleString()}`);
|
|
|
|
// 8. Show current loader state
|
|
console.log('\n8. Current Loader State:');
|
|
const stats = loader.getStats();
|
|
console.log(` - Core tools: ${stats.coreTools}`);
|
|
console.log(` - Loaded domains: ${stats.loadedDomains.join(', ')}`);
|
|
console.log(` - Available domains: ${stats.availableDomains.join(', ')}`);
|
|
console.log(` - Total loaded: ${stats.totalLoaded}`);
|
|
console.log(` - Total available: ${stats.totalAvailable}`);
|
|
|
|
// 9. Demonstrate import/export cycle
|
|
console.log('\n9. Testing import/export cycle...');
|
|
const savedStats = loader.exportUsageStats();
|
|
loader.clearUsageStats();
|
|
console.log(' - Cleared all usage stats');
|
|
|
|
const emptyStats = loader.getToolUsageStats();
|
|
console.log(` - Tool stats after clear: ${emptyStats.length}`);
|
|
|
|
loader.importUsageStats(savedStats);
|
|
const restoredStats = loader.getToolUsageStats();
|
|
console.log(` - Tool stats after import: ${restoredStats.length}`);
|
|
|
|
// 10. Show tracking state
|
|
console.log('\n10. Usage Tracking State:');
|
|
console.log(` - Tracking enabled: ${loader.isUsageTrackingEnabled()}`);
|
|
|
|
// Disable and re-enable tracking
|
|
loader.setUsageTracking(false);
|
|
console.log(` - After disable: ${loader.isUsageTrackingEnabled()}`);
|
|
|
|
loader.setUsageTracking(true);
|
|
console.log(` - After enable: ${loader.isUsageTrackingEnabled()}`);
|
|
|
|
console.log('\n=== Demo Complete ===');
|