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. a9409af · on main · k33g · 2d ago
v1.0.6.fr.md · 83 lines · 7.2 KBmarkdown
Blame HistoryOpen raw

mini-me v1.0.6

English version

Un client ACP peut prêter à l'agent ses propres fonctions comme outils, et mini-me tourne sur Kronk, le serveur d'inférence Go d'Ardan Labs.

Nouveautés

Des outils prêtés par un client ACP (#202)

En mode ACP, le programme qui pilote mm peut maintenant donner à l'agent ses propres outils. Par exemple les buffers ouverts d'un éditeur, les données d'une application ou un appareil. Le modèle les appelle comme bash ou read_file, sous le nom client_<nom>. mm transmet chaque appel au client sous forme de requête d'extension ACP et rend la réponse au modèle. ACP ne définit aucun moyen de décrire un tel outil : mm en définit donc un, sous son propre espace de noms, org.mini-me. Un client qui ne s'en sert pas n'envoie rien, et rien ne change.

  • Deux façons d'annoncer les outils, réglées par acp.clientTools.discovery.
    • meta (par défaut) : le client liste ses outils dans initialize.
    • request : le client dit seulement qu'il a des outils, et mm demande la liste à chaque ouverture, chargement ou reprise de session. C'est pour des outils qui dépendent de la session.
  • Permissions, réglées par acp.clientTools.permissions.
    • auto (par défaut) ne demande au client que si yolo vaut false.
    • ask demande avant chaque appel.
    • Le défaut est auto, là où celui de MCP est ask : un outil client est une fonction du programme même qui a lancé mm.
  • Les erreurs ne terminent jamais le tour. Un client qui échoue, ne répond pas dans acp.clientTools.timeout (30s), ou répond Method not found donne au modèle un texte [client tool error: …]. Une entrée inutilisable de la liste est ignorée avec une ligne sur stderr.
  • Pour le couper : acp.clientTools.enabled: false. Les outils n'existent qu'en mode ACP : le terminal et la fenêtre n'ont pas de client pour les prêter.

La spécification est écrite pour les auteurs de clients : le JSON exact de l'annonce, de la requête de liste, d'un appel et de sa réponse. Le paquet Go de demo.acp.sdk propose des outils avec Options.Tools et ToolDiscovery.

Vérifié avec Qwen3.5 4B sur llmman : l'exemple Go, dans les deux modes, et la démo Node.js, en meta, request et yolo: false. La démo Node.js a aussi tourné sur macOS.

Voir Proposer des outils depuis votre client ACP, la spécification et pourquoi elle a cette forme.

Fournisseur Kronk (#75)

provider: kronk fait tourner mini-me sur Kronk, le serveur d'inférence Go d'Ardan Labs. Kronk embarque llama.cpp sans processus llama-server. mm utilise son API compatible OpenAI sur http://127.0.0.1:11435/v1. Depuis une sandbox, mm se replie sur http://host.docker.internal:11435/v1.

  • La fenêtre est connue dès le démarrage. C'est celle avec laquelle Kronk sert le modèle, lue auprès de Kronk que le modèle soit chargé ou non, par exemple ctx: 131072 (/v1/kronk/models).
  • autoPull télécharge un modèle que Kronk n'a pas, et /unload et l'outil unload_model libèrent sa mémoire.
  • Le résumé d'une compaction coupe le raisonnement avec chat_template_kwargs, que Kronk respecte ; Kronk ignore reasoning_effort: none. Pas de ligne Reading the prompt … : Kronk n'envoie pas d'avancement pendant qu'il lit.
  • Un Kronk protégé (modes authenticated ou full-protected) prend son jeton dans KRONK_TOKEN. Un jeton refusé donne au démarrage un avertissement qui nomme la variable.
  • mm init --provider kronk liste les modèles de Kronk et lit, auprès de Kronk, la fenêtre, l'échantillonnage du GGUF et l'interrupteur de raisonnement du chat template.
  • Les profils Kronk. Kronk liste aussi des profils de configuration, provider/modelID/PROFIL (par exemple …/Qwopus3.5-4B-Coder.Q8_0/AGENT). Un profil, c'est le même modèle avec ses propres réglages dans le model_config.yaml de Kronk.
    • mm init dit ce qu'est un profil, et recopie son échantillonnage dans le fichier. Sans cette copie, il ne s'appliquerait jamais : mm envoie temperature, top_p et max_tokens à chaque requête, même sans bloc sampling:, et une valeur de la requête l'emporte sur celle du profil.
    • La fenêtre affiche un profil comme Qwopus3.5-4B-Coder.Q8…/AGENT au lieu de AGENT seul.

Depuis un Docker Sandbox, lancez Kronk sur l'hôte avec kronk server start --api-host 0.0.0.0:11435 : par défaut, il n'écoute que sur la boucle locale. L'id sous lequel Kronk sert un modèle n'est pas toujours celui du téléchargement : unsloth/Qwen3.5-2B-GGUF:Q4_K_M est servi comme unsloth/Qwen3.5-2B-Q4_K_M. Prenez l'id que donne GET /v1/models.

Vérifié avec Kronk 1.33.2, Qwopus3.5 4B Coder et Qwen3.5 2B :

  • un tour avec appels d'outils ;
  • /unload ;
  • mm init --provider kronk --check ;
  • la fenêtre et l'échantillonnage d'un profil.

Pas essayé : un vrai téléchargement par autoPull (seule la réponse pour un modèle déjà installé a été lue), une compaction, et un Kronk protégé.

Voir Faire tourner mini-me sur Kronk.

Démos

  • demos/kronk/ : un agent de code sur Kronk avec mradermacher/Qwopus3.5-4B-Coder.Q8_0, et la ligne à changer pour Qwen3.5 2B.
  • demo.acp.sdk/client-tools-nodejs/ : un client Node.js sans dépendance qui prête à l'agent un outil, host_info, le système, le CPU, la mémoire ou l'uptime de la machine du client. L'agent n'a pas de shell : cet outil est son seul moyen de savoir.
  • demo.acp.sdk/go/ : Options.Tools, et examples/clienttools, une liste de tâches que l'agent remplit et lit.

Documentation

Mise à jour

  • Les fichiers d'agent ne changent pas. Remplacez le binaire : voir les guides d'installation pour macOS, Linux et Windows.

  • Nouvelles clés :

    • acp.clientTools.enabled (true) ;
    • acp.clientTools.discovery (meta) ;
    • acp.clientTools.permissions (auto) ;
    • acp.clientTools.timeout (30s).

    Un client ACP qui n'annonce aucun outil ne voit aucune différence.

  • Nouvelle valeur de provider : kronk. unknown provider liste maintenant dmr, kronk, llamacpp, llmman, ollama, openai.

 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
# mini-me v1.0.6

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

Un client ACP peut prêter à l'agent ses propres fonctions comme outils, et mini-me tourne sur Kronk, le serveur d'inférence Go d'Ardan Labs.

## Nouveautés

### Des outils prêtés par un client ACP (#202)

En mode ACP, le programme qui pilote mm peut maintenant donner à l'agent ses propres outils. Par exemple les buffers ouverts d'un éditeur, les données d'une application ou un appareil. Le modèle les appelle comme `bash` ou `read_file`, sous le nom `client_<nom>`. mm transmet chaque appel au client sous forme de requête d'extension ACP et rend la réponse au modèle. ACP ne définit aucun moyen de décrire un tel outil : mm en définit donc un, sous son propre espace de noms, `org.mini-me`. Un client qui ne s'en sert pas n'envoie rien, et rien ne change.

- **Deux façons d'annoncer les outils**, réglées par `acp.clientTools.discovery`.
  - `meta` (par défaut) : le client liste ses outils dans `initialize`.
  - `request` : le client dit seulement qu'il a des outils, et mm demande la liste à chaque ouverture, chargement ou reprise de session. C'est pour des outils qui dépendent de la session.
- **Permissions**, réglées par `acp.clientTools.permissions`.
  - `auto` (par défaut) ne demande au client que si `yolo` vaut `false`.
  - `ask` demande avant chaque appel.
  - Le défaut est `auto`, là où celui de MCP est `ask` : un outil client est une fonction du programme même qui a lancé mm.
- **Les erreurs ne terminent jamais le tour.** Un client qui échoue, ne répond pas dans `acp.clientTools.timeout` (`30s`), ou répond `Method not found` donne au modèle un texte `[client tool error: …]`. Une entrée inutilisable de la liste est ignorée avec une ligne sur stderr.
- **Pour le couper** : `acp.clientTools.enabled: false`. Les outils n'existent qu'en mode ACP : le terminal et la fenêtre n'ont pas de client pour les prêter.

La spécification est écrite pour les auteurs de clients : le JSON exact de l'annonce, de la requête de liste, d'un appel et de sa réponse. Le paquet Go de `demo.acp.sdk` propose des outils avec `Options.Tools` et `ToolDiscovery`.

Vérifié avec Qwen3.5 4B sur llmman : l'exemple Go, dans les deux modes, et la démo Node.js, en `meta`, `request` et `yolo: false`. La démo Node.js a aussi tourné sur macOS.

Voir [Proposer des outils depuis votre client ACP](../docs/fr/how-to/offer-tools-from-an-acp-client.md), la [spécification](../docs/fr/reference/acp-client-tools.md) et [pourquoi elle a cette forme](../docs/fr/explanation/acp-client-tools.md).

### Fournisseur Kronk (#75)

`provider: kronk` fait tourner mini-me sur [Kronk](https://www.kronkai.com), le serveur d'inférence Go d'Ardan Labs. Kronk embarque llama.cpp sans processus `llama-server`. mm utilise son API compatible OpenAI sur `http://127.0.0.1:11435/v1`. Depuis une sandbox, mm se replie sur `http://host.docker.internal:11435/v1`.

- **La fenêtre est connue dès le démarrage.** C'est celle avec laquelle Kronk sert le modèle, lue auprès de Kronk que le modèle soit chargé ou non, par exemple `ctx: 131072 (/v1/kronk/models)`.
- **`autoPull`** télécharge un modèle que Kronk n'a pas, et **`/unload`** et l'outil `unload_model` libèrent sa mémoire.
- **Le résumé d'une compaction coupe le raisonnement** avec `chat_template_kwargs`, que Kronk respecte ; Kronk ignore `reasoning_effort: none`. Pas de ligne `Reading the prompt …` : Kronk n'envoie pas d'avancement pendant qu'il lit.
- **Un Kronk protégé** (modes `authenticated` ou `full-protected`) prend son jeton dans `KRONK_TOKEN`. Un jeton refusé donne au démarrage un avertissement qui nomme la variable.
- **`mm init --provider kronk`** liste les modèles de Kronk et lit, auprès de Kronk, la fenêtre, l'échantillonnage du GGUF et l'interrupteur de raisonnement du chat template.
- **Les profils Kronk.** Kronk liste aussi des profils de configuration, `provider/modelID/PROFIL` (par exemple `…/Qwopus3.5-4B-Coder.Q8_0/AGENT`). Un profil, c'est le même modèle avec ses propres réglages dans le `model_config.yaml` de Kronk.
  - `mm init` dit ce qu'est un profil, et recopie son échantillonnage dans le fichier. Sans cette copie, il ne s'appliquerait jamais : mm envoie `temperature`, `top_p` et `max_tokens` à chaque requête, même sans bloc `sampling:`, et une valeur de la requête l'emporte sur celle du profil.
  - La fenêtre affiche un profil comme `Qwopus3.5-4B-Coder.Q8…/AGENT` au lieu de `AGENT` seul.

Depuis un Docker Sandbox, lancez Kronk sur l'hôte avec `kronk server start --api-host 0.0.0.0:11435` : par défaut, il n'écoute que sur la boucle locale. L'id sous lequel Kronk sert un modèle n'est pas toujours celui du téléchargement : `unsloth/Qwen3.5-2B-GGUF:Q4_K_M` est servi comme `unsloth/Qwen3.5-2B-Q4_K_M`. Prenez l'id que donne `GET /v1/models`.

Vérifié avec Kronk 1.33.2, Qwopus3.5 4B Coder et Qwen3.5 2B :
- un tour avec appels d'outils ;
- `/unload` ;
- `mm init --provider kronk --check` ;
- la fenêtre et l'échantillonnage d'un profil.

**Pas essayé** : un vrai téléchargement par `autoPull` (seule la réponse pour un modèle déjà installé a été lue), une compaction, et un Kronk protégé.

Voir [Faire tourner mini-me sur Kronk](../docs/fr/how-to/run-with-kronk.md).

## Démos

- [`demos/kronk/`](../demos/kronk/README.fr.md) : un agent de code sur Kronk avec `mradermacher/Qwopus3.5-4B-Coder.Q8_0`, et la ligne à changer pour Qwen3.5 2B.
- [`demo.acp.sdk/client-tools-nodejs/`](../demo.acp.sdk/client-tools-nodejs/README.fr.md) : un client Node.js sans dépendance qui prête à l'agent un outil, `host_info`, le système, le CPU, la mémoire ou l'uptime de la machine du client. L'agent n'a pas de shell : cet outil est son seul moyen de savoir.
- [`demo.acp.sdk/go/`](../demo.acp.sdk/go/README.fr.md) : `Options.Tools`, et `examples/clienttools`, une liste de tâches que l'agent remplit et lit.

## Documentation

- Nouveau :
  - [Proposer des outils depuis votre client ACP](../docs/fr/how-to/offer-tools-from-an-acp-client.md) ;
  - [Outils du client ACP](../docs/fr/reference/acp-client-tools.md), la spécification ;
  - [Outils du client ACP — explication](../docs/fr/explanation/acp-client-tools.md) ;
  - [Faire tourner mini-me sur Kronk](../docs/fr/how-to/run-with-kronk.md).
- Mis à jour pour Kronk et les outils client :
  - les références de configuration, de la CLI et des outils ;
  - les explications sur les fournisseurs, `mm init` et les modèles qui réfléchissent ;
  - les guides pour couper le raisonnement, libérer la mémoire d'un modèle et tourner dans un Docker Sandbox.
- Le guide d'installation macOS montre comment vérifier la signature du binaire, avec `codesign`, avant de l'installer.

## 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).
- Nouvelles clés :
  - `acp.clientTools.enabled` (`true`) ;
  - `acp.clientTools.discovery` (`meta`) ;
  - `acp.clientTools.permissions` (`auto`) ;
  - `acp.clientTools.timeout` (`30s`).
  
  Un client ACP qui n'annonce aucun outil ne voit aucune différence.
- Nouvelle valeur de `provider` : `kronk`. `unknown provider` liste maintenant `dmr, kronk, llamacpp, llmman, ollama, openai`.