From 636c788e2ba413d21a5fd385c3ea4cc7e134e1be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=87=AA=E7=94=B1=E7=9A=84=E4=B8=96=E7=95=8C=E4=BA=BA?= <3196812536@qq.com> Date: Wed, 7 May 2025 19:42:48 +0800 Subject: [PATCH] fix: knowledge base url error (#5735) --- src/renderer/src/hooks/useKnowledge.ts | 2 +- .../src/pages/home/Messages/CitationsList.tsx | 20 +++++++----- src/renderer/src/services/KnowledgeService.ts | 6 ++-- src/renderer/src/store/messageBlock.ts | 31 ++++++++++++++----- 4 files changed, 38 insertions(+), 21 deletions(-) diff --git a/src/renderer/src/hooks/useKnowledge.ts b/src/renderer/src/hooks/useKnowledge.ts index e69b585046..662829612e 100644 --- a/src/renderer/src/hooks/useKnowledge.ts +++ b/src/renderer/src/hooks/useKnowledge.ts @@ -1,5 +1,5 @@ /* eslint-disable react-hooks/rules-of-hooks */ -import { db } from '@renderer/databases/index' +import { db } from '@renderer/databases' import KnowledgeQueue from '@renderer/queue/KnowledgeQueue' import FileManager from '@renderer/services/FileManager' import { getKnowledgeBaseParams } from '@renderer/services/KnowledgeService' diff --git a/src/renderer/src/pages/home/Messages/CitationsList.tsx b/src/renderer/src/pages/home/Messages/CitationsList.tsx index ab82ddd2b1..01798c62ca 100644 --- a/src/renderer/src/pages/home/Messages/CitationsList.tsx +++ b/src/renderer/src/pages/home/Messages/CitationsList.tsx @@ -146,12 +146,15 @@ const WebSearchCitation: React.FC<{ citation: Citation }> = ({ citation }) => { } const KnowledgeCitation: React.FC<{ citation: Citation }> = ({ citation }) => ( - <> - {citation.showFavicon && } - handleLinkClick(citation.url, e)}> - {citation.title} - - + +
+ {citation.showFavicon && } + handleLinkClick(citation.url, e)}> + {citation.title} + +
+ {citation.content && truncateText(citation.content, 100)} +
) const OpenButton = styled(Button)` @@ -177,9 +180,10 @@ const PreviewIcon = styled.div` display: flex; align-items: center; justify-content: center; - background: #fff; - border: 1px solid #fff; + background: #f0f2f5; + border: 1px solid #e1e4e8; margin-left: -8px; + color: var(--color-text-2); &:first-child { margin-left: 0; diff --git a/src/renderer/src/services/KnowledgeService.ts b/src/renderer/src/services/KnowledgeService.ts index f594a44d7f..19021bccb1 100644 --- a/src/renderer/src/services/KnowledgeService.ts +++ b/src/renderer/src/services/KnowledgeService.ts @@ -155,7 +155,7 @@ export const processKnowledgeSearch = async ( }) ) - const references = await Promise.all( + return await Promise.all( processdResults.map(async (item, index) => { // const baseItem = base.items.find((i) => i.uniqueId === item.metadata.uniqueLoaderId) return { @@ -166,7 +166,6 @@ export const processKnowledgeSearch = async ( } as KnowledgeReference }) ) - return references } catch (error) { console.error(`Error searching knowledge base ${base.name}:`, error) return [] @@ -177,9 +176,8 @@ export const processKnowledgeSearch = async ( const allReferencesRaw = resultsPerBase.flat().filter((ref): ref is KnowledgeReference => !!ref) // 重新为引用分配ID - const references = allReferencesRaw.map((ref, index) => ({ + return allReferencesRaw.map((ref, index) => ({ ...ref, id: index + 1 })) - return references } diff --git a/src/renderer/src/store/messageBlock.ts b/src/renderer/src/store/messageBlock.ts index aa484e0bf3..561396fa43 100644 --- a/src/renderer/src/store/messageBlock.ts +++ b/src/renderer/src/store/messageBlock.ts @@ -187,14 +187,29 @@ const formatCitationsFromBlock = (block: CitationMessageBlock | undefined): Cita // 3. Handle Knowledge Base References if (block.knowledge && block.knowledge.length > 0) { formattedCitations.push( - ...block.knowledge.map((result, index) => ({ - number: index + 1, - url: result.sourceUrl, - title: result.sourceUrl, - content: result.content, - showFavicon: true, - type: 'knowledge' - })) + ...block.knowledge.map((result, index) => { + const filePattern = /\[(.*?)]\(http:\/\/file\/(.*?)\)/ + const fileMatch = result.sourceUrl.match(filePattern) + + let url = result.sourceUrl + let title = result.sourceUrl + let showFavicon = true + + // 如果匹配文件链接格式 [filename](http://file/xxx) + if (fileMatch) { + title = fileMatch[1] + url = `http://file/${fileMatch[2]}` + } + + return { + number: index + 1, + url: url, + title: title, + content: result.content, + showFavicon: showFavicon, + type: 'knowledge' + } + }) ) } // 4. Deduplicate by URL and Renumber Sequentially