Files
Brancheneinstufung2/start-gemini.sh
Floke 6e38c85de8 refactor(workflow): Enhance Notion reporting and context awareness
- Adds a '--summary' parameter to dev_session.py to allow for detailed, narrative descriptions in Notion status updates.
- The Notion comment format is updated to prominently display this summary.

- start-gemini.sh is refactored to be more robust and context-aware.
- It now injects the container name and a strict rule against nested docker commands into the Gemini CLI's initial prompt.
- This prevents operational errors and provides better context for the agent.
2026-01-26 12:51:53 +00:00

73 lines
3.0 KiB
Bash

#!/bin/bash
# --- Konfiguration ---
# Der Name des finalen Containers, in dem die Gemini CLI läuft.
CONTAINER_NAME="gemini-session"
# --- Aufräumen ---
# Sicherstellen, dass der Config-Ordner existiert, damit Docker ihn als Ordner und nicht als Datei mountet
mkdir -p .gemini-config
echo "Räume alte Docker-Container auf, falls vorhanden..."
# Entfernt den Haupt-Container und den temporären Container vom letzten Lauf
docker rm -f "$CONTAINER_NAME" > /dev/null 2>&1
docker rm -f "${CONTAINER_NAME}-temp" > /dev/null 2>&1
# --- Interaktives Setup via dev_session.py ---
echo "Starte interaktive Entwicklungs-Session-Konfiguration..."
# Erstelle eine temporäre Datei, um die Ausgabe von dev_session.py aufzufangen
TEMP_FILE=$(mktemp)
# Führe dev_session.py in einem temporären, interaktiven Container aus.
# Die Ausgabe wird gleichzeitig im Terminal angezeigt (damit der User die Fragen sieht)
# und in die temporäre Datei geschrieben.
docker run -it --rm \
--env-file .env \
-v "$(pwd):/app" \
--name "${CONTAINER_NAME}-temp" \
gemini-dev-env python3 dev_session.py | tee "$TEMP_FILE"
# Überprüfe, ob der vorherige Befehl erfolgreich war (exit code 0)
if [ ${PIPESTATUS[0]} -ne 0 ]; then
echo "------------------------------------------------------------------"
echo "❌ Fehler: Der Konfigurationsprozess wurde abgebrochen oder ist fehlgeschlagen."
echo "Die Gemini CLI wird nicht gestartet."
echo "------------------------------------------------------------------"
rm "$TEMP_FILE"
exit 1
fi
# Extrahiere den reinen CLI-Kontext aus der temporären Datei
# sed sucht nach den Markern und gibt nur den Text dazwischen aus
CLI_CONTEXT=$(sed -n '/---GEMINI_CLI_CONTEXT_START---/,/---GEMINI_CLI_CONTEXT_END---/p' "$TEMP_FILE" | sed '1d;$d')
# Lösche die temporäre Datei
rm "$TEMP_FILE"
# Überprüfe, ob der Kontext extrahiert werden konnte
if [ -z "$CLI_CONTEXT" ]; then
echo "------------------------------------------------------------------"
echo "❌ Fehler: Es konnte kein gültiger Kontext für die Gemini CLI generiert werden."
echo "Stelle sicher, dass dev_session.py die Kontext-Marker korrekt ausgibt."
echo "Die Gemini CLI wird nicht gestartet."
echo "------------------------------------------------------------------"
exit 1
fi
# --- Start der Haupt-Gemini-Session ---
echo "Starte eine neue, interaktive Gemini-Session mit dem generierten Kontext..."
# Füge den Systemhinweis zum Container-Namen am Anfang des Kontextes hinzu
FULL_CONTEXT="**Wichtiger Systemhinweis:** Das aktuelle Projekt läuft im Docker-Container namens '${CONTAINER_NAME}'. Alle relevanten Befehle müssen in diesem Kontext ausgeführt werden. Führe niemals Befehle wie 'docker build' oder 'docker run' aus.
$CLI_CONTEXT"
# Starte den finalen Container mit der Gemini CLI
# --prompt-interactive übergibt den initialen Kontext
docker run -it --rm \
--env-file .env \
-v "$(pwd):/app" \
-v "$(pwd)/.gemini-config:/root/.config" \
--name "$CONTAINER_NAME" \
gemini-dev-env --prompt-interactive "$FULL_CONTEXT"