From bf7a367d35cd4ba67d4fa1081fad8b1a806af6f4 Mon Sep 17 00:00:00 2001 From: liquidliang Date: Sun, 22 Feb 2026 01:38:19 +0800 Subject: [PATCH] =?UTF-8?q?refactor(knowledge-base):=20=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E7=9B=AE=E5=BD=95=E5=B9=B6=E7=AE=80=E5=8C=96?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E7=B1=BB=E5=9E=8B=E6=98=A0=E5=B0=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将默认目录从"收集"和"笔记"调整为"笔记"和"Skill" - 移除"收集"、"AI收藏"和"知识提炼"目录类型,统一使用"笔记" - 更新知识提炼存储服务使用"笔记"目录 - 修改MCP工具默认目录为"笔记" - 优化默认目录初始化逻辑,确保目录状态正确同步 --- .../src/mcp/tools/knowledge-base-tool.ts | 4 +-- .../storage-service.ts | 4 +-- .../drawnix/src/services/kb-save-manager.ts | 10 ++---- .../src/services/knowledge-base-service.ts | 35 +++++++++++++++---- .../drawnix/src/types/knowledge-base.types.ts | 4 +-- 5 files changed, 38 insertions(+), 19 deletions(-) diff --git a/packages/drawnix/src/mcp/tools/knowledge-base-tool.ts b/packages/drawnix/src/mcp/tools/knowledge-base-tool.ts index b93e1f72..3b420e0a 100644 --- a/packages/drawnix/src/mcp/tools/knowledge-base-tool.ts +++ b/packages/drawnix/src/mcp/tools/knowledge-base-tool.ts @@ -209,7 +209,7 @@ export const kbCreateNoteTool: MCPTool = { }, directoryName: { type: 'string', - description: '目录名称(不存在则自动创建),默认为"默认"', + description: '目录名称(不存在则自动创建),默认为"笔记"', }, tags: { type: 'array', @@ -252,7 +252,7 @@ export const kbCreateNoteTool: MCPTool = { execute: async (params: Record): Promise => { const title = params.title as string; const content = params.content as string; - const directoryName = (params.directoryName as string) || '默认'; + const directoryName = (params.directoryName as string) || '笔记'; const tags = params.tags as string[] | undefined; const sourceUrl = params.sourceUrl as string | undefined; diff --git a/packages/drawnix/src/services/kb-knowledge-extraction/storage-service.ts b/packages/drawnix/src/services/kb-knowledge-extraction/storage-service.ts index db3345cd..5f68599a 100644 --- a/packages/drawnix/src/services/kb-knowledge-extraction/storage-service.ts +++ b/packages/drawnix/src/services/kb-knowledge-extraction/storage-service.ts @@ -72,9 +72,9 @@ function mergeKnowledgeToMarkdown( /** 获取或创建"知识提炼"目录 */ export async function getKnowledgeExtractionDirectory(): Promise<{ id: string; name: string }> { const dirs = await getAllDirectories(); - const existing = dirs.find((d) => d.name === '知识提炼'); + const existing = dirs.find((d) => d.name === '笔记'); if (existing) return { id: existing.id, name: existing.name }; - const newDir = await createDirectory('知识提炼'); + const newDir = await createDirectory('笔记'); return { id: newDir.id, name: newDir.name }; } diff --git a/packages/drawnix/src/services/kb-save-manager.ts b/packages/drawnix/src/services/kb-save-manager.ts index 128bd883..41b49a73 100644 --- a/packages/drawnix/src/services/kb-save-manager.ts +++ b/packages/drawnix/src/services/kb-save-manager.ts @@ -24,14 +24,11 @@ import type { KBNoteMeta, KBNoteMetadata } from '../types/knowledge-base.types'; // ============================================ /** 目录类型 */ -export type DirectoryType = 'collection' | 'note' | 'ai_chat' | 'knowledge_extraction'; +export type DirectoryType = 'note'; /** 目录名称映射 */ export const DIRECTORY_NAMES: Record = { - collection: '收集', note: '笔记', - ai_chat: 'AI收藏', - knowledge_extraction: '知识提炼', }; /** 保存历史最大记录数 */ @@ -246,8 +243,7 @@ class KnowledgeSaveManager { // ============================================ private _inferDirectoryType(item: SaveContentItem): DirectoryType { - if (item.contentType === 'ai_response') return 'ai_chat'; - return 'collection'; + return 'note'; } private async _ensureDirectory(type: DirectoryType): Promise { @@ -445,7 +441,7 @@ class KnowledgeSaveManager { noteName: '', isNewNote: false, isDuplicate: false, - directoryType: 'collection', + directoryType: 'note', message, fingerprint: '', savedAt: Date.now(), diff --git a/packages/drawnix/src/services/knowledge-base-service.ts b/packages/drawnix/src/services/knowledge-base-service.ts index 4f2bd40c..d1baf01c 100644 --- a/packages/drawnix/src/services/knowledge-base-service.ts +++ b/packages/drawnix/src/services/knowledge-base-service.ts @@ -88,21 +88,44 @@ async function ensureDefaultDirectories(): Promise { if (defaultDirsInitialized) return; const dirs = await getAllDirectories(); - const hasDefaults = dirs.some((d) => d.isDefault); - if (!hasDefaults) { - const now = Date.now(); - for (const def of KB_DEFAULT_DIRECTORIES) { - const dir: KBDirectory = { + const defaultDirNames = new Set(KB_DEFAULT_DIRECTORIES.map((d) => d.name)); + const existingMap = new Map(dirs.map((d) => [d.name, d])); + const now = Date.now(); + + // 1. 确保默认目录存在且状态正确 + for (const def of KB_DEFAULT_DIRECTORIES) { + const existing = existingMap.get(def.name); + if (existing) { + // 如果已存在但不是默认,更新为默认 + if (!existing.isDefault) { + existing.isDefault = true; + existing.order = def.order; // 更新排序 + existing.updatedAt = now; + await directoriesStore.setItem(existing.id, existing); + } + } else { + // 创建不存在的默认目录 + const newDir: KBDirectory = { id: generateId(), name: def.name, - isDefault: def.isDefault, + isDefault: true, createdAt: now, updatedAt: now, order: def.order, }; + await directoriesStore.setItem(newDir.id, newDir); + } + } + + // 2. 将不再是默认的目录(如"收集")取消默认状态 + for (const dir of dirs) { + if (dir.isDefault && !defaultDirNames.has(dir.name)) { + dir.isDefault = false; + dir.updatedAt = now; await directoriesStore.setItem(dir.id, dir); } } + defaultDirsInitialized = true; } diff --git a/packages/drawnix/src/types/knowledge-base.types.ts b/packages/drawnix/src/types/knowledge-base.types.ts index 876fed35..79252b4b 100644 --- a/packages/drawnix/src/types/knowledge-base.types.ts +++ b/packages/drawnix/src/types/knowledge-base.types.ts @@ -166,8 +166,8 @@ export const KB_DEFAULT_SORT: KBSortOptions = { * 默认目录列表 */ export const KB_DEFAULT_DIRECTORIES: Array<{ name: string; isDefault: boolean; order: number }> = [ - { name: '收集', isDefault: true, order: 0 }, - { name: '笔记', isDefault: true, order: 1 }, + { name: '笔记', isDefault: true, order: 0 }, + { name: 'Skill', isDefault: true, order: 1 }, ]; // ==================== 保存状态类型 ====================