From 21990adf09244daf0faee486b0d090c0ec28ae4b Mon Sep 17 00:00:00 2001 From: OpenClaw Agent Date: Thu, 16 Apr 2026 09:34:05 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=AF=BC=E5=85=A5=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E7=BB=91=E5=AE=9A=E5=B5=8C=E5=85=A5=E6=A8=A1=E5=9E=8B=EF=BC=8C?= =?UTF-8?q?=E4=BB=85=E5=90=91=E9=87=8F=E8=AE=B0=E5=BF=86=E5=90=AF=E7=94=A8?= =?UTF-8?q?=E6=97=B6=E5=8F=AF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 导入按钮默认禁用,需配置嵌入模型后才可点击 - 模态框打开时根据向量记忆状态自动启用/禁用导入按钮 - 导入时双重校验:按钮状态 + 函数入口检查 - 导入的每条记忆自动通过 addMemory 向量化存储 --- src/renderer/components/memory-modal.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/renderer/components/memory-modal.ts b/src/renderer/components/memory-modal.ts index 73757b5..6fb0528 100644 --- a/src/renderer/components/memory-modal.ts +++ b/src/renderer/components/memory-modal.ts @@ -91,7 +91,7 @@ export function initMemoryModal(): void { 关键词模式 - + @@ -177,12 +177,17 @@ export function closeMemoryModal(): void { function updateVectorBadge(): void { const badge = modalEl.querySelector('#memoryVectorBadge')!; + const importBtn = modalEl.querySelector('#btnImportMemoryMd') as HTMLButtonElement; if (isVectorMemoryEnabled()) { badge.textContent = `✅ 向量搜索 (${getEmbeddingModel()})`; badge.className = 'memory-vector-badge enabled'; + importBtn.disabled = false; + importBtn.title = '导入 Markdown 文档(自动向量化)'; } else { badge.textContent = '关键词模式'; badge.className = 'memory-vector-badge disabled'; + importBtn.disabled = true; + importBtn.title = '需先在设置中配置嵌入模型'; } } @@ -285,6 +290,11 @@ function renderList(): void { // ── 导入 Markdown 记忆文档 ── async function importMemoryFromMd(): Promise { + if (!isVectorMemoryEnabled()) { + showToast('请先在设置中配置嵌入模型以启用向量记忆', 'warning'); + return; + } + const bridge = (window as any).metonaDesktop; if (!bridge || !bridge.isDesktop) { showToast('导入功能仅在桌面端可用', 'warning'); @@ -330,7 +340,7 @@ async function importMemoryFromMd(): Promise { renderList(); updateStats(); - showToast(`已从 ${fileName} 导入 ${imported} 条记忆${skipped > 0 ? `(跳过 ${skipped} 条)` : ''}`, 'success', 3000); + showToast(`已导入 ${imported} 条记忆(已向量化)${skipped > 0 ? `,跳过 ${skipped} 条` : ''}`, 'success', 3000); } catch (err) { showToast(`导入失败: ${(err as Error).message}`, 'error'); }