bots-garden/sidekickspublic Fork
⑂ v1.1.0
Commits
⬇ Clone ▾
git clone https://git.rickub.com/bots-garden/sidekicks.git
git clone ssh://git@rickub.com/bots-garden/sidekicks.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

Download ZIP
script-agents.md · 48 lines · 3.2 KBmarkdown
Blame HistoryOpen raw

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.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 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.