From 3b92fcd087a97e336efa2274b3af1a1d54b9116b Mon Sep 17 00:00:00 2001 From: cfdaily Date: Tue, 26 May 2026 08:25:40 +0800 Subject: [PATCH] auto-sync: 2026-05-26 08:25:40 --- src/daemon/ticker.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/daemon/ticker.py b/src/daemon/ticker.py index 84f3a0f..d8e927c 100644 --- a/src/daemon/ticker.py +++ b/src/daemon/ticker.py @@ -610,22 +610,21 @@ class Ticker: spawned = [] for agent_id in idle_agents: - if not await self.counter.can_acquire(agent_id): - continue + # v2.7.2: counter 检查在 spawn_full_agent 内部 prompt = self._build_claim_prompt(agent_id, broadcastable, project_id) try: - await self.counter.acquire(agent_id) session_id = await self.spawner.spawn_full_agent( agent_id=agent_id, message=prompt, - on_complete=lambda aid, _: self.counter.release(aid), + # v2.7.2: on_complete 不含 counter.release,由 wrapped_on_complete 保证 task_id=broadcastable[0].id if broadcastable else None, task_db_path=db_path, ) spawned.append(agent_id) logger.info("Broadcast spawned %s (session=%s)", agent_id, session_id) + except AgentBusyError: + logger.debug("Broadcast skip %s: busy", agent_id) except Exception: - self.counter.release(agent_id) logger.exception("Broadcast spawn failed for %s", agent_id) return task_ids if spawned else []