Agent间跨会话通讯方案。使用sessions_spawn创建带标签的子代理会话,实现代理间调用与通信。
NEVER reuse agent-human conversation sessions!
agent:xxx:feishu:direct:ou_xxxsessions_spawn to create subagent sessionsjavascript
sessions_list({ limit: 50 })
Find in results:
"subagent" markerExample:
main-to-sienna or sienna-to-mainIf Step 1 returns nothing, create with sessions_spawn:
javascript
sessions_spawn({
label: "main-to-sienna", // Format: sender-to-receiver
runtime: "subagent",
task: "", // Task goes in Step 3
mode: "run"
})
javascript
sessions_send({
sessionKey: "agent:main:subagent:xxx", // From Step 1 or 2
message: "Task description..." // Actual task here
})
javascript
// Wrong 1: Create without checking
sessions_spawn({...}) // Must check first!
// Wrong 2: Use human conversation session
sessionKey: "agent:sienna:feishu:direct:ou_xxx" // Forbidden!
// Wrong 3: Create both directions
// main-to-sienna and sienna-to-main - one is enough!
// Wrong 4: Reply to others
// Should reply directly to sender, no forward or group post
TypeFormat ExampleUsable for Agent-Agent?Agent-Human DMagent:sienna:feishu:direct:ou_xxx❌ ForbiddenAgent in Groupagent:sienna:feishu:group:oc_xxx❌ ForbiddenSubagent Sessionagent:maxwell:subagent:xxx✅ Allowed
Default: Response goes directly to the sender
text
1. Call sessions_list({ limit: 50 })
2. Loop through results, find both:
- Contains "subagent" marker
- Label matches "sender-to-receiver" OR "receiver-to-sender"
3. Found → Use that sessionKey, goto Step 5
4. Not found → Create with sessions_spawn, save sessionKey
5. Call sessions_send({ sessionKey, message })
6. Done
AgentLabelsessionIdleomaxwell-to-leo9d519dc9-0239-4284-8077-3ed4bccd486dsiennamaxwell-to-sienna05a93e6d-4a50-4503-a9c8-4aaf7da8c414letusmaxwell-to-letus391a4a78-43ab-4e04-95fe-abfd414b1c64codingmaxwell-to-codingebba5ff4-87f6-430b-80e5-269319b122c0mainmaxwell-to-maind7eb2edc-7acc-40e7-838d-8a9cb08820c0
New subagent sessions may be auto-cleaned by default. To ensure long-term availability, protect after creation:
javascript
// Protect session from auto-cleanup
exec({
command: `openclaw sessions cleanup --agent [target-agent] --active-key "${sessionKey}" --enforce`
})
Note: Replace
${sessionKey}with actual sessionKey
javascript
sessions_list({ limit: 50 })
javascript
sessions_spawn({
label: "main-to-sienna",
runtime: "subagent",
task: "",
mode: "run"
})
// Returns sessionKey, format: agent:xxx:subagent:xxx
javascript
exec({
command: `openclaw sessions cleanup --active-key "agent:xxx:subagent:xxx" --enforce`
})
javascript
sessions_send({
sessionKey: "agent:main:subagent:xxx",
message: "Task description..."
})
Last updated: 2026-03-17