Spaces:
Runtime error
Runtime error
Update server/state.py
Browse files- server/state.py +54 -1
server/state.py
CHANGED
|
@@ -19,6 +19,29 @@ class PinkSkyState:
|
|
| 19 |
cls._instance = super().__new__(cls)
|
| 20 |
return cls._instance
|
| 21 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 22 |
def __init__(self):
|
| 23 |
if PinkSkyState._initialized:
|
| 24 |
return
|
|
@@ -343,7 +366,37 @@ FORMAT (STRICT JSON):
|
|
| 343 |
self.build_history = data.get("build", [])
|
| 344 |
except Exception as e:
|
| 345 |
print(f"⚠️ Ошибка загрузки истории: {e}")
|
| 346 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 347 |
def save_roles(self):
|
| 348 |
data = {k: {"name": v.name, "prompt": v.prompt, "description": v.description,
|
| 349 |
"preferred_models": v.preferred_models, "complexity": v.complexity, "tags": v.tags}
|
|
|
|
| 19 |
cls._instance = super().__new__(cls)
|
| 20 |
return cls._instance
|
| 21 |
|
| 22 |
+
def load_all(self):
|
| 23 |
+
"""Загружает модели, роли и кондукторы из файлов."""
|
| 24 |
+
self._load_models()
|
| 25 |
+
self._load_roles()
|
| 26 |
+
self._load_conductors()
|
| 27 |
+
self._load_history()
|
| 28 |
+
|
| 29 |
+
def _load_models(self):
|
| 30 |
+
defaults = {
|
| 31 |
+
name: self._build_model_config(name, data)
|
| 32 |
+
for name, data in MODEL_RANKING.items()
|
| 33 |
+
}
|
| 34 |
+
if os.path.exists(MODELS_FILE):
|
| 35 |
+
try:
|
| 36 |
+
with open(MODELS_FILE, "r", encoding="utf-8") as f:
|
| 37 |
+
custom = json.load(f)
|
| 38 |
+
for k, v in custom.items():
|
| 39 |
+
if k not in defaults:
|
| 40 |
+
defaults[k] = ModelConfig(**v)
|
| 41 |
+
except Exception as e:
|
| 42 |
+
self.logger.error(f"Ошибка загрузки models.json: {e}")
|
| 43 |
+
self.models = defaults
|
| 44 |
+
|
| 45 |
def __init__(self):
|
| 46 |
if PinkSkyState._initialized:
|
| 47 |
return
|
|
|
|
| 366 |
self.build_history = data.get("build", [])
|
| 367 |
except Exception as e:
|
| 368 |
print(f"⚠️ Ошибка загрузки истории: {e}")
|
| 369 |
+
def __init__(self):
|
| 370 |
+
if PinkSkyState._initialized:
|
| 371 |
+
return
|
| 372 |
+
PinkSkyState._initialized = True
|
| 373 |
+
self.logger = logging.getLogger(__name__)
|
| 374 |
+
self.models: Dict[str, ModelConfig] = {}
|
| 375 |
+
self.roles: Dict[str, Role] = {}
|
| 376 |
+
self.conductors: Dict[str, Conductor] = {}
|
| 377 |
+
self.current_mode: str = "chat"
|
| 378 |
+
self.current_conductor: str = "default"
|
| 379 |
+
self.current_role: str = "universal"
|
| 380 |
+
self.current_model: str = "deepseek-v4-pro"
|
| 381 |
+
self.chat_history: List[Dict[str, str]] = []
|
| 382 |
+
self.skill_history: List[Dict[str, str]] = []
|
| 383 |
+
self.build_history: List[Dict[str, str]] = []
|
| 384 |
+
self.build_context: Dict[str, Any] = {
|
| 385 |
+
"spec": "",
|
| 386 |
+
"agents": 3,
|
| 387 |
+
"models_tier": "tier1",
|
| 388 |
+
"skills_count": 2,
|
| 389 |
+
"files_count": 3,
|
| 390 |
+
"role": "universal",
|
| 391 |
+
"strategy": "parallel",
|
| 392 |
+
"use_interpreter": True,
|
| 393 |
+
"notifications": True,
|
| 394 |
+
"internet_access": True,
|
| 395 |
+
}
|
| 396 |
+
self.cancel_flag: bool = False
|
| 397 |
+
self.last_history_save: Optional[datetime] = None
|
| 398 |
+
self.load_all() # Теперь метод load_all доступен
|
| 399 |
+
|
| 400 |
def save_roles(self):
|
| 401 |
data = {k: {"name": v.name, "prompt": v.prompt, "description": v.description,
|
| 402 |
"preferred_models": v.preferred_models, "complexity": v.complexity, "tags": v.tags}
|