diff --git a/src/daemon/spawner.py b/src/daemon/spawner.py index 0c864c8..7f6c6ba 100644 --- a/src/daemon/spawner.py +++ b/src/daemon/spawner.py @@ -463,9 +463,13 @@ 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"]: - # 续杯:不 release counter,直接再 spawn + # 续杯:先释放 counter,再 spawn + # on_complete 不传入续杯链(避免 double release) + # 续杯 Agent 退出后由 ticker 自然发现状态变化 + if on_complete: + on_complete(agent_id, "retry_release") await self._do_retry( - session_id, agent_id, task_id, on_complete, db_path, + session_id, agent_id, task_id, None, db_path, cls.get("retry_field", "retry_count") ) # else: 暂时性失败(A8/A9/A11),不 release,不 retry,等 ticker