bots-garden/mini-mepublic Fork
⑂ main
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. 7bd25a0 · on main · k33g · yesterday
v1.0.5.fr.md · 78 lines · 6.8 KBmarkdown
Blame HistoryOpen raw

mini-me v1.0.5

English version

mm dockerinit et mm sbxinit écrivent les fichiers pour faire tourner mini-me dans un conteneur ou un Docker Sandbox, mm init donne son nom à l'agent, deux démos de vibe coding (Go et Swift), et un binaire macOS signé et notarisé par Apple.

Nouveautés

mm dockerinit : mini-me dans un conteneur (#189)

mm dockerinit écrit deux fichiers dans le dossier courant :

  • un Dockerfile qui installe la dernière release de mm, pour amd64 et arm64. Il trouve la release par le SHA256SUMS de releases/latest : une nouvelle release invalide donc le cache de Docker. L'agent ne tourne jamais en root : l'image a un utilisateur mm.
  • un compose.yaml qui monte votre projet et lance le conteneur avec vos identifiants d'utilisateur et de groupe (MM_UID et MM_GID les remplacent).

La sortie de la commande et le guide montrent les deux façons de s'en servir : un conteneur qui reste lancé (docker compose up -d --wait, puis docker compose exec … mm tui <agent>) et une exécution ponctuelle (docker compose run --rm …). Pour les deux architectures à la fois, construisez avec docker buildx : platforms dans compose.yaml échoue sans QEMU. Un éditeur peut parler à mm dans le conteneur par ACP, via docker exec -i.

Si Dockerfile ou compose.yaml existe déjà, mm demande avant de l'écraser (non par défaut). Avec --yes, ou quand l'entrée se termine, il n'écrit rien.

Essayé sur linux/arm64 avec Docker 29.8.1. Pas essayé : la construction amd64, l'accès direct au modèle par host.docker.internal, les hôtes macOS et Windows.

Voir Faire tourner mini-me dans un conteneur.

mm sbxinit : un sbxenv.yaml pour Docker Sandboxes (#191)

mm sbxinit écrit sbxenv.yaml dans le dossier courant, pour le kit mini-me :

  • le kit à sa dernière release, lue sur la page des releases du kit au moment de générer le fichier (latest, avec un avertissement, quand la page est injoignable) ;
  • --workspace ./workspace devient un chemin absolu ;
  • sandboxOptions.pullPolicy: always.

Le fichier d'agent est cherché dans le dossier courant, puis dans le workspace. S'il est hors du workspace, mm sbxinit avertit seulement : le guide explique les deux solutions (déplacer le fichier, ou monter son dossier en lecture seule et y faire pointer AGENT_CONFIG). Les fichiers existants sont traités comme avec mm dockerinit.

Pas essayé : sbx env create avec le fichier généré.

Voir Générer un sbxenv.yaml avec mm sbxinit.

mm init donne son nom à l'agent (#182)

Le prompt système d'un fichier écrit par mm init commence maintenant par Your name is <nom>., avec le nom tapé à Agent name?. Sans nom, l'agent prend celui de son usage (Your name is docs.). Interrogé sur son nom avec Mellum (Docker Model Runner), l'agent l'a donné 3 fois sur 3.

Pour les éditeurs, acp.name est le nom en minuscules (bob) et acp.title le nom suivi de l'usage (Bob (developer)).

Quand le fichier d'agent existe déjà, mm init demande Overwrite agent.yaml? (non par défaut, et il demande alors un autre nom de fichier). Le nouveau fichier est vérifié en le chargeant avant de remplacer l'ancien.

mm init renvoie vers la documentation en ligne (#179)

Les commentaires d'un fichier écrit par mm init pointent vers la documentation par des liens https://, au lieu de chemins qui n'avaient de sens que dans une copie du code source. Les indications Next: tiennent sur quatre lignes.

Orienter l'agent vers une liste de pages (#181)

Pas de nouveau réglage : la liste des URL que l'agent doit lire se met dans le prompt système. La nouvelle section du guide donne un exemple. Avec Mellum et trois URL, l'agent a récupéré la bonne page 4 fois sur 4. La liste oriente le modèle mais ne le limite pas : à qui demandait example.com, il l'a récupéré 2 fois sur 2 malgré « Do not use any other URL ». Bloquer des URL demanderait un hook.

Voir Orienter l'agent vers une liste de pages.

Distribution

  • Le binaire macOS est signé avec un Developer ID et notarisé par Apple. Téléchargé avec un navigateur, il se lance sans étape de quarantaine (macOS vérifie la notarisation en ligne au premier lancement). Téléchargé avec curl, comme dans le guide d'installation, rien ne change.
  • Les releases sont maintenant construites sur la machine du mainteneur et publiées en prerelease. Les fichiers et SHA256SUMS gardent les mêmes noms.

Démos

  • demos/gemma-coder/ : un spécialiste Go pour le vibe coding, sur Gemma 4 26B-A4B (réflexion activée, gopls pour lsp, yolo: true). Il écrit le code et ses tests, lance go build et go test, et corrige ce qui échoue. Mesuré sur neuf cas, deux essais chacun : 16/18.
  • demos/muse-coder/ : son équivalent Swift, sur Muse-Glimmer 30B (reasoning_strength: high, sourcekit-lsp, SwiftPM). Mesuré sur neuf cas, deux essais chacun : 17/18 avant la dernière modification du prompt, qui a corrigé lsp rename (2/2 ensuite). Les autres cas n'ont pas été remesurés avec le prompt final.
  • Déplacées sous demos/ : dev.team/ → demos/dev.team/, learning-rust/ → demos/learning-rust/, sbx/ → demos/use-with-sbx/.

Documentation

  • Nouveau : Faire tourner mini-me dans un conteneur.
  • Premiers pas avec MCP est corrigé (#180), ainsi que sa version anglaise, qui était une copie du tutoriel général. Il utilise demos/dmr/agent.dmr.mcp.yaml, montre les confirmations 🔐 de permissions: ask, et marche sans aucune clé API grâce à Wikipedia. Les étapes Context7 et GitHub n'ont pas été faites avec de vraies clés.
  • La skill vulcan-salute n'est chargée qu'une fois par conversation (#190) : les demandes suivantes réutilisent ce que contient l'historique, donc le récapitulatif affiche 📖 0 skill(s) alors que la commande s'exécute toujours. C'est le comportement attendu, pas un bug.

Mise à jour

  • Les fichiers d'agent ne changent pas. Remplacez le binaire : voir les guides d'installation pour macOS, Linux et Windows.
  • Deux nouvelles commandes, mm dockerinit et mm sbxinit.
  • Les fichiers écrits désormais par mm init commencent leur prompt système par Your name is …. Les fichiers écrits avant ne sont pas touchés.
  • Si vous utilisiez les démos depuis leurs anciens dossiers, elles sont maintenant sous demos/ (voir plus haut).
 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
# mini-me v1.0.5

*[English version](v1.0.5.en.md)*

`mm dockerinit` et `mm sbxinit` écrivent les fichiers pour faire tourner mini-me dans un conteneur ou un Docker Sandbox, `mm init` donne son nom à l'agent, deux démos de vibe coding (Go et Swift), et un binaire macOS signé et notarisé par Apple.

## Nouveautés

### `mm dockerinit` : mini-me dans un conteneur (#189)

`mm dockerinit` écrit deux fichiers dans le dossier courant :

- un `Dockerfile` qui installe la **dernière release** de mm, pour `amd64` et `arm64`. Il trouve la release par le `SHA256SUMS` de `releases/latest` : une nouvelle release invalide donc le cache de Docker. L'agent **ne tourne jamais en root** : l'image a un utilisateur `mm`.
- un `compose.yaml` qui monte votre projet et lance le conteneur avec vos identifiants d'utilisateur et de groupe (`MM_UID` et `MM_GID` les remplacent).

La sortie de la commande et le guide montrent les deux façons de s'en servir : un conteneur qui reste lancé (`docker compose up -d --wait`, puis `docker compose exec … mm tui <agent>`) et une exécution ponctuelle (`docker compose run --rm …`). Pour les deux architectures à la fois, construisez avec `docker buildx` : `platforms` dans `compose.yaml` échoue sans QEMU. Un éditeur peut parler à mm dans le conteneur par ACP, via `docker exec -i`.

Si `Dockerfile` ou `compose.yaml` existe déjà, mm demande avant de l'écraser (non par défaut). Avec `--yes`, ou quand l'entrée se termine, il n'écrit rien.

Essayé sur linux/arm64 avec Docker 29.8.1. **Pas essayé** : la construction amd64, l'accès direct au modèle par `host.docker.internal`, les hôtes macOS et Windows.

Voir [Faire tourner mini-me dans un conteneur](../docs/fr/how-to/run-in-a-container.md).

### `mm sbxinit` : un `sbxenv.yaml` pour Docker Sandboxes (#191)

`mm sbxinit` écrit `sbxenv.yaml` dans le dossier courant, pour le [kit mini-me](https://rickub.com/bots-garden/mini-me-kit) :

- le kit à sa **dernière release**, lue sur la page des releases du kit au moment de générer le fichier (`latest`, avec un avertissement, quand la page est injoignable) ;
- `--workspace ./workspace` devient un chemin absolu ;
- `sandboxOptions.pullPolicy: always`.

Le fichier d'agent est cherché dans le dossier courant, puis dans le workspace. S'il est hors du workspace, `mm sbxinit` avertit seulement : le guide explique les deux solutions (déplacer le fichier, ou monter son dossier en lecture seule et y faire pointer `AGENT_CONFIG`). Les fichiers existants sont traités comme avec `mm dockerinit`.

**Pas essayé** : `sbx env create` avec le fichier généré.

Voir [Générer un sbxenv.yaml avec `mm sbxinit`](../docs/fr/how-to/run-in-a-docker-sandbox.md#générer-un-sbxenvyaml-avec-mm-sbxinit).

### `mm init` donne son nom à l'agent (#182)

Le prompt système d'un fichier écrit par `mm init` commence maintenant par `Your name is <nom>.`, avec le nom tapé à `Agent name?`. Sans nom, l'agent prend celui de son usage (`Your name is docs.`). Interrogé sur son nom avec Mellum (Docker Model Runner), l'agent l'a donné 3 fois sur 3.

Pour les éditeurs, `acp.name` est le nom en minuscules (`bob`) et `acp.title` le nom suivi de l'usage (`Bob (developer)`).

Quand le fichier d'agent existe déjà, `mm init` demande `Overwrite agent.yaml?` (non par défaut, et il demande alors un autre nom de fichier). Le nouveau fichier est vérifié en le chargeant avant de remplacer l'ancien.

### `mm init` renvoie vers la documentation en ligne (#179)

Les commentaires d'un fichier écrit par `mm init` pointent vers la documentation par des liens `https://`, au lieu de chemins qui n'avaient de sens que dans une copie du code source. Les indications `Next:` tiennent sur quatre lignes.

### Orienter l'agent vers une liste de pages (#181)

Pas de nouveau réglage : la liste des URL que l'agent doit lire se met dans le prompt système. La nouvelle section du guide donne un exemple. Avec Mellum et trois URL, l'agent a récupéré la bonne page 4 fois sur 4. La liste **oriente** le modèle mais ne le **limite** pas : à qui demandait example.com, il l'a récupéré 2 fois sur 2 malgré « Do not use any other URL ». Bloquer des URL demanderait un hook.

Voir [Orienter l'agent vers une liste de pages](../docs/fr/how-to/fetch-a-web-page.md#orienter-lagent-vers-une-liste-de-pages).

## Distribution

- **Le binaire macOS est signé avec un Developer ID et notarisé par Apple.** Téléchargé avec un navigateur, il se lance sans étape de quarantaine (macOS vérifie la notarisation en ligne au premier lancement). Téléchargé avec `curl`, comme dans le guide d'installation, rien ne change.
- **Les releases sont maintenant construites sur la machine du mainteneur** et publiées en **prerelease**. Les fichiers et `SHA256SUMS` gardent les mêmes noms.

## Démos

- [`demos/gemma-coder/`](../demos/gemma-coder/README.fr.md) : un spécialiste Go pour le vibe coding, sur Gemma 4 26B-A4B (réflexion activée, gopls pour `lsp`, `yolo: true`). Il écrit le code et ses tests, lance `go build` et `go test`, et corrige ce qui échoue. Mesuré sur neuf cas, deux essais chacun : 16/18.
- [`demos/muse-coder/`](../demos/muse-coder/README.fr.md) : son équivalent Swift, sur Muse-Glimmer 30B (`reasoning_strength: high`, sourcekit-lsp, SwiftPM). Mesuré sur neuf cas, deux essais chacun : 17/18 avant la dernière modification du prompt, qui a corrigé `lsp rename` (2/2 ensuite). Les autres cas n'ont pas été remesurés avec le prompt final.
- Déplacées sous `demos/` : `dev.team/` → `demos/dev.team/`, `learning-rust/` → `demos/learning-rust/`, `sbx/` → `demos/use-with-sbx/`.

## Documentation

- Nouveau : [Faire tourner mini-me dans un conteneur](../docs/fr/how-to/run-in-a-container.md).
- [Premiers pas avec MCP](../docs/fr/tutorials/mcp-premiers-pas.md) est corrigé (#180), ainsi que sa version anglaise, qui était une copie du tutoriel général. Il utilise `demos/dmr/agent.dmr.mcp.yaml`, montre les confirmations `🔐` de `permissions: ask`, et marche sans aucune clé API grâce à Wikipedia. Les étapes Context7 et GitHub n'ont pas été faites avec de vraies clés.
- La skill `vulcan-salute` n'est chargée qu'une fois par conversation (#190) : les demandes suivantes réutilisent ce que contient l'historique, donc le récapitulatif affiche `📖 0 skill(s)` alors que la commande s'exécute toujours. C'est le comportement attendu, pas un bug.

## Mise à jour

- **Les fichiers d'agent ne changent pas.** Remplacez le binaire : voir les guides d'installation pour [macOS](../INSTALL.MACOS.md), [Linux](../INSTALL.LINUX.md) et [Windows](../INSTALL.WINDOWS.md).
- Deux nouvelles commandes, `mm dockerinit` et `mm sbxinit`.
- Les fichiers écrits désormais par `mm init` commencent leur prompt système par `Your name is …`. Les fichiers écrits avant ne sont pas touchés.
- Si vous utilisiez les démos depuis leurs anciens dossiers, elles sont maintenant sous `demos/` (voir plus haut).