Implement intelligent agent learning from Knowledge Graph execution history with per-task-type expertise tracking, recency bias, and learning curves. ## Phase 5.3 Implementation ### Learning Infrastructure (✅ Complete) - LearningProfileService with per-task-type expertise metrics - TaskTypeExpertise model tracking success_rate, confidence, learning curves - Recency bias weighting: recent 7 days weighted 3x higher (exponential decay) - Confidence scoring prevents overfitting: min(1.0, executions / 20) - Learning curves computed from daily execution windows ### Agent Scoring Service (✅ Complete) - Unified AgentScore combining SwarmCoordinator + learning profiles - Scoring formula: 0.3*base + 0.5*expertise + 0.2*confidence - Rank agents by combined score for intelligent assignment - Support for recency-biased scoring (recent_success_rate) - Methods: rank_agents, select_best, rank_agents_with_recency ### KG Integration (✅ Complete) - KGPersistence::get_executions_for_task_type() - query by agent + task type - KGPersistence::get_agent_executions() - all executions for agent - Coordinator::load_learning_profile_from_kg() - core KG→Learning integration - Coordinator::load_all_learning_profiles() - batch load for multiple agents - Convert PersistedExecution → ExecutionData for learning calculations ### Agent Assignment Integration (✅ Complete) - AgentCoordinator uses learning profiles for task assignment - extract_task_type() infers task type from title/description - assign_task() scores candidates using AgentScoringService - Fallback to load-based selection if no learning data available - Learning profiles stored in coordinator.learning_profiles RwLock ### Profile Adapter Enhancements (✅ Complete) - create_learning_profile() - initialize empty profiles - add_task_type_expertise() - set task-type expertise - update_profile_with_learning() - update swarm profiles from learning ## Files Modified ### vapora-knowledge-graph/src/persistence.rs (+30 lines) - get_executions_for_task_type(agent_id, task_type, limit) - get_agent_executions(agent_id, limit) ### vapora-agents/src/coordinator.rs (+100 lines) - load_learning_profile_from_kg() - core KG integration method - load_all_learning_profiles() - batch loading for agents - assign_task() already uses learning-based scoring via AgentScoringService ### Existing Complete Implementation - vapora-knowledge-graph/src/learning.rs - calculation functions - vapora-agents/src/learning_profile.rs - data structures and expertise - vapora-agents/src/scoring.rs - unified scoring service - vapora-agents/src/profile_adapter.rs - adapter methods ## Tests Passing - learning_profile: 7 tests ✅ - scoring: 5 tests ✅ - profile_adapter: 6 tests ✅ - coordinator: learning-specific tests ✅ ## Data Flow 1. Task arrives → AgentCoordinator::assign_task() 2. Extract task_type from description 3. Query KG for task-type executions (load_learning_profile_from_kg) 4. Calculate expertise with recency bias 5. Score candidates (SwarmCoordinator + learning) 6. Assign to top-scored agent 7. Execution result → KG → Update learning profiles ## Key Design Decisions ✅ Recency bias: 7-day half-life with 3x weight for recent performance ✅ Confidence scoring: min(1.0, total_executions / 20) prevents overfitting ✅ Hierarchical scoring: 30% base load, 50% expertise, 20% confidence ✅ KG query limit: 100 recent executions per task-type for performance ✅ Async loading: load_learning_profile_from_kg supports concurrent loads ## Next: Phase 5.4 - Cost Optimization Ready to implement budget enforcement and cost-aware provider selection.
8.2 KiB
Changelog
All notable changes to VAPORA will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
Added
- Intelligent learning system for multi-agent coordination
- Cost optimization with budget enforcement
- Gradual production deployment guide
1.2.0 - 2026-01-11
Added - Phase 5.3: Multi-Agent Learning
-
Learning Profiles: Per-task-type expertise tracking for each agent
LearningProfilestruct with task-type expertise mapping- Success rate calculation with recency bias (7-day window weighted 3x)
- Confidence scoring based on execution count (prevents small-sample overfitting)
- Learning curve computation with exponential decay
-
Agent Scoring Service: Unified agent selection combining swarm metrics + learning
- Formula:
final_score = 0.3*base + 0.5*expertise + 0.2*confidence - Base score from SwarmCoordinator (load balancing)
- Expertise score from learning profiles (historical success)
- Confidence weighting dampens low-execution-count agents
- Formula:
-
Knowledge Graph Integration: Learning curve calculator
calculate_learning_curve()with time-series expertise evolutionapply_recency_bias()with exponential weighting formula- Aggregate by time windows (daily/weekly) for trend analysis
-
Coordinator Enhancement: Learning-based agent selection
- Extract task type from description/role
- Query learning profiles for task-specific expertise
- Replace simple load balancing with learning-aware scoring
- Background profile synchronization (30s interval)
Added - Phase 5.4: Cost Optimization
-
Budget Manager: Per-role cost enforcement
BudgetConfigwith TOML serialization/deserialization- Role-specific monthly and weekly limits (in cents)
- Automatic fallback provider when budget exceeded
- Alert thresholds (default 80% utilization)
- Weekly/monthly automatic resets
-
Configuration Loading: Graceful budget initialization
BudgetConfig::load()with strict validationBudgetConfig::load_or_default()with fallback to empty config- Environment variable override:
BUDGET_CONFIG_PATH - Validation: limits > 0, thresholds in [0.0, 1.0]
-
Cost-Aware Routing: Provider selection with budget constraints
- Three-tier enforcement:
- Budget exceeded → force fallback provider
- Near threshold (>80%) → prefer cost-efficient providers
- Normal → rule-based routing with cost as tiebreaker
- Cost efficiency ranking:
(quality * 100) / (cost + 1) - Fallback chain ordering by cost (Ollama → Gemini → OpenAI → Claude)
- Three-tier enforcement:
-
Prometheus Metrics: Real-time cost and budget monitoring
vapora_llm_budget_remaining_cents{role}- Monthly budget remainingvapora_llm_budget_utilization{role}- Budget usage fraction (0.0-1.0)vapora_llm_fallback_triggered_total{role,reason}- Fallback event countervapora_llm_cost_per_provider_cents{provider}- Cumulative cost per providervapora_llm_tokens_per_provider{provider,type}- Token usage tracking
-
Grafana Dashboards: Visual monitoring
- Budget utilization gauge (color thresholds: 70%, 90%, 100%)
- Cost distribution pie chart (percentage per provider)
- Fallback trigger time series (rate of fallback activations)
- Agent assignment latency histogram (P50, P95, P99)
-
Alert Rules: Prometheus alerting
BudgetThresholdExceeded: Utilization > 80% for 5 minutesHighFallbackRate: Rate > 0.1 for 10 minutesCostAnomaly: Cost spike > 2x historical averageLearningProfilesInactive: No updates for 5 minutes
Added - Integration & Testing
-
End-to-End Integration Tests: Validate learning + budget interaction
test_end_to_end_learning_with_budget_enforcement()- Full system testtest_learning_selection_with_budget_constraints()- Budget pressure scenariostest_learning_profile_improvement_with_budget_tracking()- Learning evolution
-
Agent Server Integration: Budget initialization at startup
- Load budget configuration from
config/agent-budgets.toml - Initialize BudgetManager with Arc for thread-safe sharing
- Attach to coordinator via
with_budget_manager()builder pattern - Graceful fallback if no configuration exists
- Load budget configuration from
-
Coordinator Builder Pattern: Budget manager attachment
- Added
budget_manager: Option<Arc<BudgetManager>>field with_budget_manager()method for fluent API- Updated all constructors (
new(),with_registry()) - Backward compatible (works without budget configuration)
- Added
Added - Documentation
-
Implementation Summary:
.coder/2026-01-11-phase-5-completion.done.md- Complete architecture overview (3-layer integration)
- All files created/modified with line counts
- Prometheus metrics reference
- Quality metrics (120 tests passing)
- Educational insights
-
Gradual Deployment Guide:
guides/gradual-deployment-guide.md- Week 1: Staging validation (24 hours)
- Week 2-3: Canary deployment (incremental traffic shift)
- Week 4+: Production rollout (100% traffic)
- Automated rollback procedures (< 5 minutes)
- Success criteria per phase
- Emergency procedures and checklists
Changed
-
LLMRouter: Enhanced with budget awareness
select_provider_with_budget()method for budget-aware routing- Fixed incomplete fallback implementation (lines 227-246)
- Cost-ordered fallback chain (cheapest first)
-
ProfileAdapter: Learning integration
update_from_kg_learning()method for learning profile sync- Query KG for task-specific executions with recency filter
- Calculate success rate with 7-day exponential decay
-
AgentCoordinator: Learning-based assignment
- Replaced min-load selection with
AgentScoringService - Extract task type from task description
- Combine swarm metrics + learning profiles for final score
- Replaced min-load selection with
Fixed
-
Clippy Warnings: All resolved (0 warnings)
redundant_guardsin BudgetConfigneedless_borrowin registry defaultsor_insert_with→or_default()conversionsmap_clone→cloned()conversionsmanual_div_ceil→div_ceil()method
-
Test Warnings: Unused variables marked with underscore prefix
Technical Details
New Files Created (13):
vapora-agents/src/learning_profile.rs(250 lines)vapora-agents/src/scoring.rs(200 lines)vapora-knowledge-graph/src/learning.rs(150 lines)vapora-llm-router/src/budget.rs(300 lines)vapora-llm-router/src/cost_ranker.rs(180 lines)vapora-llm-router/src/cost_metrics.rs(120 lines)config/agent-budgets.toml(50 lines)vapora-agents/tests/end_to_end_learning_budget_test.rs(NEW)- 4+ integration test files (700+ lines total)
Modified Files (10):
vapora-agents/src/coordinator.rs- Learning integrationvapora-agents/src/profile_adapter.rs- KG syncvapora-agents/src/bin/server.rs- Budget initializationvapora-llm-router/src/router.rs- Cost-aware routingvapora-llm-router/src/lib.rs- Budget exports- Plus 5 more lib.rs and config updates
Test Suite:
- Total: 120 tests passing
- Unit tests: 71 (vapora-agents: 41, vapora-llm-router: 30)
- Integration tests: 42 (learning: 7, coordinator: 9, budget: 11, cost: 12, end-to-end: 3)
- Quality checks: Zero warnings, clippy -D warnings passing
Deployment Readiness:
- Staging validation checklist complete
- Canary deployment Istio VirtualService configured
- Grafana dashboards deployed
- Alert rules created
- Rollback automation ready (< 5 minutes)
0.1.0 - 2026-01-10
Added
- Initial release with core platform features
- Multi-agent orchestration with 12 specialized roles
- Multi-IA router (Claude, OpenAI, Gemini, Ollama)
- Kanban board UI with glassmorphism design
- SurrealDB multi-tenant data layer
- NATS JetStream agent coordination
- Kubernetes-native deployment
- Istio service mesh integration
- MCP plugin system
- RAG integration for semantic search
- Cedar policy engine RBAC
- Full-stack Rust implementation (Axum + Leptos)