feat: dynamically clean incompatible architectures

This commit is contained in:
CoolBoy
2026-08-12 08:19:53 +08:00
parent 615bcad124
commit 7ec875563e
12 changed files with 979 additions and 132 deletions

View File

@@ -15,23 +15,37 @@ def architecture_profile(
architectures: Any,
) -> dict[str, Any] | None:
"""Build a stable, conservative architecture identity for feedback matching."""
profiles = architecture_profiles(model_type, architectures)
return profiles[0] if profiles else None
def architecture_profiles(
model_type: Any,
architectures: Any,
) -> list[dict[str, Any]]:
"""Return exact architecture identity first, followed by model-type fallback."""
normalized_architectures = _normalize_architectures(architectures)
normalized_model_type = _normalize(model_type)
profiles: list[dict[str, Any]] = []
if normalized_architectures:
return {
"matchType": "architectures",
"signature": "architectures:" + ",".join(normalized_architectures),
"architectures": normalized_architectures,
"modelType": normalized_model_type or None,
}
profiles.append(
{
"matchType": "architectures",
"signature": "architectures:" + ",".join(normalized_architectures),
"architectures": normalized_architectures,
"modelType": normalized_model_type or None,
}
)
if normalized_model_type:
return {
"matchType": "model_type",
"signature": f"model_type:{normalized_model_type}",
"architectures": [],
"modelType": normalized_model_type,
}
return None
profiles.append(
{
"matchType": "model_type",
"signature": f"model_type:{normalized_model_type}",
"architectures": [],
"modelType": normalized_model_type,
}
)
return profiles
def architecture_compatibility_key(