April 20, 2026 • Version: v2026.4.19-beta.1

[Cross-Agent-Subagenten-Routing über gebundenes Kanal-Konto] - Agents/channels: route cross-agent subagent spawns through the target agent's bound channel account while preserving peer and workspace/role-scoped bindings, so child sessions no longer inherit the caller's account in shared rooms, workspaces, or multi-account setups.

Fehlerbehebungsanleitung für Korrekturen in OpenClaw v2026.4.19-beta.1.

Fehlerbehebung: Subagent-Instanzen werden mit falscher Kontoidentität erstellt

Release: v2026.4.19-beta.1
Severity: Medium
Component: openclaw-agents, openclaw-routing


Symptome

Wenn Sie eine Multi-Agent-Bereitstellung auf Matrix (oder einem anderen Kanal-Plugin) ausführen, können Sie Folgendes beobachten:

  • Eine untergeordnete Sitzung, die im Auftrag eines anderen Agenten erstellt wurde, postet mit der Identität des aufrufenden Agenten anstelle des gebundenen Kontos des Zielagenten.
  • In gemeinsamen Räumen oder Arbeitsbereichen erscheint die Sprecherattribution falsch — Nachrichten von einem Subagenten scheinen vom erstellenden Agenten zu stammen.
  • Wenn ein Agent an verschiedene Konten pro Raum oder Peer-Kontext gebunden ist, respektieren Subagenten nicht die raumspezifische Bindung und verwenden stattdessen das Konto, das zuerst aufgelöst wurde.
  • In Multi-Account-Setups fungiert ein untergeordneter Agent, der unter seiner eigenen gebundenen Identität arbeiten sollte, stattdessen unter dem Konto des Aufrufers.

Ursache

Wenn eine übergeordnete Sitzung einen untergeordneten Agenten für einen anderen Zielagenten erstellt, hat die Routing-Logik die gebundenen Konten des Ziels nicht korrekt aufgelöst. Stattdessen wurde deliveryContext.accountId mit dem Konto des Aufrufers versehen, bevor die Bindungen des Ziels konsultiert wurden.

Die Hilfsfunktion resolveFirstBoundAccountId entsprach ursprünglich nur bei channel + agent, was bedeutet, dass Agenten, die an mehrere Räume oder Peers gebunden waren, eine “erste Bindung gewinnt”-Semantik erhielten, unabhängig vom aktiven Raum oder Peer-Kontext. Dies führte zu nicht-deterministischem Verhalten und defekter Sprecheridentität in Shared-Room-Szenarien.

Zusätzlich war das Präfix-Parsing für Zustellungsziele (z.B. room:<id>, channel:<id>, conversation:<id>) über Kanal-Plugins hinweg inkonsistent, was zu Fehlern bei der Extraktion der korrekten Peer-Kennung für die Suche führte.


Schritt-für-Schritt-Lösung

1. Upgrade auf die korrigierte Version

Führen Sie ein Upgrade auf v2026.4.19-beta.1 oder höher durch. Diese Version enthält:

  • resolveRequesterOriginForChild(...) in src/agents/subagent-spawn.ts, das das gebundene Konto des Zielagenten dem des Aufrufers vorzieht.
  • Ein Vier-Stufen-Präzedenzmodell in resolveFirstBoundAccountId in src/routing/bound-account-read.ts, das Peer-bewusste Zuordnung unterstützt.

2. Überprüfen Sie das Delivery-Target-Präfix-Handling

Stellen Sie sicher, dass Ihre Kanal-Konfiguration normalisierte Delivery-Target-Präfixe verwendet. Die Korrektur entfernt die folgenden Präfixe generisch:

// Generic prefix peeler (matches patterns like `room:`, `channel:`, `conversation:`, etc.)
const rawPeerId = agentTo.replace(/^[a-z][a-z0-9_-]*:/, '');

Wenn Ihr Kanal-Plugin benutzerdefinierte zweiteilige Präfixe verwendet (z.B. line:group:<id>), stellen Sie sicher, dass die inferTargetChatType des Plugins implementiert ist, um Mehrdeutigkeiten zu beseitigen. Ohne diese entfernt der Peeler nur das erste Präfix und leitet die Art aus dem zweiten Segment ab.

3. Rekonfigurieren Sie Multi-Room-Bindungen (falls zutreffend)

Wenn ein Agent zuvor an mehrere Räume mit einem einzelnen Fallback-Konto gebunden war, wählt das neue Präzedenzmodell jetzt pro Peer. Stellen Sie sicher, dass jede Raumbindung explizit konfiguriert ist:

// Example: agent bound to different accounts per room
agent: {
  bindings: [
    { channel: "matrix", agent: "agent-id", peer: "room-id-1", accountId: "account-1" },
    { channel: "matrix", agent: "agent-id", peer: "room-id-2", accountId: "account-2" }
  ]
}

Verifizierung

Nach dem Upgrade bestätigen Sie die Korrektur, indem Sie die Lifecycle-Testsuite ausführen:

pnpm test:changed src/agents/openclaw-tools.subagents.sessions-spawn.lifecycle.test.ts

Alle 15 Lifecycle-Tests sollten erfolgreich sein. Überprüfen Sie insbesondere diese Szenarien:

  1. Gebundenes Konto des Zielagenten verwendet — Das Erstellen eines Kindes für einen anderen Agenten in einem gemeinsamen Raum verwendet das Konto des Ziels, nicht das des Aufrufers.
  2. Gleicher-Agent-Erstellung bewahrt Aufrufer — Das Erstellen eines Kindes für denselben Agenten verwendet weiterhin das Konto des Aufrufers (keine unnötige Neuauflösung).
  3. Präfix-Stripping funktioniert — Ziele wie room:<id> oder conversation:<id> werden korrekt zur Peer-Bindung aufgelöst.
  4. Art-Ableitung für eingebettete Marker — Matrix-Style-Ziele wie room:@user:server werden korrekt als direct klassifiziert.

Für die Live-Validierung erstellen Sie einen Subagenten in einem gebundenen Matrix-Raum und bestätigen Sie, dass er unter der Identität des Zielagenten postet.


Häufige Fehler

  • Fehlende inferTargetChatType im Kanal-Plugin: Wenn Ihr Kanal-Plugin inferTargetChatType nicht implementiert, verlässt sich die Korrektur auf die präfix-basierte Art-Ableitung. Stellen Sie sicher, dass alle zweiteiligen Präfixe erkannt werden oder implementieren Sie den Hook.

  • Multi-Room-Agenten ohne explizite Peer-Bindungen: Agenten, die an mehrere Räume gebunden sind, können auf die kanalbasierte Bindung zurückfallen, wenn keine peer-spezifische Bindung existiert. Fügen Sie explizite Peer-Bindungen pro Raum hinzu, um Mehrdeutigkeiten zu vermeiden.

  • Art-Äquivalenz: group und channel werden bei Wildcard-Matching als äquivalent behandelt (spiegelnd peerKindMatches in resolve-route.ts). Stellen Sie sicher, dass Ihre Bindungen konsistente Art-Bezeichnungen verwenden.

  • Peerlose Aufrufer (Cron-Zustellung): Die Hilfsfunktion bleibt abwärtskompatibel — Aufrufer ohne peerId/peerKind erhalten dieselbe Bindung wie zuvor über die peerlose Fallback-Stufe.


Zugehörige Fehler

Wenn Sie Folgendes in den Logs sehen, sollte das Upgrade diese beheben:

  • deliveryContext.accountId-Mismatch zwischen übergeordneten und untergeordneten Sitzungen in Matrix-Räumen
  • Subagent-Nachrichten, die dem falschen Absender in Shared-Room-Bereitstellungen zugeschrieben werden
  • “Erste Bindung gewinnt”-Verhalten, das zu nicht-deterministischer Kontoauswahl über Räume hinweg führt

Reference: PR #67508 — Route cross-agent subagent spawns through target agent’s bound channel account
Release: v2026.4.19-beta.1

Belege & Quellen

Diese Troubleshooting-Anleitung wurde automatisch von der FixClaw Intelligence Pipeline aus Community-Diskussionen synthetisiert.