sessions_spawn runtime=acp vs subagent, triage streamTo et échec handshake ACP 1008 RunbookSi vous appelez sessions_spawn depuis l'agent principal et obtenez ACP_TURN_FAILED, invalid handshake 1008 ou queue owner unavailable alors que le chat direct sur le même Gateway fonctionne, cet article répond : (1) quand choisir runtime=acp vs runtime=subagent ; (2) pourquoi streamTo et resumeSessionId ne valent que sur le chemin acp et comment trier une mauvaise config subagent ; (3) repli subagent en cas d'échec handshake ACP et OPENCLAW_ACPX_RUNTIME_STARTUP_PROBE sous Windows ; (4) différences Completions vs Responses pour l'autofill streamTo. Complète la triage ACP de la montée de version et le pairing subagent Docker 1008—cette page couvre le choix de runtime multi-agents.
runtime=acp par défaut sans bridge ACP : le canal principal répond, chaque spawn renvoie ACP_TURN_FAILED—cause : acpx non enregistré ou queue owner hors ligne, pas le quota modèle.streamTo / resumeSessionId sous runtime=subagent : champs réservés à la continuation ACP ; subagent passe par RPC Gateway intégré—paramètres invalides ou champs silencieusement ignorés.OPENCLAW_ACPX_RUNTIME_STARTUP_PROBE.En 2026, upstream scinde sessions_spawn en deux runtimes exclusifs. runtime=acp dialogue avec acpx externe via bridge ACP et supporte streamTo pour renvoyer la sortie sub-agent vers l'UI principale. runtime=subagent lance un sous-agent léger dans le Gateway—latence moindre, sans acpx, sans champs de continuation ACP.
Mauvais runtime + champs invalides = « fausse complexité » la plus coûteuse en astreinte. Aligner le chemin d'abord, puis modèles et allowlist outils (triage tools.profile).
Traitez chaque spawn comme un contrat de planification archivé : runtime, besoin de streaming UI, Completions vs Responses, chemin de repli. Sans contrat, « hier OK, aujourd'hui non » reste inexplicable—les changements touchent templates ou forme API, rarement le binaire Gateway.
Les équipes qui omettent ce contrat passent des heures sur les prompts alors que le JSON porte encore streamTo: "main" sur un chemin subagent copié d'un exemple acp. La correction est structurelle.
Autre schéma 2026 : template Cursor IDE acp déployé tel quel sur Gateway headless subagent—spawn intermittent quand acpx tourne localement, échec en CI. Instabilité apparente, pas panne d'infrastructure.
Avant outage bridge severity-1 : un spawn de la dernière heure exigeait-il la sémantique acp ? Recherche batch sans UI → subagent souvent le fix permanent.
| Long format existant | Cet article | Volontairement non dupliqué |
|---|---|---|
| Triage ACP montée de version | acp vs subagent et repli en spawn | backup create, échelle probe complète |
| Docker subagent 1008 | Frontière subagent vs pairing 1008 | Commandes trustedProxies pas à pas |
| Triage tools.profile | Après spawn réussi sans outils sub-agent | Article allowlist multicouche |
| Gateway dédié SSH | Topologie acpx + subagent sur Mac distant | Détails port-forward et launchd |
runtime=acp vs runtime=subagent : quel stackRègle : streaming UI, reprendre session ACP, aligner acpx Cursor/IDE → acp. Boucle Gateway, faible dépendance, acp indisponible → subagent. Quatre formes de tâches courantes en production.
En doute, sonde subagent d'une ligne d'abord. Si elle passe, la pile de planification Gateway est saine—l'échec vient d'acp ou de la config des champs.
| Forme de tâche | Runtime recommandé | Paramètres clés | À éviter |
|---|---|---|---|
| Sortie sub-agent streamée vers le chat principal | acp |
streamTo vers session principale ; resumeSessionId optionnel |
subagent + streamTo |
| Traitement batch arrière-plan, sans UI | subagent |
task + timeout ; pas de streamTo |
Forcer acp |
| queue owner unavailable | subagent temporaire |
Repli noté au ticket ; réparer acpx en parallèle | Relancer acp indéfiniment |
| Docker multi-conteneurs, RPC OK, spawn 1008 | Pairing/réseau d'abord, puis subagent |
trustedProxies ; article Docker | Changer runtime avant bind |
streamTo / resumeSessionId : champs acp uniquement—triage mauvaise configBeaucoup de « paramètres corrects, sub-agent vide » viennent d'une contamination champs/runtime. Le chemin subagent retire ou rejette les champs ACP. Template avec streamTo: "main" et runtime=subagent → erreur RPC générique—inspecter le JSON d'appel.
Sous runtime=acp, resumeSessionId continue une session acpx ; streamTo dirige le flux de tokens vers l'UI Control ou la cible canal.
Le routage Responses 2026 peut inférer streamTo ; Completions non. Migration Responses→Completions sans mise à jour template : « avant streaming, maintenant silencieux en arrière-plan »—régression API + runtime, pas upgrade.
Expérience de stripping : copier le JSON en échec, retirer streamTo/resumeSessionId, runtime=subagent, retester. Succès immédiat → acp ou mauvaise config. Échec persistant → pairing, token ou surface outils. Étape 4 du runbook.
Documenter le JSON avant/après dans le ticket pour la relève.
Auditer les templates : chercher streamTo hors blocs acp. Lint sur runtime=subagent plus champs ACP attrape la dérive avant déploiement.
Streaming UI obligatoire et stripping casse l'UX → ne pas forcer subagent durablement ; prioriser réparation bridge ou topologie.
// acp : streaming UI + reprise optionnelle
{
"tool": "sessions_spawn",
"runtime": "acp",
"task": "Rechercher les prix concurrents et produire un tableau",
"streamTo": "main",
"resumeSessionId": "acp-sess-abc123"
}
// subagent : boucle Gateway—pas de streamTo
{
"tool": "sessions_spawn",
"runtime": "subagent",
"task": "Renommer en lot les fichiers sous logs/"
}
// mauvaise config fréquente
{
"runtime": "subagent",
"streamTo": "main"
}
ACP_TURN_FAILED, 1008, queue ownerQuand runtime=acp échoue mais le chat principal fonctionne, router par empreinte log—ne pas mélanger avec « Gateway totalement muet ».
Capturer une tentative spawn avec horodatages alignés Gateway/acpx. Les échecs handshake durent souvent moins d'une seconde.
Commencer par le plus petit spawn acp reproductible, pas la tâche complète avec outils. Une sonde lecture seule d'une ligne isole le handshake des allowlist et de la latence modèle.
1008 sur acp seul corrèle souvent au décalage versions CLI/Gateway/acpx. Noter les trois versions avant rollback.
| Log / symptôme | Suspicion prioritaire | Première action |
|---|---|---|
ACP_TURN_FAILED |
acpx pas prêt ; timeout turn | Windows OPENCLAW_ACPX_RUNTIME_STARTUP_PROBE=1 ; enregistrement bridge |
| invalid handshake / WebSocket 1008 | Versions CLI/Gateway/acpx divergentes | Même version ; un reload ; matrice pin |
| queue owner unavailable | Enregistrement bridge perdu (fenêtre 2026.3.x) | acpx hôte ; runtime=subagent temporaire |
| subagent aussi 1008 | Pairing/token/réseau (hors ACP) | Runbook Docker 1008 |
| spawn OK, sub-agent sans outils | tools.profile / override agent | triage tools.profile |
Politique de repli : acp échoue deux tours consécutifs (après reload), subagent passe la sonde minimale → noter « runtime=subagent temporaire » et restreindre les tâches exigeant streaming UI. Orthogonal au rollback digest : repli = SLA ; rollback = regression connue.
OPENCLAW_ACPX_RUNTIME_STARTUP_PROBESous Windows, extensions provider et Defender allongent le démarrage à froid acpx. spawn avant bridge → ACP_TURN_FAILED ou invalid handshake.
OPENCLAW_ACPX_RUNTIME_STARTUP_PROBE=1 (sémantique selon votre version OpenClaw) fait attendre une sonde santé acpx supplémentaire avant le premier spawn.
Si échec persistant : tâche subagent minimale sur la même machine pour prouver la pile Gateway, puis isoler acpx—ne pas confondre démarrage lent et obligation de rollback version.
Complément à la montée de version : là probe/ACP post-migration ; ici version stable, spawn ou handshake occasionnel. Chaîner : échelle d'acceptation verte, puis cette matrice.
Sous Windows, vérifier Controlled Folder Access—acpx démarre sans enregistrement bridge → queue owner unavailable. La sonde startup laisse le temps après I/O retardé par policy.
Documenter les variables probe dans la gestion de config, pas seulement en session PowerShell éphémère.
# Windows : prolonger sonde démarrage acpx (exemple) $env:OPENCLAW_ACPX_RUNTIME_STARTUP_PROBE = "1" openclaw gateway status openclaw gateway probe # Sonde subagent minimale (sans streamTo) # sessions_spawn via Control UI ou CLI, runtime=subagent
Tout spawn acp rouge ne justifie pas un rollback. La surface d'impact oriente le choix.
| Surface d'impact | Continuer acp | runtime=subagent temporaire | Pin / rollback |
|---|---|---|---|
| Seul spawn/acp rouge ; canal + subagent OK | Enregistrement acpx, startup probe | Recommandé sans streaming UI | Si fenêtre regression connue |
| acp + subagent rouges ; probe rouge | Un pas après backup seulement | Pas en premier choix | Priorité backup ou digest |
| Streaming UI obligatoire ; acp down | Impact métier pendant réparation | Ne remplace pas streamTo | Rollback ou Gateway Mac distant |
Étapes 3–4 en moins de cinq minutes avec logs accessibles. Plus de quinze minutes à l'étape 5 sans signal → escalade bridge, pas boucle acp aveugle.
Étape 6 explicite : « runtime=subagent temporaire, streaming UI bloqué jusqu'à acp ok »—évite tickets dupliqués sans sortie visible.
Sur Gateway portable mélangeant acpx, veille et plugins, les échecs spawn passent pour « OpenClaw instable ». Mieux : Gateway autoritaire + acpx sur Mac distant alimenté en permanence ; poste local en forward SSH uniquement.
Revoir le taux succès spawn hebdomadaire par bucket runtime—un agrégat sain peut masquer acp à 70 % et subagent à 99 %.
Compteur mauvaise config streamTo : avertissements structurés si clés ACP sur subagent ; cible zéro en production.
Itérer les prompts sans vérifier runtime et streamTo transforme un handshake ACP en illusion « multi-agent down ». Matrice, triage mauvaise config et repli subagent compressent l'astreinte en incidents sondés, avec repli et métriques.
Forcer le bridge acp sur portable Windows ou topologie Docker fragmentée a un coût : courses 1008, incohérence streamTo Completions/Responses, rayon de panne élargi.
Pour production 24/7, spawn ticketisable, chemins acp/subagent commutables : Mac mini MACCOME (M4 / M4 Pro)—guide multi-régions, topologie avec runbook Gateway SSH.
Garder ce runbook à côté des articles montée de version et Docker 1008. Mauvaise config runtime → pas rollback digest ; deux chemins morts après upgrade canal → pas marathon template streamTo.
Formation opérateurs : un spawn acp réussi avec streamTo et un subagent sans champs ACP sur le même Gateway—dix minutes évitent la plupart des erreurs de la section un.
FAQ
streamTo et resumeSessionId avec runtime=subagent ?
Non—valides seulement pour runtime=acp. subagent : task et champs Gateway. Nœuds production : tarifs location.
Rollback obligatoire si ACP signale 1008 ou queue owner unavailable ?
Pas forcément—tableau symptômes ; canal principal OK → runtime=subagent temporaire et startup probe Windows. Deux chemins en échec → rollback digest ; accès : Centre d'aide.