缺陷 / 高 / Agent 引擎
electron/harness/agent-loop/engine.ts
waitForAbort 实现:
async waitForAbort(timeoutMs = 5000): Promise<boolean> { if (!this.currentRunPromise) return true; try { await Promise.race([ this.currentRunPromise.catch(() => {}), new Promise<void>(resolve => setTimeout(resolve, timeoutMs)), ]); return true; // 总是返回 true } catch { return false; } }
问题:
async waitForAbort(timeoutMs = 5000): Promise<boolean> { if (!this.currentRunPromise) return true; let timedOut = false; const timer = new Promise<void>(resolve => setTimeout(() => { timedOut = true; resolve(); }, timeoutMs) ); await Promise.race([ this.currentRunPromise.catch(() => {}), timer, ]); return !timedOut; // 超时返回 false }
调用方应根据返回值决定是否提示用户"上一次操作未完成,请稍候"。
文件: electron/harness/agent-loop/engine.ts
修复: 原实现 Promise.race 永不抛错(currentRunPromise.catch(() => {}) 已吞异常),try/catch 形同虚设,总是返回 true。改用 timedOut 标志检测超时,超时返回 false,run 正常结束返回 true。
Promise.race
currentRunPromise.catch(() => {})
timedOut
false
true
验证: tsc --noEmit 类型检查通过。
tsc --noEmit
No dependencies set.
The note is not visible to the blocked user.
问题类型
缺陷 / 高 / Agent 引擎
文件位置
electron/harness/agent-loop/engine.ts问题描述
waitForAbort 实现:
问题:
影响
建议修复
调用方应根据返回值决定是否提示用户"上一次操作未完成,请稍候"。
修复说明
文件:
electron/harness/agent-loop/engine.ts修复: 原实现
Promise.race永不抛错(currentRunPromise.catch(() => {})已吞异常),try/catch 形同虚设,总是返回 true。改用timedOut标志检测超时,超时返回false,run 正常结束返回true。验证:
tsc --noEmit类型检查通过。