bots-garden/mini-mepublic Fork
⑂ v0.2.0
Commits
⬇ Clone ▾
git clone https://git.rickub.com/bots-garden/mini-me.git
git clone ssh://git@rickub.com/bots-garden/mini-me.git

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

Download ZIP
📦 Mini Me 460cf23 · on v0.2.0 · k33g · 27d ago
cli.md · 131 lines · 10.1 KBmarkdown
Blame HistoryOpen raw

Référence : ligne de commande

Description neutre de l'exécutable mm : options, argument positionnel, variables d'environnement, sortie de démarrage et codes de sortie.

Invocation

mm [-config <chemin>] [-acp] [-tui] [-prompt <texte>|-p <texte>] [--version] [--about] [<chemin>]
Élément Type Défaut Description
-config <chemin> chaîne "" Chemin du fichier de configuration YAML.
<chemin> positionnel aucun Équivalent de -config quand -config n'est pas donné. Un second argument positionnel est une erreur.
-acp booléen false Sert l'Agent Client Protocol sur stdin/stdout au lieu du REPL du terminal.
-tui booléen false Ouvre le mode fenêtre unique (conversation en haut, zone de saisie en bas). Même effet que tui: true dans le YAML ; ignoré avec -acp. Retombe sur le mode ligne quand stdin ou stdout n'est pas un terminal.
-prompt <texte> / -p <texte> chaîne "" Exécute une seule invite et quitte. Le texte de l'invite est obligatoire. Fonctionne avec le fichier de config avant ou après : mm -p "bonjour" config.yaml et mm config.yaml -p "bonjour" sont tous deux valides. Pas de bannière, pas de persistance de session, pas de TUI/ACP.
--version bool false Affiche la version et quitte, avant la lecture de la configuration. -version est la même option.
--about bool false Affiche ce qu'est mm — un écran : version, les trois façades, les outils, les serveurs de modèles, où vivent le projet et la documentation — puis quitte, avant la lecture de la configuration.
-h — — Affiche l'usage des options et quitte.

Version

mm --version (ou -version) affiche une ligne puis quitte, avant même de chercher le fichier de configuration — la réponse arrive donc depuis n'importe quel répertoire, sans serveur de modèle démarré :

mm v0.1.7 (go1.26.5, darwin/arm64)

mm --about affiche la même version à l'intérieur d'une courte description du programme. La version ouvre aussi la bannière de démarrage (mm v0.1.7 | config: …), que le mode fenêtre conserve comme première ligne de la conversation, et figure dans la barre d'état de la fenêtre avant les compteurs.

D'où elle vient Ce que vous voyez
Un binaire de release, estampillé à la construction par 02-build-releases.sh Le tag : v0.1.7
Installé par go install depuis une version taguée Ce tag
Construit à la main depuis un arbre de travail (go build, ./install.sh) Le commit court, 9073268, suivi de +dirty si l'arbre avait des modifications non validées
Construit avec -buildvcs=false unknown

Résolution du fichier de configuration

La première source existante gagne.

Ordre Source Fichier absent
1 Option -config ou argument positionnel Erreur, code de sortie 1
2 Variable d'environnement AGENT_CONFIG Erreur, code de sortie 1
3 ./agent.yaml Pas une erreur : les valeurs par défaut intégrées sont utilisées, la bannière affiche config: built-in defaults

Variables d'environnement

Variable Effet
AGENT_CONFIG Chemin du fichier de configuration (voir ci-dessus).
AGENT_PROVIDER Surcharge la clé provider.
AGENT_MODEL Surcharge la clé model.
AGENT_BASE_URL Surcharge baseUrl et désactive la sonde de repli.
DMR_BASE_URL Comme AGENT_BASE_URL, pour le fournisseur dmr seulement ; AGENT_BASE_URL gagne quand les deux sont définies.
Variable nommée par apiKeyEnv Contient la clé d'API. Nom par défaut : aucun pour dmr, LLAMA_API_KEY pour llamacpp.

Sortie de démarrage

Affichée sur stdout en mode terminal, sur stderr en mode ACP. Grisée quand stdout est un terminal.

Ligne Contenu
[warning: …] Zéro ou plusieurs avertissements de la sonde : serveur injoignable, modèle absent de la liste du serveur, pas de template de chat, compression qui ne peut jamais se déclencher, aucun outil déclaré.
mm <version> | config: … | provider: … | model: … | ctx: … | tools: … | skills: N Version (voir ci-dessus), chemin de la configuration, nom du fournisseur, identifiant du modèle, fenêtre de contexte avec son origine (config, /props) ou unknown, noms des outils déclarés, nombre de skills trouvés.
Agent ready. Commands: … Mode terminal seulement.
Shortcut: Ctrl+C … Mode terminal seulement.
sessions: saved under <dir>[ · N earlier — /resume to continue the latest, /sessions to list] Mode terminal, avec sessions.enabled seulement : le répertoire de sessions résolu et le nombre de sessions qu'il contient déjà.

Exemple

[warning: llamacpp: nothing answers at http://127.0.0.1:8080/v1 — start it: llama-server -m <model.gguf> --jinja --port 8080]
mm v0.1.7 | config: agent.llamacpp.yaml | provider: llamacpp | model: jetbrains/mellum2-12b-a2.5b-instruct-gguf-q4_k_m:Q4_K_M | ctx: unknown | tools: bash, read_file, write_file, edit_file | skills: 0

Spécificités du mode ACP

Aspect Comportement
stdout Messages JSON-RPC 2.0 uniquement, un par ligne.
stderr Bannière, avertissements, trace [acp] …, journaux du SDK.
Spinner Désactivé.
skillsDir relatif Résolu par rapport au répertoire du fichier de configuration, quand un fichier a été trouvé ; sinon depuis le répertoire de travail, comme en mode terminal.

Spécificités du mode fenêtre

Aspect Comportement
Sélection Option -tui, ou tui: true dans le YAML ; -acp l'emporte sur les deux.
Vérification du terminal stdin et stdout doivent tous deux être des périphériques caractère. Sinon [tui: stdin or stdout is not a terminal — running the line mode] est affiché et le mode ligne s'exécute, bannière comprise.
Écran L'écran alternatif du terminal, rendu à la sortie ; l'historique de défilement du terminal n'est pas écrit.
Bannière Non affichée sur stdout ; montrée comme première ligne de la conversation.
Spinner Désactivé ; la règle sous la conversation s'anime à sa place.
Nom du modèle L'en-tête affiche une forme courte de l'identifiant : hôte du registre et organisation retirés, suffixe de format -gguf retiré, tag conservé, plafonné à 28 caractères (huggingface.co/unsloth/qwen3.5-2b-gguf:Q4_K_M → qwen3.5-2b:Q4_K_M). L'identifiant complet figure dans la bannière de démarrage, que la fenêtre conserve comme première ligne de la conversation.
Disposition Ligne d'en-tête (agent, modèle @ fournisseur, usage du contexte en ctx N% (utilisé/fenêtre) ou ctx ~utilisé (window unknown), session <id> quand les sessions sont actives) ; conversation avec barre de défilement ; règle avec l'état et les rappels de touches ; zone de saisie de 3 lignes ; barre d'état (F1 help · Ctrl-Y copy · F2 mouse: … · Ctrl-C quit à gauche, <version> · N msgs · N tools à droite — la version disparaît quand les deux côtés ne tiennent pas, pour que les rappels de touches ne soient jamais tronqués à cause d'elle).
Appels d'outils ‣ <outil> <détail> <statut> <durée> où le statut est … pending, … waiting for permission, … running, ✓ done ou ✗ failed ; sortie repliée à previewLines lignes (… N more line(s)) ; lignes +/- des sorties de write_file/edit_file colorées.
Sélecteurs / complète une commande, @ un chemin sous le répertoire de travail, $ un skill du catalogue — les deux derniers n'importe où dans une phrase, en conservant leur préfixe. Voir Commandes slash.
Réflexion Le raisonnement d'un modèle à raisonnement forme son entrée ‣ thinking, grisée, en italique et d'une autre couleur, avant la réponse. Masquée avec showThinking: false.
Erreurs Une ligne [error: <explication>] ; un tour annulé affiche 🛑 Generation aborted. ; chaque tour se termine par ⚙ N command(s) [· 📝 N file op(s)] [· 📖 N skill(s)].
Permissions Avec permissions: ask, la zone affiche ? <titre de l'outil> et [a] allow once [s] allow <outil> for this session [r] reject jusqu'à la réponse ; un tour annulé pendant la question refuse.
Touches Voir Commandes slash — touches du mode fenêtre.
Souris Non capturée au démarrage, donc le cliquer-glisser du terminal sélectionne du texte. F2 la capture (défilement à la molette ; Maj+glisser sélectionne) puis la rend.

Spécificités du mode invite

Aspect Comportement
Exécution Exécute un seul cycle de génération puis quitte. Pas de REPL, pas de persistance de session.
Sortie Affiche les statistiques d'appels d'outils et la réponse du modèle, puis quitte. Même affichage que le mode ligne (⚙ commandes, 📝 opérations sur fichiers, 📖 skills, 🔎 appels LSP).
Bannière Non affichée.
Session Non sauvegardée ; aucun répertoire de sessions utilisé.
Fichier de config Peut apparaître avant ou après le flag -prompt/-p : mm -p "prompt" config.yaml et mm config.yaml -p "prompt" fonctionnent tous deux.
Compatibilité Incompatible avec -acp et -tui ; le mode invite prend la priorité et s'exécute dans tous les cas.

Codes de sortie

Code Cause
0 /quit, Ctrl+C à l'invite, fin de stdin, ou le client ACP a fermé la connexion.
1 Plus d'un argument positionnel ; erreur de chargement de la configuration ; erreur d'initialisation du moteur (fournisseur inconnu, clé requise absente).

Compilation et installation

Commande Effet
go build -o mm . Compile le binaire dans le répertoire courant.
./install.sh Compile mm et le copie dans /usr/local/bin, avec sudo si le répertoire n'est pas accessible en écriture.
go test ./... Lance les tests unitaires.
  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
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# Référence : ligne de commande

> Description neutre de l'exécutable `mm` : options, argument positionnel, variables d'environnement, sortie de démarrage et codes de sortie.

## Invocation

```
mm [-config <chemin>] [-acp] [-tui] [-prompt <texte>|-p <texte>] [--version] [--about] [<chemin>]
```

| Élément | Type | Défaut | Description |
|---------|------|--------|-------------|
| `-config <chemin>` | chaîne | `""` | Chemin du fichier de configuration YAML. |
| `<chemin>` | positionnel | aucun | Équivalent de `-config` quand `-config` n'est pas donné. Un second argument positionnel est une erreur. |
| `-acp` | booléen | `false` | Sert l'Agent Client Protocol sur stdin/stdout au lieu du REPL du terminal. |
| `-tui` | booléen | `false` | Ouvre le mode fenêtre unique (conversation en haut, zone de saisie en bas). Même effet que `tui: true` dans le YAML ; ignoré avec `-acp`. Retombe sur le mode ligne quand stdin ou stdout n'est pas un terminal. |
| `-prompt <texte>` / `-p <texte>` | chaîne | `""` | Exécute une seule invite et quitte. Le texte de l'invite est obligatoire. Fonctionne avec le fichier de config avant ou après : `mm -p "bonjour" config.yaml` et `mm config.yaml -p "bonjour"` sont tous deux valides. Pas de bannière, pas de persistance de session, pas de TUI/ACP. |
| `--version` | bool | `false` | Affiche la version et quitte, avant la lecture de la configuration. `-version` est la même option. |
| `--about` | bool | `false` | Affiche ce qu'est `mm` — un écran : version, les trois façades, les outils, les serveurs de modèles, où vivent le projet et la documentation — puis quitte, avant la lecture de la configuration. |
| `-h` | — | — | Affiche l'usage des options et quitte. |

## Version

`mm --version` (ou `-version`) affiche une ligne puis quitte, avant même de chercher le fichier de configuration — la réponse arrive donc depuis n'importe quel répertoire, sans serveur de modèle démarré :

```
mm v0.1.7 (go1.26.5, darwin/arm64)
```

`mm --about` affiche la même version à l'intérieur d'une courte description du programme. La version ouvre aussi la bannière de démarrage (`mm v0.1.7 | config: …`), que le mode fenêtre conserve comme première ligne de la conversation, et figure dans la barre d'état de la fenêtre avant les compteurs.

| D'où elle vient | Ce que vous voyez |
|---|---|
| Un binaire de release, estampillé à la construction par `02-build-releases.sh` | Le tag : `v0.1.7` |
| Installé par `go install` depuis une version taguée | Ce tag |
| Construit à la main depuis un arbre de travail (`go build`, `./install.sh`) | Le commit court, `9073268`, suivi de `+dirty` si l'arbre avait des modifications non validées |
| Construit avec `-buildvcs=false` | `unknown` |

## Résolution du fichier de configuration

La première source existante gagne.

| Ordre | Source | Fichier absent |
|-------|--------|----------------|
| 1 | Option `-config` ou argument positionnel | Erreur, code de sortie 1 |
| 2 | Variable d'environnement `AGENT_CONFIG` | Erreur, code de sortie 1 |
| 3 | `./agent.yaml` | Pas une erreur : les valeurs par défaut intégrées sont utilisées, la bannière affiche `config: built-in defaults` |

## Variables d'environnement

| Variable | Effet |
|----------|-------|
| `AGENT_CONFIG` | Chemin du fichier de configuration (voir ci-dessus). |
| `AGENT_PROVIDER` | Surcharge la clé `provider`. |
| `AGENT_MODEL` | Surcharge la clé `model`. |
| `AGENT_BASE_URL` | Surcharge `baseUrl` et désactive la sonde de repli. |
| `DMR_BASE_URL` | Comme `AGENT_BASE_URL`, pour le fournisseur `dmr` seulement ; `AGENT_BASE_URL` gagne quand les deux sont définies. |
| Variable nommée par `apiKeyEnv` | Contient la clé d'API. Nom par défaut : aucun pour `dmr`, `LLAMA_API_KEY` pour `llamacpp`. |

## Sortie de démarrage

Affichée sur stdout en mode terminal, sur stderr en mode ACP. Grisée quand stdout est un terminal.

| Ligne | Contenu |
|-------|---------|
| `[warning: …]` | Zéro ou plusieurs avertissements de la sonde : serveur injoignable, modèle absent de la liste du serveur, pas de template de chat, compression qui ne peut jamais se déclencher, aucun outil déclaré. |
| `mm <version> \| config: … \| provider: … \| model: … \| ctx: … \| tools: … \| skills: N` | Version (voir ci-dessus), chemin de la configuration, nom du fournisseur, identifiant du modèle, fenêtre de contexte avec son origine (`config`, `/props`) ou `unknown`, noms des outils déclarés, nombre de skills trouvés. |
| `Agent ready. Commands: …` | Mode terminal seulement. |
| `Shortcut: Ctrl+C …` | Mode terminal seulement. |
| `sessions: saved under <dir>[ · N earlier — /resume to continue the latest, /sessions to list]` | Mode terminal, avec `sessions.enabled` seulement : le répertoire de sessions résolu et le nombre de sessions qu'il contient déjà. |

### Exemple

```
[warning: llamacpp: nothing answers at http://127.0.0.1:8080/v1 — start it: llama-server -m <model.gguf> --jinja --port 8080]
mm v0.1.7 | config: agent.llamacpp.yaml | provider: llamacpp | model: jetbrains/mellum2-12b-a2.5b-instruct-gguf-q4_k_m:Q4_K_M | ctx: unknown | tools: bash, read_file, write_file, edit_file | skills: 0
```

## Spécificités du mode ACP

| Aspect | Comportement |
|--------|--------------|
| stdout | Messages JSON-RPC 2.0 uniquement, un par ligne. |
| stderr | Bannière, avertissements, trace `[acp] …`, journaux du SDK. |
| Spinner | Désactivé. |
| `skillsDir` relatif | Résolu par rapport au répertoire du fichier de configuration, quand un fichier a été trouvé ; sinon depuis le répertoire de travail, comme en mode terminal. |

## Spécificités du mode fenêtre

| Aspect | Comportement |
|--------|--------------|
| Sélection | Option `-tui`, ou `tui: true` dans le YAML ; `-acp` l'emporte sur les deux. |
| Vérification du terminal | stdin et stdout doivent tous deux être des périphériques caractère. Sinon `[tui: stdin or stdout is not a terminal — running the line mode]` est affiché et le mode ligne s'exécute, bannière comprise. |
| Écran | L'écran alternatif du terminal, rendu à la sortie ; l'historique de défilement du terminal n'est pas écrit. |
| Bannière | Non affichée sur stdout ; montrée comme première ligne de la conversation. |
| Spinner | Désactivé ; la règle sous la conversation s'anime à sa place. |
| Nom du modèle | L'en-tête affiche une forme courte de l'identifiant : hôte du registre et organisation retirés, suffixe de format `-gguf` retiré, tag conservé, plafonné à 28 caractères (`huggingface.co/unsloth/qwen3.5-2b-gguf:Q4_K_M` → `qwen3.5-2b:Q4_K_M`). L'identifiant complet figure dans la bannière de démarrage, que la fenêtre conserve comme première ligne de la conversation. |
| Disposition | Ligne d'en-tête (agent, modèle `@` fournisseur, usage du contexte en `ctx N% (utilisé/fenêtre)` ou `ctx ~utilisé (window unknown)`, `session <id>` quand les sessions sont actives) ; conversation avec barre de défilement ; règle avec l'état et les rappels de touches ; zone de saisie de 3 lignes ; barre d'état (`F1 help · Ctrl-Y copy · F2 mouse: … · Ctrl-C quit` à gauche, `<version> · N msgs · N tools` à droite — la version disparaît quand les deux côtés ne tiennent pas, pour que les rappels de touches ne soient jamais tronqués à cause d'elle). |
| Appels d'outils | `‣ <outil>  <détail>  <statut>  <durée>` où le statut est `… pending`, `… waiting for permission`, `… running`, `✓ done` ou `✗ failed` ; sortie repliée à `previewLines` lignes (`… N more line(s)`) ; lignes `+`/`-` des sorties de `write_file`/`edit_file` colorées. |
| Sélecteurs | `/` complète une commande, `@` un chemin sous le répertoire de travail, `$` un skill du catalogue — les deux derniers n'importe où dans une phrase, en conservant leur préfixe. Voir [Commandes slash](slash-commands.md#les-trois-sélecteurs). |
| Réflexion | Le raisonnement d'un modèle à raisonnement forme son entrée `‣ thinking`, grisée, en italique et d'une autre couleur, avant la réponse. Masquée avec `showThinking: false`. |
| Erreurs | Une ligne `[error: <explication>]` ; un tour annulé affiche `🛑 Generation aborted.` ; chaque tour se termine par `⚙ N command(s) [· 📝 N file op(s)] [· 📖 N skill(s)]`. |
| Permissions | Avec `permissions: ask`, la zone affiche `? <titre de l'outil>` et `[a] allow once   [s] allow <outil> for this session   [r] reject` jusqu'à la réponse ; un tour annulé pendant la question refuse. |
| Touches | Voir [Commandes slash — touches du mode fenêtre](slash-commands.md#touches-du-mode-fenêtre). |
| Souris | Non capturée au démarrage, donc le cliquer-glisser du terminal sélectionne du texte. `F2` la capture (défilement à la molette ; `Maj`+glisser sélectionne) puis la rend. |

## Spécificités du mode invite

| Aspect | Comportement |
|--------|--------------|
| Exécution | Exécute un seul cycle de génération puis quitte. Pas de REPL, pas de persistance de session. |
| Sortie | Affiche les statistiques d'appels d'outils et la réponse du modèle, puis quitte. Même affichage que le mode ligne (⚙ commandes, 📝 opérations sur fichiers, 📖 skills, 🔎 appels LSP). |
| Bannière | Non affichée. |
| Session | Non sauvegardée ; aucun répertoire de sessions utilisé. |
| Fichier de config | Peut apparaître avant ou après le flag `-prompt`/`-p` : `mm -p "prompt" config.yaml` et `mm config.yaml -p "prompt"` fonctionnent tous deux. |
| Compatibilité | Incompatible avec `-acp` et `-tui` ; le mode invite prend la priorité et s'exécute dans tous les cas. |

## Codes de sortie

| Code | Cause |
|------|-------|
| 0 | `/quit`, `Ctrl+C` à l'invite, fin de stdin, ou le client ACP a fermé la connexion. |
| 1 | Plus d'un argument positionnel ; erreur de chargement de la configuration ; erreur d'initialisation du moteur (fournisseur inconnu, clé requise absente). |

## Compilation et installation

| Commande | Effet |
|----------|-------|
| `go build -o mm .` | Compile le binaire dans le répertoire courant. |
| `./install.sh` | Compile `mm` et le copie dans `/usr/local/bin`, avec `sudo` si le répertoire n'est pas accessible en écriture. |
| `go test ./...` | Lance les tests unitaires. |