bots-garden/mini-mepublic Fork
⑂ feature/response-request
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. 2d0776dUnverified · on feature/response-request · k33g · 16d ago
ask-another-agent-from-a-skill.md · 80 lines · 4.6 KBmarkdown
Blame HistoryOpen raw

Comment interroger un autre agent depuis une skill ou un script

Ce guide montre comment faire poser une question à un autre agent mm par une skill — ou par n'importe quel script shell — et se servir de sa réponse. Il suppose que les agents sont déjà déclarés sous mmConfigs (voir comment interroger un autre agent). Pour que votre modèle confie du travail à un autre agent de lui-même, l'outil ask_agent est la voie la plus simple : aucune commande à recopier, et la fenêtre montre quel agent travaille. Une skill sert pour une procédure figée, un script, ou plusieurs agents en une seule commande.

Étapes

  1. Dans la skill, rappelez le même mm via les variables que mm exporte vers les commandes de son outil bash. MM_BIN est le mm en cours, et MM_CONFIG sa configuration : --ask trouve donc les noms des agents sans chemin :

    "$MM_BIN" --ask jan -p "What is the capital of Peru?"
    

    stdout porte la réponse et rien d'autre ; l'en-tête et les appels d'outils de l'agent vont sur stderr.

  2. Pour envoyer la conversation, écrivez-la sur stdin, puis une ligne ---, puis la question :

    "$MM_BIN" --ask-with-context reviewer <<'CONTEXT'
    User: I think Go's goroutines are OS threads.
    Assistant: They are not: the Go runtime schedules them onto a few OS threads.
    ---
    Is the assistant right?
    CONTEXT
    

    C'est le modèle qui écrit ce résumé lui-même : une commande ne peut pas lire la conversation.

  3. Dites au modèle, dans la skill, de lancer la commande une seule fois et de présenter la réponse comme celle de l'autre agent. Une skill complète (skills/second-opinion/SKILL.md) :

    ---
    name: second-opinion
    description: Get a second opinion from the reviewer agent on a claim or an answer from this conversation.
    keywords: second opinion, review, check, deuxième avis, vérifie, relis
    ---
    
    # Second opinion
    
    Call your `bash` tool ONCE with this command, the conversation summarised in English above the `---` line, the question below it:
    
        "$MM_BIN" --ask-with-context reviewer <<'CONTEXT'
        User: <the claim>
        Assistant: <your answer, if any>
        ---
        Is this right? Correct it if not.
        CONTEXT
    
    What it prints is the reviewer's answer. Report it, starting with "The reviewer says:"; never answer in its place. If it prints `[ask: …]`, tell the user that line.
    

    Gardez une telle commande courte : un petit modèle recopie une longue commande de façon inexacte (guillemets, préfixes).

  4. Relevez les délais dans la configuration de l'agent qui pose la question. Un modèle local peut mettre une minute à répondre, et les deux délais par défaut sont bien en dessous :

    bashTimeout: 3m       # une commande bash (30s par défaut)
    watchdogTimeout: 3m   # continue de compter pendant qu'une commande tourne (ticket 57)
    
  5. Lancez l'agent depuis le dossier qu'attendent les skills et demandez en langage courant :

    > I think Go's goroutines are OS threads. Get a second opinion from Lucy on that claim.
    📖 read_skill: second-opinion
    🛠️  bash: "$MM_BIN" --ask-with-context reviewer <<'CONTEXT' …
       │ 🗣 asking reviewer (llmman/hf.co/Menlo/Lucy-gguf:Q4_K_M), with the conversation…
       │ The assistant's answer is correct. Go goroutines are not OS threads; …
    

Variantes

  • Depuis un terminal ou un script, hors de mm. Nommez la configuration : mm -config demo-llmman/agent.llmman.yaml --ask lucy -p "…", ou mettez la question sur stdin. Vérifiez le code de sortie : 0 réponse obtenue, 1 échec (la raison est sur stderr), 130 interrompu.
  • Un agent qui doit seulement répondre. Donnez-lui une configuration avec bashTool: false, editTools: false, planTool: false et sans skills — demo-llmman/agent.lucy-reviewer.yaml en est une. Un petit modèle doté de tous ses outils a tendance à s'égarer (lire des fichiers, charger des skills) quand on lui demande seulement son avis.
  • Récupérer la réponse dans une variable. answer=$("$MM_BIN" --ask jan -p "…") — stdout ne contient que la réponse.

Voir aussi

 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
# Comment interroger un autre agent depuis une skill ou un script

Ce guide montre comment faire poser une question à un autre agent mm par une skill — ou par n'importe quel script shell — et se servir de sa réponse. Il suppose que les agents sont déjà déclarés sous `mmConfigs` (voir [comment interroger un autre agent](ask-another-agent.md)). Pour que votre modèle confie du travail à un autre agent de lui-même, l'[outil `ask_agent`](let-the-agent-call-other-agents.md) est la voie la plus simple : aucune commande à recopier, et la fenêtre montre quel agent travaille. Une skill sert pour une procédure figée, un script, ou plusieurs agents en une seule commande.

## Étapes

1. Dans la skill, rappelez le même mm via les variables que mm exporte vers les commandes de son outil `bash`. `MM_BIN` est le `mm` en cours, et `MM_CONFIG` sa configuration : `--ask` trouve donc les noms des agents sans chemin :

   ```bash
   "$MM_BIN" --ask jan -p "What is the capital of Peru?"
   ```

   stdout porte la réponse et rien d'autre ; l'en-tête et les appels d'outils de l'agent vont sur stderr.

2. Pour envoyer la conversation, écrivez-la sur stdin, puis une ligne `---`, puis la question :

   ```bash
   "$MM_BIN" --ask-with-context reviewer <<'CONTEXT'
   User: I think Go's goroutines are OS threads.
   Assistant: They are not: the Go runtime schedules them onto a few OS threads.
   ---
   Is the assistant right?
   CONTEXT
   ```

   C'est le modèle qui écrit ce résumé lui-même : une commande ne peut pas lire la conversation.

3. Dites au modèle, dans la skill, de lancer la commande une seule fois et de présenter la réponse comme celle de l'autre agent. Une skill complète (`skills/second-opinion/SKILL.md`) :

   ```markdown
   ---
   name: second-opinion
   description: Get a second opinion from the reviewer agent on a claim or an answer from this conversation.
   keywords: second opinion, review, check, deuxième avis, vérifie, relis
   ---

   # Second opinion

   Call your `bash` tool ONCE with this command, the conversation summarised in English above the `---` line, the question below it:

       "$MM_BIN" --ask-with-context reviewer <<'CONTEXT'
       User: <the claim>
       Assistant: <your answer, if any>
       ---
       Is this right? Correct it if not.
       CONTEXT

   What it prints is the reviewer's answer. Report it, starting with "The reviewer says:"; never answer in its place. If it prints `[ask: …]`, tell the user that line.
   ```

   Gardez une telle commande courte : un petit modèle recopie une longue commande de façon inexacte (guillemets, préfixes).

4. Relevez les délais dans la configuration de l'agent qui pose la question. Un modèle local peut mettre une minute à répondre, et les deux délais par défaut sont bien en dessous :

   ```yaml
   bashTimeout: 3m       # une commande bash (30s par défaut)
   watchdogTimeout: 3m   # continue de compter pendant qu'une commande tourne (ticket 57)
   ```

5. Lancez l'agent depuis le dossier qu'attendent les skills et demandez en langage courant :

   ```text
   > I think Go's goroutines are OS threads. Get a second opinion from Lucy on that claim.
   📖 read_skill: second-opinion
   🛠️  bash: "$MM_BIN" --ask-with-context reviewer <<'CONTEXT' …
      │ 🗣 asking reviewer (llmman/hf.co/Menlo/Lucy-gguf:Q4_K_M), with the conversation…
      │ The assistant's answer is correct. Go goroutines are not OS threads; …
   ```

## Variantes

- **Depuis un terminal ou un script, hors de mm.** Nommez la configuration : `mm -config demo-llmman/agent.llmman.yaml --ask lucy -p "…"`, ou mettez la question sur stdin. Vérifiez le code de sortie : 0 réponse obtenue, 1 échec (la raison est sur stderr), 130 interrompu.
- **Un agent qui doit seulement répondre.** Donnez-lui une configuration avec `bashTool: false`, `editTools: false`, `planTool: false` et sans skills — `demo-llmman/agent.lucy-reviewer.yaml` en est une. Un petit modèle doté de tous ses outils a tendance à s'égarer (lire des fichiers, charger des skills) quand on lui demande seulement son avis.
- **Récupérer la réponse dans une variable.** `answer=$("$MM_BIN" --ask jan -p "…")` — stdout ne contient que la réponse.

## Voir aussi

- Toutes les options, flux et codes de sortie : [référence de la ligne de commande](../reference/cli.md#spécificités-du-mode-ask)
- `bashTimeout` et `mmConfigs` : [référence de configuration](../reference/configuration.md)
- Pourquoi l'agent est un processus enfant, et ce que `--ask` ajoute pour les scripts : [interroger un autre agent — explication](../explanation/asking-another-agent.md)