Traiter les Sous-agents OpenClaw comme des Fonctions sans État plutôt que comme des Membres d'Équipe Persistants

Un développeur sur r/openclaw décrit le changement de son modèle mental lorsqu'il travaille avec des équipes multi-agents dans OpenClaw. Traiter initialement les sous-agents comme des employés juniors avec des noms, des histoires personnelles et des attentes de mémoire a conduit à des semaines de confusion et de flux de travail rompus.
L'analogie de la fonction
La percée est venue de la reconnaissance que les sous-agents ne sont pas des mini-moi ou des membres d'équipe persistants—ce sont des fonctions. Plus précisément :
- Les sous-agents sont des appels de fonction sans état, pas des membres d'équipe persistants
- Ce sont des outils spécialisés, pas des versions juniors du développeur
- Ils fonctionnent sur le principe entrée → sortie pure, sans mémoriser le contexte
- Ils renvoient des valeurs à l'appelant plutôt que de communiquer entre eux
La source fournit des exemples de code contrastant les mauvaises et bonnes approches :
# MAUVAIS : Traiter le sous-agent comme un objet persistant
frank = Agent("Frank")
frank.build_feature()
frank.fix_it() # Suppose que Frank se souvient
BON : Traiter le sous-agent comme un appel de fonction
result = frank_task(
instructions="Construire la page de connexion",
context={"requirements": reqs, "design": mockup}
)
frank_task s'exécute, renvoie une sortie, se termine
Implications pratiques
Ce changement de modèle mental a plusieurs implications concrètes :
1. SOUL.md comme docstring de fonction : Au lieu de profils de personnalité, SOUL.md devient un document de spécification :
# frank_task()Objectif : Construire des fonctionnalités Next.js Entrées : exigences (dict), design (optionnel) Sorties : {code, tests, notes} Contraintes : Pas d'appels API externes sans approbation
2. Passage d'état explicite pour l'itération : Puisque les sous-agents ne mémorisent pas le contexte, vous devez transmettre toutes les informations nécessaires dans les paramètres :
# MAUVAIS
frank_fix("corriger le bug") # naît, essaie, meurt
frank_fix("toujours cassé") # nouvelle naissance, pas de contexte
BON
result = frank_fix({
"code": previous_output,
"issues": ["la validation de connexion échoue", "CSS mobile cassé"],
"test_cases": failing_tests
}) # Contexte complet dans les paramètres
3. Le coordinateur comme programme principal : Le développeur devient une fonction d'orchestration plutôt qu'un manager d'équipe :
def build_feature(spec):Appeler les fonctions en séquence
code = frank_build(spec) tests = quinn_audit(code)
if tests["passed"]: return deploy(code) else: # Itérer avec un contexte explicite fixed = frank_fix({ "code": code, "failures": tests["failures"] }) return deploy(fixed)
Parallèles avec la conception logicielle
Cette approche s'aligne avec les principes établis de conception logicielle :
- Responsabilité unique : Chaque sous-agent fait une seule chose
- Fonctions pures : Même entrée → même sortie
- Testabilité unitaire : Tester la sortie de chaque sous-agent indépendamment
- Composabilité : Enchaîner les sous-agents comme quinn_test(frank_code(spec))
- Sans état : Pas de dépendances cachées
Le développeur note que la valeur n'est pas "plus d'agents = plus d'intelligence" mais "fonctions spécialisées = architecture plus propre".
Résultats après le changement
Après avoir adopté ce modèle, le développeur a construit :
- Une base de données de 11 249 salles de sport en 2 semaines
- 5 agents spécialisés (pas 5 généralistes)
- Un CRM avec des flux de travail de souscription
- Un engagement quotidien sur Moltbook
Tout cela en utilisant des sous-agents sans état et un coordinateur qui maintient le contexte.
📖 Read the full source: r/openclaw
👀 See Also

Optimisation de Qwen3.5-9B sur RTX 3070 Mobile avec ik_llama.cpp : Réglages de configuration et Benchmarks
Un développeur partage ses découvertes d'optimisation pour exécuter Qwen3.5-9B Q4_K_M sur un GPU RTX 3070 Mobile 8GB avec ik_llama.cpp, atteignant une vitesse de génération d'environ 50 tokens/seconde et des améliorations significatives de l'évaluation des prompts grâce à des ajustements de configuration.

Mise à l'échelle du codage agentique à plus de 150 PR/semaine : leçons tirées de 85 000 $ de jetons chez Lovable
Alexander Lebedev raconte comment il est passé de 20 à 30 PR/semaine avec un humain à plus de 150 PR/semaine avec une nuée d'agents IA, dépensant 85 000 $ en tokens depuis janvier. Principaux enseignements : classification des risques, revue IA remplaçant la revue humaine, et le défi de préserver la diffusion des connaissances.

Analyse des Coûts de l'Agent OpenClaw : De 340 $ à 112 $ Mensuels Grâce à Cinq Optimisations
Un développeur a suivi 18 000 appels API sur quatre agents OpenClaw pendant 30 jours, constatant que 70 % des tâches n'avaient pas besoin de GPT-4.1. En mettant en œuvre la mise en cache des prompts, en raccourcissant les prompts système, en regroupant les analyses, en passant à des modèles moins chers et en ajoutant des limites de tokens maximum, les coûts sont passés de 340 $ à 112 $ par mois.

Conseils de configuration d'OpenClaw tirés de l'expérience d'un utilisateur : MCP Gmail, drapeaux de profil et problèmes de réseau
Un utilisateur exécutant OpenClaw sur un Mac via UTM avec une machine virtuelle Ubuntu partage des problèmes de configuration spécifiques rencontrés : le serveur MCP Gmail nécessite le paramètre html_body au lieu de body, le drapeau --profile prod est nécessaire pour éviter une identité dev codée en dur, et les clés API doivent être placées dans auth-profiles.json via la commande paste-token.