diff --git a/src/daemon/spawner.py b/src/daemon/spawner.py index 122fd66..91580aa 100644 --- a/src/daemon/spawner.py +++ b/src/daemon/spawner.py @@ -463,7 +463,10 @@ curl -X POST http://{api_host}:{api_port}/api/projects/{project_id}/tasks/{task_ if cls["release_counter"]: await self._do_on_complete_async(on_complete, agent_id, outcome) elif cls["should_retry"]: - # 续杯:先释放 counter,再 spawn + # WORKAROUND (BUG-2a): 设计文档规定续杯期间 counter 保持占用, + # max_retries 到达后自然 release。但因 BUG-2b(retry_count 广播计数失效) + # 导致续杯死循环、counter 永不释放。此处提前 release 作为安全兜底。 + # 待 BUG-2b 修好稳定 3 轮 E2E 后考虑撤回,恢复设计一致性。 # on_complete 不传入续杯链(避免 double release) # 续杯 Agent 退出后由 ticker 自然发现状态变化 if on_complete: @@ -613,7 +616,7 @@ curl -X POST http://{api_host}:{api_port}/api/projects/{project_id}/tasks/{task_ fallback_hint=fallback_hint, ) - # 续杯 spawn(counter 已在 _handle_exit 释放) + # 续杯 spawn(counter 已在 _handle_exit 释放,见 WORKAROUND BUG-2a) try: await self.spawn_full_agent( agent_id=agent_id,