Référence : scripts/agents.sh
Démarre les agents mm de test du dossier agents/ en limitant le nombre d'agents simultanés, et décharge leurs modèles de llmman. Testé par scripts/agents_test.sh.
Commandes
| Commande |
Arguments |
Effet |
Sortie |
run |
<agent> [args mm…] |
Prend un slot, lance mm -acp -config <agents>/<agent>/agent.yaml [args mm…] depuis le dossier de l'agent en relayant stdio, puis libère le slot et décharge le modèle. |
le stdout ACP de l'agent ; unloaded: <modèle> ou not loaded: <modèle> sur stderr à la sortie |
ps |
— |
Liste les agents actifs et les modèles chargés dans llmman. |
agents running (limit N):, une ligne par agent (nom (pid P) — modèle), models loaded:, une ligne par modèle |
unload |
<agent> ou --all |
Décharge le modèle de l'agent, ou tous les modèles chargés, seulement si /api/ps les liste. |
unloaded: <modèle> ou not loaded: <modèle> par modèle |
model |
<agent> |
Affiche la clé racine model: du agent.yaml de l'agent. |
le nom du modèle |
list |
— |
Liste les dossiers de agents/ qui contiennent un agent.yaml. |
un nom par ligne |
Variables d'environnement
| Variable |
Défaut |
Effet |
MM_BIN |
mm (dans le PATH) |
Le binaire mm. |
LLMMAN_URL |
la première de http://127.0.0.1:17434, http://host.docker.internal:17434 qui répond à /api/ps |
URL de base de llmman. |
SIDEKICKS_AGENTS_DIR |
<dépôt>/agents |
Dossier des agents. |
SIDEKICKS_RUN_DIR |
<dépôt>/.run/agents |
Dossier des fichiers de slot (ignoré par git). |
SIDEKICKS_MAX_AGENTS |
2 |
Nombre d'agents simultanés autorisés. |
SIDEKICKS_NO_UNLOAD |
non définie |
1 garde le modèle chargé à la fin de run. |
Slots
- Un slot est un fichier
<dossier run>/<agent>.<pid> qui contient le nom du modèle de l'agent ; <pid> est celui du processus agents.sh run.
- Un slot dont le processus n'existe plus est supprimé au prochain décompte des slots.
- Les slots sont modifiés sous un verrou, le dossier
<dossier run>/.lock (délai de 5 s).
- À la fin de
run, le modèle n'est pas déchargé si un autre slot actif utilise le même modèle (Bob et Riker en partagent un).
Déchargement
unload et la fin de run envoient POST /api/generate avec {"model": "<modèle>", "keep_alive": 0}, seulement quand GET /api/ps liste le modèle, pour ne jamais charger un modèle dans le seul but de le décharger.
Code de sortie et erreurs
| Message sur stderr |
Code |
Cause |
agents.sh: unknown agent 'x' (no …/agent.yaml) |
1 |
Pas de dossier pour cet agent. |
agents.sh: N agent(s) already running, the limit is M: |
1 |
Tous les slots sont pris (run). |
agents.sh: mm not found (install it or set MM_BIN) |
1 |
run sans binaire mm. |
agents.sh: llmman does not answer on … (set LLMMAN_URL) |
1 |
ps ou unload sans llmman. À la fin de run, le message s'affiche mais le code reste celui de mm. |
agents.sh: could not lock … |
1 |
Verrou tenu plus de 5 s. |
agents.sh: unknown command 'x' |
1 |
— |
Sinon, run se termine avec le code de sortie de mm.