缺陷 / 高 / IPC 通信
electron/harness/hooks/confirmation-hook.ts
waitForConfirmation 使用 Promise + setTimeout 实现超时控制。 当超时与用户确认同时发生时(race condition):
project_memory.md 要求:
Tool confirmation timeout is configurable via agent.confirmationTimeoutMs (30s~600s, default 120s)
agent.confirmationTimeoutMs
async waitForConfirmation(requestId: string): Promise<boolean> { // 使用 AbortController 统一清理 const controller = new AbortController(); const timer = setTimeout(() => { controller.abort(); }, this.timeoutMs); try { const result = await new Promise<boolean>((resolve, reject) => { const onConfirm = (id: string, approved: boolean) => { if (id === requestId) { this.off('confirmation', onConfirm); resolve(approved); } }; this.on('confirmation', onConfirm); controller.signal.addEventListener('abort', () => { this.off('confirmation', onConfirm); resolve(false); // 超时视为拒绝 }); }); return result; } finally { clearTimeout(timer); } }
确保监听器与定时器都被清理。
No dependencies set.
The note is not visible to the blocked user.
问题类型
缺陷 / 高 / IPC 通信
文件位置
electron/harness/hooks/confirmation-hook.ts问题描述
waitForConfirmation 使用 Promise + setTimeout 实现超时控制。
当超时与用户确认同时发生时(race condition):
project_memory.md 要求:
影响
建议修复
确保监听器与定时器都被清理。