From 501c5862b34022966042ad6b48a00e23a8d10bb2 Mon Sep 17 00:00:00 2001 From: cfdaily Date: Sun, 24 May 2026 19:57:10 +0800 Subject: [PATCH] auto-sync: 2026-05-24 19:57:10 --- src/daemon/ticker.py | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/daemon/ticker.py b/src/daemon/ticker.py index 0f09603..34fce13 100644 --- a/src/daemon/ticker.py +++ b/src/daemon/ticker.py @@ -475,22 +475,34 @@ class Ticker: if result["status"] == "dispatched" and result["level"] in ("full", "escalate"): conn = get_connection(db_path) try: - ok = self._transition_status( - conn, task.id, "claimed", - agent="daemon", - detail={"dispatched_to": result["agent_id"], - "session_id": result.get("session_id")}, - ) - if ok: + # [v2.7.1] Mail 已在 dispatcher 中标 working,跳过 claimed + if project_id == "_mail": conn.execute( "UPDATE tasks SET current_agent=? WHERE id=?", (result["agent_id"], task.id), ) conn.commit() dispatched.append(task.id) - logger.info("Dispatched %s to %s (session=%s)", + logger.info("Dispatched %s to %s (session=%s, mail auto-working)", task.id, result["agent_id"], result.get("session_id")) + else: + ok = self._transition_status( + conn, task.id, "claimed", + agent="daemon", + detail={"dispatched_to": result["agent_id"], + "session_id": result.get("session_id")}, + ) + if ok: + conn.execute( + "UPDATE tasks SET current_agent=? WHERE id=?", + (result["agent_id"], task.id), + ) + conn.commit() + dispatched.append(task.id) + logger.info("Dispatched %s to %s (session=%s)", + task.id, result["agent_id"], + result.get("session_id")) finally: conn.close() elif result["status"] == "blocked":