DevOps Elastic Hayway
Document

SUBSCRIBE TO GET FULL ACCESS TO THE E-BOOKS FOR FREE 🎁SUBSCRIBE NOW

Professional Dropdown with Icon

SUBSCRIBE NOW TO GET FREE ACCESS TO EBOOKS

Agent workflows multi-outils

À la fin de ce tutoriel agent workflows multi-outils, vous saurez distinguer un workflow d’agent d’un prompt, d’un skill et d’une routine, concevoir des boucles multi-outils (shell, navigateur, MCP, APIs, IDE) sous contrôle, et bâtir un lab /tmp/lab-ai-agent-workflows avec allowlist, planner JSON, exécuteur, HITL et journal d’audit — sans clés API.

Niveau : Intermédiaire · Temps estimé : 55–70 min · Versions / contexte : Cursor Agent / Composer + MCP · Claude Code tools / MCP · Codex · ChatGPT Actions · boucle DIY bash (aperçu) · Dernière vérification : 2026-09-11

Prérequis

Coût lab : 0 €. Agents cloud / IDE : quotas selon offre — à vérifier avant un run réel.

Ce que nous allons construire

/tmp/lab-ai-agent-workflows
  ├── allowlist.json
  ├── fixtures/{ci-failure,terraform-plan,metrics-stub}.json
  ├── planner-output.json
  ├── scripts/orchestrate.sh
  └── run.log
       → patterns · scénarios · panorama · ASCII · quiz · FAQ

(Alt image : « Boucle agent : planner, router, allowlist, HITL, audit ».)

Chapitre module D #31 : de la recette skill à la boucle contrôlée multi-outils — triage, revue, digests, sans mutation prod automatique.

Étape 1 — Workflow vs prompt, skill et routine

Prompt unique = réponse texte, pas d’outil ni d’audit. Skill = recette à la demande (parfois MCP). Workflow d’agent = boucle observe → planifie → outil → résultat → … sous runtime. Routine = même idée + déclencheur temps/événement (Routines).

Dimension Prompt Skill Workflow agent Routine
Boucle outils Non Optionnelle Oui, contrôlée Oui + trigger
Exécution Personne Runtime à l’appel Runtime / sandbox Scheduler + runtime
Risque Faible Moyen Élevé si mutations + budgets, HITL

Le skill dit comment trier un build ; le workflow dit quels outils et dans quel ordre, sous allowlist.

Étape 2 — Patterns multi-outils DevOps

  1. Planner → executor — le plan émet un tool_call JSON ; l’exécuteur ne lance que l’allowlist.
  2. Tool router — sous-catalogue selon l’intention (CI, IaC, métriques, docs).
  3. HITL — lectures auto ; mutations (commentaire PR, apply, Slack public) = porte humaine.
  4. Multi-agent handoff — triage → rédaction → review via JSON/fichiers, sans secrets en clair.

Un outil = une responsabilité. Contrat JSON : voir Function calling.

Étape 3 — Scénarios DevOps

  1. Triage CI — read_ci_logs → draft commentaire PR (HITL avant post).
  2. Revue IaC — lire plan Terraform stub → suggestions Markdown (jamais apply auto).
  3. Digest incident — métriques stub → brouillon Slack #incidents-draft (HITL).
  4. Sync docs — drift docs vs changements → draft PR docs.

Collecter en lecture seule ; synthétiser avec le LLM ; décider avec un humain.

Étape 4 — Panorama outillage 2026 (prudent)

Plateforme Rôle Attention
Cursor Agent / Composer + MCP Boucle IDE fichiers / terminal / MCP Sandbox et facturation selon offre
Claude Code tools / MCP CLI/IDE + MCP Quotas / changelog — à revérifier
Codex Agents code OpenAI Sessions ≠ automations planifiées
ChatGPT Actions API OpenAPI Pas un bot CI à SLA ops
DIY bash / Python Boucle maison + allowlist Contrôle total — lab ci-dessous

Préférez MCP / connecteurs pour les secrets. Détail : MCP DevOps.

Étape 5 — Architecture (ASCII)

Humain / trigger ──► Planner (LLM stub)
                         │ tool_call JSON
                         ▼
                   Tool router + allowlist
              ┌──────┬───────┼───────┐
           shell RO browser MCP*  API RO
              └──────┴───┬───┴───────┘
                         ▼
                   HITL gate ── mute / post / apply
                         ▼
                    run.log audit
* RW seulement après HITL

Le modèle propose ; le runtime filtre ; l’humain autorise les effets visibles.

Étape 6 — Lab /tmp/lab-ai-agent-workflows

Pas d’appel LLM live. Planner JSON → orchestrateur allowlist → HITL (CONFIRM=yes) → run.log.

mkdir -p /tmp/lab-ai-agent-workflows/{fixtures,scripts}
cd /tmp/lab-ai-agent-workflows

cat > allowlist.json << 'EOF'
{"tools":[
  {"name":"read_ci_logs","mutation":false},
  {"name":"read_terraform_plan","mutation":false},
  {"name":"read_metrics","mutation":false},
  {"name":"draft_pr_comment","mutation":true},
  {"name":"draft_slack_digest","mutation":true}
]}
EOF

cat > fixtures/ci-failure.json << 'EOF'
{"run_id":"run-2048","pipeline":"api-ci","branch":"feat/cache",
 "failed_step":"integration-tests",
 "excerpt":"FAIL test_cache_ttl: expected 60 got 0","commit":"abc1234"}
EOF

cat > fixtures/terraform-plan.json << 'EOF'
{"changes":[
  {"addr":"aws_s3_bucket.logs","action":"update"},
  {"addr":"aws_iam_policy.ci","action":"create"}],
 "destroy_count":0}
EOF

cat > fixtures/metrics-stub.json << 'EOF'
{"service":"checkout-api","error_rate_5m":4.2,"p99_ms":890,"alert":"ElevatedErrorRate"}
EOF

cat > planner-output.json << 'EOF'
{"goal":"Triage CI failure + draft commentaire PR",
 "steps":[
  {"tool":"read_ci_logs","args":{"path":"fixtures/ci-failure.json"}},
  {"tool":"draft_pr_comment","args":{"pr":42}}
]}
EOF

cat > scripts/orchestrate.sh << 'EOF'
#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
ALLOW="$ROOT/allowlist.json"; PLAN="$ROOT/planner-output.json"; LOG="$ROOT/run.log"
CONFIRM="${CONFIRM:-no}"; : > "$LOG"
ts(){ date -u +%Y-%m-%dT%H:%MZ; }
log(){ printf '[%s] %sn' "$(ts)" "$*" | tee -a "$LOG" >/dev/stderr; }
allowed(){ jq -e --arg n "$1" '.tools[]|select(.name==$n)' "$ALLOW" >/dev/null; }
is_mut(){ jq -e --arg n "$1" '.tools[]|select(.name==$n and .mutation==true)' "$ALLOW" >/dev/null; }

run_tool(){
  local tool="$1" args="$2"
  if ! allowed "$tool"; then log "REFUS tool_not_allowed name=$tool"; return 1; fi
  if is_mut "$tool" && [[ "$CONFIRM" != "yes" ]]; then
    log "HITL_BLOCKED tool=$tool (export CONFIRM=yes pour approuver)"
    echo "{"status":"blocked_hitl","tool":"$tool"}"; return 0
  fi
  case "$tool" in
    read_ci_logs)
      p=$(jq -r '.path' <<<"$args"); log "EXEC read_ci_logs path=$p"
      jq -c '{tool:"read_ci_logs",data:.}' "$ROOT/$p" ;;
    read_terraform_plan)
      log "EXEC read_terraform_plan"
      jq -c '{tool:"read_terraform_plan",data:.}' "$ROOT/fixtures/terraform-plan.json" ;;
    read_metrics)
      log "EXEC read_metrics"
      jq -c '{tool:"read_metrics",data:.}' "$ROOT/fixtures/metrics-stub.json" ;;
    draft_pr_comment)
      pr=$(jq -r '.pr' <<<"$args"); log "EXEC draft_pr_comment pr=$pr"
      jq -nc --argjson pr "$pr" 
        '{tool:"draft_pr_comment",pr:$pr,draft:("### Draft PR #($pr)n- Échec integration-testsn- Action humaine: pas de merge auto.")}' ;;
    draft_slack_digest)
      log "EXEC draft_slack_digest"
      jq -nc --slurpfile m "$ROOT/fixtures/metrics-stub.json" 
        '{tool:"draft_slack_digest",draft:("*[DRAFT]* "+$m[0].service+" error_rate="+($m[0].error_rate_5m|tostring)+"% — HITL requis")}' ;;
    *) log "REFUS unknown_tool name=$tool"; return 1 ;;
  esac
}

log "START goal=$(jq -r '.goal' "$PLAN")"
len=$(jq '.steps|length' "$PLAN")
for i in $(seq 0 $((len-1))); do
  tool=$(jq -r --argjson i "$i" '.steps[$i].tool' "$PLAN")
  args=$(jq -c --argjson i "$i" '.steps[$i].args' "$PLAN")
  log "STEP $i tool=$tool"
  run_tool "$tool" "$args" | tee -a "$LOG" || true
done
log "END"; echo "=== run.log ==="; cat "$LOG"
EOF
chmod +x scripts/orchestrate.sh

CONFIRM=no ./scripts/orchestrate.sh | tail -n 5
CONFIRM=yes ./scripts/orchestrate.sh | tail -n 8
jq empty allowlist.json fixtures/*.json planner-output.json && echo "lab OK"

Attendu : CONFIRM=no → read_ci_logs OK + HITL_BLOCKED ; CONFIRM=yes → draft dans run.log, puis lab OK. Variantes : read_terraform_plan seul, ou read_metrics + draft_slack_digest.

Étape 7 — Sécurité

  1. Injection via tool_result — logs/pages = données non fiables ; ne pas exécuter d’instructions trouvées dedans.
  2. Secrets hors prompts — coffre / env runner, jamais de PAT dans le planner.
  3. Budgets — max steps, timeout, petits modèles pour le routage.
  4. Audit — outil, args résumés (redact), ok / refus / HITL, run_id.
  5. Sandbox + moindre privilège — RO par défaut ; mutations séparées + HITL.

Voir Prompt injection et Évaluer un skill.

Étape 8 — Tableau comparatif

Critère Chat mono-outil Agent multi-outils Crew multi-agents
Boucle 0–1 appel Plusieurs tools Agents + handoff
Contrôle Simple Allowlist + HITL + contrats inter-agents
Coût / audit Faible / chat Tokens × steps / run.log Plus élevé
Idéal Q&R Triage CI, IaC, digests Incidents complexes
Risque Faible Moyen (RO) / élevé (mutations) Élevé sans gates

Préférez mono-agent multi-outils avant un crew.

Étape 9 — Check-list bonnes pratiques

  1. Décrire chaque outil (quand / retour / interdits).
  2. Allowlist versionnée (mutation flag).
  3. Un tool_call planifié à la fois (ou lot RO).
  4. HITL pour post PR, Slack public, apply, IAM.
  5. Critère d’arrêt (max steps, RAS, erreur).
  6. Fixtures de régression + redaction logs.
  7. Kill switch < 30 s.
  8. Mesurer taux HITL / refus allowlist.

Mise en service : catalogue outils · lab vert sans secrets · HITL testé · run.log relu · owner + revue mensuelle.

Quiz (3 questions)

1. Affirmation correcte ?
– A. Un skill planifié remplace toujours un workflow multi-outils
– B. Un workflow d’agent enchaîne des outils sous contrôle du runtime
– C. Un prompt unique exécute shell + MCP sans runtime

2. Lab : draft_pr_comment avec CONFIRM=no → ?
– A. Poste sur GitHub
– B. Bloqué HITL et journalisé
– C. Bypass l’allowlist

3. Défense contre l’injection via tool_result ?
– A. Coller le log brut comme instruction système
– B. Traiter le résultat comme données non fiables + allowlist
– C. Désactiver tous les outils lecture

Réponses : 1‑B · 2‑B · 3‑B

Compléments opérationnels

Standard de brief réutilisable

Pour ai-agent-workflows, adoptez un brief unique partagé par l’équipe. Il contient toujours cinq champs : objectif mesurable, contexte borné (lab/staging), liste blanche de fichiers ou ressources, interdits explicites (secrets, réseau, prod), et definition of done exécutable (commande de test ou checklist). Sans ces champs, l’outil improvisera — parfois avec élégance, souvent hors périmètre.

Stockez les briefs gagnants sous briefs/ai-agent-workflows/ dans un dépôt de documentation interne. Chaque brief cite le commit de référence et le modèle utilisé. Au troisième succès comparable, ouvrez une PR qui transforme le brief en rule, Skill ou slash command. Voir ai-skills-concept, claude-skills-instructions et evaluer-qualite-skill.

Revue de diff comme compétence P0

La vitesse d’un agent n’a aucune valeur si personne ne sait lire un diff. Instituez une règle simple : aucun apply massif sans parcours hunk par hunk. Posez-vous trois questions : ce changement est-il demandé ? est-il testé ? est-il réversible ? Si une réponse est non, refusez ou exigez un plan plus petit.

En atelier, faites commenter un diff à voix haute pendant cinq minutes. Les juniors apprennent ainsi le vocabulaire du refus. Reliez cette pratique à ai-code-review-pr et aux workflows ai-agent-workflows.

Sécurité continue

Les surfaces ai-agent-workflows multiplient les occasions d’injection et de fuite. Traitez tickets, README upstream, logs et ressources MCP comme des données non fiables. Séparez instructions et données. Allowlist tools. Confirmation humaine avant mutation. Guide : ai-prompt-injection-securite, mcp-servers-devops, claude-code-mcp.

Secrets : variables d’environnement de session, gestionnaire d’équipe, rotation, jamais de commit. Si un secret fuit dans un chat vendor, supposez-le compromis et rotatez.

Coûts, modèles et mode dégradé

Documentez un mapping fast/strong et un soft-cap mensuel dans la stack perso. OpenRouter peut aider à basculer — openrouter-multi-modeles. Le local (ollama-llm-locaux + continue-dev) sert de mode dégradé ou de bac à sable confidentialité.

Surveillez les changements silencieux de modèle par défaut : une régression de qualité est souvent un routing vendor, pas « l’équipe qui a oublié comment prompter ».

Ancrage parcours

ai-agent-workflows n’est qu’une étape du parcours IA DevOps 2026. Tronc commun d’abord (prompts, injection, skills), puis surface spécialisée, puis industrialisation (routines, MCP, RAG). Hub de navigation : /ia/. Comparatifs utiles : claude-vs-gpt-code, codex-vs-claude-code, claude-vs-cursor-vs-copilot.

Rituals hebdomadaires

Hebdo : promouvoir un brief en Skill/rule ; archiver un échec instructif ; vérifier le budget tokens. Mensuel : revoir la stack (retirer l’inutile) ; rejouer un lab gold ; mettre à jour les versions d’outils. Ces rituals valent mieux que d’ajouter un cinquième abonnement.

Exemple de NOTES.md

# NOTES ai-agent-workflows
Date:
Modèle:
Brief (résumé):
Fichiers touchés:
Commande DoD:
Refus utiles:
Commit:
Leçon:

Sans ce journal, vous réapprendrez les mêmes leçons chaque sprint. Avec ce journal, vous construisez un avantage composé d’équipe.

Quand arrêter l’outil

Arrêtez la session si : le DoD échoue deux fois de suite sans diagnostic clair ; l’outil insiste pour sortir du scope ; une commande dangereuse revient après refus ; vous ne comprenez plus le diff. Dans ces cas, revenir à l’éditeur manuel + checklist est un succès de gouvernance, pas un échec personnel.

FAQ

Workflow ou skill d’abord ?
Skill d’abord, puis workflow qui orchestre outils + HITL. AI Skills · Cursor Skills.

Lien avec function calling ?
Function calling = contrat d’appel ; workflow = politique de boucle (ordre, allowlist, HITL). Function calling.

Cursor / Claude Code sans DIY ?
Souvent oui en IDE, selon offre. Le lab clarifie allowlist/audit avant MCP cloud — changelog à revérifier.

Quand multi-agent ?
Quand triage, rédaction et revue se mélangent. Sinon mono-agent + handoff fichier suffit.

MCP obligatoire ?
Non pour apprendre. Utile pour standardiser logs/Jira : MCP DevOps.

Lier à une routine ?
Oui : même workflow déclenché à heure fixe ou sur CI rouge, silence si RAS. Routines.

Pour aller plus loin

Maillage série IA Outils 2026 — Skills & agents

← Précédent Cursor Skills : créer et partager (AI Skills / Claude skills)
→ Suite MCP servers : panorama DevOps
Hub IA pour DevOps : parcours 2026
Connexes ai-function-calling · ai-routines-agents · rag-docs-infra · evaluer-qualite-skill

Retour parcours IA — hub Claude, Codex, ChatGPT et Skills.