Replies: 3 comments 1 reply
|
补充一点代码层面的发现:
子代理跑在后台好处是主线程还可以继续推进别的,这点是比其他Agent工具有优势的。但问题是没有并发数量上限,比如opencode,他会把子代理分组,一次只派部分,而且默认一层深度,没见过出问题。一般先让他阅读我的或者他人复杂工程就会止不住开子代理,然后就导致网页UI卡死 |
|
这个有点离谱啊,一般agent工具都是禁止subagent下面继续派生subagent的 |
|
这个案例直接暴露了 Agent 平台缺少资源预算边界的问题。基于 Harness 的公共扩展点,我发布了 它通过 dsh plugin --profile web add dsh-turn-budget- update:
id: turn-budget
config:
maxStepsPerTurn: 16
maxToolCallsPerTurn: 8边界需要明确:这是 per-turn 保护,不是进程级 |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
环境:dsh 0.1.0-rc.6(
dsh web),Windows 11,Node 24,PTC模式现象:一次任务中模型并行派生了约 56 个子代理(spawn + fork,continuable后台会话),且子代理还在继续派生子代理。dsh 进程涨到 ~2.2GB 内存、单核满负载持续约 20 分钟,:3080 的 web UI 完全无响应(请求排队超时),只能手动杀进程。重启后键入“继续”同样现象可复现——这不是偶发,是确定性行为。
检查:
dsh-subagent-spawn-in-process等 provider),全部共享一个堆和一个事件循环。~/.dsh/sessions/下一次运行产生 56 个session.jsonl.zstd,每个子代理一个完整 agent 会话;观测到 5 秒内 33 个会话文件同时写入——大量叶子层子代理同轮并发产出。代码调查:
tool-subagent有maxDepth配置,默认 3,spawnprovider 支持该capability(depthLimit: true)。子代理嵌套超过 3 层会抛SubagentDepthError——深度是有上限的。dsh-subagent代码里没有任何数量/并发上限(搜不到maxTotal/maxConcurrent/ 并发限制):同一层可以无限开兄弟子代理, 3 层深度完全挡不住广度爆炸(1 → N → N²)。观察到的 56+ 个子代理是"深度合法、广度无限"的正常结果。建议:
maxConcurrent、maxTotal),并给standard preset 内置合理默认值;如果需要,我可以提供 session 文件、进程观测数据或复现步骤。
All reactions