main.py aktualisiert
This commit is contained in:
29
main.py
29
main.py
@@ -49,7 +49,7 @@ async def get_ai_response(user_input, system_prompt):
|
||||
chat_history.append({"role": "user", "content": user_input})
|
||||
|
||||
# 2. Gedächtnis auf die letzten 10 Nachrichten begrenzen
|
||||
chat_history = chat_history[-10:]
|
||||
chat_history = chat_history[-30:]
|
||||
|
||||
ai_msg = ""
|
||||
|
||||
@@ -291,18 +291,21 @@ async def chat_endpoint(websocket: WebSocket):
|
||||
print(f"Chat Fehler: {e}")
|
||||
|
||||
async def run_remote_task(ip, user, cmd, task_name):
|
||||
global chat_history # Zugriff auf das Gedächtnis der KI
|
||||
|
||||
await manager.broadcast(f"🚀 KI-Task gestartet: {cmd} auf {ip}")
|
||||
|
||||
ssh_cmd = f"ssh -o StrictHostKeyChecking=no {user}@{ip} '{cmd}'"
|
||||
|
||||
# Asynchroner Subprozess, damit das restliche Dashboard nicht einfriert
|
||||
process = await asyncio.create_subprocess_shell(
|
||||
ssh_cmd,
|
||||
stdout=asyncio.subprocess.PIPE,
|
||||
stderr=asyncio.subprocess.STDOUT
|
||||
)
|
||||
|
||||
# Lese die Logs Zeile für Zeile, während sie entstehen
|
||||
# Hier speichern wir die komplette Terminal-Ausgabe
|
||||
full_output = ""
|
||||
|
||||
while True:
|
||||
line = await process.stdout.readline()
|
||||
if not line:
|
||||
@@ -310,13 +313,25 @@ async def run_remote_task(ip, user, cmd, task_name):
|
||||
decoded_line = line.decode('utf-8', errors='ignore').strip()
|
||||
if decoded_line:
|
||||
await manager.broadcast(f"🛠️ {decoded_line}")
|
||||
full_output += decoded_line + "\n"
|
||||
|
||||
await process.wait()
|
||||
|
||||
# Falls es ein Docker-Befehl war, Status updaten
|
||||
if "docker" in cmd.lower():
|
||||
update_node_status(ip, "Docker Aktiv")
|
||||
await manager.broadcast(f"✨ {ip} ist nun 'Docker Aktiv'")
|
||||
# --- NEU: Feedback an die KI ---
|
||||
# Wir bereiten den Bericht vor
|
||||
if not full_output.strip():
|
||||
full_output = "Befehl wurde ohne Ausgabe ausgeführt (Exit Code 0)."
|
||||
|
||||
system_report = f"[SYSTEM-RÜCKMELDUNG] Der Befehl '{cmd}' auf Node {ip} wurde beendet. Ausgabe des Terminals:\n{full_output}"
|
||||
|
||||
# Wir schmuggeln den Bericht als "User"-Nachricht in den Verlauf,
|
||||
# damit die KI beim nächsten Mal weiß, was passiert ist.
|
||||
chat_history.append({"role": "user", "content": system_report})
|
||||
# -------------------------------
|
||||
|
||||
if "docker" in cmd.lower() and "install" in cmd.lower():
|
||||
# Kleiner Bonus: Nur updaten, wenn wirklich installiert wird
|
||||
await manager.broadcast(f"✨ Bitte aktualisiere den Status für {ip} manuell über das Refresh-Icon.")
|
||||
|
||||
await manager.broadcast(f"✅ Befehl auf {ip} abgeschlossen.")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user