缺陷 / 高 / LLM 适配器
electron/harness/adapters/shared/sse-stream.ts
SSE 流接收工具调用 delta 时累积到 buffer,结束后尝试 JSON.parse。 解析失败时:
try { args = JSON.parse(buffer.argsBuffer); } catch { // 静默丢弃 return; }
这导致:
try { args = JSON.parse(buffer.argsBuffer); } catch (err) { // 发射错误事件,触发 Engine 重试 this.emit('error', { type: 'error', error: { code: 'RETRY', message: `Tool call JSON parse failed: ${err.message}`, raw: buffer.argsBuffer, }, }); return; }
同时记录日志便于排查。
文件: electron/harness/adapters/shared/sse-stream.ts
修复: flushToolCallBuffer 的 catch 块不再静默丢弃,改为 log.warn 记录日志 + yield ERROR 事件(MetonaErrorCode.PARSE_ERROR,retryable: true),让 Engine 感知并决定重试/告知 LLM,避免 ReAct 死循环。
log.warn
ERROR
MetonaErrorCode.PARSE_ERROR
retryable: true
验证: tsc --noEmit 类型检查通过。
tsc --noEmit
No dependencies set.
The note is not visible to the blocked user.
问题类型
缺陷 / 高 / LLM 适配器
文件位置
electron/harness/adapters/shared/sse-stream.ts问题描述
SSE 流接收工具调用 delta 时累积到 buffer,结束后尝试 JSON.parse。
解析失败时:
这导致:
影响
建议修复
同时记录日志便于排查。
修复说明
文件:
electron/harness/adapters/shared/sse-stream.ts修复: flushToolCallBuffer 的 catch 块不再静默丢弃,改为
log.warn记录日志 + yieldERROR事件(MetonaErrorCode.PARSE_ERROR,retryable: true),让 Engine 感知并决定重试/告知 LLM,避免 ReAct 死循环。验证:
tsc --noEmit类型检查通过。