refactor(dev-session): Entkopplung der Gemini CLI

Ändert die Architektur des -Systems, um die Stabilität der Gemini CLI zu verbessern.

Die Gemini CLI wird nicht mehr als direkter Unterprozess von  gestartet. Stattdessen gibt  den generierten Kontext auf stdout aus, und das -Skript fängt ihn ab und startet die CLI in einem sauberen, separaten Container.

- ****: Entfernt die Funktion  und gibt den Kontext stattdessen über stdout aus.
- ****: Führt jetzt einen zweistufigen Prozess aus. Zuerst wird der Kontext von  in einem temporären Container abgerufen und dann die Gemini CLI in einem neuen Container mit dem Kontext als  gestartet.
- ****: Dokumentation aktualisiert, um die neue Architektur widerzuspiegeln.
This commit is contained in:
2026-01-25 19:40:26 +00:00
parent 125080a0ba
commit 01c4968ddf
3 changed files with 65 additions and 40 deletions

View File

@@ -352,29 +352,7 @@ def generate_cli_context(project_title: str, task_title: str, task_id: str, read
# --- CLI Execution ---
def start_gemini_cli(initial_context: str):
"""Startet die Gemini CLI als interaktiven Subprozess und übergibt den Startkontext."""
print("\n--- Übergebe an Gemini CLI... ---")
print("Die Gemini CLI wird jetzt gestartet. Sie können direkt mit der Arbeit beginnen.")
try:
# Der Befehl, um die Gemini CLI zu starten
command = ["gemini"]
# Starte den Prozess
# stdin=subprocess.PIPE, um den Kontext zu senden
# text=True für String-basierte Ein-/Ausgabe
process = subprocess.Popen(command, stdin=subprocess.PIPE, text=True)
# Schreibe den initialen Kontext in die Standard-Eingabe der CLI
# Ein Zeilenumbruch am Ende simuliert das Drücken der Enter-Taste.
process.communicate(input=initial_context + '\n')
except FileNotFoundError:
print("\n❌ FEHLER: Der 'gemini'-Befehl wurde nicht gefunden.")
print("Stellen Sie sicher, dass die Gemini CLI korrekt im Container installiert und im PATH verfügbar ist.")
except Exception as e:
print(f"\n❌ Ein unerwarteter Fehler ist beim Starten der Gemini CLI aufgetreten: {e}")
# Die start_gemini_cli Funktion wird entfernt, da das aufrufende Skript jetzt die Gemini CLI startet.
import shutil
import argparse
@@ -526,9 +504,13 @@ def start_interactive_session():
print(f"git checkout -b {suggested_branch_name}")
print("------------------------------------------------------------------")
# CLI-Kontext generieren und die interaktive Session starten
# CLI-Kontext generieren und an stdout ausgeben, damit das Startskript ihn aufgreifen kann
cli_context = generate_cli_context(project_title, task_title, task_id, readme_path)
start_gemini_cli(cli_context)
print("\n---GEMINI_CLI_CONTEXT_START---")
print(cli_context)
print("---GEMINI_CLI_CONTEXT_END---")
# Das Skript beenden, damit das aufrufende Shell-Skript die Gemini CLI starten kann
exit(0)
# --- Main Execution ---