[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(...)insrc/agents/subagent-spawn.ts, das das gebundene Konto des Zielagenten dem des Aufrufers vorzieht.- Ein Vier-Stufen-Präzedenzmodell in
resolveFirstBoundAccountIdinsrc/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:
- 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.
- Gleicher-Agent-Erstellung bewahrt Aufrufer — Das Erstellen eines Kindes für denselben Agenten verwendet weiterhin das Konto des Aufrufers (keine unnötige Neuauflösung).
- Präfix-Stripping funktioniert — Ziele wie
room:<id>oderconversation:<id>werden korrekt zur Peer-Bindung aufgelöst. - Art-Ableitung für eingebettete Marker — Matrix-Style-Ziele wie
room:@user:serverwerden korrekt alsdirectklassifiziert.
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
inferTargetChatTypeim Kanal-Plugin: Wenn Ihr Kanal-PlugininferTargetChatTypenicht 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:
groupundchannelwerden bei Wildcard-Matching als äquivalent behandelt (spiegelndpeerKindMatchesinresolve-route.ts). Stellen Sie sicher, dass Ihre Bindungen konsistente Art-Bezeichnungen verwenden.Peerlose Aufrufer (Cron-Zustellung): Die Hilfsfunktion bleibt abwärtskompatibel — Aufrufer ohne
peerId/peerKinderhalten 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