bots-garden/mini-mepublic Fork
⑂ fix/word-wrap
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
🛟 Updated. 49d3dce · on fix/word-wrap · k33g · Sep 18, 2026
slash-commands.md · 84 lines · 8.3 KBmarkdown
Blame HistoryOpen raw

Référence : commandes slash et raccourcis clavier

Description neutre des commandes reconnues à l'invite du terminal de mm. Elles sont comparées à la ligne entière, débarrassée de ses espaces ; tout autre texte est envoyé au modèle.

Commandes

Commande À l'invite Pendant une génération
/quit Quitte le programme. Annule la génération, affiche Goodbye., quitte.
/abort Affiche ⚠️ No generation in progress. Annule la génération, affiche 🛑 Aborting... ; les commandes déjà exécutées restent dans l'historique.
/compact Compresse l'historique immédiatement, sans tenir compte du seuil ; affiche le rapport 🗜️, ou 🗜️ nothing to compact quand aucun tour n'est plus ancien que context.keepLastTurns. Envoyée au modèle comme nouveau message (voir ci-dessous).
/new Ramène l'historique au seul prompt système, réinitialise le détecteur de boucles et oublie le dernier compte de tokens du serveur ; affiche 🆕 new session: N message(s) forgotten (N compte tous les messages sauf le prompt système). Traitée comme n'importe quel texte : annule la génération, conserve son historique partiel, puis s'exécute comme /new sur cet historique.
/sessions Liste les sessions enregistrées du projet, la plus récente d'abord : identifiant, dernière mise à jour, nombre de questions, première question, puis · ⚠️ N error(s) quand la session a enregistré des erreurs ; * marque la session courante. Avec sessions.enabled: false : ⚠️ sessions are off (set sessions.enabled: true in the YAML). Envoyée au modèle comme nouveau message.
/resume [id] Reprend une session enregistrée : la plus récemment mise à jour autre que la courante, en ignorant les vides, ou l'identifiant donné. Affiche ↩️ resumed <id> — N message(s), started with "<première question>" (suivi de · ⚠️ N error(s) quand la session a enregistré des erreurs) ; réinitialise le détecteur de boucles et le compte de tokens du serveur ; les tours suivants sont enregistrés dans cette session. Refusée avec une raison ⚠️ quand les sessions sont désactivées, qu'il n'y a pas de session antérieure, que l'identifiant est inconnu ou désigne la session courante. Envoyée au modèle comme nouveau message.
/help Affiche les commandes de cette façade, une par ligne avec leur description, alignées. Envoyée au modèle comme nouveau message.
/copy [n|all] Copie la dernière réponse (n : la n-ième depuis la fin) dans le presse-papiers via pbcopy/wl-copy/xclip/xsel ou, à défaut, OSC 52 quand stdout est un terminal, et affiche 📋 copied N chars (<chemin>) ou ⚠️ …. /copy all est réservé au mode fenêtre : ici la commande le dit. Envoyée au modèle comme nouveau message.

Avec sessions.enabled, /new laisse le fichier de la session courante tel quel ; la question suivante ouvre un nouveau fichier. Une ligne vide à l'invite est ignorée.

@chemin dans une question

Saisie Effet
@<chemin> en début de ligne ou après un espace, une parenthèse ou un guillemet Si le chemin existe (relatif au répertoire de lancement, absolu, ou ~/…), une ligne atténuée 📎 <chemin absolu> est affichée et [attached file: <chemin absolu>] (ou [attached directory: …]) est ajouté au message que reçoit le modèle. La ponctuation finale est ignorée ; chaque chemin est attaché une fois.
Un @<chemin> qui ne désigne rien sur le disque, ou @ collé à un mot Laissé tel quel.

Détails et exemples : Désigner un fichier au modèle avec @chemin.

Tout autre texte pendant une génération

Saisie Comportement
Une ligne qui n'est pas une commande Affiche 🔄 New command received. Cancelling current task..., annule la génération en cours, conserve son historique partiel, puis soumet la nouvelle ligne comme question suivante.

Raccourcis clavier

Touche À l'invite Pendant une génération
Ctrl+C Affiche Goodbye. et quitte. Affiche 🛑 Interrupted (Ctrl+C). et annule la génération ; l'invite revient.
Ctrl+D (fin d'entrée) Quitte. —

Touches du mode fenêtre

Dans mm -tui les mêmes commandes existent ; /abort au repos affiche ⚠️ No generation in progress. comme notice, et le sélecteur ouvert par / les liste. Les touches :

Touche Action
Entrée Envoie la zone (rien sur une zone vide). Avec le sélecteur ouvert sur un nom incomplet, le complète à la place.
Ctrl-J, Alt-Entrée Insère un saut de ligne dans la zone.
Échap Annule le tour en cours ; ferme le sélecteur ; refuse une permission en attente.
Ctrl-C Annule le tour en cours ; quitte au repos.
Tab Déplace le focus entre la zone et la conversation ; complète le choix du sélecteur quand il est ouvert.
↑ ↓ Dans la zone : passent d'une rangée à l'autre — une ligne longue est repliée aux espaces sur plusieurs rangées — et font défiler la conversation depuis sa première/dernière rangée. Sur la conversation : défilent d'une ligne. Dans le sélecteur : déplacent le choix.
PgUp PgDn Défilent d'une page.
Début Fin Dans la zone : début/fin de ligne. Sur la conversation : haut / bas (le bas reprend le suivi).
Ctrl-L Efface la conversation affichée ; l'historique est conservé.
F1 Comme /help.
F2 Bascule la capture de la souris. Désactivée (défaut) : le cliquer-glisser du terminal sélectionne du texte ; la barre d'état indique F2 mouse: off. Activée : la molette fait défiler, Maj+glisser sélectionne, la barre d'état indique mouse: on (Shift+drag selects).
Ctrl-Y Comme /copy : la dernière réponse dans le presse-papiers.
a s r Répondent à une permission en attente : autoriser une fois, autoriser cet outil pour la session, refuser.
Molette Fait défiler la conversation — seulement quand la souris est capturée (F2).
Collage encadré Inséré en un bloc ; ses sauts de ligne deviennent des sauts de ligne, jamais un envoi. Au-delà de 3 lignes ou de 200 caractères : replié en un jeton [Pasted #n · L lines · C chars] qui s'édite comme un seul caractère ; Entrée envoie le texte complet, la conversation garde le jeton. Un @chemin dans un collage n'est pas résolu.

Messages affichés en fin de tour

Message Signification
🛑 Generation aborted. Le tour a été annulé (/abort, Ctrl+C). La question et les tours d'outils terminés restent dans l'historique.
[error: …] Le fournisseur a expliqué un échec en une ligne ; une question restée sans réponse est retirée de l'historique.
⚙ N command(s) Nombre de commandes bash réellement exécutées dans le tour.
· 📝 N file op(s) Ajouté quand des outils de fichiers ont tourné.
· 📖 N skill(s) Ajouté quand des skills ont été chargés.
Liste numérotée en vert Les commandes et opérations sur fichiers du tour, une par ligne, quand displayCommands: true.

Mode ACP

Deux commandes existent en mode ACP : /new et /compact. Elles sont annoncées à l'éditeur par une notification available_commands_update et interceptées par session/prompt quand le texte du prompt, débarrassé de ses espaces, est exactement la commande. Chacune répond par un agent_message_chunk portant la ligne que le terminal afficherait, puis stopReason: end_turn ; le modèle n'est pas consulté.

Commande En ACP
/new Comme dans le terminal : historique ramené au prompt système, compte de tokens oublié ; l'identifiant de session, le cwd et les autorisations « toujours autoriser » sont conservés.
/compact Comme dans le terminal, toujours forcée : 🗜️ compressed …, 🗜️ nothing to compact: … ou [compact: failed, history kept: …]. Attend d'abord la fin d'un tour en cours.

/quit et /abort n'existent pas en mode ACP : l'éditeur possède le processus et le termine en fermant stdin, et il annule un tour avec sa propre touche d'arrêt via session/cancel. Voir la référence ACP.

 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
# Référence : commandes slash et raccourcis clavier

> Description neutre des commandes reconnues à l'invite du terminal de `mm`. Elles sont comparées à la ligne entière, débarrassée de ses espaces ; tout autre texte est envoyé au modèle.

## Commandes

| Commande | À l'invite | Pendant une génération |
|----------|------------|------------------------|
| `/quit` | Quitte le programme. | Annule la génération, affiche `Goodbye.`, quitte. |
| `/abort` | Affiche `⚠️ No generation in progress.` | Annule la génération, affiche `🛑 Aborting...` ; les commandes déjà exécutées restent dans l'historique. |
| `/compact` | Compresse l'historique immédiatement, sans tenir compte du seuil ; affiche le rapport `🗜️`, ou `🗜️ nothing to compact` quand aucun tour n'est plus ancien que `context.keepLastTurns`. | Envoyée au modèle comme nouveau message (voir ci-dessous). |
| `/new` | Ramène l'historique au seul prompt système, réinitialise le détecteur de boucles et oublie le dernier compte de tokens du serveur ; affiche `🆕 new session: N message(s) forgotten` (N compte tous les messages sauf le prompt système). | Traitée comme n'importe quel texte : annule la génération, conserve son historique partiel, puis s'exécute comme `/new` sur cet historique. |
| `/sessions` | Liste les sessions enregistrées du projet, la plus récente d'abord : identifiant, dernière mise à jour, nombre de questions, première question, puis ` · ⚠️ N error(s)` quand la session a enregistré des erreurs ; `*` marque la session courante. Avec `sessions.enabled: false` : `⚠️ sessions are off (set sessions.enabled: true in the YAML)`. | Envoyée au modèle comme nouveau message. |
| `/resume [id]` | Reprend une session enregistrée : la plus récemment mise à jour autre que la courante, en ignorant les vides, ou l'identifiant donné. Affiche `↩️ resumed <id> — N message(s), started with "<première question>"` (suivi de ` · ⚠️ N error(s)` quand la session a enregistré des erreurs) ; réinitialise le détecteur de boucles et le compte de tokens du serveur ; les tours suivants sont enregistrés dans cette session. Refusée avec une raison `⚠️` quand les sessions sont désactivées, qu'il n'y a pas de session antérieure, que l'identifiant est inconnu ou désigne la session courante. | Envoyée au modèle comme nouveau message. |
| `/help` | Affiche les commandes de cette façade, une par ligne avec leur description, alignées. | Envoyée au modèle comme nouveau message. |
| `/copy [n\|all]` | Copie la dernière réponse (`n` : la n-ième depuis la fin) dans le presse-papiers via `pbcopy`/`wl-copy`/`xclip`/`xsel` ou, à défaut, OSC 52 quand stdout est un terminal, et affiche `📋 copied N chars (<chemin>)` ou `⚠️ …`. `/copy all` est réservé au mode fenêtre : ici la commande le dit. | Envoyée au modèle comme nouveau message. |

Avec `sessions.enabled`, `/new` laisse le fichier de la session courante tel quel ; la question suivante ouvre un nouveau fichier. Une ligne vide à l'invite est ignorée.

## `@chemin` dans une question

| Saisie | Effet |
|--------|-------|
| `@<chemin>` en début de ligne ou après un espace, une parenthèse ou un guillemet | Si le chemin existe (relatif au répertoire de lancement, absolu, ou `~/…`), une ligne atténuée `📎 <chemin absolu>` est affichée et `[attached file: <chemin absolu>]` (ou `[attached directory: …]`) est ajouté au message que reçoit le modèle. La ponctuation finale est ignorée ; chaque chemin est attaché une fois. |
| Un `@<chemin>` qui ne désigne rien sur le disque, ou `@` collé à un mot | Laissé tel quel. |

Détails et exemples : [Désigner un fichier au modèle avec `@chemin`](../how-to/attach-a-file.md).

## Tout autre texte pendant une génération

| Saisie | Comportement |
|--------|--------------|
| Une ligne qui n'est pas une commande | Affiche `🔄 New command received. Cancelling current task...`, annule la génération en cours, conserve son historique partiel, puis soumet la nouvelle ligne comme question suivante. |

## Raccourcis clavier

| Touche | À l'invite | Pendant une génération |
|--------|------------|------------------------|
| `Ctrl+C` | Affiche `Goodbye.` et quitte. | Affiche `🛑 Interrupted (Ctrl+C).` et annule la génération ; l'invite revient. |
| `Ctrl+D` (fin d'entrée) | Quitte. | — |

## Touches du mode fenêtre

Dans `mm -tui` les mêmes commandes existent ; `/abort` au repos affiche `⚠️ No generation in progress.` comme notice, et le sélecteur ouvert par `/` les liste. Les touches :

| Touche | Action |
|--------|--------|
| `Entrée` | Envoie la zone (rien sur une zone vide). Avec le sélecteur ouvert sur un nom incomplet, le complète à la place. |
| `Ctrl-J`, `Alt-Entrée` | Insère un saut de ligne dans la zone. |
| `Échap` | Annule le tour en cours ; ferme le sélecteur ; refuse une permission en attente. |
| `Ctrl-C` | Annule le tour en cours ; quitte au repos. |
| `Tab` | Déplace le focus entre la zone et la conversation ; complète le choix du sélecteur quand il est ouvert. |
| `↑` `↓` | Dans la zone : passent d'une rangée à l'autre — une ligne longue est repliée aux espaces sur plusieurs rangées — et font défiler la conversation depuis sa première/dernière rangée. Sur la conversation : défilent d'une ligne. Dans le sélecteur : déplacent le choix. |
| `PgUp` `PgDn` | Défilent d'une page. |
| `Début` `Fin` | Dans la zone : début/fin de ligne. Sur la conversation : haut / bas (le bas reprend le suivi). |
| `Ctrl-L` | Efface la conversation affichée ; l'historique est conservé. |
| `F1` | Comme `/help`. |
| `F2` | Bascule la capture de la souris. Désactivée (défaut) : le cliquer-glisser du terminal sélectionne du texte ; la barre d'état indique `F2 mouse: off`. Activée : la molette fait défiler, `Maj`+glisser sélectionne, la barre d'état indique `mouse: on (Shift+drag selects)`. |
| `Ctrl-Y` | Comme `/copy` : la dernière réponse dans le presse-papiers. |
| `a` `s` `r` | Répondent à une permission en attente : autoriser une fois, autoriser cet outil pour la session, refuser. |
| Molette | Fait défiler la conversation — seulement quand la souris est capturée (F2). |
| Collage encadré | Inséré en un bloc ; ses sauts de ligne deviennent des sauts de ligne, jamais un envoi. Au-delà de 3 lignes ou de 200 caractères : replié en un jeton `[Pasted #n · L lines · C chars]` qui s'édite comme un seul caractère ; Entrée envoie le texte complet, la conversation garde le jeton. Un `@chemin` dans un collage n'est pas résolu. |

## Messages affichés en fin de tour

| Message | Signification |
|---------|---------------|
| `🛑 Generation aborted.` | Le tour a été annulé (`/abort`, `Ctrl+C`). La question et les tours d'outils terminés restent dans l'historique. |
| `[error: …]` | Le fournisseur a expliqué un échec en une ligne ; une question restée sans réponse est retirée de l'historique. |
| `⚙ N command(s)` | Nombre de commandes `bash` réellement exécutées dans le tour. |
| `· 📝 N file op(s)` | Ajouté quand des outils de fichiers ont tourné. |
| `· 📖 N skill(s)` | Ajouté quand des skills ont été chargés. |
| Liste numérotée en vert | Les commandes et opérations sur fichiers du tour, une par ligne, quand `displayCommands: true`. |

## Mode ACP

Deux commandes existent en mode ACP : `/new` et `/compact`. Elles sont annoncées à l'éditeur par une notification `available_commands_update` et interceptées par `session/prompt` quand le texte du prompt, débarrassé de ses espaces, est exactement la commande. Chacune répond par un `agent_message_chunk` portant la ligne que le terminal afficherait, puis `stopReason: end_turn` ; le modèle n'est pas consulté.

| Commande | En ACP |
|----------|--------|
| `/new` | Comme dans le terminal : historique ramené au prompt système, compte de tokens oublié ; l'identifiant de session, le `cwd` et les autorisations « toujours autoriser » sont conservés. |
| `/compact` | Comme dans le terminal, toujours forcée : `🗜️ compressed …`, `🗜️ nothing to compact: …` ou `[compact: failed, history kept: …]`. Attend d'abord la fin d'un tour en cours. |

`/quit` et `/abort` n'existent pas en mode ACP : l'éditeur possède le processus et le termine en fermant stdin, et il annule un tour avec sa propre touche d'arrêt via `session/cancel`. Voir la [référence ACP](acp.md).