diff --git a/android/src/screens/ChatScreen.tsx b/android/src/screens/ChatScreen.tsx index b227484..aea6b5c 100644 --- a/android/src/screens/ChatScreen.tsx +++ b/android/src/screens/ChatScreen.tsx @@ -1036,7 +1036,10 @@ const ChatScreen: React.FC = () => { // Spotify darf waehrend "ARIA denkt/schreibt" weiterspielen — pausiert // nur wenn TTS startet (dann acquired _firePlaybackStarted den Focus). // Watchdog: solange Brain noch Lebenszeichen sendet (jedes neue - // activity-Event), Timer neu starten. 180s ohne Update → Hang. + // activity-Event), Timer neu starten. 21 Min ohne Update → Hang. + // Knapp ueber Brain-Timeout (20 Min) damit nur bei echten + // Verbindungsabbruechen / Brain-Crashes gefeuert wird, nicht waehrend + // legitimer langer Multi-Tool-Sessions die das Brain selbst kappt. clearStuckWatchdog(); if (activity !== 'idle') { stuckWatchdog.current = setTimeout(() => { @@ -1045,10 +1048,10 @@ const ChatScreen: React.FC = () => { setMessages(prev => capMessages([...prev, { id: nextId(), sender: 'aria', - text: '⚠️ Habe gerade keine Verbindung zurueck bekommen (Timeout nach 3 Min). Deine letzte Nachricht ist evtl. nicht durchgekommen — schick sie nochmal.', + text: '⚠️ Habe gerade keine Verbindung zurueck bekommen (Timeout nach 21 Min). Deine letzte Nachricht ist evtl. nicht durchgekommen — schick sie nochmal.', timestamp: Date.now(), }])); - }, 180_000); + }, 1_260_000); } } diff --git a/aria-brain/proxy_client.py b/aria-brain/proxy_client.py index c86cb7a..f1af976 100644 --- a/aria-brain/proxy_client.py +++ b/aria-brain/proxy_client.py @@ -25,7 +25,7 @@ logger = logging.getLogger(__name__) RUNTIME_CONFIG_FILE = Path("/shared/config/runtime.json") ENV_MODEL = os.environ.get("BRAIN_MODEL", "claude-sonnet-4") PROXY_URL = os.environ.get("PROXY_URL", "http://proxy:3456") -PROXY_TIMEOUT_SEC = float(os.environ.get("PROXY_TIMEOUT_SEC", "300")) +PROXY_TIMEOUT_SEC = float(os.environ.get("PROXY_TIMEOUT_SEC", "1200")) def _read_model_from_runtime() -> str: diff --git a/bridge/aria_bridge.py b/bridge/aria_bridge.py index ead3e79..5843911 100644 --- a/bridge/aria_bridge.py +++ b/bridge/aria_bridge.py @@ -1351,8 +1351,10 @@ class ARIABridge: url, data=payload, method="POST", headers={"Content-Type": "application/json"}, ) - # Cold-Start kann lange dauern, 5min Timeout - with urllib.request.urlopen(req, timeout=300) as resp: + # 20 Min Timeout — lange Multi-Tool-Workflows (Karten, + # PDFs, viele curl-Calls) brauchen das. 5 Min waren chronisch + # zu knapp und haben ARIA mitten in der Arbeit gekappt. + with urllib.request.urlopen(req, timeout=1200) as resp: return resp.status, resp.read().decode("utf-8", errors="ignore") except Exception as exc: return None, str(exc) diff --git a/docker-compose.yml b/docker-compose.yml index 740ffeb..2f955c0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -12,6 +12,7 @@ services: DIST=$$(find /usr/local/lib -path '*/claude-max-api-proxy/dist' -type d | head -1) && sed -i 's/startServer({ port })/startServer({ port, host: process.env.HOST || \"127.0.0.1\" })/' $$DIST/server/standalone.js && sed -i 's/\"--no-session-persistence\",/\"--no-session-persistence\",\"--dangerously-skip-permissions\",/' $$DIST/subprocess/manager.js && + sed -i 's/const DEFAULT_TIMEOUT = 300000;/const DEFAULT_TIMEOUT = 1200000;/' $$DIST/subprocess/manager.js && cp /proxy-patches/openai-to-cli.js $$DIST/adapter/openai-to-cli.js && cp /proxy-patches/cli-to-openai.js $$DIST/adapter/cli-to-openai.js && claude-max-api"