ai-chat-ui:摘录 JsonString 字段在 regex 倒置前解析全部字符串
作者: safisa创建于 2026年8月31日更新于 2026年9月14日
标签bugtheia-ai
错误描述: packages/ai-chat-ui/src/common/toolcall-utils.ts 中的 extractJsonStringField 先尝试对整个字符串进行 JSON.parse,如果出错,则回退到正则表达式中:
try {
const parsed = JSON.parse(json);
...
} catch {
const regex = new RegExp('"' + fieldName + '"\\s*:\\s*"([^"]*)"?');
return regex.exec(json)?.[1];
}回退是为了支持流式传输,其中参数被截断,因此无效的 JSON — 因此在流式传输期间,解析总是抛出异常,JSON.parse 仍然会扫描整个字符串,然后失败。它来自 getArgumentsLabel,ToolCallContent 的体内(toolcall-part-renderer.tsx),即在每次渲染时,当参数增长时,标签的大小为参数的平方。
内容来源: eclipse-theia/theia