diff --git a/src/daemon/ticker.py b/src/daemon/ticker.py index 65c2195..d021147 100644 --- a/src/daemon/ticker.py +++ b/src/daemon/ticker.py @@ -808,6 +808,26 @@ class Ticker: elapsed = (now - start_time).total_seconds() / 60.0 if elapsed > timeout_minutes: + # [v2.7.1] Mail 幻觉门控兜底:有回复 + working → done + if project_id == "_mail": + has_reply = self._mail_check_reply(task.id, db_path) + if has_reply: + conn = get_connection(db_path) + try: + ok = self._transition_status( + conn, task.id, "done", + agent="daemon", + detail={"reason": "mail_auto_done_recheck", + "elapsed_minutes": round(elapsed, 1)}, + ) + if ok: + reclaimed.append(task.id) + logger.info("Mail %s: ticker recheck found reply, marked done (%.1fm)", + task.id, elapsed) + finally: + conn.close() + continue + conn = get_connection(db_path) try: ok = self._transition_status(