Sur cette page : frictions évitées · Strands vs LangGraph / CrewAI · liste blanche et moindre privilège · schéma, fuse et disjoncteur · étapes reproductibles · dépannage · jalons vérifiables · FAQ
À lire avec PydanticAI et OpenClaw, retries schéma et appels d’outils, et bac à sable pont IDE. Pages publiques sans connexion : accueil, aide, forfaits.
Frictions que ce câblage retire du chemin
1. Dispersion des outils. Les auteurs ajoutent des outils en local pendant que la passerelle reste en retard : certains appels contournent l’audit que vous pensiez universel.
2. Validateur qui « mâche » le CPU. Les charges JSON volumineuses rendent la validation coûteuse ; sans plafond dédié, on ne distingue plus une faute de schéma d’une lenteur modèle.
3. Rafales de retries. Sans disjoncteur, validateur instable ou erreurs amont en boucle saturent la mémoire du même Mac distant que vos soak tests.
Strands Agents face à LangGraph et CrewAI (sur le même Mac)
Les trois piles peuvent cohabiter ; ce qui change est où vit l’orchestration et ce que vous devez fermer à la passerelle de toute façon.
| Axe | Ce qui reste dans la boucle agent | Ce qui reste chez OpenClaw |
|---|---|---|
| Strands Agents | Étapes de workflow, nœuds d’outils explicites, enchaînements entre phases. | Portée Bearer, routes sur liste blanche, garde-fous schéma, timeouts, JSONL, enveloppes d’échec. |
| LangGraph | Graphes à points de contrôle, état interruptible, composition LangChain. | Même col de bouteille passerelle ; voir outils LangGraph + OpenClaw et bac à sable checkpoint. |
| CrewAI | Agents par rôle, tableaux de tâches, routage hiérarchique. | Même contrat jeton et routes ; voir routage CrewAI. |
Strands met l’accent sur des workflows orientés outils : dès lors, fixer l’URL de complétion et des appels HTTP derrière une seule instance OpenClaw en boucle locale simplifie l’audit et les mises à jour de politique.
Liste blanche et moindre privilège
Traitez chaque outil comme un RPC de production : une table Git avec colonnes nom, version du schéma d’arguments, périmètre disque, propriétaire. Enregistrez exactement cette liste dans le registre d’outils Strands et son miroir OpenClaw ; tout nom absent provoque un échec fermé avant effet de bord.
Privilégiez des montages dépôt en lecture seule et un unique répertoire append-only sur SSD pour les artefacts ; évitez d’exposer le répertoire personnel de l’opérateur sans ticket documentant rayon d’explosion et retour arrière. Faites tourner des jetons Bearer à courte durée, étroitement limités aux routes d’outils — même discipline que dans le guide AutoGen derrière OpenClaw.
Pour la reproductibilité, faites échouer le démarrage si la liste Strands et la table passerelle diffèrent (hash YAML ou JSON commité). Un échec explicite au boot vaut mieux qu’une dérive silencieuse après déploiement.
JSON Schema, fuse timeout de validation et disjoncteur
Un schéma canonique par chemin structuré, versionné dans le dépôt ; la passerelle rejette les charges avant inférence. Donnez à la validation un plafond mural quelques secondes sous le timeout HTTP client Strands afin de classer les incidents en schema_timeout plutôt qu’en « hang » générique.
Placez le plafond d’exécution passerelle légèrement sous le délai client extérieur, bornez l’attente en file pour écrêter les rafales, puis ouvrez le disjoncteur après trois fautes consécutives de validateur ou erreurs amont 5xx, avec trente secondes de refroidissement. Les rejets de schéma répétés sont des incidents : inspectez les pointeurs JSON dans les journaux plutôt que d’amplifier les retries.
Alignez les politiques de backoff avec le guide retries : le workflow peut réparer des champs bornés ; la passerelle porte le backoff transport une fois le disjoncteur repassé à demi-ouvert.
# Exports indicatifs — ne jamais committer de secrets
export OPENAI_BASE_URL="http://127.0.0.1:8742/v1"
export STRANDS_HTTP_TIMEOUT_S=62
export OPENCLAW_GATEWAY_TIMEOUT_S=55
export OPENCLAW_JSON_SCHEMA_VALIDATE_TIMEOUT_S=8
export OPENCLAW_BREAKER_THRESHOLD=3
export OPENCLAW_BREAKER_COOLDOWN_S=30
export STRANDS_TOOL_ALLOWLIST_PATH="$HOME/openclaw-scratch/config/strands-tools.yaml"
export STRUCTURED_LOG_PATH="$HOME/openclaw-scratch/logs/strands-workflow.jsonl"Étapes reproductibles
- Amorcer les runtimes. Installer Node 22 LTS, créer un
.venvPython pour Strands, épingler clients et SDK, noter les chemins d’interpréteur pour des unitéslaunchdutilisateur. - OpenClaw en boucle locale. Lancer la passerelle sur
127.0.0.1, fichier de jetons enchmod 600, exécuteropenclaw doctor --jsonet archiver la sortie à côté des notes de version. - Tunnel minimal. N’exposer le port que via SSH
-Rou équivalent ; bloquer l’ingress public et tenir les jetons dashboard hors dépôt workflow. - Synchroniser les listes au démarrage. Faire échouer le processus si un nom Strands manque côté passerelle ou l’inverse — incohérence de configuration, pas surprise runtime.
- Schémas et délais. Charger JSON Schema par route, poser le fuse de validation, puis régler le client HTTP Strands quelques secondes au-dessus du fuse passerelle pour que l’appelant reçoive toujours du JSON structuré (succès ou enveloppe d’erreur).
- Mapper les échecs vers le graphe. Traduire erreurs passerelle en enveloppe compacte :
correlation_id,stage,code, pointeur JSON optionnel, une ligneremediation; le nœud orchestrateur bifurque sur cet objet au lieu de parser du texte libre. - Fumée à trois scénarios. Complétion structurée valide, violation d’énumération volontaire, amont volontairement lent — vérifier compteurs disjoncteur et champs JSONL.
Dépannage
- Outils « disparus » après une mineure. Relancer
openclaw doctor, comparer les manifestes de routes et vérifier si la release épinglée a resserré la visibilité session ou outil. - Disjoncteur ouvert alors que le modèle stream encore. Un JSON structuré invalide compte comme échec : élargir le schéma ou resserrer le prompt ; ne désactivez pas la validation en production.
- Tunnel SSH qui tombe la nuit. Activer keepalive TCP côté serveur et client, nommer un propriétaire, alerter sur la sonde santé empruntant le même chemin que le trafic prod.
- Désalignement de versions de schéma. Exposer
schema_versiondans les journaux et l’enveloppe d’erreur ; migrer d’abord une passerelle tolérante deux révisions, puis les workflows Strands. - Fichiers JSONL qui grossissent. Rotation hebdomadaire et compression au-delà d’environ deux cents mégaoctets pour garder des I/O prévisibles sur stockage Apple Silicon.
Jalons vérifiables (checklist courte)
- Fuse validation ≤ 8 s lorsque le budget HTTP extérieur avoisine la minute sur hôtes chargés.
- Disjoncteur : trois fautes consécutives, refroidissement trente secondes, accusé humain avant réouverture automatique complète.
- JSONL : corrélation, route,
schema_version, issue — jamais prompt ni secret en clair.
FAQ
Strands doit-il aussi valider le JSON localement ? Oui pour la vélocité développeur, mais la passerelle reste autoritaire : un seul contrat pour tous les appelants.
Où placer les retries ? Réparations bornées côté workflow sur champs structurés ; backoff sensible au transport côté passerelle une fois le disjoncteur autorisé à reprendre.
Même matériel qu’un guide CrewAI ? Oui : la différence est le modèle mental (workflow Strands vs équipes CrewAI vs graphe LangGraph), pas l’obligation d’isoler jetons, schémas et journaux au bord réseau.
Sans connexion : forfaits, achat, accueil, centre d’aide.
Synthèse : refléter une surface d’outils Strands minimale dans OpenClaw, valider JSON Schema sous fuse dédié, aligner fusibles passerelle et timeouts client, remonter des enveloppes d’échec désensibilisées — le workflow sur Mac distant reste auditable et à moindre privilège par défaut.