From 3478bd637fd1f6c8e698a48e51147a401f766d16 Mon Sep 17 00:00:00 2001 From: sylvain Date: Mon, 9 Mar 2026 18:02:26 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20=5Fllm=5Flock=20dans=20nexus=20pour=20?= =?UTF-8?q?=C3=A9viter=20les=20appels=20LLM=20concurrents?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- nexus.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/nexus.py b/nexus.py index c13a52b..4afaeb2 100644 --- a/nexus.py +++ b/nexus.py @@ -160,12 +160,17 @@ class Nexus(BaseAgent): self._xmpp_reply(sender, "Broadcast envoyé à tous les agents.", is_muc) return - # ── Mode naturel → LLM → skills - extra_ctx = self.registry.summary_for_llm(self._online_agents) - response = self._llm_loop(body, context, extra_ctx) - - if self.xmpp: - self._xmpp_reply(sender, response, is_muc) + # ── Mode naturel → LLM → skills (un seul appel à la fois) + if not self._llm_lock.acquire(blocking=False): + self._xmpp_reply(sender, "⏳ Je traite déjà une demande, attends un instant.", is_muc) + return + try: + extra_ctx = self.registry.summary_for_llm(self._online_agents) + response = self._llm_loop(body, context, extra_ctx) + if self.xmpp: + self._xmpp_reply(sender, response, is_muc) + finally: + self._llm_lock.release() def _xmpp_reply(self, sender: str, body: str, is_muc: bool): """Répond dans le bon canal : MUC si message vient du MUC, direct sinon."""