From 9a029a221df5d11fcd9856a27376df8f4336cb25 Mon Sep 17 00:00:00 2001 From: Dom Date: Sun, 24 May 2026 19:14:12 +0200 Subject: [PATCH] =?UTF-8?q?fix(executor):=20timeout=20=5Fcapture=5Fhuman?= =?UTF-8?q?=5Fcorrection=20120s=20=E2=86=92=2030s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Friction UX remontée par Dom sur replay live (replay_sess_63a1313b) : latence excessive 2-3 minutes après un échec d'action avant que Léa ne reprenne la main. 120s = trop long pour un humain en supervision. 10s d'inactivité reste le critère prioritaire (déjà en place), donc : - humain actif : la correction est captée et le replay reprend en ~1s - humain absent : on libère après 30s au lieu de 120s 5 sites d'appel + signature de fonction (default param) alignés. Tag rollback : rollback/pre-P0.8-2026-05-24_1912 Référence : message 2026-05-24_1910_claude-to-codex_p07-memory-sanity-fix-human-supervised-bug-frictions-ux.md --- agent_v0/agent_v1/core/executor.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/agent_v0/agent_v1/core/executor.py b/agent_v0/agent_v1/core/executor.py index d273743ea..d3d0f9a34 100644 --- a/agent_v0/agent_v1/core/executor.py +++ b/agent_v0/agent_v1/core/executor.py @@ -1349,7 +1349,7 @@ class ActionExecutorV1: # (ex: Ctrl+S a sauvé sans dialogue), soit l'app # est dans un état différent. L'humain montre. human_actions = self._capture_human_correction( - timeout_s=120, + timeout_s=30, ) if human_actions: result["success"] = True @@ -1612,7 +1612,7 @@ class ActionExecutorV1: pass human_actions = self._capture_human_correction( - timeout_s=120, + timeout_s=30, ) if human_actions: result["success"] = True @@ -1671,7 +1671,7 @@ class ActionExecutorV1: pass human_actions = self._capture_human_correction( - timeout_s=120, + timeout_s=30, ) if human_actions: # L'humain a montré un mini-workflow @@ -1967,7 +1967,7 @@ class ActionExecutorV1: ) except Exception: pass - human_actions = self._capture_human_correction(timeout_s=120) + human_actions = self._capture_human_correction(timeout_s=30) if human_actions: result["success"] = True result["resolution_method"] = "human_supervised" @@ -2060,7 +2060,7 @@ class ActionExecutorV1: pass human_actions = self._capture_human_correction( - timeout_s=120, + timeout_s=30, ) if human_actions: result["success"] = True @@ -3462,7 +3462,7 @@ Example: x_pct=0.50, y_pct=0.30""" # Hotkey pour signaler la fin de la correction humaine _LEARNING_DONE_HOTKEY = {Key.ctrl_l, Key.shift, KeyCode.from_char("l")} - def _capture_human_correction(self, timeout_s: float = 120.0) -> list[dict]: + def _capture_human_correction(self, timeout_s: float = 30.0) -> list[dict]: """Capturer un mini-workflow de correction humaine. Léa est perdue — elle passe en mode capture et enregistre