Se detectaron 5 problemas en la autoevaluación del LLM durante el ciclo de auditoría cognitiva:
- “no hay inferencias no verificadas” — falso positivo, el LLM usaba lenguaje inferencial sin marcarlo como tal
routing_mode: adaptive— contradiceadaptive_scoring: NO DISPONIBLElatencia estimada 2.25 ms— confundenode_latency_msconinference_latency_ms- “motivo REAL” — afirmación inferida pero etiquetada como REAL
- qdrant_recall en DEBUG — aparecía como número suelto (
5) sin semántica
Archivos modificados
Section titled “Archivos modificados”| Archivo | Cambio |
|---|---|
runtime/llm/router_api.py | Reglas 11-15 en build_system_context(), DEBUG template dinámico |
runtime/agent/context_shaper.py | profile inyectado en HARD FACTS JSON, routing_mode soportado |
runtime/llm/model_router.py | mode añadido al node dict |
Reglas añadidas
Section titled “Reglas añadidas”Se añadieron 5 reglas a build_system_context() en router_api.py:
11. Palabras clave (due to, based on, probablemente, etc.) → INFERIDO + self-critique12. routing_mode solo 'adaptive' si HARD FACTS lo contiene. Valores: primary/fallback13. latency_ms en GPU nodes = latencia de red, NO de inferencia14. Afirmaciones con "REAL" deben tener fuente explícita en HARD FACTS15. "REAL" solo si existe literalmente en HARD FACTS o routing.reason_codesDEBUG template
Section titled “DEBUG template”Antes: template hardcodeado con NO DISPONIBLE para todo.
[AI-LAB DEBUG] task model node context_size:NO DISPONIBLE budget_used:NO DISPONIBLEadaptive_scoring:NO DISPONIBLE working_memory:NO DISPONIBLEqdrant_enabled:NO DISPONIBLE watchdog:NO DISPONIBLE health:NO DISPONIBLEAhora: template dinámico que instruye al LLM a poblar desde HARD FACTS.
[AI-LAB DEBUG] profile=<profile del JSON>, task=<inferido de la solicitud>,model=<model_id>, node=<node_name>, budget_used=<del sistema>,adaptive_scoring=<si en HARD FACTS>, working_memory=<si en HARD FACTS>,qdrant_recall=<matches, collections, chars del semantic_recall en JSON>,watchdog=<health.watchdog>, health=<health.score>profile en HARD FACTS JSON
Section titled “profile en HARD FACTS JSON”El campo profile (task_type: reasoning/coding/fast) ahora se inyecta en el JSON de HARD FACTS vía _hard_extra en context_shaper.py. El LLM puede referenciarlo sin inferirlo.
routing_mode en HARD FACTS JSON
Section titled “routing_mode en HARD FACTS JSON”El modo de enrutamiento (primary/fallback) ahora se incluye como routing.mode en el JSON de HARD FACTS. Se obtiene de task_router.select_node() en lugar de ser inferido por el LLM.
Commit
Section titled “Commit”8e78dce fix: prompt discipline rules 15, profile in HARD FACTS, qdrant_recall estructura