diff --git a/src/renderer/src/pages/home/Inputbar/MentionModelsButton.tsx b/src/renderer/src/pages/home/Inputbar/MentionModelsButton.tsx index 6bb36f988a..23c8fd13f5 100644 --- a/src/renderer/src/pages/home/Inputbar/MentionModelsButton.tsx +++ b/src/renderer/src/pages/home/Inputbar/MentionModelsButton.tsx @@ -250,21 +250,23 @@ const MentionModelsButton: FC = ({ // ESC关闭时的处理:删除 @ 和搜索文本 if (action === 'esc') { // 只有在输入触发且有模型选择动作时才删除@字符和搜索文本 + const triggerInfo = ctx?.triggerInfo ?? triggerInfoRef.current if ( hasModelActionRef.current && - ctx.triggerInfo?.type === 'input' && - ctx.triggerInfo?.position !== undefined + triggerInfo?.type === 'input' && + triggerInfo?.position !== undefined ) { // 基于当前光标 + 搜索词精确定位并删除,position 仅作兜底 setText((currentText) => { const textArea = document.querySelector('.inputbar textarea') as HTMLTextAreaElement | null const caret = textArea ? (textArea.selectionStart ?? currentText.length) : currentText.length - return removeAtSymbolAndText(currentText, caret, searchText || '', ctx.triggerInfo?.position!) + return removeAtSymbolAndText(currentText, caret, searchText || '', triggerInfo.position!) }) } } // Backspace删除@的情况(delete-symbol): // @ 已经被Backspace自然删除,面板关闭,不需要额外操作 + triggerInfoRef.current = undefined } }) },