feat: add runner failover rules and cache affinity

This commit is contained in:
2026-06-28 20:50:23 +08:00
parent 41bb3a6525
commit 0e675e259c
31 changed files with 2939 additions and 470 deletions
+19
View File
@@ -39,12 +39,21 @@ func failoverTraceEntry(decision failoverDecision, candidate store.RuntimeModelC
if decision.CooldownSeconds > 0 {
entry["cooldownSeconds"] = decision.CooldownSeconds
}
if decision.Target != "" {
entry["target"] = decision.Target
}
if decision.DemoteSteps > 0 {
entry["demoteSteps"] = decision.DemoteSteps
}
return entry
}
func priorityDemoteTraceEntry(decision priorityDemoteDecision, platformID string, platformModelID string, dynamicPriority int) map[string]any {
entry := policyTraceEntry("priority_demoted", "priority_demote", "demote", decision.Reason, decision.Match, decision.Info)
entry["demote"] = decision.Demote
if decision.DemoteSteps > 0 {
entry["demoteSteps"] = decision.DemoteSteps
}
if dynamicPriority > 0 {
entry["dynamicPriority"] = dynamicPriority
}
@@ -78,6 +87,16 @@ func addCandidatePriorityTraceFields(entry map[string]any, candidate store.Runti
if candidate.PlatformName != "" {
entry["currentPlatformName"] = candidate.PlatformName
}
if candidate.CacheAffinity.Key != "" {
entry["cacheAffinityKey"] = candidate.CacheAffinity.Key
entry["cacheAffinityScore"] = candidate.CacheAffinity.Score
entry["cacheAffinityConfidence"] = candidate.CacheAffinity.Confidence
entry["cacheAffinityHitRatio"] = candidate.CacheAffinity.EMAHitRatio
entry["cacheAffinityLastHitRatio"] = candidate.CacheAffinity.LastHitRatio
entry["cacheAffinityCachedInputTokens"] = candidate.CacheAffinity.CachedInputTokens
entry["cacheAffinityBoost"] = candidate.CacheAffinity.Boost
entry["cacheAffinityApplied"] = candidate.CacheAffinity.Applied
}
}
func policyTraceEntry(event string, scope string, action string, reason string, match policyRuleMatch, info failureInfo) map[string]any {