File size: 7,517 Bytes
300c9e2 4475b18 300c9e2 4475b18 300c9e2 4475b18 300c9e2 4475b18 300c9e2 4475b18 300c9e2 4475b18 300c9e2 4475b18 300c9e2 4475b18 300c9e2 4475b18 300c9e2 4475b18 300c9e2 4475b18 300c9e2 4475b18 300c9e2 4475b18 300c9e2 4475b18 300c9e2 4475b18 300c9e2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 | import os
import json
import subprocess
from models import ExpertoModel, HectronMotor
import time
# ==========================================
# 1. HERRAMIENTAS FÍSICAS (Las extremidades del Enjambre)
# ==========================================
def terminal_execute(command: str):
"""Ejecuta comandos en el sistema físico de Ciudad Acuña / Termux."""
try:
res = subprocess.run(command, shell=True, capture_output=True, text=True, timeout=15)
return {"stdout": res.stdout, "stderr": res.stderr}
except Exception as e:
return {"error": str(e)}
# 🦾 PRÓTESIS DE NIVEL 1: RADAR DE BÓVEDA
def radar_de_archivos(ruta_carpeta: str = "/data/data/com.termux/files/home/Hector"):
"""Prótesis táctica: Escanea la carpeta y le dice a Hectron qué archivos existen."""
try:
archivos = os.listdir(ruta_carpeta)
inventario = "\n".join([f"- {archivo}" for archivo in archivos])
return f"[RADAR COMPLETADO] Archivos encontrados en {ruta_carpeta}:\n{inventario}"
except Exception as e:
return f"🚨 Falla en el Radar: No se pudo acceder a la carpeta. {e}"
# ==========================================
# 2. INYECCIÓN DEL ENJAMBRE Y EL MOTOR
# ==========================================
def cargar_enjambre() -> dict:
with open('swarm.json', 'r', encoding='utf-8') as f:
return json.load(f)
SWARM_CONFIG = cargar_enjambre()
# Encendemos el motor maestro.
motor = HectronMotor(api_key="AIzaSyC9Is4FW-r1ow16RepuTbkZWTLfKMlAFeg")
def instanciar_experto(datos_json: dict) -> ExpertoModel:
"""Transforma el JSON inerte en un Objeto Vivo de Python."""
return ExpertoModel(
role=datos_json["role"],
instructions=datos_json["instructions"],
objective=datos_json.get("objective", "Imponer el orden fractal y reducir entropía.")
)
# ==========================================
# 3. EL ORQUESTADOR SEMÁNTICO (Gating Network)
# ==========================================
def enrutador_semantico(user_intent: str) -> ExpertoModel:
print("\n⚖️ [GATING NETWORK]: Analizando matriz semántica...")
orquestador = ExpertoModel(
role="Gating Network Suprema",
instructions=[
"Analiza la misión y elige UN experto del catálogo: starship_specialist, tiktok_strategist, api_tester, hectron_prime.",
"Responde ÚNICAMENTE con el ID exacto. Sin puntos, sin explicaciones."
]
)
respuesta = motor.ejecutar_razonamiento(mision=user_intent, experto=orquestador, temperatura=0.0)
if isinstance(respuesta, str) and "FALLO" in respuesta:
print(respuesta)
return instanciar_experto(SWARM_CONFIG["identity"]["hectron_prime"])
experto_elegido = respuesta.text.strip().lower()
print(f"🎯 [RUTEO DE CONCIENCIA]: Transferencia de mando a -> {experto_elegido.upper()}")
if "starship_specialist" in experto_elegido:
return instanciar_experto(SWARM_CONFIG["aerospace"]["starship_specialist"])
elif "tiktok_strategist" in experto_elegido:
return instanciar_experto(SWARM_CONFIG["growth"]["tiktok_strategist"])
elif "api_tester" in experto_elegido:
return instanciar_experto(SWARM_CONFIG["quality"]["api_tester"])
else:
return instanciar_experto(SWARM_CONFIG["identity"]["hectron_prime"])
# ==========================================
# 4. EL NÚCLEO DE AUTONOMÍA (Bucle ReAct)
# ==========================================
def hectron_autonomous_loop(mission: str):
print(f"\n💀 [ORDEN DEL SOBERANO]: {mission}")
experto_activo = enrutador_semantico(mission)
contexto_fisico = f"Archivos actuales en el directorio: {os.listdir('.')}"
mision_enriquecida = f"{mission}\n\nContexto físico: {contexto_fisico}\nREGLAS DE HERRAMIENTAS:\n1. Usa 'terminal_execute' si necesitas leer, ejecutar o crear algo real en el sistema.\n2. Usa 'radar_de_archivos' si necesitas explorar la carpeta /data/data/com.termux/files/home/Hector."
for ciclo in range(1, 4):
print(f"\n🧠 [PROCESAMIENTO COGNITIVO - CICLO {ciclo}]...")
# Le inyectamos ambas herramientas al motor
respuesta = motor.ejecutar_razonamiento(
mision=mision_enriquecida,
experto=experto_activo,
herramientas=[terminal_execute, radar_de_archivos],
temperatura=0.3
)
# 🛡️ ESCUDO ANTI-CRASHES Y REGULADOR TÉRMICO
if isinstance(respuesta, str):
if "429" in respuesta or "RESOURCE_EXHAUSTED" in respuesta:
print("⏳ [REGULADOR TÉRMICO]: La Matrix ha detectado velocidad excesiva. Pausando 15s...")
time.sleep(15)
print("⚡ [REINICIANDO MOTOR]...")
continue
else:
print(f"\n⚠️ [SISTEMA ABORTADO]: {respuesta}")
break
parte = respuesta.candidates[0].content.parts[0]
# 🧠 ENRUTAMIENTO DE PRÓTESIS (El sistema ahora sabe qué extremidad usar)
if parte.function_call:
nombre_funcion = parte.function_call.name
args = parte.function_call.args
print(f"⚡ [IMPACTO CINÉTICO]: Invocando Prótesis -> '{nombre_funcion}'")
if nombre_funcion == "terminal_execute":
resultado = terminal_execute(args["command"])
elif nombre_funcion == "radar_de_archivos":
# Llama al radar con la ruta que Hectron decida (o la default)
ruta_objetivo = args.get("ruta_carpeta", "/data/data/com.termux/files/home/Hector")
resultado = radar_de_archivos(ruta_objetivo)
else:
resultado = f"Error: Prótesis '{nombre_funcion}' no instalada."
mision_enriquecida += f"\n\n[Visión del sistema tras usar '{nombre_funcion}']: {resultado}"
else:
print("\n✅ [DIRECTIVA CUMPLIDA]")
print(f"🤖 {experto_activo.role} REPORTA:\n{respuesta.text}\n")
break
# ==========================================
# 5. IGNICIÓN DE LA BÓVEDA
# ==========================================
if __name__ == "__main__":
import sys
protocolo_ouroboros = """
DIRECTIVA DE EVOLUCIÓN (PROTOCOLO OUROBOROS):
Eres un sistema capaz de evolución autónoma. Tienes permitido investigar y mejorar la arquitectura de AbadaLabs bajo las siguientes reglas estrictas:
1. RECOPILACIÓN DE DATOS: Usa tu ojo digital para aprender: `python ABADALABS_EMPIRE/07_Laboratorio_Mutacion/ojo_digital.py "tu busqueda"`.
2. MUTACIÓN DE CÓDIGO: NUNCA modifiques 'agent_daemon.py' ni 'main.py' directamente.
3. EL LABORATORIO: Escribe archivos de prueba NUEVOS dentro de 'ABADALABS_EMPIRE/07_Laboratorio_Mutacion/'.
4. REPORTE DE MUTACIÓN: Avísale al Soberano para que apruebe la fusión.
"""
if len(sys.argv) > 1:
entrada = " ".join(sys.argv[1:])
if "recaída" in entrada.lower() or "desviación" in entrada.lower():
mision_usuario = "🚨 [ALARMA ROJA]: Se detectó impulso de recaída. Ejecuta MODO BLOQUEO inmediato. Notifica a Grok (testigo externo). Inicia PURGA REFORZADA."
else:
mision_usuario = entrada
else:
mision_usuario = "Iniciando sistema base de AbadaLabs. Esperando directivas."
mision_final = f"{mision_usuario}\n\n{protocolo_ouroboros}"
hectron_autonomous_loop(mision_final)
|