bots-garden/mini-mepublic Fork 0
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.

tools.md · 103 lines · 5.1 KBmarkdown Blame HistoryRaw
💾 Saved. d722711 k33g 5h ago1# Référence : outils intégrés
2
3> Description neutre des outils déclarés au modèle. Un outil ne renvoie jamais d'erreur Go pour un échec ordinaire : le texte de l'échec est renvoyé au modèle comme sortie de l'outil. Chaque outil enregistre son appel dans le détecteur de boucle ; le même outil, la même entrée et la même sortie trois fois de suite ajoutent `[LOOP_DETECTED: …]` à la sortie.
4
5## `bash`
6
7Toujours déclaré.
8
9| Champ | Type | Description |
10|-------|------|-------------|
11| `command` | chaîne | La commande shell à exécuter. |
12
13| Aspect | Comportement |
14|--------|--------------|
15| Shell | `bash -c <command>`, un nouveau shell par appel, pas de stdin. |
16| Répertoire de travail | Le répertoire du processus en mode terminal ; le `cwd` de la session en mode ACP. |
17| Délai | 30 s ; la sortie se termine alors par `[error: 30s timeout exceeded]`. |
18| Sortie | stdout et stderr fusionnés, tronqués à `maxOutput` caractères. |
19| Code de sortie non nul | La sortie se termine par `[exit code: exit status N]`. |
20| Affichage terminal | `🛠️ bash: <command>` avant exécution, puis jusqu'à `previewLines` lignes grisées et indentées, ou `(no output)`. |
21| ACP | Appel d'outil de genre `execute` ; permission demandée avant exécution ; un refus renvoie `[command rejected by the user]` avec le statut `failed`. |
22
23## `read_skill`
24
25Déclaré seulement quand `skillsDir` contient au moins un skill (`<nom>.md` ou `<nom>/SKILL.md`).
26
27| Champ | Type | Description |
28|-------|------|-------------|
29| `name` | chaîne | Nom du skill, exactement tel que listé dans la description de l'outil. |
30
31| Aspect | Comportement |
32|--------|--------------|
33| Description | Phrase fixe suivie du catalogue : une ligne ` <name> — <description>` par skill, triées par nom. |
34| Sortie | Le markdown complet de `<skillsDir>/<name>.md`, ou de `<skillsDir>/<name>/SKILL.md` s'il n'y a pas de fichier à plat, tronqué à `maxOutput`. |
35| Nom inconnu | `No skill named "x". Available skills: a, b, c` |
36| Sécurité des chemins | Seul le nom de base de `name` est utilisé ; pas de traversée de répertoire. |
37| Affichage terminal | `📖 read_skill: <name>` ; le contenu n'est pas affiché. |
38| ACP | Appel d'outil de genre `read` ; pas de dialogue de permission. |
39
40## `read_file`
41
42Déclaré quand `editTools: true`.
43
44| Champ | Type | Défaut | Description |
45|-------|------|--------|-------------|
46| `path` | chaîne | — | Chemin du fichier, relatif au répertoire de travail. |
47| `start` | entier | `0` | Première ligne (base 1) ; `0` = depuis le début. |
48| `end` | entier | `0` | Dernière ligne (base 1, incluse) ; `0` = jusqu'à la fin. |
49| `numbered` | booléen | `false` | Préfixe chaque ligne de son numéro. |
50
51| Aspect | Comportement |
52|--------|--------------|
53| Fichier absent | `<path> does not exist. Create it with write_file` |
54| Sortie | Les lignes, tronquées à `maxOutput` ; le saut de ligne final n'est conservé que si la fin du fichier est affichée. |
55| ACP | Genre `read`, avec le chemin absolu comme emplacement. |
56
57## `write_file`
58
59Déclaré quand `editTools: true`.
60
61| Champ | Type | Description |
62|-------|------|-------------|
63| `path` | chaîne | Chemin du fichier, relatif au répertoire de travail ; les répertoires parents sont créés. |
64| `content` | chaîne | Le contenu entier du fichier. |
65
66| Aspect | Comportement |
67|--------|--------------|
68| Fichier existant | Entièrement remplacé. |
69| Contenu identique | Rien n'est écrit ; le résultat le dit. |
70| Sortie | Un en-tête d'une ligne et le diff par rapport au contenu précédent. |
71| ACP | Genre `edit` ; permission demandée ; le changement voyage comme un diff (diff de nouveau fichier à la création). |
72
73## `edit_file`
74
75Déclaré quand `editTools: true`.
76
77| Champ | Type | Défaut | Description |
78|-------|------|--------|-------------|
79| `path` | chaîne | — | Chemin d'un fichier existant. |
80| `edits` | tableau de `{old, new}` | — | Remplacements, tous résolus par rapport au fichier original. |
81| `edits[].old` | chaîne | — | Texte exact à trouver, présent exactement une fois. |
82| `edits[].new` | chaîne | — | Remplacement ; vide supprime le texte trouvé. |
83| `dry_run` | booléen | `false` | Rapporte ce qui changerait, n'écrit rien. |
84
85| Règle | Conséquence si violée |
86|-------|-----------------------|
87| `old` apparaît exactement une fois | Refus : introuvable, ou ambigu. |
88| Deux éditions ne doivent ni se chevaucher, ni s'imbriquer, ni se répéter | Refus. |
89| Les éditions sont résolues sur le texte original, jamais en cascade | — |
90| Toute édition refusée | Rien n'est écrit. |
91
92| Aspect | Comportement |
93|--------|--------------|
94| Sortie | Un en-tête d'une ligne (éditions appliquées, lignes ajoutées et supprimées, première ligne modifiée) et le diff avec numéros de ligne. |
95| ACP | Genre `edit` ; permission demandée ; le changement voyage comme un diff avec ancien et nouveau texte. |
96
97## Compteurs affichés après un tour
98
99| Compteur | Compte |
100|----------|--------|
101| `⚙ N command(s)` | Réponses de l'outil `bash` dans le tour. |
102| `📝 N file op(s)` | Réponses de `read_file`, `write_file`, `edit_file`. |
103| `📖 N skill(s)` | Réponses de `read_skill`. |