OpenClaw会话树型依赖-下篇(配置与API)
六、配置参数
|
|
|
|
|
|
maxSpawnDepth |
|
|
最大嵌套深度(1=不允许嵌套) |
|
maxChildrenPerAgent |
|
|
每个父会话最大活跃子会话数 |
|
maxConcurrent |
|
≥1 |
全局并发 subagent 上限 |
|
archiveAfterMinutes |
|
|
子 agent 会话自动归档时间 |
|
runTimeoutSeconds |
|
|
单次 run 超时(0=无超时) |
|
announceTimeoutMs |
|
|
Announce 投递超时(90s) |
|
|
|
|
子 agent 默认模型 |
|
|
|
|
子 agent 默认思考级别 |
内部超时常量的具体参数如下表:
|
|
|
|
|
Announce 普通超时 |
5 min |
非 completion 消息的 announce 到期 |
|
Announce 硬超时 |
30 min |
completion 消息流的最终到期 |
|
最大 announce 重试 |
3 次 |
重试次数上限 |
|
生命周期错误宽限 |
15 s |
瞬态错误等待窗口 |
|
Steer 速率限制 |
2 s |
同一目标最小转向间隔 |
|
Sweeper 间隔 |
60 s |
定时归档扫描 |
七、Gateway API
|
|
|
|
|
sessions.list |
列出会话 |
‘spawnedBy’(按父会话过滤)、‘agentId’、’label‘ |
|
sessions.resolve |
解析会话 key |
支持 partial match |
|
sessions.patch |
修改会话元数据 |
‘spawnDepth’、‘subagentRole’、’subagentControlScope‘、’spawnedBy‘ |
|
sessions.get |
获取会话消息 |
‘key’、‘limit‘ |
|
sessions.delete |
删除会话 |
’emitLifecycleHooks‘ |
|
sessions.reset |
重置会话 |
’reason‘ |
|
sessions.preview |
批量预览 |
’keys[]‘ |
八、Session Fork(会话分叉)
- 调用 ‘SessionManager.createBranchedSession()‘从父 transcript 分叉- 新会话 header 包含 ‘parentSession’ 引用- 受 ‘parentForkMaxTokens‘(默认 100,000 tokens)限制,防止继承近满的上下文- 分叉后子会话的 ‘forkedFromParent’ 标记为 ‘true
九、关键设计模式总结
|
|
|
|
|
树形层级 |
‘spawnedBy’+ ‘spawnDepth‘ |
明确的父子拓扑 |
|
角色区分 |
orchestrator / leaf |
控制 spawn 权限传播 |
|
BFS 遍历 |
’forEachDescendantRun()‘ |
查询任意子树 |
|
级联杀死 |
递归 DFS + visited Set |
父死子亡 |
|
后代等待 |
’wakeOnDescendantSettle‘ |
确保所有后代完成后父才 announce |
|
指数退避 |
1s → 2s → 4s → 8s |
announce 重试 |
|
宽限期 |
15s 错误缓冲 |
容忍 provider 瞬态错误 |
|
磁盘持久化 |
run 记录写磁盘 + 重启恢复 |
跨进程存活 |
|
权限隔离 |
owner 校验 + allowlist + sandbox |
防越权操控 |
夜雨聆风