缺陷 / 严重 / Agent 引擎
electron/harness/orchestration/orchestrator.ts
sessionDepth 用于限制嵌套委派深度(防止无限递归)。abort 中断时:
sessionDepth
orchestrator.abort()
aborted = true
abort() { this.aborted = true; if (this.currentSubEngine) { this.currentSubEngine.abort(); this.currentSubEngine = null; } // 关键:清理 sessionDepth this.sessionDepth = 0; }
并在 finally 块中兜底:
try { await subEngine.runStream(...); } finally { this.sessionDepth = Math.max(0, this.sessionDepth - 1); this.currentSubEngine = null; }
文件: electron/harness/orchestration/orchestrator.ts
问题: delegate() 的 sessionDepth 恢复逻辑分散在 try 和 catch 块中(重复代码),且 abort 路径(handle.abort())跳过了恢复。abortAll() 中的 sessionDepth.clear() 会被各 delegate 的 finally 块覆盖,导致深度错乱。
delegate()
handle.abort()
abortAll()
sessionDepth.clear()
修复方案:
finally
clear()
set(currentDepth)
activeSubAgents.delete()
验证: tsc --noEmit 类型检查通过。
tsc --noEmit
No dependencies set.
The note is not visible to the blocked user.
问题类型
缺陷 / 严重 / Agent 引擎
文件位置
electron/harness/orchestration/orchestrator.ts问题描述
sessionDepth用于限制嵌套委派深度(防止无限递归)。abort 中断时:orchestrator.abort()aborted = true并 abort 当前 SubEnginesessionDepth在 SubEngine 完成回调中才递减,abort 路径跳过了递减影响
建议修复
并在 finally 块中兜底:
修复说明
文件:
electron/harness/orchestration/orchestrator.ts问题:
delegate()的sessionDepth恢复逻辑分散在 try 和 catch 块中(重复代码),且 abort 路径(handle.abort())跳过了恢复。abortAll()中的sessionDepth.clear()会被各 delegate 的 finally 块覆盖,导致深度错乱。修复方案:
sessionDepth恢复逻辑统一移到finally块,覆盖正常完成/异常/abort 所有路径abortAll()移除sessionDepth.clear()— 各 delegate 的 finally 块会自行恢复深度。之前clear()会被 finally 的set(currentDepth)覆盖,移除后让 finally 统一处理,最终 sessionDepth 正确归零activeSubAgents.delete()也移入 finally 块,确保资源清理不遗漏验证:
tsc --noEmit类型检查通过。