feat: script command routing + LLM slot acquisition in base_agent
- Add _handle_script_command() to bypass LLM and call script skill directly - Add 'script' to _handle_system_command routing - Add _llm_slot_acquire() / _llm_slot_release() MQTT semaphore for Ollama coordination Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -559,12 +559,37 @@ class BaseAgent(ABC):
|
||||
all_agents = [a.agent_id for a in self.registry.all_agents()]
|
||||
return f"Agents en ligne : {online}\nAgents connus : {all_agents}"
|
||||
|
||||
if cmd == "script":
|
||||
return self._handle_script_command(args, source_msg)
|
||||
|
||||
if cmd == "update":
|
||||
return self._do_self_update(source_msg)
|
||||
|
||||
# Commandes custom de l'agent
|
||||
return self.handle_custom_command(cmd, args, source_msg)
|
||||
|
||||
# ──────────────────────────────────────────────
|
||||
# Commande script directe (bypass LLM)
|
||||
# ──────────────────────────────────────────────
|
||||
|
||||
def _handle_script_command(self, args: str, source_msg: Optional[Message] = None) -> str:
|
||||
"""
|
||||
Exécute une commande script sans passer par le LLM.
|
||||
args : 'exec <nom> [args]' | 'list' | 'show <nom>' | 'run | <contenu>'
|
||||
"""
|
||||
context = AgentContext(self)
|
||||
result = self.skills.run("script", args, context)
|
||||
if result is None:
|
||||
result = f"[{self.agent_id}] Skill 'script' non disponible."
|
||||
|
||||
# Renvoi MQTT si la commande vient d'un autre agent
|
||||
if source_msg and source_msg.reply_to:
|
||||
try:
|
||||
self.mqtt.reply(source_msg, result)
|
||||
except Exception as e:
|
||||
logger.debug(f"[Script] Impossible d'envoyer la réponse : {e}")
|
||||
return result
|
||||
|
||||
# ──────────────────────────────────────────────
|
||||
# Mise à jour self
|
||||
# ──────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user