OpenClaw 有价值应用(2026-04-20):多Agent异步回调与状态持久化中枢
场景演示
你正在调度一个子Agent做视频生成,任务提交后主会话断开——等它跑完,结果去哪儿了?
这就是多Agent异步回调与状态持久化要解决的问题:让长任务的结果写得进去、查得到、拿得回来,而不是随着会话结束一起消失。
Step by Step
第一步:理解问题本质
多Agent协作中,结果丢失通常发生在以下场景:
| 丢失场景 | 根因 | 后果 |
|---|---|---|
| 主会话超时/重启 | 上下文被清空 | 子Agent结果全部丢失 |
| 子Agent执行时长超过token限制 | 上下文溢出 | 结果被截断 |
| 调度后不等结果就退出 | 没有等待机制 | 任务完成但无人认领 |
| 结果存在内存里 | 进程结束后内存清空 | 永远找不回 |
第二步:建立持久化写入规范
OpenClaw支持通过文件系统和飞书Bitable两条路径实现状态持久化:
方案A:文件系统持久化(适合结构化数据)
# 子Agent完成后,将结果写入约定路径
echo "$result_json" > ~/.openclaw/workspace/shared/results/${task_id}.json
# 主Agent通过task_id轮询或直接读取
cat ~/.openclaw/workspace/shared/results/${task_id}.json
方案B:飞书Bitable持久化(适合需要多Agent共享查询)
# 子Agent写入飞书Bitable
feishu_bitable_create_record \
--app_token "your_app_token" \
--table_id "your_table_id" \
--fields '{
"task_id": "task_001",
"status": "completed",
"result": "...",
"agent_id": "sub_agent_01",
"completed_at": "2026-04-20T08:00:00+08:00"
}'
第三步:建立回调汇报机制
子Agent完成后,主动向主会话汇报:
# 调度时约定回调格式
sessions_send \
--sessionKey "main_session" \
--message "任务 task_001 完成。结果已写入 ~/.openclaw/workspace/shared/results/task_001.json,摘要:$summary"
第四步:主Agent恢复上下文的规范流程
当主Agent重新接入或需要恢复上下文时,按以下顺序查找:
1. memory/MEMORY.md → 查看是否有近期记录
2. memory/YYYY-MM-DD.md → 当天记忆文件
3. ~/.openclaw/workspace/shared/results/ → 子Agent结果文件
4. 飞书Bitable(共享结果表)→ 多Agent共享状态
第五步:sessions_spawn 的正确使用姿势
对于真正需要后台执行的长任务,用 sessions_spawn 并配置 runTimeoutSeconds:
{
"runtime": "subagent",
"task": "执行视频生成任务,结果写入 ~/.openclaw/workspace/shared/results/video_task_001.json",
"runTimeoutSeconds": 3600,
"mode": "run"
}
主Agent不需要等待,超时后结果已在约定位置。
可复制提示词
调度长任务专用提示词:
请将以下任务派给子Agent执行:
- 任务内容:[描述具体任务]
- 执行时长预计:X分钟~X小时
- 结果保存路径:~/.openclaw/workspace/shared/results/{task_id}.json
- 完成后回调主会话,格式:任务完成,摘要:[一句话结果描述]
主Agent只需要提交任务,继续处理其他事项,等子Agent写回结果后直接读取文件获取完整输出。
主Agent恢复上下文专用提示词:
上下文因超时/重启丢失。请按以下顺序恢复状态:
1. 读取 memory/MEMORY.md 查看近期重要记录
2. 读取 ~/.openclaw/workspace/shared/results/ 目录下所有 .json 文件
3. 查询飞书Bitable「Agent任务状态表」,找出状态为 completed 但未被主会话处理的记录
4. 汇总所有恢复的信息,用简短语句告诉我:当前有哪些待处理任务、哪些已完成但结果待取
使用的Skills
| Skill | 用途 |
|---|---|
sessions_spawn | 将长任务派到独立子Agent |
sessions_send | 子Agent向主会话回调汇报 |
feishu_bitable | 多Agent共享结果表 |
feishu_drive | 文件持久化上传 |
| Logseq Manager | 记忆文件读写(memory/路径) |
价值与注意事项
核心价值
- 任务不丢:长任务结果从"靠运气"变成"有据可查"
- 上下文可恢复:主Agent重启后能还原执行状态,不需要重新来
- 多Agent无缝接力:子Agent的结果直接成为下一个Agent的输入,无需人工搬运
- 超时不再恐惧:主Agent可以放心提交任务后去做其他事,结果写回再处理
注意事项
- 约定优于默契:调度前必须明确结果写入路径和命名规则,避免多个任务互相覆盖
- 文件清理:定期清理
~/.openclaw/workspace/shared/results/下的过期结果文件 - Bitable字段设计:提前设计好字段结构,建议包含:
task_id、status、result、agent_id、created_at、completed_at - 不要all in内存:关键中间结果立即落盘,不要等到进程结束才输出
- 调度纪律:严禁在主会话内执行超过30分钟的密集任务,必须用
sessions_spawn派出去
本质:多Agent异步回调与状态持久化,是把"人等结果"变成"系统等人来取"——任务执行和结果消费彻底解耦,Agent协作才能真正做到无人值守。