From 599fd1af2658c81123740fd72d5743148cbd2495 Mon Sep 17 00:00:00 2001 From: cc <98377878+hicccc77@users.noreply.github.com> Date: Sat, 11 Apr 2026 23:12:03 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20ai=E5=8A=9F=E8=83=BD=E7=9A=84=E5=88=9D?= =?UTF-8?q?=E6=AC=A1=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/main.ts | 170 ++ electron/preload.ts | 176 ++ electron/services/aiAgentService.ts | 450 +++ electron/services/aiAnalysisService.ts | 2673 +++++++++++++++++ electron/services/aiAnalysisSkills/base.md | 30 + .../aiAnalysisSkills/context_compression.md | 6 + .../aiAnalysisSkills/tool_message_briefs.md | 8 + .../tool_session_candidates.md | 9 + .../aiAnalysisSkills/tool_session_glimpse.md | 9 + .../aiAnalysisSkills/tool_source_refs.md | 8 + .../tool_time_window_activity.md | 9 + .../aiAnalysisSkills/tool_timeline.md | 9 + .../aiAnalysisSkills/tool_top_contacts.md | 9 + .../aiAnalysisSkills/tool_topic_stats.md | 8 + .../aiAnalysisSkills/tool_voice_list.md | 8 + .../aiAnalysisSkills/tool_voice_transcribe.md | 9 + electron/services/aiAssistantService.ts | 444 +++ electron/services/aiSkillService.ts | 395 +++ electron/services/config.ts | 20 + electron/services/wcdbCore.ts | 326 ++ electron/services/wcdbService.ts | 74 + electron/wcdbWorker.ts | 18 + resources/wcdb/win32/x64/wcdb_api.dll | Bin 1120256 -> 1138688 bytes src/App.tsx | 2 + src/components/Sidebar.tsx | 12 +- src/pages/AiAnalysisPage.scss | 680 +++++ src/pages/AiAnalysisPage.tsx | 881 ++++++ src/pages/SettingsPage.tsx | 137 + src/services/config.ts | 104 + src/stores/aiRuntimeStore.ts | 87 + src/types/aiAnalysis.ts | 88 + src/types/electron.d.ts | 301 ++ 32 files changed, 7159 insertions(+), 1 deletion(-) create mode 100644 electron/services/aiAgentService.ts create mode 100644 electron/services/aiAnalysisService.ts create mode 100644 electron/services/aiAnalysisSkills/base.md create mode 100644 electron/services/aiAnalysisSkills/context_compression.md create mode 100644 electron/services/aiAnalysisSkills/tool_message_briefs.md create mode 100644 electron/services/aiAnalysisSkills/tool_session_candidates.md create mode 100644 electron/services/aiAnalysisSkills/tool_session_glimpse.md create mode 100644 electron/services/aiAnalysisSkills/tool_source_refs.md create mode 100644 electron/services/aiAnalysisSkills/tool_time_window_activity.md create mode 100644 electron/services/aiAnalysisSkills/tool_timeline.md create mode 100644 electron/services/aiAnalysisSkills/tool_top_contacts.md create mode 100644 electron/services/aiAnalysisSkills/tool_topic_stats.md create mode 100644 electron/services/aiAnalysisSkills/tool_voice_list.md create mode 100644 electron/services/aiAnalysisSkills/tool_voice_transcribe.md create mode 100644 electron/services/aiAssistantService.ts create mode 100644 electron/services/aiSkillService.ts create mode 100644 src/pages/AiAnalysisPage.scss create mode 100644 src/pages/AiAnalysisPage.tsx create mode 100644 src/stores/aiRuntimeStore.ts create mode 100644 src/types/aiAnalysis.ts diff --git a/electron/main.ts b/electron/main.ts index f6a873a..4c7a577 100644 --- a/electron/main.ts +++ b/electron/main.ts @@ -31,6 +31,10 @@ import { destroyNotificationWindow, registerNotificationHandlers, showNotificati import { httpService } from './services/httpService' import { messagePushService } from './services/messagePushService' import { insightService } from './services/insightService' +import { aiAnalysisService } from './services/aiAnalysisService' +import { aiAgentService } from './services/aiAgentService' +import { aiAssistantService } from './services/aiAssistantService' +import { aiSkillService } from './services/aiSkillService' import { bizService } from './services/bizService' // 配置自动更新 @@ -1598,6 +1602,14 @@ const runLegacySnsCacheMigration = async ( return { copied, skipped, totalFiles: total } } +async function ensureAiSqlLabConnected(): Promise<{ success: boolean; error?: string }> { + const connectResult = await chatService.connect() + if (!connectResult.success) { + return { success: false, error: connectResult.error || '数据库未连接' } + } + return { success: true } +} + // 注册 IPC 处理器 function registerIpcHandlers() { registerNotificationHandlers() @@ -1651,6 +1663,164 @@ function registerIpcHandlers() { return insightService.generateFootprintInsight(payload) }) + // ==================== AI Analysis V2 ==================== + ipcMain.handle('ai:listConversations', async (_, payload?: { page?: number; pageSize?: number }) => + aiAnalysisService.listConversations(payload?.page, payload?.pageSize) + ) + ipcMain.handle('ai:createConversation', async (_, payload?: { title?: string }) => + aiAnalysisService.createConversation(payload?.title || '') + ) + ipcMain.handle('ai:renameConversation', async (_, payload: { conversationId: string; title: string }) => + aiAnalysisService.renameConversation(payload.conversationId, payload.title) + ) + ipcMain.handle('ai:deleteConversation', async (_, conversationId: string) => + aiAnalysisService.deleteConversation(conversationId) + ) + ipcMain.handle('ai:listMessages', async (_, payload: { conversationId: string; limit?: number }) => + aiAnalysisService.listMessages(payload.conversationId, payload.limit) + ) + ipcMain.handle('ai:exportConversation', async (_, payload: { conversationId: string }) => + aiAnalysisService.exportConversation(payload.conversationId) + ) + ipcMain.handle('ai:getToolCatalog', async () => aiAnalysisService.getToolCatalog()) + ipcMain.handle('ai:executeTool', async (_, payload: { name: string; args?: Record }) => + aiAnalysisService.executeTool(payload.name, payload.args || {}) + ) + ipcMain.handle('ai:cancelToolTest', async (_, payload?: { taskId?: string }) => + aiAnalysisService.cancelToolTest(payload?.taskId) + ) + + ipcMain.handle('agent:runStream', async (event, payload: { + mode?: 'chat' | 'sql' + conversationId?: string + userInput: string + assistantId?: string + activeSkillId?: string + chatScope?: 'group' | 'private' + sqlContext?: { schemaText?: string; targetHint?: string } + }) => { + return aiAgentService.runStream(payload, { + onChunk: (chunk) => { + try { + event.sender.send('agent:stream', chunk) + } catch { + // ignore sender errors + } + } + }) + }) + ipcMain.handle('agent:abort', async (_, payload: { runId?: string; conversationId?: string }) => + aiAgentService.abort(payload || {}) + ) + + ipcMain.handle('assistant:getAll', async () => aiAssistantService.getAll()) + ipcMain.handle('assistant:getConfig', async (_, id: string) => aiAssistantService.getConfig(id)) + ipcMain.handle('assistant:create', async (_, payload: any) => aiAssistantService.create(payload || {})) + ipcMain.handle('assistant:update', async (_, payload: { id: string; updates: any }) => + aiAssistantService.update(payload.id, payload.updates || {}) + ) + ipcMain.handle('assistant:delete', async (_, id: string) => aiAssistantService.delete(id)) + ipcMain.handle('assistant:reset', async (_, id: string) => aiAssistantService.reset(id)) + ipcMain.handle('assistant:getBuiltinCatalog', async () => aiAssistantService.getBuiltinCatalog()) + ipcMain.handle('assistant:getBuiltinToolCatalog', async () => aiAssistantService.getBuiltinToolCatalog()) + ipcMain.handle('assistant:importFromMd', async (_, rawMd: string) => aiAssistantService.importFromMd(rawMd)) + + ipcMain.handle('skill:getAll', async () => aiSkillService.getAll()) + ipcMain.handle('skill:getConfig', async (_, id: string) => aiSkillService.getConfig(id)) + ipcMain.handle('skill:create', async (_, rawMd: string) => aiSkillService.create(rawMd)) + ipcMain.handle('skill:update', async (_, payload: { id: string; rawMd: string }) => + aiSkillService.update(payload.id, payload.rawMd) + ) + ipcMain.handle('skill:delete', async (_, id: string) => aiSkillService.delete(id)) + ipcMain.handle('skill:getBuiltinCatalog', async () => aiSkillService.getBuiltinCatalog()) + ipcMain.handle('skill:importFromMd', async (_, rawMd: string) => aiSkillService.importFromMd(rawMd)) + + ipcMain.handle('llm:getConfig', async () => ({ + success: true, + config: { + apiBaseUrl: String(configService?.get('aiModelApiBaseUrl') || ''), + apiKey: String(configService?.get('aiModelApiKey') || ''), + model: String(configService?.get('aiModelApiModel') || 'gpt-4o-mini') + } + })) + ipcMain.handle('llm:setConfig', async (_, payload: { apiBaseUrl?: string; apiKey?: string; model?: string }) => { + if (typeof payload?.apiBaseUrl === 'string') configService?.set('aiModelApiBaseUrl', payload.apiBaseUrl) + if (typeof payload?.apiKey === 'string') configService?.set('aiModelApiKey', payload.apiKey) + if (typeof payload?.model === 'string') configService?.set('aiModelApiModel', payload.model) + return { success: true } + }) + ipcMain.handle('llm:listModels', async () => ({ + success: true, + models: [ + { id: 'gpt-4o-mini', label: 'gpt-4o-mini' }, + { id: 'gpt-4o', label: 'gpt-4o' }, + { id: 'gpt-5-mini', label: 'gpt-5-mini' } + ] + })) + + ipcMain.handle('chat:getSchema', async (_, payload?: { sessionId?: string }) => { + const connectResult = await ensureAiSqlLabConnected() + if (!connectResult.success) { + return { success: false, error: connectResult.error || '数据库未连接' } + } + return wcdbService.sqlLabGetSchema(payload) + }) + ipcMain.handle('chat:executeSQL', async (_, payload: { + kind: 'message' | 'contact' | 'biz' + path?: string | null + sql: string + limit?: number + }) => { + const connectResult = await ensureAiSqlLabConnected() + if (!connectResult.success) { + return { success: false, error: connectResult.error || '数据库未连接' } + } + return wcdbService.sqlLabExecuteReadonly(payload) + }) + + // 兼容层:旧 aiAnalysis API 转调新实现 + ipcMain.handle('aiAnalysis:listConversations', async (_, payload?: { page?: number; pageSize?: number }) => + aiAnalysisService.listConversations(payload?.page, payload?.pageSize) + ) + ipcMain.handle('aiAnalysis:createConversation', async (_, payload?: { title?: string }) => + aiAnalysisService.createConversation(payload?.title || '') + ) + ipcMain.handle('aiAnalysis:deleteConversation', async (_, conversationId: string) => + aiAnalysisService.deleteConversation(conversationId) + ) + ipcMain.handle('aiAnalysis:listMessages', async (_, payload: { conversationId: string; limit?: number }) => + aiAnalysisService.listMessages(payload.conversationId, payload.limit) + ) + ipcMain.handle('aiAnalysis:sendMessage', async (event, payload: { + conversationId: string + userInput: string + options?: { parentMessageId?: string; persistUserMessage?: boolean; assistantId?: string; activeSkillId?: string } + }) => + aiAnalysisService.sendMessage(payload.conversationId, payload.userInput, payload.options, { + onRunEvent: (runEvent) => { + try { + event.sender.send('aiAnalysis:runEvent', runEvent) + } catch { + // ignore sender errors + } + } + }) + ) + ipcMain.handle('aiAnalysis:retryMessage', async (event, payload: { conversationId: string; userMessageId?: string }) => + aiAnalysisService.retryMessage(payload, { + onRunEvent: (runEvent) => { + try { + event.sender.send('aiAnalysis:runEvent', runEvent) + } catch { + // ignore sender errors + } + } + }) + ) + ipcMain.handle('aiAnalysis:abortRun', async (_, payload: { runId?: string; conversationId?: string }) => + aiAnalysisService.abortRun(payload || {}) + ) + ipcMain.handle('config:clear', async () => { if (isLaunchAtStartupSupported() && getSystemLaunchAtStartup()) { const result = setSystemLaunchAtStartup(false) diff --git a/electron/preload.ts b/electron/preload.ts index 838a305..6c4784e 100644 --- a/electron/preload.ts +++ b/electron/preload.ts @@ -276,6 +276,13 @@ contextBridge.exposeInMainWorld('electronAPI', { format: 'csv' | 'json', filePath: string ) => ipcRenderer.invoke('chat:exportMyFootprint', beginTimestamp, endTimestamp, format, filePath), + getSchema: (payload?: { sessionId?: string }) => ipcRenderer.invoke('chat:getSchema', payload), + executeSQL: (payload: { + kind: 'message' | 'contact' | 'biz' + path?: string | null + sql: string + limit?: number + }) => ipcRenderer.invoke('chat:executeSQL', payload), onWcdbChange: (callback: (event: any, data: { type: string; json: string }) => void) => { ipcRenderer.on('wcdb-change', callback) return () => ipcRenderer.removeListener('wcdb-change', callback) @@ -540,5 +547,174 @@ contextBridge.exposeInMainWorld('electronAPI', { privateSegments?: Array<{ displayName?: string; session_id?: string; incoming_count?: number; outgoing_count?: number; message_count?: number; replied?: boolean }> mentionGroups?: Array<{ displayName?: string; session_id?: string; count?: number }> }) => ipcRenderer.invoke('insight:generateFootprintInsight', payload) + }, + + aiApi: { + listConversations: (payload?: { page?: number; pageSize?: number }) => + ipcRenderer.invoke('ai:listConversations', payload), + createConversation: (payload?: { title?: string }) => + ipcRenderer.invoke('ai:createConversation', payload), + renameConversation: (payload: { conversationId: string; title: string }) => + ipcRenderer.invoke('ai:renameConversation', payload), + deleteConversation: (conversationId: string) => + ipcRenderer.invoke('ai:deleteConversation', conversationId), + listMessages: (payload: { conversationId: string; limit?: number }) => + ipcRenderer.invoke('ai:listMessages', payload), + exportConversation: (payload: { conversationId: string }) => + ipcRenderer.invoke('ai:exportConversation', payload), + getToolCatalog: () => ipcRenderer.invoke('ai:getToolCatalog'), + executeTool: (payload: { name: string; args?: Record }) => + ipcRenderer.invoke('ai:executeTool', payload), + cancelToolTest: (payload?: { taskId?: string }) => + ipcRenderer.invoke('ai:cancelToolTest', payload) + }, + + agentApi: { + runStream: (payload: { + mode?: 'chat' | 'sql' + conversationId?: string + userInput: string + assistantId?: string + activeSkillId?: string + chatScope?: 'group' | 'private' + sqlContext?: { schemaText?: string; targetHint?: string } + }) => ipcRenderer.invoke('agent:runStream', payload), + abort: (payload: { runId?: string; conversationId?: string }) => + ipcRenderer.invoke('agent:abort', payload), + onStream: (callback: (payload: any) => void) => { + const listener = (_: unknown, payload: any) => callback(payload) + ipcRenderer.on('agent:stream', listener) + return () => ipcRenderer.removeListener('agent:stream', listener) + } + }, + + assistantApi: { + getAll: () => ipcRenderer.invoke('assistant:getAll'), + getConfig: (id: string) => ipcRenderer.invoke('assistant:getConfig', id), + create: (payload: any) => ipcRenderer.invoke('assistant:create', payload), + update: (payload: { id: string; updates: any }) => ipcRenderer.invoke('assistant:update', payload), + delete: (id: string) => ipcRenderer.invoke('assistant:delete', id), + reset: (id: string) => ipcRenderer.invoke('assistant:reset', id), + getBuiltinCatalog: () => ipcRenderer.invoke('assistant:getBuiltinCatalog'), + getBuiltinToolCatalog: () => ipcRenderer.invoke('assistant:getBuiltinToolCatalog'), + importFromMd: (rawMd: string) => ipcRenderer.invoke('assistant:importFromMd', rawMd) + }, + + skillApi: { + getAll: () => ipcRenderer.invoke('skill:getAll'), + getConfig: (id: string) => ipcRenderer.invoke('skill:getConfig', id), + create: (rawMd: string) => ipcRenderer.invoke('skill:create', rawMd), + update: (payload: { id: string; rawMd: string }) => ipcRenderer.invoke('skill:update', payload), + delete: (id: string) => ipcRenderer.invoke('skill:delete', id), + getBuiltinCatalog: () => ipcRenderer.invoke('skill:getBuiltinCatalog'), + importFromMd: (rawMd: string) => ipcRenderer.invoke('skill:importFromMd', rawMd) + }, + + llmApi: { + getConfig: () => ipcRenderer.invoke('llm:getConfig'), + setConfig: (payload: { apiBaseUrl?: string; apiKey?: string; model?: string }) => + ipcRenderer.invoke('llm:setConfig', payload), + listModels: () => ipcRenderer.invoke('llm:listModels') + }, + + aiAnalysis: { + listConversations: (payload?: { page?: number; pageSize?: number }) => + ipcRenderer.invoke('aiAnalysis:listConversations', payload), + createConversation: (payload?: { title?: string }) => + ipcRenderer.invoke('aiAnalysis:createConversation', payload), + deleteConversation: (conversationId: string) => + ipcRenderer.invoke('aiAnalysis:deleteConversation', conversationId), + listMessages: (payload: { conversationId: string; limit?: number }) => + ipcRenderer.invoke('aiAnalysis:listMessages', payload), + sendMessage: (payload: { + conversationId: string + userInput: string + options?: { + parentMessageId?: string + persistUserMessage?: boolean + assistantId?: string + activeSkillId?: string + chatScope?: 'group' | 'private' + } + }) => ipcRenderer.invoke('aiAnalysis:sendMessage', payload), + retryMessage: (payload: { conversationId: string; userMessageId?: string }) => + ipcRenderer.invoke('aiAnalysis:retryMessage', payload), + abortRun: (payload: { runId?: string; conversationId?: string }) => + ipcRenderer.invoke('aiAnalysis:abortRun', payload), + onRunEvent: (callback: (payload: { + runId: string + conversationId: string + stage: string + ts: number + message: string + intent?: string + round?: number + toolName?: string + status?: string + durationMs?: number + data?: Record + }) => void) => { + const listener = (_: unknown, payload: any) => callback(payload) + ipcRenderer.on('aiAnalysis:runEvent', listener) + return () => ipcRenderer.removeListener('aiAnalysis:runEvent', listener) + } } }) + +contextBridge.exposeInMainWorld('aiApi', { + listConversations: (payload?: { page?: number; pageSize?: number }) => ipcRenderer.invoke('ai:listConversations', payload), + createConversation: (payload?: { title?: string }) => ipcRenderer.invoke('ai:createConversation', payload), + renameConversation: (payload: { conversationId: string; title: string }) => ipcRenderer.invoke('ai:renameConversation', payload), + deleteConversation: (conversationId: string) => ipcRenderer.invoke('ai:deleteConversation', conversationId), + listMessages: (payload: { conversationId: string; limit?: number }) => ipcRenderer.invoke('ai:listMessages', payload), + exportConversation: (payload: { conversationId: string }) => ipcRenderer.invoke('ai:exportConversation', payload), + getToolCatalog: () => ipcRenderer.invoke('ai:getToolCatalog'), + executeTool: (payload: { name: string; args?: Record }) => ipcRenderer.invoke('ai:executeTool', payload), + cancelToolTest: (payload?: { taskId?: string }) => ipcRenderer.invoke('ai:cancelToolTest', payload) +}) + +contextBridge.exposeInMainWorld('agentApi', { + runStream: (payload: { + mode?: 'chat' | 'sql' + conversationId?: string + userInput: string + assistantId?: string + activeSkillId?: string + chatScope?: 'group' | 'private' + sqlContext?: { schemaText?: string; targetHint?: string } + }) => ipcRenderer.invoke('agent:runStream', payload), + abort: (payload: { runId?: string; conversationId?: string }) => ipcRenderer.invoke('agent:abort', payload), + onStream: (callback: (payload: any) => void) => { + const listener = (_: unknown, payload: any) => callback(payload) + ipcRenderer.on('agent:stream', listener) + return () => ipcRenderer.removeListener('agent:stream', listener) + } +}) + +contextBridge.exposeInMainWorld('assistantApi', { + getAll: () => ipcRenderer.invoke('assistant:getAll'), + getConfig: (id: string) => ipcRenderer.invoke('assistant:getConfig', id), + create: (payload: any) => ipcRenderer.invoke('assistant:create', payload), + update: (payload: { id: string; updates: any }) => ipcRenderer.invoke('assistant:update', payload), + delete: (id: string) => ipcRenderer.invoke('assistant:delete', id), + reset: (id: string) => ipcRenderer.invoke('assistant:reset', id), + getBuiltinCatalog: () => ipcRenderer.invoke('assistant:getBuiltinCatalog'), + getBuiltinToolCatalog: () => ipcRenderer.invoke('assistant:getBuiltinToolCatalog'), + importFromMd: (rawMd: string) => ipcRenderer.invoke('assistant:importFromMd', rawMd) +}) + +contextBridge.exposeInMainWorld('skillApi', { + getAll: () => ipcRenderer.invoke('skill:getAll'), + getConfig: (id: string) => ipcRenderer.invoke('skill:getConfig', id), + create: (rawMd: string) => ipcRenderer.invoke('skill:create', rawMd), + update: (payload: { id: string; rawMd: string }) => ipcRenderer.invoke('skill:update', payload), + delete: (id: string) => ipcRenderer.invoke('skill:delete', id), + getBuiltinCatalog: () => ipcRenderer.invoke('skill:getBuiltinCatalog'), + importFromMd: (rawMd: string) => ipcRenderer.invoke('skill:importFromMd', rawMd) +}) + +contextBridge.exposeInMainWorld('llmApi', { + getConfig: () => ipcRenderer.invoke('llm:getConfig'), + setConfig: (payload: { apiBaseUrl?: string; apiKey?: string; model?: string }) => ipcRenderer.invoke('llm:setConfig', payload), + listModels: () => ipcRenderer.invoke('llm:listModels') +}) diff --git a/electron/services/aiAgentService.ts b/electron/services/aiAgentService.ts new file mode 100644 index 0000000..dc12579 --- /dev/null +++ b/electron/services/aiAgentService.ts @@ -0,0 +1,450 @@ +import http from 'http' +import https from 'https' +import { randomUUID } from 'crypto' +import { URL } from 'url' +import { ConfigService } from './config' +import { aiAnalysisService, type AiAnalysisRunEvent } from './aiAnalysisService' + +export interface TokenUsage { + promptTokens?: number + completionTokens?: number + totalTokens?: number +} + +export interface AgentRuntimeStatus { + phase: 'idle' | 'thinking' | 'tool_running' | 'responding' | 'completed' | 'error' | 'aborted' + round?: number + currentTool?: string + toolsUsed?: number + updatedAt: number + totalUsage?: TokenUsage +} + +export interface AgentStreamChunk { + runId: string + conversationId?: string + type: 'content' | 'think' | 'tool_start' | 'tool_result' | 'status' | 'done' | 'error' + content?: string + thinkTag?: string + thinkDurationMs?: number + toolName?: string + toolParams?: Record + toolResult?: unknown + error?: string + isFinished?: boolean + usage?: TokenUsage + status?: AgentRuntimeStatus +} + +export interface AgentRunPayload { + mode?: 'chat' | 'sql' + conversationId?: string + userInput: string + assistantId?: string + activeSkillId?: string + chatScope?: 'group' | 'private' + sqlContext?: { + schemaText?: string + targetHint?: string + } +} + +interface ActiveAgentRun { + runId: string + mode: 'chat' | 'sql' + conversationId?: string + innerRunId?: string + aborted: boolean +} + +function normalizeText(value: unknown, fallback = ''): string { + const text = String(value ?? '').trim() + return text || fallback +} + +function buildApiUrl(baseUrl: string, path: string): string { + const base = baseUrl.replace(/\/+$/, '') + const suffix = path.startsWith('/') ? path : `/${path}` + return `${base}${suffix}` +} + +function extractSqlText(raw: string): string { + const text = normalizeText(raw) + if (!text) return '' + const fenced = text.match(/```(?:sql)?\s*([\s\S]*?)```/i) + if (fenced?.[1]) return fenced[1].trim() + return text +} + +class AiAgentService { + private readonly config = ConfigService.getInstance() + private readonly runs = new Map() + + private getSharedModelConfig(): { apiBaseUrl: string; apiKey: string; model: string } { + return { + apiBaseUrl: normalizeText(this.config.get('aiModelApiBaseUrl')), + apiKey: normalizeText(this.config.get('aiModelApiKey')), + model: normalizeText(this.config.get('aiModelApiModel'), 'gpt-4o-mini') + } + } + + private emitStatus( + run: ActiveAgentRun, + onChunk: (chunk: AgentStreamChunk) => void, + phase: AgentRuntimeStatus['phase'], + extra?: Partial + ): void { + onChunk({ + runId: run.runId, + conversationId: run.conversationId, + type: 'status', + status: { + phase, + updatedAt: Date.now(), + ...extra + } + }) + } + + private mapRunEventToChunk( + run: ActiveAgentRun, + event: AiAnalysisRunEvent + ): AgentStreamChunk | null { + run.innerRunId = event.runId + run.conversationId = event.conversationId || run.conversationId + if (event.stage === 'llm_round_started') { + return { + runId: run.runId, + conversationId: run.conversationId, + type: 'think', + content: event.message, + thinkTag: 'round' + } + } + if (event.stage === 'tool_start') { + return { + runId: run.runId, + conversationId: run.conversationId, + type: 'tool_start', + toolName: event.toolName, + toolParams: (event.data || {}) as Record + } + } + if (event.stage === 'tool_done' || event.stage === 'tool_error') { + return { + runId: run.runId, + conversationId: run.conversationId, + type: 'tool_result', + toolName: event.toolName, + toolResult: event.data || { status: event.status, durationMs: event.durationMs } + } + } + if (event.stage === 'completed') { + return { + runId: run.runId, + conversationId: run.conversationId, + type: 'status', + status: { phase: 'completed', updatedAt: Date.now() } + } + } + if (event.stage === 'aborted') { + return { + runId: run.runId, + conversationId: run.conversationId, + type: 'status', + status: { phase: 'aborted', updatedAt: Date.now() } + } + } + if (event.stage === 'error') { + return { + runId: run.runId, + conversationId: run.conversationId, + type: 'status', + status: { phase: 'error', updatedAt: Date.now() } + } + } + return null + } + + private async callModel(payload: any, apiBaseUrl: string, apiKey: string): Promise { + const endpoint = buildApiUrl(apiBaseUrl, '/chat/completions') + const body = JSON.stringify(payload) + const urlObj = new URL(endpoint) + return new Promise((resolve, reject) => { + const requestFn = urlObj.protocol === 'https:' ? https.request : http.request + const req = requestFn({ + hostname: urlObj.hostname, + port: urlObj.port || (urlObj.protocol === 'https:' ? 443 : 80), + path: urlObj.pathname + urlObj.search, + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Content-Length': Buffer.byteLength(body).toString(), + Authorization: `Bearer ${apiKey}` + } + }, (res) => { + let data = '' + res.on('data', (chunk) => { data += String(chunk) }) + res.on('end', () => { + try { + resolve(JSON.parse(data || '{}')) + } catch (error) { + reject(new Error(`AI 响应解析失败: ${String(error)}`)) + } + }) + }) + req.setTimeout(45_000, () => { + req.destroy() + reject(new Error('AI 请求超时')) + }) + req.on('error', reject) + req.write(body) + req.end() + }) + } + + async runStream( + payload: AgentRunPayload, + runtime: { + onChunk: (chunk: AgentStreamChunk) => void + onFinished?: (result: { success: boolean; runId: string; conversationId?: string; error?: string }) => void + } + ): Promise<{ success: boolean; runId: string }> { + const runId = randomUUID() + const mode = payload.mode === 'sql' ? 'sql' : 'chat' + const run: ActiveAgentRun = { + runId, + mode, + conversationId: normalizeText(payload.conversationId) || undefined, + aborted: false + } + this.runs.set(runId, run) + + this.execute(run, payload, runtime).catch((error) => { + runtime.onChunk({ + runId, + conversationId: run.conversationId, + type: 'error', + error: String((error as Error)?.message || error), + isFinished: true + }) + runtime.onFinished?.({ + success: false, + runId, + conversationId: run.conversationId, + error: String((error as Error)?.message || error) + }) + this.runs.delete(runId) + }) + + return { success: true, runId } + } + + private async execute( + run: ActiveAgentRun, + payload: AgentRunPayload, + runtime: { + onChunk: (chunk: AgentStreamChunk) => void + onFinished?: (result: { success: boolean; runId: string; conversationId?: string; error?: string }) => void + } + ): Promise { + if (run.mode === 'sql') { + await this.executeSqlMode(run, payload, runtime) + return + } + this.emitStatus(run, runtime.onChunk, 'thinking') + const result = await aiAnalysisService.sendMessage( + normalizeText(payload.conversationId), + normalizeText(payload.userInput), + { + assistantId: normalizeText(payload.assistantId), + activeSkillId: normalizeText(payload.activeSkillId), + chatScope: payload.chatScope === 'group' ? 'group' : 'private' + }, + { + onRunEvent: (event) => { + const mapped = this.mapRunEventToChunk(run, event) + if (mapped) runtime.onChunk(mapped) + } + } + ) + if (run.aborted) { + runtime.onChunk({ + runId: run.runId, + conversationId: run.conversationId, + type: 'error', + error: '任务已取消', + isFinished: true + }) + runtime.onFinished?.({ + success: false, + runId: run.runId, + conversationId: run.conversationId, + error: '任务已取消' + }) + this.runs.delete(run.runId) + return + } + if (!result.success || !result.result) { + runtime.onChunk({ + runId: run.runId, + conversationId: run.conversationId, + type: 'error', + error: result.error || '执行失败', + isFinished: true + }) + runtime.onFinished?.({ + success: false, + runId: run.runId, + conversationId: run.conversationId, + error: result.error || '执行失败' + }) + this.runs.delete(run.runId) + return + } + + run.conversationId = result.result.conversationId || run.conversationId + runtime.onChunk({ + runId: run.runId, + conversationId: run.conversationId, + type: 'content', + content: result.result.assistantText + }) + runtime.onChunk({ + runId: run.runId, + conversationId: run.conversationId, + type: 'done', + usage: result.result.usage, + isFinished: true + }) + runtime.onFinished?.({ success: true, runId: run.runId, conversationId: run.conversationId }) + this.runs.delete(run.runId) + } + + private async executeSqlMode( + run: ActiveAgentRun, + payload: AgentRunPayload, + runtime: { + onChunk: (chunk: AgentStreamChunk) => void + onFinished?: (result: { success: boolean; runId: string; conversationId?: string; error?: string }) => void + } + ): Promise { + const { apiBaseUrl, apiKey, model } = this.getSharedModelConfig() + if (!apiBaseUrl || !apiKey) { + runtime.onChunk({ + runId: run.runId, + conversationId: run.conversationId, + type: 'error', + error: '请先在设置 > AI 通用中配置模型', + isFinished: true + }) + runtime.onFinished?.({ success: false, runId: run.runId, conversationId: run.conversationId, error: '模型未配置' }) + this.runs.delete(run.runId) + return + } + this.emitStatus(run, runtime.onChunk, 'thinking') + const schemaText = normalizeText(payload.sqlContext?.schemaText) + const targetHint = normalizeText(payload.sqlContext?.targetHint) + const systemPrompt = [ + '你是 WeFlow SQL Lab 助手。', + '只输出一段只读 SQL。', + '禁止输出解释、Markdown、注释、DML、DDL。' + ].join('\n') + const userPrompt = [ + targetHint ? `目标数据源: ${targetHint}` : '', + schemaText ? `可用 Schema:\n${schemaText}` : '', + `需求: ${normalizeText(payload.userInput)}` + ].filter(Boolean).join('\n\n') + + const res = await this.callModel({ + model, + messages: [ + { role: 'system', content: systemPrompt }, + { role: 'user', content: userPrompt } + ], + temperature: 0.1, + stream: false + }, apiBaseUrl, apiKey) + + if (run.aborted) { + runtime.onChunk({ + runId: run.runId, + conversationId: run.conversationId, + type: 'error', + error: '任务已取消', + isFinished: true + }) + runtime.onFinished?.({ success: false, runId: run.runId, conversationId: run.conversationId, error: '任务已取消' }) + this.runs.delete(run.runId) + return + } + + const rawContent = normalizeText(res?.choices?.[0]?.message?.content) + const sql = extractSqlText(rawContent) + const usage: TokenUsage = { + promptTokens: Number(res?.usage?.prompt_tokens || 0), + completionTokens: Number(res?.usage?.completion_tokens || 0), + totalTokens: Number(res?.usage?.total_tokens || 0) + } + if (!sql) { + runtime.onChunk({ + runId: run.runId, + conversationId: run.conversationId, + type: 'error', + error: 'SQL 生成失败', + isFinished: true + }) + runtime.onFinished?.({ success: false, runId: run.runId, conversationId: run.conversationId, error: 'SQL 生成失败' }) + this.runs.delete(run.runId) + return + } + for (let i = 0; i < sql.length; i += 36) { + if (run.aborted) break + runtime.onChunk({ + runId: run.runId, + conversationId: run.conversationId, + type: 'content', + content: sql.slice(i, i + 36) + }) + } + runtime.onChunk({ + runId: run.runId, + conversationId: run.conversationId, + type: 'done', + usage, + isFinished: true + }) + runtime.onFinished?.({ success: true, runId: run.runId, conversationId: run.conversationId }) + this.runs.delete(run.runId) + } + + async abort(payload: { runId?: string; conversationId?: string }): Promise<{ success: boolean }> { + const runId = normalizeText(payload.runId) + const conversationId = normalizeText(payload.conversationId) + if (runId) { + const run = this.runs.get(runId) + if (run) { + run.aborted = true + if (run.mode === 'chat') { + await aiAnalysisService.abortRun({ runId: run.innerRunId, conversationId: run.conversationId }) + } + } + return { success: true } + } + + if (conversationId) { + for (const run of this.runs.values()) { + if (run.conversationId !== conversationId) continue + run.aborted = true + if (run.mode === 'chat') { + await aiAnalysisService.abortRun({ runId: run.innerRunId, conversationId: run.conversationId }) + } + } + return { success: true } + } + return { success: true } + } +} + +export const aiAgentService = new AiAgentService() + diff --git a/electron/services/aiAnalysisService.ts b/electron/services/aiAnalysisService.ts new file mode 100644 index 0000000..06b111a --- /dev/null +++ b/electron/services/aiAnalysisService.ts @@ -0,0 +1,2673 @@ +import http from 'http' +import https from 'https' +import { randomUUID } from 'crypto' +import { mkdir, readFile, rm, writeFile } from 'fs/promises' +import { existsSync } from 'fs' +import { join } from 'path' +import { URL } from 'url' +import { chatService } from './chatService' +import { ConfigService } from './config' +import { wcdbService } from './wcdbService' +import { aiAssistantService } from './aiAssistantService' +import { aiSkillService } from './aiSkillService' + +type AiIntentType = 'query' | 'summary' | 'analysis' | 'timeline_recall' + +type AiToolStatus = 'ok' | 'error' | 'aborted' + +interface AiToolCallTrace { + toolName: string + args: Record + status: AiToolStatus + durationMs: number + error?: string +} + +interface AiRunState { + runId: string + conversationId: string + aborted: boolean +} + +interface AiResultComponentBase { + type: 'timeline' | 'summary' | 'source' +} + +interface TimelineComponent extends AiResultComponentBase { + type: 'timeline' + items: Array<{ + ts: number + sessionId: string + sessionName: string + sender: string + snippet: string + localId: number + createTime: number + }> +} + +interface SummaryComponent extends AiResultComponentBase { + type: 'summary' + title: string + bullets: string[] + conclusion: string +} + +interface SourceComponent extends AiResultComponentBase { + type: 'source' + range: { begin: number; end: number } + sessionCount: number + messageCount: number + dbRefs: string[] +} + +type AiResultComponent = TimelineComponent | SummaryComponent | SourceComponent + +interface SendMessageResult { + conversationId: string + messageId: string + assistantText: string + components: AiResultComponent[] + toolTrace: AiToolCallTrace[] + usage?: { + promptTokens?: number + completionTokens?: number + totalTokens?: number + } + error?: string + createdAt: number +} + +type AiRunEventStage = + | 'run_started' + | 'intent_identified' + | 'llm_round_started' + | 'llm_round_result' + | 'tool_start' + | 'tool_done' + | 'tool_error' + | 'assembling' + | 'completed' + | 'aborted' + | 'error' + +export interface AiAnalysisRunEvent { + runId: string + conversationId: string + stage: AiRunEventStage + ts: number + message: string + intent?: AiIntentType + round?: number + toolName?: string + status?: AiToolStatus + durationMs?: number + data?: Record +} + +interface LlmResponse { + content: string + toolCalls: Array<{ id: string; name: string; argumentsJson: string }> + usage?: { + promptTokens?: number + completionTokens?: number + totalTokens?: number + } +} + +interface ToolBundle { + activeSessions: any[] + sessionGlimpses: any[] + sessionCandidates: any[] + timelineRows: any[] + topicStats: any + sourceRefs: any + topContacts: any[] + messageBriefs: any[] + voiceCatalog: any[] + voiceTranscripts: any[] +} + +type ToolCategory = 'core' | 'analysis' + +type AssistantChatType = 'group' | 'private' + +interface SendMessageOptions { + parentMessageId?: string + persistUserMessage?: boolean + assistantId?: string + activeSkillId?: string + chatScope?: AssistantChatType +} + +const TOOL_CATEGORY_MAP: Record = { + ai_query_time_window_activity: 'core', + ai_query_session_glimpse: 'core', + ai_query_session_candidates: 'core', + ai_query_timeline: 'core', + ai_query_topic_stats: 'analysis', + ai_query_source_refs: 'analysis', + ai_query_top_contacts: 'analysis', + ai_fetch_message_briefs: 'core', + ai_list_voice_messages: 'core', + ai_transcribe_voice_messages: 'core', + activate_skill: 'analysis' +} + +const CORE_TOOL_NAMES = Object.entries(TOOL_CATEGORY_MAP) + .filter(([, category]) => category === 'core') + .map(([name]) => name) + +type SkillKey = + | 'base' + | 'context_compression' + | 'tool_time_window_activity' + | 'tool_session_glimpse' + | 'tool_session_candidates' + | 'tool_timeline' + | 'tool_topic_stats' + | 'tool_source_refs' + | 'tool_top_contacts' + | 'tool_message_briefs' + | 'tool_voice_list' + | 'tool_voice_transcribe' + +const AI_MODEL_TIMEOUT_MS = 45_000 +const MAX_TOOL_LOOPS = 8 +const FINAL_DONE_MARKER = '[[WF_DONE]]' +const CONTEXT_RECENT_LIMIT = 14 +const CONTEXT_COMPRESS_TRIGGER_COUNT = 34 +const CONTEXT_KEEP_AFTER_COMPRESS = 26 +const MAX_TOOL_RESULT_ROWS = 120 +const MIN_Glimpse_SESSIONS = 3 +const CONTEXT_SUMMARY_MAX_CHARS = 6_000 +const CONTEXT_RECENT_MAX_CHARS = 12_000 +const VOICE_TRANSCRIBE_BATCH_LIMIT = 5 + +type ToolResultDetailLevel = 'minimal' | 'standard' | 'full' + +function escSql(value: string): string { + return String(value || '').replace(/'/g, "''") +} + +function parseIntSafe(value: unknown, fallback = 0): number { + const n = Number(value) + return Number.isFinite(n) ? Math.floor(n) : fallback +} + +function normalizeText(value: unknown, fallback = ''): string { + const text = String(value ?? '').trim() + return text || fallback +} + +function parseStoredToolStep(content: string): null | { + toolName: string + status: string + durationMs: number + result: Record +} { + const raw = normalizeText(content) + if (!raw.startsWith('__wf_tool_step__')) return null + try { + const payload = JSON.parse(raw.slice('__wf_tool_step__'.length)) + return { + toolName: normalizeText(payload?.toolName), + status: normalizeText(payload?.status), + durationMs: parseIntSafe(payload?.durationMs), + result: payload?.result && typeof payload.result === 'object' ? payload.result : {} + } + } catch { + return null + } +} + +function buildApiUrl(baseUrl: string, path: string): string { + const base = baseUrl.replace(/\/+$/, '') + const suffix = path.startsWith('/') ? path : `/${path}` + return `${base}${suffix}` +} + +function defaultIntentType(): AiIntentType { + return 'analysis' +} + +function extractJsonStringField(json: string, key: string): string { + const needle = `"${key}"` + let pos = json.indexOf(needle) + if (pos < 0) return '' + pos = json.indexOf(':', pos + needle.length) + if (pos < 0) return '' + pos = json.indexOf('"', pos + 1) + if (pos < 0) return '' + pos += 1 + let out = '' + let escaped = false + for (; pos < json.length; pos += 1) { + const ch = json[pos] + if (escaped) { + out += ch + escaped = false + continue + } + if (ch === '\\') { + escaped = true + continue + } + if (ch === '"') break + out += ch + } + return out +} + +function resolveDetailLevel(args: Record): ToolResultDetailLevel { + const detailLevel = normalizeText(args.detailLevel).toLowerCase() + if (detailLevel === 'full') return 'full' + if (detailLevel === 'standard') return 'standard' + if (args.verbose === true) return 'full' + return 'minimal' +} + +function normalizeTimestampSeconds(value: unknown): number { + const numeric = Number(value || 0) + if (!Number.isFinite(numeric) || numeric <= 0) return 0 + return numeric > 1e12 ? Math.floor(numeric / 1000) : Math.floor(numeric) +} + +function resolveNamedTimeWindow(period: string): { begin: number; end: number } | null { + const now = new Date() + const lower = normalizeText(period).toLowerCase() + const mkSec = (d: Date) => Math.floor(d.getTime() / 1000) + + if (!lower || lower === 'custom') return null + if (lower === 'today_dawn' || lower === '凌晨') { + const begin = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0, 0) + const end = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 6, 0, 0, 0) + return { begin: mkSec(begin), end: mkSec(end) } + } + if (lower === 'today') { + const begin = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0, 0) + const end = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59, 999) + return { begin: mkSec(begin), end: mkSec(end) } + } + if (lower === 'yesterday') { + const begin = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 1, 0, 0, 0, 0) + const end = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 1, 23, 59, 59, 999) + return { begin: mkSec(begin), end: mkSec(end) } + } + if (lower === 'last_7_days') { + const begin = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 6, 0, 0, 0, 0) + return { begin: mkSec(begin), end: mkSec(now) } + } + return null +} + +function isTimeWindowIntent(input: string): boolean { + const text = normalizeText(input) + return /(凌晨|昨晚|今天|昨日|昨夜|最近|本周|这周|这个月|时间段)/.test(text) +} + +function isContactRecallIntent(input: string): boolean { + const text = normalizeText(input) + if (!text) return false + return /(我和|跟).{0,24}(聊了什么|都聊了什么|说了什么|最近聊|聊啥|聊过什么)/.test(text) +} + +function resolveImplicitRecentRange(input: string): { beginTimestamp: number; endTimestamp: number } | null { + const text = normalizeText(input).toLowerCase() + const now = Math.floor(Date.now() / 1000) + if (/(最近|近期|lately|recent)/i.test(text)) { + return { beginTimestamp: now - 30 * 86400, endTimestamp: now } + } + if (/(今天|today)/i.test(text)) { + const d = new Date() + const begin = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 0, 0, 0, 0) + return { beginTimestamp: Math.floor(begin.getTime() / 1000), endTimestamp: now } + } + if (/(昨晚|昨天|yesterday)/i.test(text)) { + const d = new Date() + const begin = new Date(d.getFullYear(), d.getMonth(), d.getDate() - 1, 0, 0, 0, 0) + const end = new Date(d.getFullYear(), d.getMonth(), d.getDate() - 1, 23, 59, 59, 999) + return { beginTimestamp: Math.floor(begin.getTime() / 1000), endTimestamp: Math.floor(end.getTime() / 1000) } + } + return null +} + +function extractContactHint(input: string): string { + const text = normalizeText(input) + if (!text) return '' + const match = text.match(/(?:我和|跟)\s*([^\s,。!??,]{1,24})/) + const explicit = normalizeText(match?.[1]) + if (explicit) return explicit + if (/^[\u4e00-\u9fa5a-zA-Z0-9_]{1,16}$/.test(text)) return text + return '' +} + +function normalizeLookupToken(value: unknown): string { + return normalizeText(value) + .toLowerCase() + .replace(/[\s_\-.@]/g, '') +} + +function getLatinInitials(value: unknown): string { + const text = normalizeText(value).toLowerCase() + if (!text) return '' + const parts = text.match(/[a-z0-9]+/g) || [] + return parts.map((part) => part[0]).join('') +} + +function isLikelyContactOnlyInput(input: string): boolean { + const text = normalizeText(input) + if (!text) return false + if (!/^[\u4e00-\u9fa5a-zA-Z0-9_]{1,16}$/.test(text)) return false + return !/(聊|什么|怎么|为何|为什么|是否|吗|呢|?|\?)/.test(text) +} + +class AiAnalysisService { + private readonly config = ConfigService.getInstance() + private readonly activeRuns = new Map() + private readonly skillCache = new Map() + + private getSharedModelConfig(): { apiBaseUrl: string; apiKey: string; model: string } { + const apiBaseUrl = normalizeText(this.config.get('aiModelApiBaseUrl')) + const apiKey = normalizeText(this.config.get('aiModelApiKey')) + const model = normalizeText(this.config.get('aiModelApiModel'), 'gpt-4o-mini') + return { apiBaseUrl, apiKey, model } + } + + private getSkillDirCandidates(): string[] { + return [ + join(__dirname, 'aiAnalysisSkills'), + join(process.cwd(), 'electron', 'services', 'aiAnalysisSkills'), + join(process.cwd(), 'dist-electron', 'services', 'aiAnalysisSkills') + ] + } + + private getBuiltinSkill(skill: SkillKey): string { + const builtin: Record = { + base: [ + '你是 WeFlow 的 AI 分析助手。', + '优先使用本地工具获得事实,禁止编造数据。', + '输出简洁中文,结论与证据一致。', + '当 ai_query_top_contacts 返回非空 items 时,必须直接给出“前N名+消息数”的明确结论,不得回复“未命中”。', + '除非用户明确提到“群/群聊/公众号”,联系人排行默认按个人联系人口径(排除群聊与公众号)。', + '用户提到“最近/近期/lately/recent”但未给时间窗时,默认按近30天口径检索并在结论中写明口径。', + '默认优先调用 detailLevel=minimal,证据不足时再升级到 standard/full。', + '当用户目标不够清晰时,先做小规模探索,再主动提出 1 个澄清问题继续多轮对话。', + '面对“看一下凌晨聊天/今天记录”这类请求,先扫描时间窗活跃会话,再按会话逐个抽样阅读,不要只调用一次工具就结束。', + '在证据不足时先说明不足,再建议下一步。', + '语音消息必须先请求“语音ID列表”,再指定ID进行转写,不可臆测语音内容。', + `结束协议:仅在任务完成时输出 ${FINAL_DONE_MARKER},并附带 最终回答。`, + '若未完成,请继续调用工具,不要提前结束。' + ].join('\n'), + context_compression: [ + '你会收到 conversation_summary 作为历史压缩摘要。', + '当摘要与最近消息冲突时,以最近消息为准。', + '若用户追问很早历史,可主动调用工具重新检索,不依赖陈旧记忆。' + ].join('\n'), + tool_time_window_activity: [ + '工具 ai_query_time_window_activity 用于按时间窗找活跃会话。', + '处理“今天凌晨/昨晚/本周”时优先调用,先拿候选会话池。', + '默认 minimal,小范围快速扫描;需要时再增大 scanLimit。' + ].join('\n'), + tool_session_glimpse: [ + '工具 ai_query_session_glimpse 用于按会话抽样阅读消息。', + '拿到活跃会话后,逐个会话先读 6~20 条快速建立上下文。', + '若抽样后仍不确定用户目标,先追问 1 个关键澄清问题。' + ].join('\n'), + tool_session_candidates: [ + '工具 ai_query_session_candidates 用于先缩小会话范围。', + '默认先查候选会话,再查时间轴,能明显减少 token 和耗时。', + '如果用户已给出明确联系人/会话,可跳过候选直接查时间轴。' + ].join('\n'), + tool_timeline: [ + '工具 ai_query_timeline 返回按时间倒序的消息事件。', + '需要回忆经过、做时间轴时优先调用。', + '默认返回精简字段;只有用户明确要细节时才请求 verbose。' + ].join('\n'), + tool_topic_stats: [ + '工具 ai_query_topic_stats 提供跨会话统计聚合。', + '适合回答“多少、趋势、占比、对比”问题。', + '若只是复盘事件,不要先做重统计。' + ].join('\n'), + tool_source_refs: [ + '工具 ai_query_source_refs 用于生成可解释来源卡。', + '总结/分析完成后补一次来源引用即可。', + '优先返回范围、会话数、消息数和数据库引用。' + ].join('\n'), + tool_top_contacts: [ + '工具 ai_query_top_contacts 用于回答“谁联系最密切/谁聊得最多”。', + '这是该类问题的首选工具,优先于时间轴检索。', + '默认 minimal 即可得到排名;需要更多字段再升 detailLevel。' + ].join('\n'), + tool_message_briefs: [ + '工具 ai_fetch_message_briefs 按 sessionId+localId 精确读取消息。', + '用于核对关键原文证据,避免大范围全文拉取。', + '默认最小字段,只有需要时才请求 full 明细。' + ].join('\n'), + tool_voice_list: [ + '工具 ai_list_voice_messages 用于语音清单检索。', + '先列出可用语音ID,再让你决定转写哪几条。', + '默认只返回 IDs,减少 token;需要详情再提升 detailLevel。' + ].join('\n'), + tool_voice_transcribe: [ + '工具 ai_transcribe_voice_messages 根据语音ID进行自动解密并转写。', + '只能转写你明确指定的ID,单次最多 5 条。', + '若用户未点名具体ID,先调用语音清单工具返回 ID 再继续。', + '收到转写后再做总结,禁止未转写先下结论。' + ].join('\n') + } + return builtin[skill] + } + + private async loadSkill(skill: SkillKey): Promise { + const cached = this.skillCache.get(skill) + if (cached) return cached + + const fileName = `${skill}.md` + for (const dir of this.getSkillDirCandidates()) { + const filePath = join(dir, fileName) + if (!existsSync(filePath)) continue + try { + const content = (await readFile(filePath, 'utf8')).trim() + if (content) { + this.skillCache.set(skill, content) + return content + } + } catch { + // ignore and fallback + } + } + + const fallback = this.getBuiltinSkill(skill) + this.skillCache.set(skill, fallback) + return fallback + } + + private resolveAllowedToolNames(allowedBuiltinTools?: string[]): string[] { + const whitelist = Array.isArray(allowedBuiltinTools) + ? allowedBuiltinTools.map((item) => normalizeText(item)).filter(Boolean) + : [] + const allowedSet = new Set(CORE_TOOL_NAMES) + if (whitelist.length === 0) { + for (const [name, category] of Object.entries(TOOL_CATEGORY_MAP)) { + if (category === 'analysis') allowedSet.add(name) + } + } else { + for (const toolName of whitelist) { + if (TOOL_CATEGORY_MAP[toolName]) allowedSet.add(toolName) + } + } + allowedSet.add('activate_skill') + return Array.from(allowedSet) + } + + private resolveChatType(options?: SendMessageOptions): AssistantChatType { + if (options?.chatScope === 'group' || options?.chatScope === 'private') return options.chatScope + return 'private' + } + + async getToolCatalog(): Promise> { + return this.getToolDefinitions().map((entry) => { + const toolName = normalizeText(entry?.function?.name) + return { + name: toolName, + category: TOOL_CATEGORY_MAP[toolName] || 'analysis', + description: normalizeText(entry?.function?.description), + parameters: entry?.function?.parameters || {} + } + }) + } + + async executeTool( + name: string, + args: Record + ): Promise<{ success: boolean; result?: any; error?: string }> { + try { + const toolName = normalizeText(name) + if (!toolName) return { success: false, error: '缺少工具名' } + const result = await this.runTool(toolName, args || {}) + return { success: true, result } + } catch (error) { + return { success: false, error: (error as Error).message } + } + } + + async cancelToolTest(_taskId?: string): Promise<{ success: boolean }> { + return { success: true } + } + + private async ensureAiDbPath(): Promise<{ dbPath: string; wxid: string }> { + const dbRoot = normalizeText(this.config.get('dbPath')) + const wxid = normalizeText(this.config.get('myWxid')) + if (!dbRoot) throw new Error('未配置数据库路径,请先在设置中完成数据库连接') + if (!wxid) throw new Error('未识别当前账号,请先完成账号配置') + const aiDir = join(dbRoot, wxid, 'db_storage', 'wf_ai_v2') + await mkdir(aiDir, { recursive: true }) + const markerPath = join(aiDir, '.storage_v2_initialized') + const dbPath = join(aiDir, 'ai_analysis_v2.db') + if (!existsSync(markerPath)) { + try { + await rm(dbPath, { force: true }) + } catch { + // ignore + } + try { + await rm(join(dbRoot, wxid, 'db_storage', 'wf_ai', 'ai_analysis.db'), { force: true }) + } catch { + // ignore + } + await writeFile(markerPath, JSON.stringify({ version: 2, initializedAt: Date.now() }), 'utf8') + } + return { + dbPath, + wxid + } + } + + private async ensureConnected(): Promise { + const connected = await chatService.connect() + if (!connected.success) { + throw new Error(connected.error || '数据库连接失败') + } + } + + private async ensureSchema(aiDbPath: string): Promise { + const sqlList = [ + `CREATE TABLE IF NOT EXISTS ai_conversations ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + conversation_id TEXT NOT NULL UNIQUE, + title TEXT NOT NULL DEFAULT '', + summary_text TEXT NOT NULL DEFAULT '', + created_at INTEGER NOT NULL, + updated_at INTEGER NOT NULL, + last_message_at INTEGER NOT NULL + )`, + `CREATE TABLE IF NOT EXISTS ai_messages ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + message_id TEXT NOT NULL UNIQUE, + conversation_id TEXT NOT NULL, + role TEXT NOT NULL, + content TEXT NOT NULL DEFAULT '', + intent_type TEXT NOT NULL DEFAULT '', + components_json TEXT NOT NULL DEFAULT '[]', + tool_trace_json TEXT NOT NULL DEFAULT '[]', + usage_json TEXT NOT NULL DEFAULT '{}', + error TEXT NOT NULL DEFAULT '', + parent_message_id TEXT NOT NULL DEFAULT '', + created_at INTEGER NOT NULL + )`, + `CREATE TABLE IF NOT EXISTS ai_tool_runs ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + run_id TEXT NOT NULL, + conversation_id TEXT NOT NULL, + message_id TEXT NOT NULL, + tool_name TEXT NOT NULL, + tool_args_json TEXT NOT NULL DEFAULT '{}', + tool_result_json TEXT NOT NULL DEFAULT '{}', + status TEXT NOT NULL DEFAULT 'ok', + duration_ms INTEGER NOT NULL DEFAULT 0, + error TEXT NOT NULL DEFAULT '', + created_at INTEGER NOT NULL + )`, + 'CREATE INDEX IF NOT EXISTS idx_ai_messages_conversation_created ON ai_messages(conversation_id, created_at)', + 'CREATE INDEX IF NOT EXISTS idx_ai_tool_runs_run_id ON ai_tool_runs(run_id)' + ] + + for (const sql of sqlList) { + const result = await wcdbService.execQuery('biz', aiDbPath, sql) + if (!result.success) { + throw new Error(result.error || 'AI 分析数据库初始化失败') + } + } + + // 兼容旧表结构 + await wcdbService.execQuery('biz', aiDbPath, `ALTER TABLE ai_conversations ADD COLUMN summary_text TEXT NOT NULL DEFAULT ''`) + } + + private async ensureReady(): Promise<{ dbPath: string; wxid: string }> { + await this.ensureConnected() + const aiInfo = await this.ensureAiDbPath() + await this.ensureSchema(aiInfo.dbPath) + return aiInfo + } + + private async queryRows(aiDbPath: string, sql: string): Promise { + const result = await wcdbService.execQuery('biz', aiDbPath, sql) + if (!result.success) throw new Error(result.error || '查询失败') + return Array.isArray(result.rows) ? result.rows : [] + } + + private async callModel(payload: any, apiBaseUrl: string, apiKey: string): Promise { + const endpoint = buildApiUrl(apiBaseUrl, '/chat/completions') + const body = JSON.stringify(payload) + const urlObj = new URL(endpoint) + return new Promise((resolve, reject) => { + const requestFn = urlObj.protocol === 'https:' ? https.request : http.request + const req = requestFn({ + hostname: urlObj.hostname, + port: urlObj.port || (urlObj.protocol === 'https:' ? 443 : 80), + path: urlObj.pathname + urlObj.search, + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Content-Length': Buffer.byteLength(body).toString(), + Authorization: `Bearer ${apiKey}` + } + }, (res) => { + let data = '' + res.on('data', (chunk) => { data += String(chunk) }) + res.on('end', () => { + try { + resolve(JSON.parse(data || '{}')) + } catch (error) { + reject(new Error(`AI 响应解析失败: ${String(error)}`)) + } + }) + }) + + req.setTimeout(AI_MODEL_TIMEOUT_MS, () => { + req.destroy() + reject(new Error('AI 请求超时')) + }) + req.on('error', reject) + req.write(body) + req.end() + }) + } + + private getToolDefinitions(allowedToolNames?: string[]) { + const tools = [ + { + type: 'function', + function: { + name: 'ai_query_time_window_activity', + description: '按时间窗扫描活跃会话(例如今天凌晨)', + parameters: { + type: 'object', + properties: { + period: { type: 'string', description: 'today_dawn|today|yesterday|last_7_days|custom' }, + beginTimestamp: { type: 'number' }, + endTimestamp: { type: 'number' }, + scanLimit: { type: 'number' }, + topN: { type: 'number' }, + includeGroups: { type: 'boolean' }, + includeOfficial: { type: 'boolean' }, + detailLevel: { type: 'string', enum: ['minimal', 'standard', 'full'] } + } + } + } + }, + { + type: 'function', + function: { + name: 'ai_query_session_glimpse', + description: '按会话抽样读取消息(先读一点建立上下文)', + parameters: { + type: 'object', + properties: { + sessionId: { type: 'string' }, + beginTimestamp: { type: 'number' }, + endTimestamp: { type: 'number' }, + limit: { type: 'number' }, + offset: { type: 'number' }, + ascending: { type: 'boolean' }, + detailLevel: { type: 'string', enum: ['minimal', 'standard', 'full'] } + }, + required: ['sessionId'] + } + } + }, + { + type: 'function', + function: { + name: 'ai_query_session_candidates', + description: '按关键词快速定位候选会话(默认最小字段)', + parameters: { + type: 'object', + properties: { + keyword: { type: 'string' }, + limit: { type: 'number' }, + beginTimestamp: { type: 'number' }, + endTimestamp: { type: 'number' }, + detailLevel: { type: 'string', enum: ['minimal', 'standard', 'full'] } + }, + required: ['keyword'] + } + } + }, + { + type: 'function', + function: { + name: 'ai_query_timeline', + description: '按会话+关键词检索时间轴事件(支持分页,默认最小字段)', + parameters: { + type: 'object', + properties: { + sessionId: { type: 'string' }, + keyword: { type: 'string' }, + limit: { type: 'number' }, + offset: { type: 'number' }, + beginTimestamp: { type: 'number' }, + endTimestamp: { type: 'number' }, + detailLevel: { type: 'string', enum: ['minimal', 'standard', 'full'] } + }, + required: ['keyword'] + } + } + }, + { + type: 'function', + function: { + name: 'ai_query_topic_stats', + description: '获取会话聚合统计(总量/趋势/分布)', + parameters: { + type: 'object', + properties: { + sessionIds: { type: 'array', items: { type: 'string' } }, + beginTimestamp: { type: 'number' }, + endTimestamp: { type: 'number' }, + detailLevel: { type: 'string', enum: ['minimal', 'standard', 'full'] } + }, + required: ['sessionIds'] + } + } + }, + { + type: 'function', + function: { + name: 'ai_query_source_refs', + description: '返回可解释的数据来源信息(用于来源卡)', + parameters: { + type: 'object', + properties: { + sessionIds: { type: 'array', items: { type: 'string' } }, + beginTimestamp: { type: 'number' }, + endTimestamp: { type: 'number' }, + detailLevel: { type: 'string', enum: ['minimal', 'standard', 'full'] } + }, + required: ['sessionIds'] + } + } + }, + { + type: 'function', + function: { + name: 'ai_query_top_contacts', + description: '查询联系最密切/聊天最频繁的联系人排名(高优先级)', + parameters: { + type: 'object', + properties: { + limit: { type: 'number' }, + beginTimestamp: { type: 'number' }, + endTimestamp: { type: 'number' }, + includeGroups: { type: 'boolean' }, + includeOfficial: { type: 'boolean' }, + scanLimit: { type: 'number' }, + detailLevel: { type: 'string', enum: ['minimal', 'standard', 'full'] } + } + } + } + }, + { + type: 'function', + function: { + name: 'ai_fetch_message_briefs', + description: '按 sessionId+localId 精确读取少量消息原文,用于证据核对', + parameters: { + type: 'object', + properties: { + items: { + type: 'array', + items: { + type: 'object', + properties: { + sessionId: { type: 'string' }, + localId: { type: 'number' } + }, + required: ['sessionId', 'localId'] + } + }, + detailLevel: { type: 'string', enum: ['minimal', 'standard', 'full'] } + }, + required: ['items'] + } + } + }, + { + type: 'function', + function: { + name: 'ai_list_voice_messages', + description: '列出语音消息ID清单(先拿ID,再点名转写)', + parameters: { + type: 'object', + properties: { + sessionId: { type: 'string' }, + beginTimestamp: { type: 'number' }, + endTimestamp: { type: 'number' }, + limit: { type: 'number' }, + offset: { type: 'number' }, + detailLevel: { type: 'string', enum: ['minimal', 'standard', 'full'] } + } + } + } + }, + { + type: 'function', + function: { + name: 'ai_transcribe_voice_messages', + description: '根据语音ID列表执行自动解密+转写,返回文本', + parameters: { + type: 'object', + properties: { + ids: { + type: 'array', + items: { type: 'string' }, + description: '格式 sessionId:localId[:createTime]' + }, + items: { + type: 'array', + items: { + type: 'object', + properties: { + sessionId: { type: 'string' }, + localId: { type: 'number' }, + createTime: { type: 'number' } + }, + required: ['sessionId', 'localId'] + } + }, + verbose: { type: 'boolean' }, + detailLevel: { type: 'string', enum: ['minimal', 'standard', 'full'] } + } + } + } + }, + { + type: 'function', + function: { + name: 'activate_skill', + description: '激活一个技能并返回技能手册内容', + parameters: { + type: 'object', + properties: { + skill_id: { type: 'string', description: '技能 ID' } + }, + required: ['skill_id'] + } + } + } + ] + if (!allowedToolNames || allowedToolNames.length === 0) return tools + const whitelist = new Set(allowedToolNames) + return tools.filter((entry: any) => whitelist.has(normalizeText(entry?.function?.name))) + } + + private async requestLlmStep( + messages: any[], + model: string, + apiBaseUrl: string, + apiKey: string, + allowedToolNames?: string[] + ): Promise { + const res = await this.callModel({ + model, + messages, + tools: this.getToolDefinitions(allowedToolNames), + tool_choice: 'auto', + temperature: 0.2, + stream: false + }, apiBaseUrl, apiKey) + + const choice = res?.choices?.[0]?.message || {} + const toolCalls = Array.isArray(choice.tool_calls) + ? choice.tool_calls.map((item: any) => ({ + id: String(item?.id || randomUUID()), + name: String(item?.function?.name || ''), + argumentsJson: String(item?.function?.arguments || '{}') + })) + : [] + return { + content: normalizeText(choice?.content), + toolCalls: toolCalls.filter((t: any) => t.name), + usage: { + promptTokens: parseIntSafe(res?.usage?.prompt_tokens), + completionTokens: parseIntSafe(res?.usage?.completion_tokens), + totalTokens: parseIntSafe(res?.usage?.total_tokens) + } + } + } + + private parseFinalDelivery(content: string): { done: boolean; answer: string } { + const raw = normalizeText(content) + if (!raw) return { done: false, answer: '' } + if (!raw.includes(FINAL_DONE_MARKER)) return { done: false, answer: '' } + + const afterMarker = raw.slice(raw.indexOf(FINAL_DONE_MARKER) + FINAL_DONE_MARKER.length).trim() + const tagMatch = afterMarker.match(/([\s\S]*?)<\/final_answer>/i) + const answer = normalizeText(tagMatch?.[1] || afterMarker) + return { done: true, answer } + } + + private stripFinalMarker(content: string): string { + const raw = normalizeText(content) + if (!raw) return '' + return normalizeText( + raw + .replace(FINAL_DONE_MARKER, '') + .replace(/<\/?final_answer>/ig, '') + ) + } + + private compactRows(rows: any[], detailLevel: ToolResultDetailLevel = 'minimal'): any[] { + if (detailLevel === 'full') return rows.slice(0, MAX_TOOL_RESULT_ROWS) + if (detailLevel === 'standard') { + return rows.slice(0, MAX_TOOL_RESULT_ROWS).map((row) => ({ + _session_id: normalizeText(row._session_id), + local_id: parseIntSafe(row.local_id), + create_time: parseIntSafe(row.create_time), + sender_username: normalizeText(row.sender_username), + local_type: parseIntSafe(row.local_type), + content: normalizeText(row.content || row.parsedContent).slice(0, 320) + })) + } + return rows.slice(0, MAX_TOOL_RESULT_ROWS).map((row) => { + const content = normalizeText(row.content || row.parsedContent) + return { + _session_id: normalizeText(row._session_id), + local_id: parseIntSafe(row.local_id), + create_time: parseIntSafe(row.create_time), + sender_username: normalizeText(row.sender_username), + content: content.slice(0, 160) + } + }) + } + + private compactStats(stats: any, detailLevel: ToolResultDetailLevel = 'minimal'): any { + if (detailLevel === 'full') return stats + if (!stats || typeof stats !== 'object') return {} + if (detailLevel === 'standard') { + return { + total: parseIntSafe(stats.total), + sent: parseIntSafe(stats.sent), + received: parseIntSafe(stats.received), + firstTime: parseIntSafe(stats.firstTime), + lastTime: parseIntSafe(stats.lastTime), + typeCounts: stats.typeCounts || {}, + sessions: stats.sessions || {} + } + } + return { + total: parseIntSafe(stats.total), + sent: parseIntSafe(stats.sent), + received: parseIntSafe(stats.received), + firstTime: parseIntSafe(stats.firstTime), + lastTime: parseIntSafe(stats.lastTime), + typeCounts: stats.typeCounts || {}, + topSessions: (() => { + const sessions = stats.sessions && typeof stats.sessions === 'object' ? stats.sessions : {} + const arr = Object.entries(sessions).map(([sessionId, val]: any) => ({ + sessionId, + total: parseIntSafe(val?.total), + sent: parseIntSafe(val?.sent), + received: parseIntSafe(val?.received), + lastTime: parseIntSafe(val?.lastTime) + })) + arr.sort((a, b) => b.total - a.total) + return arr.slice(0, 12) + })() + } + } + + private parseVoiceIds(ids: string[]): Array<{ sessionId: string; localId: number; createTime?: number }> { + const requests: Array<{ sessionId: string; localId: number; createTime?: number }> = [] + for (const id of ids || []) { + const raw = normalizeText(id) + if (!raw) continue + const parts = raw.split(':') + if (parts.length < 2) continue + const sessionId = normalizeText(parts[0]) + const localId = parseIntSafe(parts[1]) + const createTime = parts.length >= 3 ? parseIntSafe(parts[2]) : 0 + if (!sessionId || localId <= 0) continue + requests.push({ sessionId, localId, createTime: createTime > 0 ? createTime : undefined }) + } + return requests + } + + private async runTool(name: string, args: Record, context?: { userInput?: string }): Promise { + const detailLevel = resolveDetailLevel(args) + const maxMessagesPerRequest = Math.max( + 20, + Math.min(500, parseIntSafe(this.config.get('aiAgentMaxMessagesPerRequest'), 120)) + ) + + if (name === 'ai_query_time_window_activity') { + const namedWindow = resolveNamedTimeWindow(normalizeText(args.period)) + const beginTimestamp = namedWindow?.begin || normalizeTimestampSeconds(args.beginTimestamp) + const endTimestamp = namedWindow?.end || normalizeTimestampSeconds(args.endTimestamp) + if (beginTimestamp <= 0 || endTimestamp <= 0 || endTimestamp < beginTimestamp) { + return { success: false, error: '请提供有效时间窗(period 或 beginTimestamp/endTimestamp)' } + } + + const includeGroups = typeof args.includeGroups === 'boolean' + ? args.includeGroups + : true + const includeOfficial = typeof args.includeOfficial === 'boolean' + ? args.includeOfficial + : false + const scanLimit = Math.max(20, Math.min(1000, parseIntSafe(args.scanLimit, 260))) + const topN = Math.max(1, Math.min(60, parseIntSafe(args.topN, 24))) + + const sessionsRes = await chatService.getSessions() + if (!sessionsRes.success || !Array.isArray(sessionsRes.sessions)) { + return { success: false, error: sessionsRes.error || '会话列表获取失败' } + } + + const scannedSessions = sessionsRes.sessions + .filter((session: any) => { + const sessionId = normalizeText(session.username) + if (!sessionId) return false + const isGroup = sessionId.endsWith('@chatroom') + const isOfficial = sessionId.startsWith('gh_') + if (!includeGroups && isGroup) return false + if (!includeOfficial && isOfficial) return false + return true + }) + .sort((a: any, b: any) => parseIntSafe(b.sortTimestamp || b.lastTimestamp) - parseIntSafe(a.sortTimestamp || a.lastTimestamp)) + .slice(0, scanLimit) + + const sessionIds = scannedSessions.map((session: any) => normalizeText(session.username)).filter(Boolean) + if (sessionIds.length === 0) { + return { success: true, beginTimestamp, endTimestamp, totalScanned: 0, activeCount: 0, items: [] } + } + + const statsRes = await wcdbService.getSessionMessageTypeStatsBatch(sessionIds, { + beginTimestamp, + endTimestamp, + quickMode: true, + includeGroupSenderCount: false + }) + if (!statsRes.success || !statsRes.data) { + return { success: false, error: statsRes.error || '时间窗活跃扫描失败' } + } + + const items = scannedSessions.map((session: any) => { + const sessionId = normalizeText(session.username) + const row = (statsRes.data as any)?.[sessionId] || {} + return { + sessionId, + sessionName: normalizeText(session.displayName || sessionId), + messageCount: Math.max(0, parseIntSafe(row.totalMessages ?? row.total_messages ?? row.total)), + sentCount: Math.max(0, parseIntSafe(row.sentMessages ?? row.sent_messages ?? row.sent)), + receivedCount: Math.max(0, parseIntSafe(row.receivedMessages ?? row.received_messages ?? row.received)), + latestTime: parseIntSafe(session.lastTimestamp || session.sortTimestamp), + isGroup: sessionId.endsWith('@chatroom') + } + }) + .filter((item) => item.messageCount > 0) + .sort((a, b) => b.messageCount - a.messageCount || b.latestTime - a.latestTime) + + const top = items.slice(0, topN) + if (detailLevel === 'full') { + return { + success: true, + beginTimestamp, + endTimestamp, + totalScanned: scannedSessions.length, + activeCount: items.length, + items: top + } + } + if (detailLevel === 'standard') { + return { + success: true, + beginTimestamp, + endTimestamp, + totalScanned: scannedSessions.length, + activeCount: items.length, + items: top.map((item) => ({ + sessionId: item.sessionId, + sessionName: item.sessionName, + messageCount: item.messageCount, + sentCount: item.sentCount, + receivedCount: item.receivedCount, + isGroup: item.isGroup + })) + } + } + return { + success: true, + beginTimestamp, + endTimestamp, + totalScanned: scannedSessions.length, + activeCount: items.length, + items: top.map((item) => ({ + sessionId: item.sessionId, + sessionName: item.sessionName, + messageCount: item.messageCount + })) + } + } + + if (name === 'ai_query_session_glimpse') { + const sessionId = normalizeText(args.sessionId) + if (!sessionId) return { success: false, error: 'sessionId 不能为空' } + const limit = Math.max(1, Math.min(maxMessagesPerRequest, parseIntSafe(args.limit, 12))) + const offset = Math.max(0, parseIntSafe(args.offset, 0)) + const beginTimestamp = normalizeTimestampSeconds(args.beginTimestamp) + const endTimestamp = normalizeTimestampSeconds(args.endTimestamp) + const ascending = args.ascending !== false + + const result = await chatService.getMessages( + sessionId, + offset, + limit, + beginTimestamp, + endTimestamp, + ascending + ) + if (!result.success) { + return { success: false, error: result.error || '会话抽样读取失败' } + } + const messages = Array.isArray(result.messages) ? result.messages : [] + const rows = messages.map((message: any) => ({ + sessionId, + localId: parseIntSafe(message.localId), + createTime: parseIntSafe(message.createTime), + sender: normalizeText(message.senderUsername || (message.isSend === 1 ? '我' : '对方')), + localType: parseIntSafe(message.localType), + content: normalizeText(message.parsedContent || message.rawContent) + })) + const compactRows = detailLevel === 'full' + ? rows + : rows.map((row) => ({ + sessionId: row.sessionId, + localId: row.localId, + createTime: row.createTime, + sender: row.sender, + localType: row.localType, + snippet: row.content.slice(0, detailLevel === 'standard' ? 260 : 140) + })) + return { + success: true, + sessionId, + count: rows.length, + hasMore: result.hasMore === true, + nextOffset: parseIntSafe(result.nextOffset), + rows: compactRows + } + } + + if (name === 'ai_query_session_candidates') { + const result = await wcdbService.aiQuerySessionCandidates({ + keyword: normalizeText(args.keyword), + limit: parseIntSafe(args.limit, 12), + beginTimestamp: parseIntSafe(args.beginTimestamp), + endTimestamp: parseIntSafe(args.endTimestamp) + }) + if (!result.success) return result + const rows = Array.isArray(result.rows) ? result.rows : [] + const compactRows = detailLevel === 'full' + ? rows + : rows.slice(0, 24).map((row: any) => ({ + sessionId: normalizeText(row.session_id || row._session_id || row.sessionId), + sessionName: normalizeText(row.session_name || row.display_name || row.sessionName), + hitCount: parseIntSafe(row.hit_count || row.count), + latestTime: parseIntSafe(row.latest_time || row.latestTime) + })) + return { + success: true, + rows: compactRows, + count: rows.length + } + } + + if (name === 'ai_query_timeline') { + const result = await wcdbService.aiQueryTimeline({ + sessionId: normalizeText(args.sessionId), + keyword: normalizeText(args.keyword), + limit: Math.max(1, Math.min(maxMessagesPerRequest, parseIntSafe(args.limit, 120))), + offset: parseIntSafe(args.offset), + beginTimestamp: parseIntSafe(args.beginTimestamp), + endTimestamp: parseIntSafe(args.endTimestamp) + }) + if (!result.success) return result + const rows = Array.isArray(result.rows) ? result.rows : [] + return { + success: true, + rows: this.compactRows(rows, detailLevel), + count: rows.length + } + } + + if (name === 'ai_query_topic_stats') { + const sessionIds = Array.isArray(args.sessionIds) + ? args.sessionIds.map((value: any) => normalizeText(value)).filter(Boolean) + : [] + const result = await wcdbService.aiQueryTopicStats({ + sessionIds, + beginTimestamp: parseIntSafe(args.beginTimestamp), + endTimestamp: parseIntSafe(args.endTimestamp) + }) + if (!result.success) return result + return { + success: true, + data: this.compactStats(result.data || {}, detailLevel) + } + } + + if (name === 'ai_query_source_refs') { + const sessionIds = Array.isArray(args.sessionIds) + ? args.sessionIds.map((value: any) => normalizeText(value)).filter(Boolean) + : [] + const result = await wcdbService.aiQuerySourceRefs({ + sessionIds, + beginTimestamp: parseIntSafe(args.beginTimestamp), + endTimestamp: parseIntSafe(args.endTimestamp) + }) + if (!result.success) return result + if (detailLevel === 'full') return result + return { + success: true, + data: { + range: result.data?.range || { begin: 0, end: 0 }, + session_count: parseIntSafe(result.data?.session_count), + message_count: parseIntSafe(result.data?.message_count), + db_refs: Array.isArray(result.data?.db_refs) + ? result.data.db_refs.slice(0, detailLevel === 'standard' ? 32 : 16) + : [] + } + } + } + + if (name === 'ai_query_top_contacts') { + const limit = Math.max(1, Math.min(30, parseIntSafe(args.limit, 8))) + const scanLimit = Math.max(limit, Math.min(800, parseIntSafe(args.scanLimit, 320))) + let beginTimestamp = normalizeTimestampSeconds(args.beginTimestamp) + let endTimestamp = normalizeTimestampSeconds(args.endTimestamp) + const includeGroups = args.includeGroups === true + const includeOfficial = args.includeOfficial === true + + const sessionsRes = await chatService.getSessions() + if (!sessionsRes.success || !Array.isArray(sessionsRes.sessions)) { + return { success: false, error: sessionsRes.error || '会话列表获取失败' } + } + + const candidates = sessionsRes.sessions + .filter((session: any) => { + const username = normalizeText(session.username) + if (!username) return false + const isGroup = username.endsWith('@chatroom') + const isOfficial = username.startsWith('gh_') + if (!includeGroups && isGroup) return false + if (!includeOfficial && isOfficial) return false + return true + }) + .sort((a: any, b: any) => parseIntSafe(b.sortTimestamp || b.lastTimestamp) - parseIntSafe(a.sortTimestamp || a.lastTimestamp)) + .slice(0, scanLimit) + + if (candidates.length === 0) { + return { success: true, items: [], total: 0 } + } + + const sessionIds = candidates.map((item: any) => normalizeText(item.username)).filter(Boolean) + const countMap: Record = {} + const hasRange = beginTimestamp > 0 || endTimestamp > 0 + if (hasRange) { + const statsRes = await wcdbService.getSessionMessageTypeStatsBatch(sessionIds, { + beginTimestamp, + endTimestamp, + quickMode: true, + includeGroupSenderCount: false + }) + if (statsRes.success && statsRes.data) { + for (const sessionId of sessionIds) { + const row: any = (statsRes.data as any)?.[sessionId] || {} + countMap[sessionId] = Math.max(0, parseIntSafe(row.totalMessages ?? row.total_messages ?? row.total)) + } + } else { + const countRes = await chatService.getSessionMessageCounts(sessionIds, { preferHintCache: true }) + if (!countRes.success || !countRes.counts) { + return { success: false, error: countRes.error || '消息计数失败' } + } + Object.assign(countMap, countRes.counts) + } + } else { + const countRes = await chatService.getSessionMessageCounts(sessionIds, { preferHintCache: true }) + if (!countRes.success || !countRes.counts) { + return { success: false, error: countRes.error || '消息计数失败' } + } + Object.assign(countMap, countRes.counts) + } + + const nowSec = Math.floor(Date.now() / 1000) + const rows = candidates.map((session: any) => { + const sessionId = normalizeText(session.username) + const messageCount = Math.max(0, parseIntSafe(countMap[sessionId])) + const lastTime = parseIntSafe(session.lastTimestamp || session.sortTimestamp) + const daysSinceLast = lastTime > 0 ? Math.max(0, Math.floor((nowSec - lastTime) / 86400)) : 9999 + const recencyBoost = Math.max(0, 30 - Math.min(30, daysSinceLast)) + const score = messageCount * 100 + recencyBoost + return { + sessionId, + displayName: normalizeText(session.displayName || sessionId), + messageCount, + lastTime, + isGroup: sessionId.endsWith('@chatroom'), + score + } + }) + + rows.sort((a, b) => b.score - a.score || b.messageCount - a.messageCount || b.lastTime - a.lastTime) + const top = rows.slice(0, limit) + + if (detailLevel === 'full') { + return { + success: true, + total: rows.length, + beginTimestamp, + endTimestamp, + items: top + } + } + if (detailLevel === 'standard') { + return { + success: true, + total: rows.length, + beginTimestamp, + endTimestamp, + items: top.map((item) => ({ + sessionId: item.sessionId, + displayName: item.displayName, + messageCount: item.messageCount, + lastTime: item.lastTime, + isGroup: item.isGroup, + score: item.score + })) + } + } + return { + success: true, + total: rows.length, + items: top.map((item) => ({ + sessionId: item.sessionId, + displayName: item.displayName, + messageCount: item.messageCount + })) + } + } + + if (name === 'ai_fetch_message_briefs') { + const items = Array.isArray(args.items) + ? args.items + .map((item: any) => ({ + sessionId: normalizeText(item?.sessionId), + localId: parseIntSafe(item?.localId) + })) + .filter((item) => item.sessionId && item.localId > 0) + : [] + const requests = items.slice(0, 20) + if (requests.length === 0) { + return { success: false, error: '请提供 items: [{sessionId, localId}]' } + } + + const rows: any[] = [] + for (const item of requests) { + const result = await chatService.getMessageById(item.sessionId, item.localId) + if (!result.success || !result.message) { + rows.push({ + sessionId: item.sessionId, + localId: item.localId, + success: false, + error: normalizeText(result.error, '消息不存在') + }) + continue + } + const message = result.message + const base = { + sessionId: item.sessionId, + localId: item.localId, + createTime: parseIntSafe(message.createTime), + sender: normalizeText(message.senderUsername), + localType: parseIntSafe(message.localType), + parsedContent: normalizeText(message.parsedContent) + } + if (detailLevel === 'full') { + rows.push({ + ...base, + rawContent: normalizeText(message.rawContent), + serverId: message.serverIdRaw || message.serverId || '', + isSend: parseIntSafe(message.isSend), + appMsgKind: normalizeText(message.appMsgKind), + fileName: normalizeText(message.fileName) + }) + } else if (detailLevel === 'standard') { + rows.push({ + ...base, + rawContent: normalizeText(message.rawContent).slice(0, 320) + }) + } else { + rows.push({ + sessionId: base.sessionId, + localId: base.localId, + createTime: base.createTime, + sender: base.sender, + snippet: base.parsedContent.slice(0, 200) + }) + } + } + + return { + success: true, + count: rows.length, + rows + } + } + + if (name === 'ai_list_voice_messages') { + const sessionId = normalizeText(args.sessionId) + const list = await chatService.getResourceMessages({ + sessionId: sessionId || undefined, + types: ['voice'], + beginTimestamp: parseIntSafe(args.beginTimestamp), + endTimestamp: parseIntSafe(args.endTimestamp), + limit: Math.max(1, Math.min(maxMessagesPerRequest, parseIntSafe(args.limit, 80))), + offset: parseIntSafe(args.offset) + }) + if (!list.success) { + return { success: false, error: list.error || '语音清单检索失败' } + } + const items = (list.items || []).map((item: any) => ({ + id: `${normalizeText(item.sessionId)}:${parseIntSafe(item.localId)}:${parseIntSafe(item.createTime)}`, + sessionId: normalizeText(item.sessionId), + sessionName: normalizeText(item.sessionDisplayName || item.sessionId), + localId: parseIntSafe(item.localId), + createTime: parseIntSafe(item.createTime), + sender: normalizeText(item.senderUsername), + durationSec: parseIntSafe(item.voiceDurationSeconds), + hint: normalizeText(item.parsedContent || item.rawContent).slice(0, 80) + })) + if (detailLevel === 'minimal') { + return { + success: true, + total: parseIntSafe(list.total, items.length), + hasMore: list.hasMore === true, + ids: items.slice(0, 50).map((item) => item.id), + note: '先选择要转写的语音ID,再调用 ai_transcribe_voice_messages' + } + } + return { + success: true, + total: parseIntSafe(list.total, items.length), + hasMore: list.hasMore === true, + items: detailLevel === 'full' ? items : items.slice(0, 40) + } + } + + if (name === 'ai_transcribe_voice_messages') { + const requestsFromIds = this.parseVoiceIds(Array.isArray(args.ids) ? args.ids : []) + const requestsFromItems = Array.isArray(args.items) + ? args.items.map((item: any) => ({ + sessionId: normalizeText(item?.sessionId), + localId: parseIntSafe(item?.localId), + createTime: parseIntSafe(item?.createTime) || undefined + })).filter((item) => item.sessionId && item.localId > 0) + : [] + + const merged = [...requestsFromIds, ...requestsFromItems] + const dedupMap = new Map() + for (const item of merged) { + const key = `${item.sessionId}:${item.localId}:${item.createTime || 0}` + if (!dedupMap.has(key)) dedupMap.set(key, item) + } + const requests = Array.from(dedupMap.values()).slice(0, VOICE_TRANSCRIBE_BATCH_LIMIT) + if (requests.length === 0) { + return { + success: false, + error: '请先调用 ai_list_voice_messages 获取 IDs,再指定要转写的语音ID(sessionId:localId[:createTime])' + } + } + + const results: Array<{ + id: string + sessionId: string + localId: number + createTime?: number + success: boolean + transcript?: string + error?: string + }> = [] + + for (const req of requests) { + const transcript = await chatService.getVoiceTranscript( + req.sessionId, + String(req.localId), + req.createTime + ) + const id = `${req.sessionId}:${req.localId}:${req.createTime || 0}` + if (transcript.success) { + results.push({ + id, + sessionId: req.sessionId, + localId: req.localId, + createTime: req.createTime, + success: true, + transcript: normalizeText(transcript.transcript) + }) + } else { + results.push({ + id, + sessionId: req.sessionId, + localId: req.localId, + createTime: req.createTime, + success: false, + error: normalizeText(transcript.error, '转写失败') + }) + } + } + + return { + success: true, + requested: requests.length, + successCount: results.filter((item) => item.success).length, + results: detailLevel === 'full' + ? results + : results.map((item) => ({ + id: item.id, + success: item.success, + transcript: item.transcript + ? item.transcript.slice(0, detailLevel === 'standard' ? 380 : 220) + : undefined, + error: item.error + })) + } + } + + if (name === 'activate_skill') { + const skillId = normalizeText((args as any)?.skill_id) + if (!skillId) return { success: false, error: '缺少 skill_id' } + const skill = await aiSkillService.getConfig(skillId) + if (!skill) return { success: false, error: `技能不存在: ${skillId}` } + return { + success: true, + skillId: skill.id, + name: skill.name, + description: skill.description, + prompt: skill.prompt, + tools: skill.tools + } + } + + return { success: false, error: `未知工具: ${name}` } + } + + private async recordToolRun( + aiDbPath: string, + runId: string, + conversationId: string, + messageId: string, + trace: AiToolCallTrace, + result: unknown + ): Promise { + const sql = `INSERT INTO ai_tool_runs ( + run_id, conversation_id, message_id, tool_name, tool_args_json, tool_result_json, status, duration_ms, error, created_at + ) VALUES ( + '${escSql(runId)}', + '${escSql(conversationId)}', + '${escSql(messageId)}', + '${escSql(trace.toolName)}', + '${escSql(JSON.stringify(trace.args || {}))}', + '${escSql(JSON.stringify(result ?? {}))}', + '${escSql(trace.status)}', + ${parseIntSafe(trace.durationMs)}, + '${escSql(trace.error || '')}', + ${Date.now()} + )` + await this.queryRows(aiDbPath, sql) + } + + private async appendToolStepMessage( + aiDbPath: string, + conversationId: string, + intent: AiIntentType, + trace: AiToolCallTrace, + toolResult: any + ): Promise { + const payload = { + type: 'tool_step', + toolName: trace.toolName, + status: trace.status, + durationMs: trace.durationMs, + args: trace.args || {}, + result: this.compactToolResultForStep(toolResult) + } + let raw = JSON.stringify(payload) + if (raw.length > 2800) { + raw = JSON.stringify({ + ...payload, + result: { + ...(payload.result || {}), + truncated: true + } + }) + } + const content = `__wf_tool_step__${raw}` + + await this.queryRows( + aiDbPath, + `INSERT INTO ai_messages ( + message_id,conversation_id,role,content,intent_type,components_json,tool_trace_json,usage_json,error,parent_message_id,created_at + ) VALUES ( + '${escSql(randomUUID())}', + '${escSql(conversationId)}', + 'tool', + '${escSql(content)}', + '${escSql(intent)}', + '[]', + '${escSql(JSON.stringify([trace]))}', + '{}', + '', + '', + ${Date.now()} + )` + ) + } + + private emitRunEvent( + callback: ((event: AiAnalysisRunEvent) => void) | undefined, + payload: AiAnalysisRunEvent + ): void { + if (!callback) return + try { + callback(payload) + } catch { + // ignore emitter errors + } + } + + private compactToolResultForStep(result: any): Record { + if (!result || typeof result !== 'object') return {} + const data: Record = {} + if ('success' in result) data.success = Boolean(result.success) + if ('count' in result) data.count = parseIntSafe((result as any).count) + if ('total' in result) data.total = parseIntSafe((result as any).total) + if ('activeCount' in result) data.activeCount = parseIntSafe((result as any).activeCount) + if ('requested' in result) data.requested = parseIntSafe((result as any).requested) + if ('successCount' in result) data.successCount = parseIntSafe((result as any).successCount) + if ('hasMore' in result) data.hasMore = Boolean((result as any).hasMore) + if ((result as any).error) data.error = normalizeText((result as any).error) + if (Array.isArray((result as any).ids)) data.ids = (result as any).ids.slice(0, 8) + if (Array.isArray((result as any).items)) data.itemsPreview = (result as any).items.slice(0, 2) + if (Array.isArray((result as any).rows)) data.rowsPreview = (result as any).rows.slice(0, 2) + if ((result as any).nextOffset) data.nextOffset = parseIntSafe((result as any).nextOffset) + return data + } + + private buildComponents( + intent: AiIntentType, + userText: string, + tools: ToolBundle + ): AiResultComponent[] { + const sessionNameMap = new Map() + for (const row of Array.isArray(tools.sessionCandidates) ? tools.sessionCandidates : []) { + const sessionId = normalizeText(row.sessionId || row.session_id || row._session_id) + const sessionName = normalizeText(row.sessionName || row.session_name || row.display_name) + if (sessionId && sessionName && !sessionNameMap.has(sessionId)) { + sessionNameMap.set(sessionId, sessionName) + } + } + + const timelineItemsRaw = Array.isArray(tools.timelineRows) ? tools.timelineRows : [] + const timelineItems = timelineItemsRaw.slice(0, 120).map((row: any) => ({ + ts: parseIntSafe(row.create_time), + sessionId: normalizeText(row._session_id), + sessionName: normalizeText(row.session_name || sessionNameMap.get(normalizeText(row._session_id)) || row._session_id), + sender: normalizeText(row.sender_username || '未知'), + snippet: normalizeText(row.content).slice(0, 200), + localId: parseIntSafe(row.local_id), + createTime: parseIntSafe(row.create_time) + })) + + const sessionIdsFromTimeline = Array.from(new Set(timelineItems.map((item) => item.sessionId).filter(Boolean))) + const sourceData = tools.sourceRefs && typeof tools.sourceRefs === 'object' ? tools.sourceRefs : {} + + const summaryBullets = [ + `识别任务类型:${intent}`, + `命中会话数:${sessionIdsFromTimeline.length || parseIntSafe(sourceData.session_count)}`, + `时间轴事件数:${timelineItems.length}` + ] + if (timelineItems.length > 0) { + const first = timelineItems[0] + summaryBullets.push(`最近事件:${first.sessionName || first.sessionId} / ${first.snippet.slice(0, 30)}`) + } + if (tools.activeSessions.length > 0) { + summaryBullets.push(`时间窗活跃会话:${tools.activeSessions.length} 个`) + } + if (tools.sessionGlimpses.length > 0) { + summaryBullets.push(`抽样阅读消息:${tools.sessionGlimpses.length} 条`) + } + if (tools.topContacts.length > 0) { + const top = tools.topContacts[0] + summaryBullets.push(`高频联系人Top1:${normalizeText(top.displayName || top.sessionId)}(${parseIntSafe(top.messageCount)}条)`) + } + if (tools.messageBriefs.length > 0) { + summaryBullets.push(`关键证据消息:${tools.messageBriefs.length} 条`) + } + if (tools.voiceCatalog.length > 0) { + summaryBullets.push(`语音候选ID:${tools.voiceCatalog.length} 条`) + } + if (tools.voiceTranscripts.length > 0) { + summaryBullets.push(`语音转写成功:${tools.voiceTranscripts.filter((item: any) => item.success).length}/${tools.voiceTranscripts.length}`) + } + if (normalizeText(userText).includes('去年')) { + summaryBullets.push('已按“去年”语义优先检索相关时间范围') + } + + const summary: SummaryComponent = { + type: 'summary', + title: 'AI 分析总结', + bullets: summaryBullets, + conclusion: timelineItems.length > 0 + ? '已完成检索与归纳,可继续追问“按月份展开”或“只看某个联系人”。' + : '当前条件未检索到足够事件,建议补充关键词或时间范围。' + } + + const timeline: TimelineComponent = { + type: 'timeline', + items: timelineItems + } + + const source: SourceComponent = { + type: 'source', + range: { + begin: parseIntSafe(sourceData?.range?.begin), + end: parseIntSafe(sourceData?.range?.end) + }, + sessionCount: parseIntSafe(sourceData?.session_count, sessionIdsFromTimeline.length), + messageCount: parseIntSafe(sourceData?.message_count), + dbRefs: Array.isArray(sourceData?.db_refs) ? sourceData.db_refs.map((item: any) => normalizeText(item)).filter(Boolean).slice(0, 24) : [] + } + + return [timeline, summary, source] + } + + private isRunAborted(runId: string): boolean { + const state = this.activeRuns.get(runId) + return Boolean(state?.aborted) + } + + private async upsertConversationTitle(aiDbPath: string, conversationId: string, fallbackInput: string): Promise { + const rows = await this.queryRows(aiDbPath, `SELECT title FROM ai_conversations WHERE conversation_id='${escSql(conversationId)}' LIMIT 1`) + const currentTitle = normalizeText(rows?.[0]?.title) + if (currentTitle) return + const title = normalizeText(fallbackInput).slice(0, 40) || '新的 AI 对话' + await this.queryRows( + aiDbPath, + `UPDATE ai_conversations SET title='${escSql(title)}', updated_at=${Date.now()} WHERE conversation_id='${escSql(conversationId)}'` + ) + } + + private async maybeCompressContext(aiDbPath: string, conversationId: string): Promise { + const countRows = await this.queryRows(aiDbPath, `SELECT COUNT(1) AS cnt FROM ai_messages WHERE conversation_id='${escSql(conversationId)}'`) + const count = parseIntSafe(countRows?.[0]?.cnt) + if (count <= CONTEXT_COMPRESS_TRIGGER_COUNT) return + + const oldRows = await this.queryRows( + aiDbPath, + `SELECT id,role,content,created_at FROM ai_messages + WHERE conversation_id='${escSql(conversationId)}' + ORDER BY created_at ASC + LIMIT ${Math.max(1, count - CONTEXT_KEEP_AFTER_COMPRESS)}` + ) + if (!oldRows.length) return + + const summaryLines: string[] = [] + for (const row of oldRows.slice(-120)) { + const role = normalizeText(row.role) + if (role !== 'user' && role !== 'assistant') continue + const createdAt = parseIntSafe(row.created_at) + const content = normalizeText(row.content).replace(/\s+/g, ' ').slice(0, 100) + if (!content) continue + summaryLines.push(`- [${createdAt}] ${role}: ${content}`) + } + + const prevSummaryRows = await this.queryRows( + aiDbPath, + `SELECT summary_text FROM ai_conversations WHERE conversation_id='${escSql(conversationId)}' LIMIT 1` + ) + const prevSummary = normalizeText(prevSummaryRows?.[0]?.summary_text) + const nextSummary = [ + prevSummary ? `历史摘要(旧):\n${prevSummary.slice(-2000)}` : '', + '历史压缩补充:', + ...summaryLines.slice(-80) + ].filter(Boolean).join('\n') + + await this.queryRows( + aiDbPath, + `UPDATE ai_conversations + SET summary_text='${escSql(nextSummary.slice(-CONTEXT_SUMMARY_MAX_CHARS))}', updated_at=${Date.now()} + WHERE conversation_id='${escSql(conversationId)}'` + ) + + const removeIds = oldRows.map((row) => parseIntSafe(row.id)).filter((id) => id > 0) + if (removeIds.length > 0) { + await this.queryRows( + aiDbPath, + `DELETE FROM ai_messages WHERE id IN (${removeIds.join(',')})` + ) + } + } + + private async buildModelMessages( + aiDbPath: string, + conversationId: string, + userInput: string, + options?: { + assistantSystemPrompt?: string + manualSkillPrompt?: string + autoSkillMenu?: string + } + ): Promise { + await this.maybeCompressContext(aiDbPath, conversationId) + const historyLimit = Math.max( + 4, + Math.min(60, parseIntSafe(this.config.get('aiAgentMaxHistoryRounds'), CONTEXT_RECENT_LIMIT)) + ) + + const summaryRows = await this.queryRows( + aiDbPath, + `SELECT summary_text FROM ai_conversations WHERE conversation_id='${escSql(conversationId)}' LIMIT 1` + ) + const summaryText = normalizeText(summaryRows?.[0]?.summary_text) + + const rows = await this.queryRows( + aiDbPath, + `SELECT role,content FROM ai_messages + WHERE conversation_id='${escSql(conversationId)}' + ORDER BY created_at DESC + LIMIT ${historyLimit * 2}` + ) + + const recentTurns = rows + .reverse() + .filter((row) => { + const role = normalizeText(row.role) + return role === 'user' || role === 'assistant' + }) + .slice(-historyLimit) + .map((row) => ({ role: normalizeText(row.role), content: normalizeText(row.content) })) + + const baseSkill = await this.loadSkill('base') + + const messages: any[] = [ + { role: 'system', content: baseSkill } + ] + messages.push({ + role: 'system', + content: `完成任务时请输出 ${FINAL_DONE_MARKER},并用 ... 包裹最终回答。` + }) + + if (options?.assistantSystemPrompt) { + messages.push({ + role: 'system', + content: `assistant_system_prompt:\n${options.assistantSystemPrompt}` + }) + } + + if (summaryText) { + const compressionSkill = await this.loadSkill('context_compression') + messages.push({ role: 'system', content: `skill(context_compression):\n${compressionSkill}` }) + messages.push({ role: 'system', content: `conversation_summary:\n${summaryText}` }) + } + + if (options?.manualSkillPrompt) { + messages.push({ + role: 'system', + content: `active_skill_manual:\n${options.manualSkillPrompt}` + }) + } else if (options?.autoSkillMenu) { + messages.push({ + role: 'system', + content: `auto_skill_menu:\n${options.autoSkillMenu}` + }) + } + + const preprocessConfig = { + clean: this.config.get('aiAgentPreprocessClean') !== false, + merge: this.config.get('aiAgentPreprocessMerge') !== false, + denoise: this.config.get('aiAgentPreprocessDenoise') !== false, + desensitize: this.config.get('aiAgentPreprocessDesensitize') === true, + anonymize: this.config.get('aiAgentPreprocessAnonymize') === true + } + const searchContextBefore = Math.max(0, Math.min(20, parseIntSafe(this.config.get('aiAgentSearchContextBefore'), 3))) + const searchContextAfter = Math.max(0, Math.min(20, parseIntSafe(this.config.get('aiAgentSearchContextAfter'), 3))) + messages.push({ + role: 'system', + content: `tool_search_context: before=${searchContextBefore}, after=${searchContextAfter}; preprocess=${JSON.stringify(preprocessConfig)}` + }) + + let recentTotalChars = 0 + const boundedRecentTurns = recentTurns + .slice() + .reverse() + .filter((turn) => { + const content = normalizeText(turn.content) + if (!content) return false + const cost = content.length + if (recentTotalChars + cost > CONTEXT_RECENT_MAX_CHARS) return false + recentTotalChars += cost + return true + }) + .reverse() + + messages.push(...boundedRecentTurns) + messages.push({ role: 'user', content: userInput }) + return messages + } + + async listConversations(page = 1, pageSize = 20): Promise<{ success: boolean; conversations?: any[]; error?: string }> { + try { + const { dbPath } = await this.ensureReady() + const p = Math.max(1, page) + const size = Math.max(1, Math.min(100, pageSize)) + const offset = (p - 1) * size + const rows = await this.queryRows( + dbPath, + `SELECT conversation_id,title,created_at,updated_at,last_message_at FROM ai_conversations + ORDER BY updated_at DESC LIMIT ${size} OFFSET ${offset}` + ) + return { + success: true, + conversations: rows.map((row) => ({ + conversationId: normalizeText(row.conversation_id), + title: normalizeText(row.title, '新的 AI 对话'), + createdAt: parseIntSafe(row.created_at), + updatedAt: parseIntSafe(row.updated_at), + lastMessageAt: parseIntSafe(row.last_message_at) + })) + } + } catch (error) { + return { success: false, error: (error as Error).message } + } + } + + async createConversation(title = ''): Promise<{ success: boolean; conversationId?: string; error?: string }> { + try { + const { dbPath } = await this.ensureReady() + const conversationId = randomUUID() + const now = Date.now() + const safeTitle = normalizeText(title, '新的 AI 对话').slice(0, 80) + await this.queryRows( + dbPath, + `INSERT INTO ai_conversations (conversation_id,title,summary_text,created_at,updated_at,last_message_at) + VALUES ('${escSql(conversationId)}','${escSql(safeTitle)}','',${now},${now},${now})` + ) + return { success: true, conversationId } + } catch (error) { + return { success: false, error: (error as Error).message } + } + } + + async deleteConversation(conversationId: string): Promise<{ success: boolean; error?: string }> { + try { + const { dbPath } = await this.ensureReady() + const safeId = escSql(conversationId) + await this.queryRows(dbPath, `DELETE FROM ai_messages WHERE conversation_id='${safeId}'`) + await this.queryRows(dbPath, `DELETE FROM ai_tool_runs WHERE conversation_id='${safeId}'`) + await this.queryRows(dbPath, `DELETE FROM ai_conversations WHERE conversation_id='${safeId}'`) + return { success: true } + } catch (error) { + return { success: false, error: (error as Error).message } + } + } + + async renameConversation(conversationId: string, title: string): Promise<{ success: boolean; error?: string }> { + try { + const { dbPath } = await this.ensureReady() + const safeId = escSql(conversationId) + const safeTitle = normalizeText(title, '新的 AI 对话').slice(0, 80) + await this.queryRows( + dbPath, + `UPDATE ai_conversations SET title='${escSql(safeTitle)}', updated_at=${Date.now()} WHERE conversation_id='${safeId}'` + ) + return { success: true } + } catch (error) { + return { success: false, error: (error as Error).message } + } + } + + async exportConversation(conversationId: string): Promise<{ + success: boolean + conversation?: { conversationId: string; title: string; updatedAt: number } + markdown?: string + error?: string + }> { + try { + const { dbPath } = await this.ensureReady() + const safeId = escSql(conversationId) + const convoRows = await this.queryRows( + dbPath, + `SELECT conversation_id,title,updated_at FROM ai_conversations WHERE conversation_id='${safeId}' LIMIT 1` + ) + if (!convoRows.length) return { success: false, error: '会话不存在' } + const messageRows = await this.queryRows( + dbPath, + `SELECT role,content,created_at FROM ai_messages WHERE conversation_id='${safeId}' ORDER BY created_at ASC LIMIT 2000` + ) + const headerTitle = normalizeText(convoRows[0]?.title, 'AI 对话') + const lines = [ + `# ${headerTitle}`, + '', + `导出时间: ${new Date().toISOString()}`, + '' + ] + for (const row of messageRows) { + const role = normalizeText(row.role, 'assistant') + if (role === 'tool') continue + const content = normalizeText(row.content) + if (!content) continue + const roleText = role === 'user' ? '用户' : role === 'assistant' ? '助手' : role + lines.push(`## ${roleText} (${new Date(parseIntSafe(row.created_at)).toLocaleString('zh-CN')})`) + lines.push('') + lines.push(content) + lines.push('') + } + return { + success: true, + conversation: { + conversationId: normalizeText(convoRows[0]?.conversation_id), + title: headerTitle, + updatedAt: parseIntSafe(convoRows[0]?.updated_at) + }, + markdown: lines.join('\n') + } + } catch (error) { + return { success: false, error: (error as Error).message } + } + } + + async listMessages(conversationId: string, limit = 200): Promise<{ success: boolean; messages?: any[]; error?: string }> { + try { + const { dbPath } = await this.ensureReady() + const rows = await this.queryRows( + dbPath, + `SELECT message_id,conversation_id,role,content,intent_type,components_json,tool_trace_json,usage_json,error,parent_message_id,created_at + FROM ai_messages WHERE conversation_id='${escSql(conversationId)}' + ORDER BY created_at ASC LIMIT ${Math.max(1, Math.min(1000, limit))}` + ) + return { + success: true, + messages: rows.map((row) => ({ + ...(function () { + const role = normalizeText(row.role) + const rawContent = normalizeText(row.content) + if (role !== 'tool') { + return { role, content: rawContent } + } + const parsed = parseStoredToolStep(rawContent) + if (!parsed) { + return { role, content: rawContent } + } + const compact = Object.entries(parsed.result || {}) + .slice(0, 4) + .map(([key, value]) => `${key}=${String(value)}`) + .join(',') + const suffix = compact ? `,${compact}` : '' + return { + role, + content: `工具 ${parsed.toolName || 'unknown'} (${parsed.status || 'unknown'}, ${parsed.durationMs}ms)${suffix}` + } + })(), + messageId: normalizeText(row.message_id), + conversationId: normalizeText(row.conversation_id), + intentType: normalizeText(row.intent_type), + components: (() => { try { return JSON.parse(normalizeText(row.components_json, '[]')) } catch { return [] } })(), + toolTrace: (() => { try { return JSON.parse(normalizeText(row.tool_trace_json, '[]')) } catch { return [] } })(), + usage: (() => { try { return JSON.parse(normalizeText(row.usage_json, '{}')) } catch { return {} } })(), + error: normalizeText(row.error), + parentMessageId: normalizeText(row.parent_message_id), + createdAt: parseIntSafe(row.created_at) + })) + } + } catch (error) { + return { success: false, error: (error as Error).message } + } + } + + async abortRun(payload: { runId?: string; conversationId?: string }): Promise<{ success: boolean }> { + const runId = normalizeText(payload?.runId) + const conversationId = normalizeText(payload?.conversationId) + if (runId && this.activeRuns.has(runId)) { + const state = this.activeRuns.get(runId)! + state.aborted = true + return { success: true } + } + if (conversationId) { + for (const state of this.activeRuns.values()) { + if (state.conversationId === conversationId) state.aborted = true + } + } + return { success: true } + } + + async retryMessage(payload: { + conversationId: string + userMessageId?: string + }, runtime?: { + onRunEvent?: (event: AiAnalysisRunEvent) => void + }): Promise<{ success: boolean; result?: SendMessageResult; error?: string }> { + try { + const { dbPath } = await this.ensureReady() + const conversationId = normalizeText(payload.conversationId) + const userMessageId = normalizeText(payload.userMessageId) + let rows: any[] = [] + if (userMessageId) { + rows = await this.queryRows( + dbPath, + `SELECT message_id,content FROM ai_messages WHERE conversation_id='${escSql(conversationId)}' AND message_id='${escSql(userMessageId)}' AND role='user' LIMIT 1` + ) + } + if (!rows.length) { + rows = await this.queryRows( + dbPath, + `SELECT message_id,content FROM ai_messages WHERE conversation_id='${escSql(conversationId)}' AND role='user' ORDER BY created_at DESC LIMIT 1` + ) + } + if (!rows.length) return { success: false, error: '未找到可重试的用户消息' } + const row = rows[0] + const result = await this.sendMessage(conversationId, normalizeText(row.content), { + parentMessageId: normalizeText(row.message_id), + persistUserMessage: false + }, runtime) + if (!result.success) return { success: false, error: result.error } + return { success: true, result: result.result } + } catch (error) { + return { success: false, error: (error as Error).message } + } + } + + private async ensureToolSkillInjected( + toolName: string, + injectedSkills: Set, + modelMessages: any[] + ): Promise { + const map: Record = { + ai_query_time_window_activity: 'tool_time_window_activity', + ai_query_session_glimpse: 'tool_session_glimpse', + ai_query_session_candidates: 'tool_session_candidates', + ai_query_timeline: 'tool_timeline', + ai_query_topic_stats: 'tool_topic_stats', + ai_query_source_refs: 'tool_source_refs', + ai_query_top_contacts: 'tool_top_contacts', + ai_fetch_message_briefs: 'tool_message_briefs', + ai_list_voice_messages: 'tool_voice_list', + ai_transcribe_voice_messages: 'tool_voice_transcribe' + } + const skill = map[toolName] + if (!skill || injectedSkills.has(skill)) return + injectedSkills.add(skill) + const skillText = await this.loadSkill(skill) + modelMessages.push({ role: 'system', content: `skill(${toolName}):\n${skillText}` }) + } + + async sendMessage( + conversationId: string, + userInput: string, + options?: SendMessageOptions, + runtime?: { + onRunEvent?: (event: AiAnalysisRunEvent) => void + } + ): Promise<{ success: boolean; result?: SendMessageResult; error?: string }> { + const now = Date.now() + const runId = randomUUID() + const aiRun: AiRunState = { + runId, + conversationId, + aborted: false + } + this.activeRuns.set(runId, aiRun) + + try { + const { apiBaseUrl, apiKey, model } = this.getSharedModelConfig() + if (!apiBaseUrl || !apiKey) { + return { success: false, error: '请先在设置 > AI通用 中填写 Base URL 和 API Key' } + } + + const { dbPath } = await this.ensureReady() + const convId = normalizeText(conversationId) + if (!convId) { + const created = await this.createConversation() + if (!created.success || !created.conversationId) { + return { success: false, error: created.error || '创建会话失败' } + } + conversationId = created.conversationId + } else { + const existingConv = await this.queryRows(dbPath, `SELECT conversation_id FROM ai_conversations WHERE conversation_id='${escSql(convId)}' LIMIT 1`) + if (!existingConv.length) { + const created = await this.createConversation() + if (!created.success || !created.conversationId) { + return { success: false, error: created.error || '创建会话失败' } + } + conversationId = created.conversationId + } else { + conversationId = convId + } + } + aiRun.conversationId = conversationId + + await this.upsertConversationTitle(dbPath, conversationId, userInput) + + const chatType = this.resolveChatType(options) + const preferredAssistantId = normalizeText(options?.assistantId, 'general_cn') + const selectedAssistant = + await aiAssistantService.getConfig(preferredAssistantId) || + await aiAssistantService.getConfig('general_cn') + const assistantSystemPrompt = normalizeText(selectedAssistant?.systemPrompt) + const allowedToolNames = this.resolveAllowedToolNames(selectedAssistant?.allowedBuiltinTools) + const allowedToolSet = new Set(allowedToolNames) + + let manualSkillPrompt = '' + const manualSkillId = normalizeText(options?.activeSkillId) + if (manualSkillId) { + const manualSkill = await aiSkillService.getConfig(manualSkillId) + if (manualSkill) { + const scopeMatched = manualSkill.chatScope === 'all' || manualSkill.chatScope === chatType + const missingTools = manualSkill.tools.filter((toolName) => !allowedToolSet.has(toolName)) + if (scopeMatched && missingTools.length === 0) { + manualSkillPrompt = normalizeText(manualSkill.prompt) + } + } + } + const enableAutoSkill = this.config.get('aiAgentEnableAutoSkill') === true + const autoSkillMenu = !manualSkillPrompt && enableAutoSkill + ? await aiSkillService.getAutoSkillMenu(chatType, allowedToolNames) + : null + + const userMessageId = randomUUID() + const persistUserMessage = options?.persistUserMessage !== false + const intent = defaultIntentType() + this.emitRunEvent(runtime?.onRunEvent, { + runId, + conversationId, + stage: 'run_started', + ts: Date.now(), + message: `开始分析请求(助手:${selectedAssistant?.name || '通用分析助手'})` + }) + this.emitRunEvent(runtime?.onRunEvent, { + runId, + conversationId, + stage: 'intent_identified', + ts: Date.now(), + message: '意图由 AI 在推理中自主判断(本地不预匹配)', + intent + }) + if (persistUserMessage) { + await this.queryRows( + dbPath, + `INSERT INTO ai_messages (message_id,conversation_id,role,content,intent_type,created_at,parent_message_id) + VALUES ('${escSql(userMessageId)}','${escSql(conversationId)}','user','${escSql(userInput)}','${escSql(intent)}',${now},'${escSql(options?.parentMessageId || '')}')` + ) + } + + const modelMessages = await this.buildModelMessages(dbPath, conversationId, userInput, { + assistantSystemPrompt, + manualSkillPrompt, + autoSkillMenu: autoSkillMenu || undefined + }) + const injectedSkills = new Set(['base']) + + const toolTrace: AiToolCallTrace[] = [] + const toolBundle: ToolBundle = { + activeSessions: [], + sessionGlimpses: [], + sessionCandidates: [], + timelineRows: [], + topicStats: null, + sourceRefs: null, + topContacts: [], + messageBriefs: [], + voiceCatalog: [], + voiceTranscripts: [] + } + + let finalText = '' + let usage: SendMessageResult['usage'] = {} + let lastAssistantText = '' + let hasToolExecution = false + let protocolViolationCount = 0 + + for (let loop = 0; loop < MAX_TOOL_LOOPS; loop += 1) { + if (this.isRunAborted(runId)) { + this.emitRunEvent(runtime?.onRunEvent, { + runId, + conversationId, + stage: 'aborted', + ts: Date.now(), + message: '任务已取消' + }) + return { success: false, error: '任务已取消' } + } + + this.emitRunEvent(runtime?.onRunEvent, { + runId, + conversationId, + stage: 'llm_round_started', + ts: Date.now(), + round: loop + 1, + message: `第 ${loop + 1} 轮推理开始` + }) + const llmRes = await this.requestLlmStep(modelMessages, model, apiBaseUrl, apiKey, allowedToolNames) + usage = llmRes.usage + this.emitRunEvent(runtime?.onRunEvent, { + runId, + conversationId, + stage: 'llm_round_result', + ts: Date.now(), + round: loop + 1, + message: llmRes.toolCalls.length > 0 + ? `第 ${loop + 1} 轮返回 ${llmRes.toolCalls.length} 个工具调用` + : `第 ${loop + 1} 轮直接产出答案`, + data: { + toolCalls: llmRes.toolCalls.length + } + }) + + if (!llmRes.toolCalls.length) { + const cleanedAssistant = this.stripFinalMarker(llmRes.content) + if (cleanedAssistant) { + lastAssistantText = cleanedAssistant + } + if (!hasToolExecution) { + finalText = cleanedAssistant + break + } + const delivery = this.parseFinalDelivery(llmRes.content) + if (delivery.done && delivery.answer) { + finalText = delivery.answer + break + } + + if (!cleanedAssistant && loop < MAX_TOOL_LOOPS - 1) { + protocolViolationCount += 1 + this.emitRunEvent(runtime?.onRunEvent, { + runId, + conversationId, + stage: 'llm_round_result', + ts: Date.now(), + round: loop + 1, + message: `模型返回空响应,触发协议重试(${protocolViolationCount})`, + data: { protocolViolationCount } + }) + modelMessages.push({ + role: 'system', + content: [ + '协议约束:你不能输出空内容。', + `下一步必须二选一:1) 继续调用工具;2) 输出 ${FINAL_DONE_MARKER} + ...。`, + '若证据不足,请先工具检索,不要停在中间状态。' + ].join('\n') + }) + continue + } + + if (!delivery.done && loop < MAX_TOOL_LOOPS - 1) { + this.emitRunEvent(runtime?.onRunEvent, { + runId, + conversationId, + stage: 'llm_round_result', + ts: Date.now(), + round: loop + 1, + message: 'AI 尚未输出结束标记,继续执行协议回合', + data: { protocolReminder: true } + }) + if (cleanedAssistant) { + modelMessages.push({ + role: 'assistant', + content: cleanedAssistant + }) + } + modelMessages.push({ + role: 'system', + content: [ + `协议提醒:当任务完成时,必须输出 ${FINAL_DONE_MARKER} 并给出 ...。`, + '如果信息不足,不要结束,继续调用工具。' + ].join('\n') + }) + continue + } + finalText = cleanedAssistant + break + } + + protocolViolationCount = 0 + hasToolExecution = true + modelMessages.push({ + role: 'assistant', + content: llmRes.content || '', + tool_calls: llmRes.toolCalls.map((call) => ({ + id: call.id, + type: 'function', + function: { + name: call.name, + arguments: call.argumentsJson + } + })) + }) + + for (const call of llmRes.toolCalls) { + if (this.isRunAborted(runId)) { + this.emitRunEvent(runtime?.onRunEvent, { + runId, + conversationId, + stage: 'aborted', + ts: Date.now(), + message: '任务已取消' + }) + return { success: false, error: '任务已取消' } + } + + await this.ensureToolSkillInjected(call.name, injectedSkills, modelMessages) + + const started = Date.now() + let args: Record = {} + try { + args = JSON.parse(call.argumentsJson || '{}') + } catch { + args = {} + } + + const trace: AiToolCallTrace = { + toolName: call.name, + args, + status: 'ok', + durationMs: 0 + } + this.emitRunEvent(runtime?.onRunEvent, { + runId, + conversationId, + stage: 'tool_start', + ts: Date.now(), + round: loop + 1, + toolName: call.name, + message: `开始调用工具 ${call.name}`, + data: { args } + }) + + let toolResult: any = {} + try { + if (!allowedToolSet.has(call.name)) { + toolResult = { success: false, error: `当前助手未授权工具: ${call.name}` } + } else { + toolResult = await this.runTool(call.name, args, { userInput }) + } + if (!toolResult?.success) { + trace.status = 'error' + trace.error = normalizeText(toolResult?.error, '工具执行失败') + } else { + if (call.name === 'ai_query_time_window_activity') { + toolBundle.activeSessions = Array.isArray(toolResult.items) ? toolResult.items : [] + } else if (call.name === 'ai_query_session_glimpse') { + const rows = Array.isArray(toolResult.rows) ? toolResult.rows : [] + if (rows.length > 0) { + const merged = [...toolBundle.sessionGlimpses, ...rows] + const dedup = new Map() + for (const row of merged) { + const key = `${normalizeText(row.sessionId || row._session_id)}:${parseIntSafe(row.localId || row.local_id)}:${parseIntSafe(row.createTime || row.create_time)}` + if (!dedup.has(key)) dedup.set(key, row) + } + toolBundle.sessionGlimpses = Array.from(dedup.values()).slice(0, MAX_TOOL_RESULT_ROWS) + } + } else if (call.name === 'ai_query_session_candidates') { + toolBundle.sessionCandidates = Array.isArray(toolResult.rows) ? toolResult.rows : [] + } else if (call.name === 'ai_query_timeline') { + const rows = Array.isArray(toolResult.rows) ? toolResult.rows : [] + if (rows.length > 0) { + const merged = [...toolBundle.timelineRows, ...rows] + const dedup = new Map() + for (const row of merged) { + const key = `${normalizeText(row._session_id)}:${parseIntSafe(row.local_id)}:${parseIntSafe(row.create_time)}` + if (!dedup.has(key)) dedup.set(key, row) + } + toolBundle.timelineRows = Array.from(dedup.values()).slice(0, MAX_TOOL_RESULT_ROWS) + } + } else if (call.name === 'ai_query_topic_stats') { + toolBundle.topicStats = toolResult.data || {} + } else if (call.name === 'ai_query_source_refs') { + toolBundle.sourceRefs = toolResult.data || {} + } else if (call.name === 'ai_query_top_contacts') { + toolBundle.topContacts = Array.isArray(toolResult.items) ? toolResult.items : [] + } else if (call.name === 'ai_fetch_message_briefs') { + toolBundle.messageBriefs = Array.isArray(toolResult.rows) ? toolResult.rows : [] + } else if (call.name === 'ai_list_voice_messages') { + if (Array.isArray(toolResult.items)) { + toolBundle.voiceCatalog = toolResult.items + } else if (Array.isArray(toolResult.ids)) { + toolBundle.voiceCatalog = toolResult.ids.map((id: string) => ({ id })) + } else { + toolBundle.voiceCatalog = [] + } + } else if (call.name === 'ai_transcribe_voice_messages') { + toolBundle.voiceTranscripts = Array.isArray(toolResult.results) ? toolResult.results : [] + } + } + } catch (error) { + trace.status = 'error' + trace.error = (error as Error).message + toolResult = { success: false, error: trace.error } + } + + trace.durationMs = Date.now() - started + toolTrace.push(trace) + await this.recordToolRun(dbPath, runId, conversationId, userMessageId, trace, toolResult) + await this.appendToolStepMessage(dbPath, conversationId, intent, trace, toolResult) + this.emitRunEvent(runtime?.onRunEvent, { + runId, + conversationId, + stage: trace.status === 'ok' ? 'tool_done' : 'tool_error', + ts: Date.now(), + round: loop + 1, + toolName: call.name, + status: trace.status, + durationMs: trace.durationMs, + message: trace.status === 'ok' + ? `工具 ${call.name} 完成` + : `工具 ${call.name} 执行失败`, + data: { + args, + result: this.compactToolResultForStep(toolResult), + ...(trace.error ? { error: trace.error } : {}) + } + }) + + modelMessages.push({ + role: 'tool', + tool_call_id: call.id, + content: JSON.stringify(toolResult || {}) + }) + if (call.name === 'activate_skill' && toolResult?.success && normalizeText(toolResult?.prompt)) { + modelMessages.push({ + role: 'system', + content: `active_skill_from_tool:\n${normalizeText(toolResult.prompt)}` + }) + } + } + } + + if (!finalText) { + finalText = lastAssistantText + } + if (!finalText) { + finalText = '模型未返回可交付文本。我会保留上下文,你可以直接继续追问,我将继续执行工具链直到交付结果。' + } + + this.emitRunEvent(runtime?.onRunEvent, { + runId, + conversationId, + stage: 'assembling', + ts: Date.now(), + message: '正在组装结构化结果组件' + }) + const components = this.buildComponents(intent, userInput, toolBundle) + const assistantMessageId = randomUUID() + const createdAt = Date.now() + await this.queryRows( + dbPath, + `INSERT INTO ai_messages ( + message_id,conversation_id,role,content,intent_type,components_json,tool_trace_json,usage_json,error,parent_message_id,created_at + ) VALUES ( + '${escSql(assistantMessageId)}', + '${escSql(conversationId)}', + 'assistant', + '${escSql(finalText)}', + '${escSql(intent)}', + '${escSql(JSON.stringify(components))}', + '${escSql(JSON.stringify(toolTrace))}', + '${escSql(JSON.stringify(usage || {}))}', + '', + '${escSql(options?.parentMessageId || userMessageId)}', + ${createdAt} + )` + ) + + await this.queryRows( + dbPath, + `UPDATE ai_conversations + SET updated_at=${createdAt}, last_message_at=${createdAt} + WHERE conversation_id='${escSql(conversationId)}'` + ) + + this.emitRunEvent(runtime?.onRunEvent, { + runId, + conversationId, + stage: 'completed', + ts: Date.now(), + message: '分析完成并已写入会话记录' + }) + + return { + success: true, + result: { + conversationId, + messageId: assistantMessageId, + assistantText: finalText, + components, + toolTrace, + usage, + createdAt + } + } + } catch (error) { + this.emitRunEvent(runtime?.onRunEvent, { + runId, + conversationId: normalizeText(conversationId), + stage: 'error', + ts: Date.now(), + message: `分析失败:${(error as Error).message}` + }) + return { success: false, error: (error as Error).message } + } finally { + this.activeRuns.delete(runId) + } + } +} + +export const aiAnalysisService = new AiAnalysisService() diff --git a/electron/services/aiAnalysisSkills/base.md b/electron/services/aiAnalysisSkills/base.md new file mode 100644 index 0000000..4293375 --- /dev/null +++ b/electron/services/aiAnalysisSkills/base.md @@ -0,0 +1,30 @@ +你是 WeFlow 的 AI 分析助手。 + +目标: +- 精准完成用户在聊天数据上的查询、总结、分析、回忆任务。 +- 优先使用本地工具获取证据,禁止猜测或捏造。 +- 默认输出简洁中文,先给结论,再给关键依据。 + +工作原则: +- Token 节约优先:默认只请求必要字段,只有用户明确需要或证据不足时再升级 detailLevel。 +- 先范围后细节:优先定位会话/时间范围,再拉取具体时间轴或消息。 +- 可解释性:最终结论尽量附带来源范围与统计口径。 +- 语音消息不能臆测:必须先拿语音 ID,再点名转写,再总结。 +- 联系人排行题(“谁聊得最多/最常联系”)命中 ai_query_top_contacts 后,必须直接给出“前N名+消息数”。 +- 除非用户明确要求,联系人排行默认不包含群聊和公众号。 +- 用户提到“最近/近期/lately/recent”但未给时间窗时,默认按近30天口径统计并写明口径。 +- 用户提到联系人简称(如“lr”)时,先把它当联系人缩写处理,优先命中个人会话,不要默认落到群聊。 +- 用户问“我和X聊了什么”时必须交付“主题总结”,不要贴原始逐条聊天流水。 + +Agent执行要求: +- 用户输入直接进入推理,本地不做关键词分流,你自主决定工具计划。 +- 当用户说“今天凌晨/昨晚/某段时间的聊天”,优先调用 ai_query_time_window_activity。 +- 拿到活跃会话后,调用 ai_query_session_glimpse 对多个会话逐个抽样阅读,不要只读一个会话就停止。 +- 如果初步探索后用户目标仍模糊,主动提出 1 个关键澄清问题继续多轮对话。 +- 仅当你确认任务完成时,输出结束标记 `[[WF_DONE]]`,并紧跟 `...`。 +- 若还未完成,不要输出结束标记,继续调用工具。 + +语音处理硬规则: +- 当用户涉及“语音内容”时,先调用 ai_list_voice_messages。 +- 让系统返回候选 ID 后,再调用 ai_transcribe_voice_messages 指定 ID。 +- 未转写成功的语音不可作为事实依据。 diff --git a/electron/services/aiAnalysisSkills/context_compression.md b/electron/services/aiAnalysisSkills/context_compression.md new file mode 100644 index 0000000..168949a --- /dev/null +++ b/electron/services/aiAnalysisSkills/context_compression.md @@ -0,0 +1,6 @@ +你会收到 conversation_summary(历史压缩摘要)。 + +使用方式: +- 默认把摘要作为历史背景,不逐字复述。 +- 若摘要与最近消息冲突,以最近消息为准。 +- 若用户追问很久之前的细节,优先重新调用工具检索,不依赖旧记忆。 diff --git a/electron/services/aiAnalysisSkills/tool_message_briefs.md b/electron/services/aiAnalysisSkills/tool_message_briefs.md new file mode 100644 index 0000000..428e4df --- /dev/null +++ b/electron/services/aiAnalysisSkills/tool_message_briefs.md @@ -0,0 +1,8 @@ +工具:ai_fetch_message_briefs + +何时用: +- 需要核对少量关键消息原文,避免全量展开。 + +调用建议: +- 只传必要 items(sessionId + localId),每次少量(<=20)。 +- 默认 minimal;需要上下文再用 standard/full。 diff --git a/electron/services/aiAnalysisSkills/tool_session_candidates.md b/electron/services/aiAnalysisSkills/tool_session_candidates.md new file mode 100644 index 0000000..46a1930 --- /dev/null +++ b/electron/services/aiAnalysisSkills/tool_session_candidates.md @@ -0,0 +1,9 @@ +工具:ai_query_session_candidates + +何时用: +- 用户未明确具体会话,但给了关键词/关系词(如“老婆”“买车”)。 + +调用建议: +- 首次调用 detailLevel=minimal。 +- 默认 limit 8~12,避免拉太多候选。 +- 当候选歧义较大时再升级 detailLevel=standard/full。 diff --git a/electron/services/aiAnalysisSkills/tool_session_glimpse.md b/electron/services/aiAnalysisSkills/tool_session_glimpse.md new file mode 100644 index 0000000..3445b93 --- /dev/null +++ b/electron/services/aiAnalysisSkills/tool_session_glimpse.md @@ -0,0 +1,9 @@ +工具:ai_query_session_glimpse + +何时用: +- 已确定候选会话,需要“先看一点”理解上下文。 + +Agent策略: +- 每个候选会话先抽样 6~20 条,按时间顺序阅读。 +- 不要只读一个会话就结束;优先覆盖多会话后再总结。 +- 如果出现明显分歧场景(工作/家庭/感情)需主动向用户确认分析目标。 diff --git a/electron/services/aiAnalysisSkills/tool_source_refs.md b/electron/services/aiAnalysisSkills/tool_source_refs.md new file mode 100644 index 0000000..ea0a0ee --- /dev/null +++ b/electron/services/aiAnalysisSkills/tool_source_refs.md @@ -0,0 +1,8 @@ +工具:ai_query_source_refs + +何时用: +- 输出总结或分析后,用于来源说明与可解释卡片。 + +调用建议: +- 默认 minimal 即可,输出 range/session_count/message_count/db_refs。 +- 只有排错或审计时再请求 full。 diff --git a/electron/services/aiAnalysisSkills/tool_time_window_activity.md b/electron/services/aiAnalysisSkills/tool_time_window_activity.md new file mode 100644 index 0000000..d6ed088 --- /dev/null +++ b/electron/services/aiAnalysisSkills/tool_time_window_activity.md @@ -0,0 +1,9 @@ +工具:ai_query_time_window_activity + +何时用: +- 用户提到“今天凌晨/昨晚/某个时间段”的聊天分析。 + +Agent策略: +- 第一步必须先扫时间窗活跃会话,不要直接下结论。 +- 拿到活跃会话后,再调用 ai_query_session_glimpse 逐个会话抽样阅读。 +- 若用户目标仍不清晰,先追问 1 个关键澄清问题再继续。 diff --git a/electron/services/aiAnalysisSkills/tool_timeline.md b/electron/services/aiAnalysisSkills/tool_timeline.md new file mode 100644 index 0000000..1fd0c14 --- /dev/null +++ b/electron/services/aiAnalysisSkills/tool_timeline.md @@ -0,0 +1,9 @@ +工具:ai_query_timeline + +何时用: +- 回忆事件经过、梳理时间线、提取关键节点。 + +调用建议: +- 默认 detailLevel=minimal。 +- 先小批次 limit(40~120),不够再分页 offset。 +- 需要引用原文证据时,可搭配 ai_fetch_message_briefs。 diff --git a/electron/services/aiAnalysisSkills/tool_top_contacts.md b/electron/services/aiAnalysisSkills/tool_top_contacts.md new file mode 100644 index 0000000..21086f8 --- /dev/null +++ b/electron/services/aiAnalysisSkills/tool_top_contacts.md @@ -0,0 +1,9 @@ +工具:ai_query_top_contacts + +何时用: +- 用户问“谁联系最密切”“谁聊得最多”“最常联系的是谁”。 + +调用建议: +- 该问题优先调用本工具,而不是先跑时间轴。 +- 默认 detailLevel=minimal,limit 5~10。 +- 需要区分群聊时再设置 includeGroups=true。 diff --git a/electron/services/aiAnalysisSkills/tool_topic_stats.md b/electron/services/aiAnalysisSkills/tool_topic_stats.md new file mode 100644 index 0000000..1b3d3dc --- /dev/null +++ b/electron/services/aiAnalysisSkills/tool_topic_stats.md @@ -0,0 +1,8 @@ +工具:ai_query_topic_stats + +何时用: +- 用户问“多少、占比、趋势、对比”。 + +调用建议: +- 仅在统计问题时调用,避免无谓聚合。 +- 默认 detailLevel=minimal;有统计追问再升到 standard/full。 diff --git a/electron/services/aiAnalysisSkills/tool_voice_list.md b/electron/services/aiAnalysisSkills/tool_voice_list.md new file mode 100644 index 0000000..9c8e6a1 --- /dev/null +++ b/electron/services/aiAnalysisSkills/tool_voice_list.md @@ -0,0 +1,8 @@ +工具:ai_list_voice_messages + +何时用: +- 用户提到“语音里说了什么”。 + +调用建议: +- 第一步先拿 ID 清单,默认 detailLevel=minimal(仅 IDs)。 +- 如用户需要挑选依据,再用 standard/full 查看更多元数据。 diff --git a/electron/services/aiAnalysisSkills/tool_voice_transcribe.md b/electron/services/aiAnalysisSkills/tool_voice_transcribe.md new file mode 100644 index 0000000..3f29f08 --- /dev/null +++ b/electron/services/aiAnalysisSkills/tool_voice_transcribe.md @@ -0,0 +1,9 @@ +工具:ai_transcribe_voice_messages + +何时用: +- 已明确拿到语音 ID,且用户需要读取语音内容。 + +调用建议: +- 必须显式传 ids 或 items。 +- 单次控制在小批次(建议 <=5),失败可重试。 +- 转写成功后再参与总结;失败项单独标注,不混入结论。 diff --git a/electron/services/aiAssistantService.ts b/electron/services/aiAssistantService.ts new file mode 100644 index 0000000..f0075f0 --- /dev/null +++ b/electron/services/aiAssistantService.ts @@ -0,0 +1,444 @@ +import { randomUUID } from 'crypto' +import { existsSync } from 'fs' +import { mkdir, readdir, readFile, rm, writeFile } from 'fs/promises' +import { join } from 'path' +import { ConfigService } from './config' + +export type AssistantChatType = 'group' | 'private' +export type AssistantToolCategory = 'core' | 'analysis' + +export interface AssistantSummary { + id: string + name: string + systemPrompt: string + presetQuestions: string[] + allowedBuiltinTools?: string[] + builtinId?: string + applicableChatTypes?: AssistantChatType[] + supportedLocales?: string[] +} + +export interface AssistantConfigFull extends AssistantSummary {} + +export interface BuiltinAssistantInfo { + id: string + name: string + systemPrompt: string + applicableChatTypes?: AssistantChatType[] + supportedLocales?: string[] + imported: boolean +} + +const GENERAL_CN_MD = `--- +id: general_cn +name: 通用分析助手 +supportedLocales: + - zh +presetQuestions: + - 最近都在聊什么? + - 谁是最活跃的人? + - 帮我总结一下最近一周的重要聊天 + - 帮我找一下关于“旅游”的讨论 +allowedBuiltinTools: + - ai_query_time_window_activity + - ai_query_session_candidates + - ai_query_session_glimpse + - ai_query_timeline + - ai_fetch_message_briefs + - ai_list_voice_messages + - ai_transcribe_voice_messages + - ai_query_topic_stats + - ai_query_source_refs + - ai_query_top_contacts +--- + +你是 WeFlow 的全局聊天分析助手。请使用工具获取证据,给出简洁、准确、可执行的结论。 + +输出要求: +1. 先结论,再证据。 +2. 若证据不足,明确说明不足并建议下一步。 +3. 涉及语音内容时,必须先列语音 ID,再按 ID 转写。 +4. 默认中文输出,除非用户明确指定其他语言。` + +const GENERAL_EN_MD = `--- +id: general_en +name: General Analysis Assistant +supportedLocales: + - en +presetQuestions: + - What have people been discussing recently? + - Who are the most active contacts? + - Summarize my key chat topics this week +allowedBuiltinTools: + - ai_query_time_window_activity + - ai_query_session_candidates + - ai_query_session_glimpse + - ai_query_timeline + - ai_fetch_message_briefs + - ai_list_voice_messages + - ai_transcribe_voice_messages + - ai_query_topic_stats + - ai_query_source_refs + - ai_query_top_contacts +--- + +You are WeFlow's global chat analysis assistant. +Always ground your answers in tool evidence, stay concise, and clearly call out uncertainty when data is insufficient.` + +const GENERAL_JA_MD = `--- +id: general_ja +name: 汎用分析アシスタント +supportedLocales: + - ja +presetQuestions: + - 最近どんな話題が多い? + - 一番アクティブな相手は誰? + - 今週の重要な会話を要約して +allowedBuiltinTools: + - ai_query_time_window_activity + - ai_query_session_candidates + - ai_query_session_glimpse + - ai_query_timeline + - ai_fetch_message_briefs + - ai_list_voice_messages + - ai_transcribe_voice_messages + - ai_query_topic_stats + - ai_query_source_refs + - ai_query_top_contacts +--- + +あなたは WeFlow のグローバルチャット分析アシスタントです。 +ツールから得た根拠に基づき、簡潔かつ正確に回答してください。` + +const BUILTIN_ASSISTANTS = [ + { id: 'general_cn', raw: GENERAL_CN_MD }, + { id: 'general_en', raw: GENERAL_EN_MD }, + { id: 'general_ja', raw: GENERAL_JA_MD } +] as const + +function normalizeText(value: unknown, fallback = ''): string { + const text = String(value ?? '').trim() + return text || fallback +} + +function parseInlineList(text: string): string[] { + const raw = normalizeText(text) + if (!raw) return [] + return raw + .split(',') + .map((item) => item.trim()) + .filter(Boolean) +} + +function splitFrontmatter(raw: string): { frontmatter: string; body: string } { + const normalized = String(raw || '') + if (!normalized.startsWith('---')) { + return { frontmatter: '', body: normalized.trim() } + } + const end = normalized.indexOf('\n---', 3) + if (end < 0) return { frontmatter: '', body: normalized.trim() } + return { + frontmatter: normalized.slice(3, end).trim(), + body: normalized.slice(end + 4).trim() + } +} + +function parseAssistantMarkdown(raw: string): AssistantConfigFull { + const { frontmatter, body } = splitFrontmatter(raw) + const lines = frontmatter ? frontmatter.split('\n') : [] + const data: Record = {} + let currentArrayKey = '' + for (const line of lines) { + const trimmed = line.trim() + if (!trimmed) continue + const kv = trimmed.match(/^([A-Za-z0-9_]+)\s*:\s*(.*)$/) + if (kv) { + const key = kv[1] + const value = kv[2] + if (!value) { + data[key] = [] + currentArrayKey = key + } else { + data[key] = value + currentArrayKey = '' + } + continue + } + const arr = trimmed.match(/^- (.+)$/) + if (arr && currentArrayKey) { + const next = Array.isArray(data[currentArrayKey]) ? data[currentArrayKey] as string[] : [] + next.push(arr[1].trim()) + data[currentArrayKey] = next + } + } + + const id = normalizeText(data.id) + const name = normalizeText(data.name, id || 'assistant') + const applicableChatTypes = Array.isArray(data.applicableChatTypes) + ? (data.applicableChatTypes as string[]).filter((item): item is AssistantChatType => item === 'group' || item === 'private') + : parseInlineList(String(data.applicableChatTypes || '')).filter((item): item is AssistantChatType => item === 'group' || item === 'private') + const supportedLocales = Array.isArray(data.supportedLocales) + ? (data.supportedLocales as string[]).map((item) => item.trim()).filter(Boolean) + : parseInlineList(String(data.supportedLocales || '')) + const presetQuestions = Array.isArray(data.presetQuestions) + ? (data.presetQuestions as string[]).map((item) => item.trim()).filter(Boolean) + : parseInlineList(String(data.presetQuestions || '')) + const allowedBuiltinTools = Array.isArray(data.allowedBuiltinTools) + ? (data.allowedBuiltinTools as string[]).map((item) => item.trim()).filter(Boolean) + : parseInlineList(String(data.allowedBuiltinTools || '')) + const builtinId = normalizeText(data.builtinId) + + return { + id, + name, + systemPrompt: body, + presetQuestions, + allowedBuiltinTools, + builtinId: builtinId || undefined, + applicableChatTypes, + supportedLocales + } +} + +function toMarkdown(config: AssistantConfigFull): string { + const lines = [ + '---', + `id: ${config.id}`, + `name: ${config.name}` + ] + if (config.builtinId) lines.push(`builtinId: ${config.builtinId}`) + if (config.supportedLocales && config.supportedLocales.length > 0) { + lines.push('supportedLocales:') + config.supportedLocales.forEach((item) => lines.push(` - ${item}`)) + } + if (config.applicableChatTypes && config.applicableChatTypes.length > 0) { + lines.push('applicableChatTypes:') + config.applicableChatTypes.forEach((item) => lines.push(` - ${item}`)) + } + if (config.presetQuestions && config.presetQuestions.length > 0) { + lines.push('presetQuestions:') + config.presetQuestions.forEach((item) => lines.push(` - ${item}`)) + } + if (config.allowedBuiltinTools && config.allowedBuiltinTools.length > 0) { + lines.push('allowedBuiltinTools:') + config.allowedBuiltinTools.forEach((item) => lines.push(` - ${item}`)) + } + lines.push('---') + lines.push('') + lines.push(config.systemPrompt || '') + return lines.join('\n') +} + +function defaultBuiltinToolCatalog(): Array<{ name: string; category: AssistantToolCategory }> { + return [ + { name: 'ai_query_time_window_activity', category: 'core' }, + { name: 'ai_query_session_candidates', category: 'core' }, + { name: 'ai_query_session_glimpse', category: 'core' }, + { name: 'ai_query_timeline', category: 'core' }, + { name: 'ai_fetch_message_briefs', category: 'core' }, + { name: 'ai_list_voice_messages', category: 'core' }, + { name: 'ai_transcribe_voice_messages', category: 'core' }, + { name: 'ai_query_topic_stats', category: 'analysis' }, + { name: 'ai_query_source_refs', category: 'analysis' }, + { name: 'ai_query_top_contacts', category: 'analysis' }, + { name: 'activate_skill', category: 'analysis' } + ] +} + +class AiAssistantService { + private readonly config = ConfigService.getInstance() + private initialized = false + private readonly cache = new Map() + + private getRootDirCandidates(): string[] { + const dbPath = normalizeText(this.config.get('dbPath')) + const wxid = normalizeText(this.config.get('myWxid')) + const roots: string[] = [] + if (dbPath && wxid) { + roots.push(join(dbPath, wxid, 'db_storage', 'wf_ai_v2')) + roots.push(join(dbPath, wxid, 'db_storage', 'wf_ai')) + } + roots.push(join(process.cwd(), 'data', 'wf_ai_v2')) + return roots + } + + private async getRootDir(): Promise { + const roots = this.getRootDirCandidates() + const dir = roots[0] + await mkdir(dir, { recursive: true }) + return dir + } + + private async getAssistantsDir(): Promise { + const root = await this.getRootDir() + const dir = join(root, 'assistants') + await mkdir(dir, { recursive: true }) + return dir + } + + private async ensureInitialized(): Promise { + if (this.initialized) return + const dir = await this.getAssistantsDir() + + for (const builtin of BUILTIN_ASSISTANTS) { + const filePath = join(dir, `${builtin.id}.md`) + if (!existsSync(filePath)) { + const parsed = parseAssistantMarkdown(builtin.raw) + const config: AssistantConfigFull = { + ...parsed, + builtinId: parsed.id + } + await writeFile(filePath, toMarkdown(config), 'utf8') + } + } + + this.cache.clear() + const files = await readdir(dir) + for (const fileName of files) { + if (!fileName.endsWith('.md')) continue + const filePath = join(dir, fileName) + try { + const raw = await readFile(filePath, 'utf8') + const parsed = parseAssistantMarkdown(raw) + if (!parsed.id) continue + this.cache.set(parsed.id, parsed) + } catch { + // ignore broken file + } + } + this.initialized = true + } + + async getAll(): Promise { + await this.ensureInitialized() + return Array.from(this.cache.values()) + .sort((a, b) => a.name.localeCompare(b.name, 'zh-Hans-CN')) + .map((assistant) => ({ ...assistant })) + } + + async getConfig(id: string): Promise { + await this.ensureInitialized() + const key = normalizeText(id) + const config = this.cache.get(key) + return config ? { ...config } : null + } + + async create( + payload: Omit & { id?: string } + ): Promise<{ success: boolean; id?: string; error?: string }> { + await this.ensureInitialized() + const id = normalizeText(payload.id, `custom_${randomUUID().replace(/-/g, '').slice(0, 12)}`) + if (this.cache.has(id)) return { success: false, error: '助手 ID 已存在' } + const config: AssistantConfigFull = { + id, + name: normalizeText(payload.name, '新助手'), + systemPrompt: normalizeText(payload.systemPrompt), + presetQuestions: Array.isArray(payload.presetQuestions) ? payload.presetQuestions.map((item) => normalizeText(item)).filter(Boolean) : [], + allowedBuiltinTools: Array.isArray(payload.allowedBuiltinTools) ? payload.allowedBuiltinTools.map((item) => normalizeText(item)).filter(Boolean) : [], + builtinId: normalizeText(payload.builtinId) || undefined, + applicableChatTypes: Array.isArray(payload.applicableChatTypes) ? payload.applicableChatTypes : [], + supportedLocales: Array.isArray(payload.supportedLocales) ? payload.supportedLocales.map((item) => normalizeText(item)).filter(Boolean) : [] + } + const dir = await this.getAssistantsDir() + await writeFile(join(dir, `${id}.md`), toMarkdown(config), 'utf8') + this.cache.set(id, config) + return { success: true, id } + } + + async update( + id: string, + updates: Partial + ): Promise<{ success: boolean; error?: string }> { + await this.ensureInitialized() + const key = normalizeText(id) + const existing = this.cache.get(key) + if (!existing) return { success: false, error: '助手不存在' } + const next: AssistantConfigFull = { + ...existing, + ...updates, + id: key, + name: normalizeText(updates.name, existing.name), + systemPrompt: updates.systemPrompt == null ? existing.systemPrompt : normalizeText(updates.systemPrompt), + presetQuestions: Array.isArray(updates.presetQuestions) ? updates.presetQuestions.map((item) => normalizeText(item)).filter(Boolean) : existing.presetQuestions, + allowedBuiltinTools: Array.isArray(updates.allowedBuiltinTools) ? updates.allowedBuiltinTools.map((item) => normalizeText(item)).filter(Boolean) : existing.allowedBuiltinTools, + applicableChatTypes: Array.isArray(updates.applicableChatTypes) ? updates.applicableChatTypes : existing.applicableChatTypes, + supportedLocales: Array.isArray(updates.supportedLocales) ? updates.supportedLocales.map((item) => normalizeText(item)).filter(Boolean) : existing.supportedLocales + } + const dir = await this.getAssistantsDir() + await writeFile(join(dir, `${key}.md`), toMarkdown(next), 'utf8') + this.cache.set(key, next) + return { success: true } + } + + async delete(id: string): Promise<{ success: boolean; error?: string }> { + await this.ensureInitialized() + const key = normalizeText(id) + if (key === 'general_cn' || key === 'general_en' || key === 'general_ja') { + return { success: false, error: '默认助手不可删除' } + } + const dir = await this.getAssistantsDir() + const filePath = join(dir, `${key}.md`) + if (existsSync(filePath)) { + await rm(filePath, { force: true }) + } + this.cache.delete(key) + return { success: true } + } + + async reset(id: string): Promise<{ success: boolean; error?: string }> { + await this.ensureInitialized() + const key = normalizeText(id) + const existing = this.cache.get(key) + if (!existing?.builtinId) { + return { success: false, error: '该助手不支持重置' } + } + const builtin = BUILTIN_ASSISTANTS.find((item) => item.id === existing.builtinId) + if (!builtin) return { success: false, error: '内置模板不存在' } + const parsed = parseAssistantMarkdown(builtin.raw) + const config: AssistantConfigFull = { + ...parsed, + id: key, + builtinId: existing.builtinId + } + const dir = await this.getAssistantsDir() + await writeFile(join(dir, `${key}.md`), toMarkdown(config), 'utf8') + this.cache.set(key, config) + return { success: true } + } + + async getBuiltinCatalog(): Promise { + await this.ensureInitialized() + return BUILTIN_ASSISTANTS.map((builtin) => { + const parsed = parseAssistantMarkdown(builtin.raw) + const imported = Array.from(this.cache.values()).some((config) => config.builtinId === builtin.id || config.id === builtin.id) + return { + id: parsed.id, + name: parsed.name, + systemPrompt: parsed.systemPrompt, + applicableChatTypes: parsed.applicableChatTypes, + supportedLocales: parsed.supportedLocales, + imported + } + }) + } + + async getBuiltinToolCatalog(): Promise> { + return defaultBuiltinToolCatalog() + } + + async importFromMd(rawMd: string): Promise<{ success: boolean; id?: string; error?: string }> { + try { + const parsed = parseAssistantMarkdown(rawMd) + if (!parsed.id) return { success: false, error: '缺少 id' } + if (this.cache.has(parsed.id)) return { success: false, error: '助手 ID 已存在' } + const dir = await this.getAssistantsDir() + await writeFile(join(dir, `${parsed.id}.md`), toMarkdown(parsed), 'utf8') + this.cache.set(parsed.id, parsed) + return { success: true, id: parsed.id } + } catch (error) { + return { success: false, error: String((error as Error)?.message || error) } + } + } +} + +export const aiAssistantService = new AiAssistantService() diff --git a/electron/services/aiSkillService.ts b/electron/services/aiSkillService.ts new file mode 100644 index 0000000..884438e --- /dev/null +++ b/electron/services/aiSkillService.ts @@ -0,0 +1,395 @@ +import { existsSync } from 'fs' +import { mkdir, readdir, readFile, rm, writeFile } from 'fs/promises' +import { join } from 'path' +import { ConfigService } from './config' + +export type SkillChatScope = 'all' | 'group' | 'private' + +export interface SkillSummary { + id: string + name: string + description: string + tags: string[] + chatScope: SkillChatScope + tools: string[] + builtinId?: string +} + +export interface SkillDef extends SkillSummary { + prompt: string +} + +export interface BuiltinSkillInfo extends SkillSummary { + imported: boolean +} + +const SKILL_DEEP_TIMELINE_MD = `--- +id: deep_timeline +name: 深度时间线追踪 +description: 适合还原某段时间内发生了什么,强调事件顺序与证据引用。 +tags: + - timeline + - evidence +chatScope: all +tools: + - ai_query_time_window_activity + - ai_query_session_candidates + - ai_query_session_glimpse + - ai_query_timeline + - ai_fetch_message_briefs + - ai_query_source_refs +--- +你是“深度时间线追踪”技能。 +执行步骤: +1. 先按时间窗扫描活跃会话,必要时补关键词筛选候选会话。 +2. 对候选会话先抽样,再拉取时间轴。 +3. 对关键节点用 ai_fetch_message_briefs 校对原文。 +4. 最后输出“结论 + 关键节点 + 来源范围”。` + +const SKILL_CONTACT_FOCUS_MD = `--- +id: contact_focus +name: 联系人关系聚焦 +description: 用于“我和谁聊得最多/关系变化”这类问题,强调联系人维度。 +tags: + - contacts + - relation +chatScope: private +tools: + - ai_query_top_contacts + - ai_query_topic_stats + - ai_query_session_glimpse + - ai_query_timeline + - ai_query_source_refs +--- +你是“联系人关系聚焦”技能。 +执行步骤: +1. 优先调用 ai_query_top_contacts 得到候选联系人排名。 +2. 针对 Top 联系人读取抽样消息并补充时间轴。 +3. 如果用户问题涉及“变化趋势”,补 ai_query_topic_stats。 +4. 输出时必须给出对比口径(时间窗、样本范围、消息数量)。` + +const SKILL_VOICE_AUDIT_MD = `--- +id: voice_audit +name: 语音证据审计 +description: 对语音消息进行“先列ID再转写再总结”的合规分析。 +tags: + - voice + - audit +chatScope: all +tools: + - ai_list_voice_messages + - ai_transcribe_voice_messages + - ai_query_source_refs +--- +你是“语音证据审计”技能。 +硬规则: +1. 必须先调用 ai_list_voice_messages 获取语音 ID 清单。 +2. 仅能转写用户明确指定的 ID,单轮最多 5 条。 +3. 未转写成功的语音不得作为事实。 +4. 输出包含“已转写 / 失败 / 待确认”三段。` + +const BUILTIN_SKILLS = [ + { id: 'deep_timeline', raw: SKILL_DEEP_TIMELINE_MD }, + { id: 'contact_focus', raw: SKILL_CONTACT_FOCUS_MD }, + { id: 'voice_audit', raw: SKILL_VOICE_AUDIT_MD } +] as const + +function normalizeText(value: unknown, fallback = ''): string { + const text = String(value ?? '').trim() + return text || fallback +} + +function parseInlineList(text: string): string[] { + const raw = normalizeText(text) + if (!raw) return [] + return raw + .split(',') + .map((item) => item.trim()) + .filter(Boolean) +} + +function splitFrontmatter(raw: string): { frontmatter: string; body: string } { + const normalized = String(raw || '') + if (!normalized.startsWith('---')) { + return { frontmatter: '', body: normalized.trim() } + } + const end = normalized.indexOf('\n---', 3) + if (end < 0) return { frontmatter: '', body: normalized.trim() } + return { + frontmatter: normalized.slice(3, end).trim(), + body: normalized.slice(end + 4).trim() + } +} + +function normalizeChatScope(value: unknown): SkillChatScope { + const scope = normalizeText(value).toLowerCase() + if (scope === 'group' || scope === 'private') return scope + return 'all' +} + +function parseSkillMarkdown(raw: string): SkillDef { + const { frontmatter, body } = splitFrontmatter(raw) + const lines = frontmatter ? frontmatter.split('\n') : [] + const data: Record = {} + let currentArrayKey = '' + for (const line of lines) { + const trimmed = line.trim() + if (!trimmed) continue + const kv = trimmed.match(/^([A-Za-z0-9_]+)\s*:\s*(.*)$/) + if (kv) { + const key = kv[1] + const value = kv[2] + if (!value) { + data[key] = [] + currentArrayKey = key + } else { + data[key] = value + currentArrayKey = '' + } + continue + } + const arr = trimmed.match(/^- (.+)$/) + if (arr && currentArrayKey) { + const next = Array.isArray(data[currentArrayKey]) ? data[currentArrayKey] as string[] : [] + next.push(arr[1].trim()) + data[currentArrayKey] = next + } + } + + const id = normalizeText(data.id) + const name = normalizeText(data.name, id || 'skill') + const description = normalizeText(data.description) + const tags = Array.isArray(data.tags) + ? (data.tags as string[]).map((item) => item.trim()).filter(Boolean) + : parseInlineList(String(data.tags || '')) + const tools = Array.isArray(data.tools) + ? (data.tools as string[]).map((item) => item.trim()).filter(Boolean) + : parseInlineList(String(data.tools || '')) + const chatScope = normalizeChatScope(data.chatScope) + const builtinId = normalizeText(data.builtinId) + + return { + id, + name, + description, + tags, + chatScope, + tools, + prompt: body, + builtinId: builtinId || undefined + } +} + +function serializeSkillMarkdown(skill: SkillDef): string { + const lines = [ + '---', + `id: ${skill.id}`, + `name: ${skill.name}`, + `description: ${skill.description}`, + `chatScope: ${skill.chatScope}` + ] + if (skill.builtinId) lines.push(`builtinId: ${skill.builtinId}`) + if (skill.tags.length > 0) { + lines.push('tags:') + skill.tags.forEach((tag) => lines.push(` - ${tag}`)) + } + if (skill.tools.length > 0) { + lines.push('tools:') + skill.tools.forEach((tool) => lines.push(` - ${tool}`)) + } + lines.push('---') + lines.push('') + lines.push(skill.prompt || '') + return lines.join('\n') +} + +class AiSkillService { + private readonly config = ConfigService.getInstance() + private initialized = false + private readonly cache = new Map() + + private getRootDirCandidates(): string[] { + const dbPath = normalizeText(this.config.get('dbPath')) + const wxid = normalizeText(this.config.get('myWxid')) + const roots: string[] = [] + if (dbPath && wxid) { + roots.push(join(dbPath, wxid, 'db_storage', 'wf_ai_v2')) + roots.push(join(dbPath, wxid, 'db_storage', 'wf_ai')) + } + roots.push(join(process.cwd(), 'data', 'wf_ai_v2')) + return roots + } + + private async getRootDir(): Promise { + const roots = this.getRootDirCandidates() + const dir = roots[0] + await mkdir(dir, { recursive: true }) + return dir + } + + private async getSkillsDir(): Promise { + const root = await this.getRootDir() + const dir = join(root, 'skills') + await mkdir(dir, { recursive: true }) + return dir + } + + private async ensureInitialized(): Promise { + if (this.initialized) return + const dir = await this.getSkillsDir() + + for (const builtin of BUILTIN_SKILLS) { + const filePath = join(dir, `${builtin.id}.md`) + if (!existsSync(filePath)) { + const parsed = parseSkillMarkdown(builtin.raw) + const config: SkillDef = { + ...parsed, + builtinId: parsed.id + } + await writeFile(filePath, serializeSkillMarkdown(config), 'utf8') + continue + } + try { + const raw = await readFile(filePath, 'utf8') + const parsed = parseSkillMarkdown(raw) + if (!parsed.builtinId) { + parsed.builtinId = builtin.id + await writeFile(filePath, serializeSkillMarkdown(parsed), 'utf8') + } + } catch { + // ignore broken file + } + } + + this.cache.clear() + const files = await readdir(dir) + for (const fileName of files) { + if (!fileName.endsWith('.md')) continue + const filePath = join(dir, fileName) + try { + const raw = await readFile(filePath, 'utf8') + const parsed = parseSkillMarkdown(raw) + if (!parsed.id) continue + this.cache.set(parsed.id, parsed) + } catch { + // ignore broken file + } + } + this.initialized = true + } + + async getAll(): Promise { + await this.ensureInitialized() + return Array.from(this.cache.values()) + .sort((a, b) => a.name.localeCompare(b.name, 'zh-Hans-CN')) + .map((skill) => ({ + id: skill.id, + name: skill.name, + description: skill.description, + tags: [...skill.tags], + chatScope: skill.chatScope, + tools: [...skill.tools], + builtinId: skill.builtinId + })) + } + + async getConfig(id: string): Promise { + await this.ensureInitialized() + const key = normalizeText(id) + const value = this.cache.get(key) + return value ? { + ...value, + tags: [...value.tags], + tools: [...value.tools] + } : null + } + + async create(rawMd: string): Promise<{ success: boolean; id?: string; error?: string }> { + await this.ensureInitialized() + try { + const parsed = parseSkillMarkdown(rawMd) + if (!parsed.id) return { success: false, error: '缺少 id' } + if (this.cache.has(parsed.id)) return { success: false, error: '技能 ID 已存在' } + const dir = await this.getSkillsDir() + await writeFile(join(dir, `${parsed.id}.md`), serializeSkillMarkdown(parsed), 'utf8') + this.cache.set(parsed.id, parsed) + return { success: true, id: parsed.id } + } catch (error) { + return { success: false, error: String((error as Error)?.message || error) } + } + } + + async update(id: string, rawMd: string): Promise<{ success: boolean; error?: string }> { + await this.ensureInitialized() + const key = normalizeText(id) + const existing = this.cache.get(key) + if (!existing) return { success: false, error: '技能不存在' } + try { + const parsed = parseSkillMarkdown(rawMd) + parsed.id = key + if (existing.builtinId && !parsed.builtinId) parsed.builtinId = existing.builtinId + const dir = await this.getSkillsDir() + await writeFile(join(dir, `${key}.md`), serializeSkillMarkdown(parsed), 'utf8') + this.cache.set(key, parsed) + return { success: true } + } catch (error) { + return { success: false, error: String((error as Error)?.message || error) } + } + } + + async delete(id: string): Promise<{ success: boolean; error?: string }> { + await this.ensureInitialized() + const key = normalizeText(id) + const dir = await this.getSkillsDir() + const filePath = join(dir, `${key}.md`) + if (existsSync(filePath)) { + await rm(filePath, { force: true }) + } + this.cache.delete(key) + return { success: true } + } + + async getBuiltinCatalog(): Promise { + await this.ensureInitialized() + return BUILTIN_SKILLS.map((builtin) => { + const parsed = parseSkillMarkdown(builtin.raw) + const imported = Array.from(this.cache.values()).some((skill) => skill.builtinId === parsed.id || skill.id === parsed.id) + return { + id: parsed.id, + name: parsed.name, + description: parsed.description, + tags: parsed.tags, + chatScope: parsed.chatScope, + tools: parsed.tools, + imported + } + }) + } + + async importFromMd(rawMd: string): Promise<{ success: boolean; id?: string; error?: string }> { + return this.create(rawMd) + } + + async getAutoSkillMenu( + chatScope: SkillChatScope, + allowedTools?: string[] + ): Promise { + await this.ensureInitialized() + const compatible = Array.from(this.cache.values()).filter((skill) => { + if (skill.chatScope !== 'all' && skill.chatScope !== chatScope) return false + if (!allowedTools || allowedTools.length === 0) return true + return skill.tools.every((tool) => allowedTools.includes(tool)) + }) + if (compatible.length === 0) return null + const lines = compatible.slice(0, 15).map((skill) => `- ${skill.id}: ${skill.name} - ${skill.description}`) + return [ + '你可以按需调用工具 activate_skill 以激活对应技能。', + '当用户问题明显匹配某个技能时,先调用 activate_skill 获取执行手册。', + '若问题简单或不匹配技能,可直接回答。', + '', + ...lines + ].join('\n') + } +} + +export const aiSkillService = new AiSkillService() diff --git a/electron/services/config.ts b/electron/services/config.ts index fb05832..6177dcc 100644 --- a/electron/services/config.ts +++ b/electron/services/config.ts @@ -74,6 +74,16 @@ interface ConfigSchema { aiModelApiBaseUrl: string aiModelApiKey: string aiModelApiModel: string + aiAgentMaxMessagesPerRequest: number + aiAgentMaxHistoryRounds: number + aiAgentEnableAutoSkill: boolean + aiAgentSearchContextBefore: number + aiAgentSearchContextAfter: number + aiAgentPreprocessClean: boolean + aiAgentPreprocessMerge: boolean + aiAgentPreprocessDenoise: boolean + aiAgentPreprocessDesensitize: boolean + aiAgentPreprocessAnonymize: boolean aiInsightEnabled: boolean aiInsightApiBaseUrl: string aiInsightApiKey: string @@ -184,6 +194,16 @@ export class ConfigService { aiModelApiBaseUrl: '', aiModelApiKey: '', aiModelApiModel: 'gpt-4o-mini', + aiAgentMaxMessagesPerRequest: 120, + aiAgentMaxHistoryRounds: 12, + aiAgentEnableAutoSkill: true, + aiAgentSearchContextBefore: 3, + aiAgentSearchContextAfter: 3, + aiAgentPreprocessClean: true, + aiAgentPreprocessMerge: true, + aiAgentPreprocessDenoise: true, + aiAgentPreprocessDesensitize: false, + aiAgentPreprocessAnonymize: false, aiInsightEnabled: false, aiInsightApiBaseUrl: '', aiInsightApiKey: '', diff --git a/electron/services/wcdbCore.ts b/electron/services/wcdbCore.ts index 116ba45..de46281 100644 --- a/electron/services/wcdbCore.ts +++ b/electron/services/wcdbCore.ts @@ -85,6 +85,10 @@ export class WcdbCore { private wcdbScanMediaStream: any = null private wcdbGetHeadImageBuffers: any = null private wcdbSearchMessages: any = null + private wcdbAiQuerySessionCandidates: any = null + private wcdbAiQueryTimeline: any = null + private wcdbAiQueryTopicStats: any = null + private wcdbAiQuerySourceRefs: any = null private wcdbGetSnsTimeline: any = null private wcdbGetSnsAnnualStats: any = null private wcdbGetSnsUsernames: any = null @@ -1060,6 +1064,26 @@ export class WcdbCore { } catch { this.wcdbSearchMessages = null } + try { + this.wcdbAiQuerySessionCandidates = this.lib.func('int32 wcdb_ai_query_session_candidates(int64 handle, const char* optionsJson, _Out_ void** outJson)') + } catch { + this.wcdbAiQuerySessionCandidates = null + } + try { + this.wcdbAiQueryTimeline = this.lib.func('int32 wcdb_ai_query_timeline(int64 handle, const char* optionsJson, _Out_ void** outJson)') + } catch { + this.wcdbAiQueryTimeline = null + } + try { + this.wcdbAiQueryTopicStats = this.lib.func('int32 wcdb_ai_query_topic_stats(int64 handle, const char* optionsJson, _Out_ void** outJson)') + } catch { + this.wcdbAiQueryTopicStats = null + } + try { + this.wcdbAiQuerySourceRefs = this.lib.func('int32 wcdb_ai_query_source_refs(int64 handle, const char* optionsJson, _Out_ void** outJson)') + } catch { + this.wcdbAiQuerySourceRefs = null + } // wcdb_status wcdb_get_sns_timeline(wcdb_handle handle, int32_t limit, int32_t offset, const char* username, const char* keyword, int32_t start_time, int32_t end_time, char** out_json) try { @@ -3370,6 +3394,204 @@ export class WcdbCore { } } + private normalizeSqlIdentifier(name: string): string { + return `"${String(name || '').replace(/"/g, '""')}"` + } + + private stripSqlComments(sql: string): string { + return String(sql || '') + .replace(/\/\*[\s\S]*?\*\//g, ' ') + .replace(/--[^\n\r]*/g, ' ') + .trim() + } + + private isSqlLabReadOnly(sql: string): boolean { + const normalized = this.stripSqlComments(sql).trim() + if (!normalized) return false + if (normalized.includes('\u0000')) return false + const hasMultipleStatements = /;[\s\r\n]*\S/.test(normalized) + if (hasMultipleStatements) return false + const lower = normalized.toLowerCase() + if (/(insert|update|delete|drop|alter|create|attach|detach|replace|truncate|reindex|vacuum|analyze|begin|commit|rollback|savepoint|release)\b/.test(lower)) { + return false + } + if (/pragma\s+.*(writable_schema|journal_mode|locking_mode|foreign_keys)\s*=/.test(lower)) { + return false + } + return /^(select|with|pragma|explain)\b/.test(lower) + } + + private async sqlLabListTablesForSource( + kind: 'message' | 'contact' | 'biz', + path: string | null, + maxTables: number = 60, + maxColumns: number = 120 + ): Promise> { + const tableRows = await this.execQuery( + kind, + path, + `SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%' ORDER BY name LIMIT ${Math.max(1, maxTables)}` + ) + if (!tableRows.success || !Array.isArray(tableRows.rows)) return [] + + const tables: Array<{ name: string; columns: string[] }> = [] + for (const row of tableRows.rows) { + const tableName = String((row as any)?.name || '').trim() + if (!tableName) continue + const pragma = await this.execQuery(kind, path, `PRAGMA table_info(${this.normalizeSqlIdentifier(tableName)})`) + const columns = pragma.success && Array.isArray(pragma.rows) + ? pragma.rows + .map((item: any) => String(item?.name || '').trim()) + .filter(Boolean) + .slice(0, maxColumns) + : [] + tables.push({ name: tableName, columns }) + } + + return tables + } + + async sqlLabGetSchema(payload?: { sessionId?: string }): Promise<{ + success: boolean + schema?: { + generatedAt: number + sources: Array<{ + kind: 'message' | 'contact' | 'biz' + path: string | null + label: string + tables: Array<{ name: string; columns: string[] }> + }> + } + schemaText?: string + error?: string + }> { + if (!this.ensureReady()) { + return { success: false, error: 'WCDB 未连接' } + } + + try { + const sessionId = String(payload?.sessionId || '').trim() + const sources: Array<{ + kind: 'message' | 'contact' | 'biz' + path: string | null + label: string + tables: Array<{ name: string; columns: string[] }> + }> = [] + + if (sessionId) { + const tableStats = await this.getMessageTableStats(sessionId) + const tableEntries = tableStats.success && Array.isArray(tableStats.tables) ? tableStats.tables : [] + const dbPathSet = new Set() + for (const entry of tableEntries) { + const dbPath = String((entry as any)?.db_path || '').trim() + if (!dbPath) continue + dbPathSet.add(dbPath) + } + for (const dbPath of Array.from(dbPathSet).slice(0, 8)) { + sources.push({ + kind: 'message', + path: dbPath, + label: dbPath.split(/[\\/]/).pop() || dbPath, + tables: await this.sqlLabListTablesForSource('message', dbPath) + }) + } + } else { + const messageDbs = await this.listMessageDbs() + const paths = messageDbs.success && Array.isArray(messageDbs.data) ? messageDbs.data : [] + for (const dbPath of paths.slice(0, 8)) { + sources.push({ + kind: 'message', + path: dbPath, + label: dbPath.split(/[\\/]/).pop() || dbPath, + tables: await this.sqlLabListTablesForSource('message', dbPath) + }) + } + } + + sources.push({ + kind: 'contact', + path: null, + label: 'contact', + tables: await this.sqlLabListTablesForSource('contact', null) + }) + sources.push({ + kind: 'biz', + path: null, + label: 'biz', + tables: await this.sqlLabListTablesForSource('biz', null) + }) + + const schemaText = sources + .map((source) => { + const tableLines = source.tables + .map((table) => `- ${table.name} (${table.columns.join(', ')})`) + .join('\n') + return `[${source.kind}] ${source.label}\n${tableLines}` + }) + .join('\n\n') + + return { + success: true, + schema: { + generatedAt: Date.now(), + sources + }, + schemaText + } + } catch (e) { + return { success: false, error: String(e) } + } + } + + async sqlLabExecuteReadonly(payload: { + kind: 'message' | 'contact' | 'biz' + path?: string | null + sql: string + limit?: number + }): Promise<{ + success: boolean + rows?: any[] + columns?: string[] + total?: number + error?: string + }> { + if (!this.ensureReady()) { + return { success: false, error: 'WCDB 未连接' } + } + + try { + const sql = String(payload?.sql || '').trim() + if (!this.isSqlLabReadOnly(sql)) { + return { success: false, error: '仅允许只读 SQL(SELECT/WITH/PRAGMA/EXPLAIN)' } + } + + const kind = payload?.kind === 'contact' || payload?.kind === 'biz' ? payload.kind : 'message' + const path = kind === 'message' + ? (payload?.path == null ? null : String(payload.path)) + : null + const limit = Math.max(1, Math.min(1000, Number(payload?.limit || 200))) + const sqlNoTail = sql.replace(/;+\s*$/, '') + const lower = sqlNoTail.toLowerCase() + const executable = /^(select|with)\b/.test(lower) + ? `SELECT * FROM (${sqlNoTail}) LIMIT ${limit}` + : sqlNoTail + + const result = await this.execQuery(kind, path, executable) + if (!result.success) { + return { success: false, error: result.error || '执行 SQL 失败' } + } + const rows = Array.isArray(result.rows) ? result.rows : [] + return { + success: true, + rows, + columns: rows[0] && typeof rows[0] === 'object' ? Object.keys(rows[0] as Record) : [], + total: rows.length + } + } catch (e) { + return { success: false, error: String(e) } + } + } + async execQuery(kind: string, path: string | null, sql: string, params: any[] = []): Promise<{ success: boolean; rows?: any[]; error?: string }> { if (!this.ensureReady()) { return { success: false, error: 'WCDB 未连接' } @@ -3979,6 +4201,110 @@ export class WcdbCore { } } + async aiQuerySessionCandidates(options: { + keyword: string + limit?: number + beginTimestamp?: number + endTimestamp?: number + }): Promise<{ success: boolean; rows?: any[]; error?: string }> { + if (!this.ensureReady()) return { success: false, error: 'WCDB 未连接' } + if (!this.wcdbAiQuerySessionCandidates) return { success: false, error: '当前数据服务版本不支持 AI 候选会话查询' } + try { + const outPtr = [null as any] + const result = this.wcdbAiQuerySessionCandidates(this.handle, JSON.stringify({ + keyword: options.keyword || '', + limit: options.limit || 12, + begin_timestamp: options.beginTimestamp || 0, + end_timestamp: options.endTimestamp || 0 + }), outPtr) + if (result !== 0 || !outPtr[0]) return { success: false, error: `AI 候选会话查询失败: ${result}` } + const jsonStr = this.decodeJsonPtr(outPtr[0]) + if (!jsonStr) return { success: false, error: '解析 AI 候选会话结果失败' } + const rows = JSON.parse(jsonStr) + return { success: true, rows: Array.isArray(rows) ? rows : [] } + } catch (e) { + return { success: false, error: String(e) } + } + } + + async aiQueryTimeline(options: { + sessionId?: string + keyword: string + limit?: number + offset?: number + beginTimestamp?: number + endTimestamp?: number + }): Promise<{ success: boolean; rows?: any[]; error?: string }> { + if (!this.ensureReady()) return { success: false, error: 'WCDB 未连接' } + if (!this.wcdbAiQueryTimeline) return { success: false, error: '当前数据服务版本不支持 AI 时间轴查询' } + try { + const outPtr = [null as any] + const result = this.wcdbAiQueryTimeline(this.handle, JSON.stringify({ + session_id: options.sessionId || '', + keyword: options.keyword || '', + limit: options.limit || 120, + offset: options.offset || 0, + begin_timestamp: options.beginTimestamp || 0, + end_timestamp: options.endTimestamp || 0 + }), outPtr) + if (result !== 0 || !outPtr[0]) return { success: false, error: `AI 时间轴查询失败: ${result}` } + const jsonStr = this.decodeJsonPtr(outPtr[0]) + if (!jsonStr) return { success: false, error: '解析 AI 时间轴结果失败' } + const rows = this.parseMessageJson(jsonStr) + return { success: true, rows } + } catch (e) { + return { success: false, error: String(e) } + } + } + + async aiQueryTopicStats(options: { + sessionIds: string[] + beginTimestamp?: number + endTimestamp?: number + }): Promise<{ success: boolean; data?: any; error?: string }> { + if (!this.ensureReady()) return { success: false, error: 'WCDB 未连接' } + if (!this.wcdbAiQueryTopicStats) return { success: false, error: '当前数据服务版本不支持 AI 主题统计' } + try { + const outPtr = [null as any] + const result = this.wcdbAiQueryTopicStats(this.handle, JSON.stringify({ + session_ids_json: JSON.stringify(options.sessionIds || []), + begin_timestamp: options.beginTimestamp || 0, + end_timestamp: options.endTimestamp || 0 + }), outPtr) + if (result !== 0 || !outPtr[0]) return { success: false, error: `AI 主题统计失败: ${result}` } + const jsonStr = this.decodeJsonPtr(outPtr[0]) + if (!jsonStr) return { success: false, error: '解析 AI 主题统计失败' } + const data = JSON.parse(jsonStr) + return { success: true, data } + } catch (e) { + return { success: false, error: String(e) } + } + } + + async aiQuerySourceRefs(options: { + sessionIds: string[] + beginTimestamp?: number + endTimestamp?: number + }): Promise<{ success: boolean; data?: any; error?: string }> { + if (!this.ensureReady()) return { success: false, error: 'WCDB 未连接' } + if (!this.wcdbAiQuerySourceRefs) return { success: false, error: '当前数据服务版本不支持 AI 来源引用查询' } + try { + const outPtr = [null as any] + const result = this.wcdbAiQuerySourceRefs(this.handle, JSON.stringify({ + session_ids_json: JSON.stringify(options.sessionIds || []), + begin_timestamp: options.beginTimestamp || 0, + end_timestamp: options.endTimestamp || 0 + }), outPtr) + if (result !== 0 || !outPtr[0]) return { success: false, error: `AI 来源引用查询失败: ${result}` } + const jsonStr = this.decodeJsonPtr(outPtr[0]) + if (!jsonStr) return { success: false, error: '解析 AI 来源引用查询失败' } + const data = JSON.parse(jsonStr) + return { success: true, data } + } catch (e) { + return { success: false, error: String(e) } + } + } + async getSnsTimeline(limit: number, offset: number, usernames?: string[], keyword?: string, startTime?: number, endTime?: number): Promise<{ success: boolean; timeline?: any[]; error?: string }> { if (!this.ensureReady()) return { success: false, error: 'WCDB 未连接' } if (!this.wcdbGetSnsTimeline) return { success: false, error: '当前数据服务版本不支持获取朋友圈' } diff --git a/electron/services/wcdbService.ts b/electron/services/wcdbService.ts index d4c77ef..829bb0e 100644 --- a/electron/services/wcdbService.ts +++ b/electron/services/wcdbService.ts @@ -489,6 +489,44 @@ export class WcdbService { return this.callWorker('closeMessageCursor', { cursor }) } + /** + * SQL Lab: 获取多数据源 Schema 摘要 + */ + async sqlLabGetSchema(payload?: { sessionId?: string }): Promise<{ + success: boolean + schema?: { + generatedAt: number + sources: Array<{ + kind: 'message' | 'contact' | 'biz' + path: string | null + label: string + tables: Array<{ name: string; columns: string[] }> + }> + } + schemaText?: string + error?: string + }> { + return this.callWorker('sqlLabGetSchema', payload || {}) + } + + /** + * SQL Lab: 执行只读 SQL + */ + async sqlLabExecuteReadonly(payload: { + kind: 'message' | 'contact' | 'biz' + path?: string | null + sql: string + limit?: number + }): Promise<{ + success: boolean + rows?: any[] + columns?: string[] + total?: number + error?: string + }> { + return this.callWorker('sqlLabExecuteReadonly', payload) + } + /** * 执行 SQL 查询(仅主进程内部使用:fallback/diagnostic/低频兼容) */ @@ -542,6 +580,42 @@ export class WcdbService { return this.callWorker('searchMessages', { keyword, sessionId, limit, offset, beginTimestamp, endTimestamp }) } + async aiQuerySessionCandidates(options: { + keyword: string + limit?: number + beginTimestamp?: number + endTimestamp?: number + }): Promise<{ success: boolean; rows?: any[]; error?: string }> { + return this.callWorker('aiQuerySessionCandidates', { options }) + } + + async aiQueryTimeline(options: { + sessionId?: string + keyword: string + limit?: number + offset?: number + beginTimestamp?: number + endTimestamp?: number + }): Promise<{ success: boolean; rows?: any[]; error?: string }> { + return this.callWorker('aiQueryTimeline', { options }) + } + + async aiQueryTopicStats(options: { + sessionIds: string[] + beginTimestamp?: number + endTimestamp?: number + }): Promise<{ success: boolean; data?: any; error?: string }> { + return this.callWorker('aiQueryTopicStats', { options }) + } + + async aiQuerySourceRefs(options: { + sessionIds: string[] + beginTimestamp?: number + endTimestamp?: number + }): Promise<{ success: boolean; data?: any; error?: string }> { + return this.callWorker('aiQuerySourceRefs', { options }) + } + /** * 获取语音数据 */ diff --git a/electron/wcdbWorker.ts b/electron/wcdbWorker.ts index 2992d01..64e0e67 100644 --- a/electron/wcdbWorker.ts +++ b/electron/wcdbWorker.ts @@ -173,6 +173,12 @@ if (parentPort) { case 'closeMessageCursor': result = await core.closeMessageCursor(payload.cursor) break + case 'sqlLabGetSchema': + result = await core.sqlLabGetSchema(payload) + break + case 'sqlLabExecuteReadonly': + result = await core.sqlLabExecuteReadonly(payload) + break case 'execQuery': result = await core.execQuery(payload.kind, payload.path, payload.sql, payload.params) break @@ -197,6 +203,18 @@ if (parentPort) { case 'searchMessages': result = await core.searchMessages(payload.keyword, payload.sessionId, payload.limit, payload.offset, payload.beginTimestamp, payload.endTimestamp) break + case 'aiQuerySessionCandidates': + result = await core.aiQuerySessionCandidates(payload.options || {}) + break + case 'aiQueryTimeline': + result = await core.aiQueryTimeline(payload.options || {}) + break + case 'aiQueryTopicStats': + result = await core.aiQueryTopicStats(payload.options || {}) + break + case 'aiQuerySourceRefs': + result = await core.aiQuerySourceRefs(payload.options || {}) + break case 'getVoiceData': result = await core.getVoiceData(payload.sessionId, payload.createTime, payload.candidates, payload.localId, payload.svrId) if (!result.success) { diff --git a/resources/wcdb/win32/x64/wcdb_api.dll b/resources/wcdb/win32/x64/wcdb_api.dll index 05b6d963997788ba3cb97e59ba905b12151e5f23..15e5351d27e6ff70a370e5d6f3ce6dd7027b98f7 100644 GIT binary patch delta 514773 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

LA!5Sb^|7D~r+H^H}ceT#Ra6Fq-=REj1p8X3WCH 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⪚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 z zuGmcM!d=PXf!MhM({W`W)!W6~i@ol^cL&(l(=1Z;Q3vX~iye_Jb)ibT*`VSN-(W@F zG7_w9i5cxVb)rIBcC&Efl6T;Noz5S}CfHcaT1h@dsp%fp)TpA3^~5Z-V+?KH!@NqB zs0_)#qEouz-BAOqEisiX7en{=Ft<|N&MKJ5dy@Ljq$Q52S~yYVi6`_#zyBl#fF^aJ zo|sjoa87U)cjW4c!~T;viko+}^3Vnr&Y8-~EMi)?m-*Y@$2gj|{7+6^%$u6+#XN3x zH1*hvNz_T$hLGA^7suDqe^#4XMbl4vS#aRgJdi`L@<7_5050n`0{PdaHM-!ze7(Yu zL0duLvndXDq%kK#gQLVUtX$xW7kar>@{wN9fs+dWbAb>@o!20PhIE4tSFN$O+R-sT zrH;nqT)Rui zC6$lp+Fe396A{k)$2STH`@ml zESden`bkld^!XPSR;|@8zN&yLa^uYB;w_C}VYCqo3w7~59-sKs2+OPI)Tg-SVs?!A zINh(LxXNn9Snl$zQHG`;WMic3zEt!OM&A#<>)RY+hBDXIYrtr+c3KyT>ZEm|x-mRo zV;>szD;q1R-Wl(HWi1TS@7S;5pm^9tNAu+7UNrCsJ1%W1O*M{U0eXHj>UR{*kOiT% z@hIymy>3eOneZ{~Zb~tktd{XvXISA$qQ;6ksxHmUgs0H0Ew zpQrX%z`4P{54o37?-UEOmV!6am@KwIdfzakY&LsgkoI27D0zJfE$}Jx-s+nZLk5QX@9eipwy)%WR@wE@Mx~*$WwlE6m$q^oQ96 z1Gva& z>UD$FvPoKmN9)l z&}Iz}b-u|wZPIvX+)Z}hW(6+sqpr8`Ed`;B3AflxYw6&L^~LTogA^P@CGN2V_tUj- zX`oXPW3i(AI^MhDcoN^>wzC$EyT^J-U8~aLd#sX|hk%QAiZT|9#?7iJFLN-9gE-b}F^-*~=?|D^NhF9H$<95sI_sl@OLb^N#4sTE| z$Yoa5Rw!p``kalBM!lyK&soi4J6FBUI~3Up=F93;WdDNov0LQLmCEXOH1-9{ls>BJsa;E36xOQ`<_}8qh ztjsUNUm9#uhsSaQ+sX+oXK`>J%I!iVnk+8whH!)6l!}$bm+#@P_}+_3eqdfweJ`r@ zft7ch)!Z6G4ZnQyl=|}@)c*svD-2NRrw?pFx#NS8mnU@cUH6QBR8cm$`(z8~!<$cc0d3@M+cC(_j^a z`vo}e&oGPPLWZl!{Jv#XJqNfLINi+gFZm4D$Y|ETEYQ8o7%X+V?Ai%a0scIP{TSXw zadQ>A@-O>S8viF9{>VxjBCvOn@jb?NpIBAt@fHgC1U0pL3-$d39b$^7g`Y5Q9U#-c zpI945e@xo5)f1o~TfM)Sx_oATBz|}TdiuVbh5};DSFmUrXZ;fWGTt(ie^NJMPi!0p zEy$nATq-8))^PuruuI83jNT2AYDOydS#e0ygrfpS*rnm>(?+JS%gJuD)&5&(%@HQ7pzs*6@P?orwyjj3EX11JcBwK6n8fDzJ@U6KBX9x&eAj+x@%AdJC@%i zQ_-vz?4A$OO2HNMXG;(~hor9%g49!;8%+6R+L^)!R?%&Di zVy8Sb*nOJ8vtPSSCZ@FZPwXHDr6hiorKJ}3QJY{u*`LbW14OO+NJp4*Rr>K(#v(0yx8U8lv4$_=}$sr>W0YZ;@BN*{yN@hUxXQtsJ(Kbe1Sb%o9p zQ*KLinbsFqyke(1=jImXNEyzNZkVI1{gDQKh;eDcQT~IZ0{nZ>A=zD|S}w|Q2{Yx-E=otq{v~xNsq}T+xq|0u@Zk$;7k{2EmQ>=5 z_n@isonE0Ys8T5;SLXMZ|6`6dh7OhPLiwA$MsTPYWnE{slPv? ziLOdJV;TO@B(j`W$33GQSEYyRb{Lcb;g6?~+DAudct$Ut<{Z2bwXc~+dDL=VW?hCk_$htkg_?gw5!M|g{~RTaf+ zN_v^AQqS=?ii^~Vxs#KT?x`3It`C3FtJn8ffeIW`wF*f5<4QeGXO(0xWwkWtWX4v! zrEQS5{Xu)ZmBx-E7Vqx+GXi710zgZ_|j1;Lct%=S~NHCQWVlJDsVh%#?oLPaOi$`teU`PN4EeQuol5 zN=lft<|buULZ1G3E@ZaqfO4|c_YbI4Wo4~2VJ{u5telkW57U$?9QHb8R#BQdcE@`# z*{W>@hkbF6ysIjsq;-2}aaE{-gq6-zy+hu9N^q1fLH@#k=^rY|TZgpjS(UIFY)4VC@iJd3y_}$Kf zGJ};m2H%WN!Ai2hI0NHRe*b!Mfl_KJXQVgVDYlkU&8Z5sI@~8P0Xh49?$L}|N>yp& zc{*52aVxnzg}1@EyE+V}p=Z^@cj>QMN`PG*l$xzd+sU)GvP7D^jrP@6%1YUH=zeXb ziBBlB8Yry&f$BAYPVveiJubqYjgk6Sb+ z3?{MV;>K`#A_RMlZMt+f{J89VLq)PN^sqa2Ry_g>*E^* zAn)FwD}amRQ(%7gDg9`#ny`UjWRZdgKaHXz$&$T?Bx5gO6TUH3-?o+fg96fXR zDS8#I1UuhYgA~5W<-8VfQctX*I`tHP$?g<&si#zMw-u{1d6**eF&#fitLiD`+-vfT z`6VUgr%ygf59%ouy?ieSL3dKs)f_Ny6_XE1YWPX25TR6YUof^Hj>vo*Z%=4t^b}e1 zXsDB)zWW62j8HmA?N5+Hq%zp^CBNIzGHW&(BiH3NBKm2x^Xj?dv?x+(;I(s=PL1oT zg4FOL)q%$~YOb#Q-_(>n&Z#NyRw#KCa%xTc_?Sj)>q6;~`RVJ9(UB;{OPYL)9`N6u z$H-704Rn!DkN7h0DIUmgpmxZpmOe%?_0iYfWzvxPN*U>gJ~Y3+;%i;L`divtU-2xy zs2}$e=RXy)s-Hv?7BDwyaz8ROP<*6eeaWwZ5?l8!?y&yv;uk)ByZD8Vg%`gLTTzpR z%%l2y+%qgzzwkR-%?ZRXrLBQ^g%w%@JFmm7Uq#oHPD>I8^=-oAf<;pV^sC14>x0K3~GF$xYZisv4BQ?W)$?P8S#3b8rM z2ZdH%MeQ3YP0B1DP$(-l1w_}#Cy*1jijFr@ERBmF1_da$i>MqDLi!iXXl`y7wHH%c zOqgPvat2n*N1?eI`I!idZIM;9s4<4P(<|v}V8P;iExceY3INr(!mfG+X z>K@9k~H{)OpRm9Remhh7@ zipMKA40cW2dGuJ9jMq(-^#<$ibFAp@L0n&UAOXs&|8Dx2pfr?f_RNTCu56I3OU%T2 z7g*qp0=3jn)U1^fXLGYF&h#fHD52JV7AtZ*3gC~efGcn(g|!B* zw@EaiwK7ji*g+-RC{1OjB9n5BDuq#cQhr?jCBol8{0Z6=)78a7FK zyN-q?DV3#bt!ZVFf=vtS$e}ARlv+p4x+)E%hplLSS7o5oeXUkhrB>9W8wTROX>_%l zVv;)VBJb{sOWVfWPi@Y`B2D?Yz!Mmsj@-9ad;cU%1I&$|Rx?>@+(DNE&&Ck3YVgftXDZ3BYb=n+#~5|QLV7t^=_>gxq^={Bx-@HuGQ$4kj4yn)0N3=v8B}bj z;wp8IpunNZ3#r>o^88L&Bb5%MBi~^Xv|$82|4u21zV#M*WJNm+ku>zI5=`}nDdkEg zSHv47k?)T4(^Gu)i7(x#b7}lA#Y6J@L`#M#=OksWR`B{{#n-Tfl13=uRAe~9@gnS5 z^nrNiWY!|&S3AJ`1!1#p@JM_bO&G4kNSkJB80?}b&HprE&ODwmd`5WZU)ODm1C)J)w z+ed{q)lTWAC4>OpC3XbyjTt?m#6c10+GH!*mO#tT-)G#eF1d$r6?nxgngw-3^=6wHktFVS+GT2cV_0WG5C*tUccQX#ejbjW4} zA?p`}tht0vr(!C2?+1ai$I%}O;M}c6G@KiF1oPXl=VMb%7SGds0qe*k8F3o2=q&mHm|`Nr55N@FLqY22&NMVlDJKn2rNwDVb?IU`I-90!Y&3-mR!3Xl z(W-+Lp1wR$R0k_OowNwr2rE3z5CKJEt*8Offk}!-TsiIA6G5e$7AY#Iv=|Lwok#RtSq26Qc0p@S?;SN`e$Wi+0Yyhk#jh4Zr@wTJgHX;mj;5Q)DEMEcH+2 z98Wuzq+4zjKNH69x=|TJXDTlZt)E&6A4y9H0DL5O^jIWfk?MIpmV{W6dPIxO6Zmu= z$yWW_N?wL#7XMKfTfNQLGaK3h7e4$pS7{aWJ0|S^JpfV%?DgSdo%{K3zQoWLC1N|_ zD;}eZq*SN5^OSAU(iT*Iz7pdyD~%73!tvmwJ08ZS(aQNsZCqh=W4;pY_|}(?7a0=w zu*_*rl@};sCASRa1#4Gh#J~-N^BO*C1dU$+%<2%TvJe{C`Xj|IRJP)RmVXv18Krs* z{z|JLk!P9uPsT}tYe2daPlm-904}6ZmBmoP$NSOf#mXSbC53VpgXI^;Q{^9&DB~9k z4mTw6HZdz|`T!dDgVG-NHC_KfNpO7T!F@5?KXE@udMwpkqIC5t5}ogBILFQHNRxSh zc1c;6oEH6Q*Ak^oDc1ihW!erj96oWFO}EESFg)$ZJhl`KE{C@nl@XOvE6{Jt zln6EfZhOwc(G98Wa=_MaNS&6$6*RmL%~{R|nm)7>zlNH0VY%Xsg@u>+k+1`>*b1ax z?M>DA@9y5zoc}K9O+!~G-u`v%ZS$_B8HL*?#gS%{IUSoKv3_xSc#&L}?;L2?3Z+7^ zs*Ym5rsz+5)p4ZfD-<`Wv?IwYmCD6y4Z?AK>kXiM9FCJrB)`5>$ST($tBZ3V=<-jw;W`av55`Mu~zz z=d3}V`^90a+pU6c<9S*E%0_o1%UVzt*ewsGXL0&>t+yS=}#oQoo-c<}HotijPs}Pz}cN^?Zq~_}tPv^m2ymb|^ zhgX~1O~%9a>v2;-0~gx7UJ0@G0pgvH6i?e?M%0H+W#S2|6V4Q{L1|?@tqUrGJ+*d& zAYi<%bZ7u(0@cDa%l2Mpja3&MsPV@C$JUt#R8_qHA1}rMm?sB4zQ8^&)o4Ee%74C9ZqmF&0dmM|;B3;3a zz0>5clD)sLlg#kdaz=b=hnc(DJuSNR53-1pH=A9v>SUb0q7T6)`s&o7OrD-nft*f5 zO}&rYEt)p3kY~8EZu;CKZTB5Xl6v*MgoNzSPH|@FNA6CIe(fz)&zEN>k|OmYSUyxC zr>4NY>$5+Siy7C+gXZ6SISmvZG%eOh^p_p1s4xS%yPKKhHSXx3*}LS-w8p(O=-AE* z6SdZDg5m|Xtaa}XdSpk1dEpcHLqRTqE1$UU4tjHYg}Hm3`;PVh`_w%!&=oX%{TH9< zt*80JOjLpUJ=Z<*UDX1))@nJ{)cxGu-qj<;^!;3JncaQ|<#q3%ylko&y1_j%sLkdI zvuuMqy3Iv-J9A!P-TCrFwlt;p?pyTXGd%L>|3w3NbW?@-b%T3y&>Vq;FWm7#Jp{78 za8C`|yRpLj^@TewXpundM!8bGePhM?=^NehVYazvlehH4^eygj zF5hit*A`hWwwh)_3*9s7jw;i;!1gDb`jwdlg|dnpkzz^;-IH7wrkePzGUL}iYvyfr z$JUQLkB2fUzwFZLe4xp32R3#EpEt+1%5k53&RpFpdq^LhHJ)wmrY#$vlee7Z@nm_X z*wQn0y!_!=70LRqBI5E{bLTeMN08-c#x_|8OuF9`Z*xD=>}Bz&^4OFA<42Fx7dKL6 zIoH*{e&Tlb@IdbZ7|9OaD<2-kLzz#=0#T}wDSb;@71bJ+Jtst;Mog58%!-IV&g!#( zBSLls2Bbe78!#(WZkNRQE>FE$F<@6s`P{@3%)6COm@bo6=E#>eWXmHsvps8&4P!ZD z=~p^D116dFJ7phYLM!v=PB|fDpEWCX$~EBitxVBQ*|a_8F=Z-upEVtKiF}pE4BaK` zn%h0*$zARemrq_G+wD$v&A8hX?siYVZt}`9S?mQTM44Vi?krcvS+l*!J-I~(_$;g7 z?BVi=c{8S@g~R13(>iBO{2q6BMEMzQmr0ialaQUQ|M~7aXQu6Or@HPvv;O-%?zaP7 zg+BB2K6g~Nqo-{f3^brAKGDDg4qs+*P-+se3@`J+I${ z%Hqov@*sbmlP39q47IoY=BWd6#WZ8P$vxnn=IVaGaepP_x>J$4{VVso?psc3F?m>V z#)&1x?xC*w4b8A(cgwrlH>498+ak636%jGgfE>BBl0e@kfo^OkCDQslZ*5K1{p^Y zs;D}`|JYH4KW?IktHWPowlt`Nh|ac>c|_0H6%kD(DT~%j9UP}$lc6Rv3)TFyP#oE;!@_{}mHu}ORHfXfLTiz=dK z{)m|%f$4;~{zw@!{%1$XqSBW6W5&sq67xse8-v}3JmF9I4tW}pWwvE^?!Wlelf7&H2tRE?g6?HE$)i1*};=)xy-9a z-R&Fh{idp%Yz+S^CqntM+>hqSQFm0QsZyWLd-C^NkIt?m=dI6V^i@Ro4obT+Zfp(F z7ZCk;(6m419@L=aHP*zGd?+RTm^-Td`X9v94e|^j3e9h%b_T-EO|ey1iCk@c_ucxbCGHx5u2%cjPe1OS6X=fJr>&5&*kzyj?S#9T)l~%h zWR8p3XL|kOHZ^J;3JiF;YnNv0&;Q~c73f;>jfp=c2W!{e>nEOa-x=8TjZpP_oU9Nk z`=EL(yeN79339uCjqg`EMSOYD)I05txUS(I9m~N#Uo>4#%V{Rt79SRSB7Xj&dHA%P z?q^OhFQ1mX@_&A{{+HA4{eiB||Dd?*f4fYPUl!+s-Nx^Ccj`T7o85Ku+Hz5&y@$_0 z%imSl87Q8f+7=klN0uCQpOrgw48ol|&9F0aIXh{mNjW1E?XoY;u`}+LjT?L*$5zHI zAs%^JQ68L=u~4js+QuQK{#kb)Z=c;_FX}dFKt)tf{B9AibMJX~m$1jT1P16AEaW{1t0KbMV%|9~Pj!5{*|fUg9u;=aX5_|8u1u4i zHk)TIxZ}c_R7<7I$xUYO1-CaWYm-y=j!kC#Z|*)}H&;v5{wDLzZ|=Bm9VC)6HP?~_ zsC?N*Popt%aBSQtgHmr6Wn8S7Rj(rAoOF=XEVF$5B4d@hJ6fMsNxt8029~}4 zaj9ZfIF9rb5zyH;cgn{X-8V!(Lgm&K5vM<|QeF$?npA#I{`B2WbK(zomo81I+@T`k z#VX~x^OA4_OXiVPBGkV#ev97Hiuh@ViT_hJQs#VarvB;fWA#I>2I|orX4RkW0Wsed zRE0%*E?<)3t*plqWp6cON4)I$NWcR>HxXs-sK&R;UoyZ%{%nl2{MM}U;aR^A$_ido zU`Ch89`5udkzo*w9m_-y@Se@p$Y3!kjdEqBZF-B;F_7yoq+afPfk zNB?zax-OkufA1yt4wvimk4*ckve7#YFcC-2EJ* zUl*2@{_Ky>o)neNG+?0tL0JiK`raC$>FE<8zZ|ul7?r8){?|-T^)&NB}M0c zm8$LV6pEY08po}Z%z^W3 z$XCB^rqv9G)o~({3D0TxAsBA)ktq(bA`(YRYCuMjth_?|*%`8sJDhPt#jKz1OUSAb zCD*?JS)ub(O@_E0)Zs;0!Ld^5fcZ7Tq*$nARW@SHYSZ&NtE21WDRa+tR&>zz9%W|X zbylA)-+fgk*PF9zbSpet-?x{ETE49UXV1xBt>+AOE=E4FSXSZt@GDbxoi)U@?IY8# zw$-EFN$qP<@&9hga`I~TGBdZf)o^sM=t6w?fWo;LUC!Kjox3Q`>4ba)em$jh4D(GSU`~)$~B5XI(EX=zf3Qhl2-v zE4?a#`?Ib$xVbtwKe(Ozr%C-^l3nD#UBMTBF?YDFb`8GvlvT`5OSm_*Ml10)J7TM+ z%)H>Xat5@Mv5EL?XD_AqZz__21xIJqnD@z z{`19MhlaNIHNT{L0<%2&kP`E^d?@+#C4YBtQHgo9jur17Dxv`uUsnY0DKVSsSU0-n zmzXPctVSJEOC(55|E;K4a3oXKE*bqBioi9ym#>SM^PtH?T{C)$jP zz}dY-qZ{tn%C)wyujC~>`*+<}w)*zT6WL-VuNYQl)v45}h}fBD`h;0gt{KH9Im~M4 zdMRubb8Nthk0B{D{LMaM1kVWrAmG$z1;OkLFT6tFvp$ zkETO?EBfY)*R(gN{AE993h$iwfm&e$`BEV8sl&_`Ni9?w z|Md&}pF1Jr_!ddFkmP{68%{*bjNluibvKkWn0cL8>*;#c9Bg1+-}1qpQV=hoH8D9~xNWK6S zVfA!{81r0&)v}ZKZLL9GZ<{~3v?AhbwNjYSRe7QTXAh5L`c$s@I>PF6!!t{y0lET6 z_@`JR^ob_rD=8E85uwo8M;ktvkLVvD~h24BLMM zD!cjU*X8;nyZ&@QH$}r1iwr1 z`x<_idGX(y_|3!bhxi?X-(8Efa1nm@;&(rO58$^Lzu(~Z5PlEi_XvJ#O9xd%S@?ZZ zx}+j17rzVeD}PNyBtzb+ssAOuW&UntoeAjy;pR7uFVgDU=a@vszSPrIf7XI@=??$8 z?iXbOUJ$RGCtRr^vKW<}>`-RzYHYP~#ou6_Zfsre3cJBPa--G2o0?JLlI{u3xGz=i zMh;K*o$0G5o*f<;0JIOAQ=&wg1^cqu6XV~ZT2<);|2j$A`pH^f59%vJe=+s#bb^1L zrn48s>M`q2>uZKIvD$glyGbKZwPdAe&J2}gFGx_nM_30TobZo93IT}K+~sZIkTNQ) z!3ynkg1@Yf?Vwbu`r(!3vlk?5`cR)TFFevjk*$mt*%4ei*p`-n&{eTf3wQs!pTj%d7Q~UUvr_H^0l@gf^3!Sv`7vI00*nma<3c z@pay%k7(#M_YopQew(s3fyoh{#m`}OUkBHyk%Oi?q-<61n%oM~qD?z>Xrqw%x< z$zVZkW9~-N;c0?!Rle>0tP59UUJCV?$<3_m&5Gt$!?t(i=yW&SBYT`eQvDqs_2qDq z?ThTF<(MlitmaEvSdl^DGSZv2u-bJz+rGM{w?=~zkC}r|tHi%p!!<>cOFCLjx_Er+ zRI76QrDVuxABYAw~pTB1KC)q zH&soq>&&B6(g=oji*SPGEtNcBxVzBSa|9|yb;8T+ZqB0Klq!3njb-c0pXRHu$5les z8F~9ObWrDuW@SsOP0Z6X5e(G&$D`_%)D@>Tr#NzsJZk=KX|?t)?*VOHGW&}B>{c$;wHcF5;l{X<`^N z;+5kaN1agu1?@uIWDi0!~H{!?`Hl4_w5oHe(d0HTx9HT}<$mz_=a$FZ8g12W zvZFDEg-2bEORMHiY39*rtHY?oC`U++sMd`t$zD*P+>IQo+>V^4+=RSTxehr=*%fus zoR79zjw)&EFpEeZP)YWJd{x^<#>n`LoT~B<$vMhzk`t9*YJ1U4jImlqq^hv815tdE zWW5+;HHr@Jgh-)pj_4@OUQnWCEy`ghpi`OoD#nVa5h8Ysr@hsrNxJCxKJ6%FE6t+R zyB*6+v-Vb-R>Q9u@Y<0p^#q>1AWsja$)c9rUM_Y|XP8Cpt%lvb&tilm>d|@W6g^VK zE^W|y1nJKXkmFc9ElZ0dYT#iS@YZq|$Z!}~-@4ks6Al9plM}U)nLnV}sAL@F2<2^L zpX%I1j+bWp2gbpXB9%u|J_v=IGND_v{+n1aybYpUH?93f-g%HPWNP82)JajU+xjBr zjfxId^PpT=)U@nqHTAA-1@}|6+V_R4W+abF7ISh%9Wg#M0`ey*2d9#84y{2Q^l1|1 zgY8O=8uFU+_ zSq9CC7H|h<4hvTeni8#WM+w52t6V_Mbmdj#c;#GjvhrfGM>$itvL9s-C#q}=SEZ@S zdAr5-b@mc=LWz0ldMmm`cUBmtEs3VF5}6QW_U$SMt?Bw;XajTRdMn)9kjF4u*;*}S zW9j4njH|MIsX+=A&Er%-6E87^GB13DP!?;SzSEpB&`NjJmnYV3TOCfqZocX~O&x^z z(dHLJRmt}3$$4f$7ps$ZlEeH1@<#?L&0Ot`^}XBjT8= zoW?a3+=u(NWjH)5en8L1B`@1^Yhq%_;TPl=V(6D{7oD@z~s})f{&gB?n*$2UiuMQoLgUbRwNpnT;Hn&nD8{fsCv|kQB@*pGR8JOjT8;Y#*sLv z<3e)oq25xaHa-Qt0J)FiUs@ldRE}KLTObyki{-~9UAyJj@JKe2}az`M>)FmBHw3lp_u|kx}s{ z)PZx+l%ukyWH?cmoX*IvVML4N22y~3wq1qxW8>e^4QShsVW`^fy04zB>MRNTR;CIy zPEqlgauSsH@GwR*uDp-(TBW~ULm7+GzaFimh9)o|Lyvkl$o5g>*BCwVn(2$+=u!TG zoUU9<&Q;z)E>tccmng3y2k0ozC3}6 z@-Q+kvE#`e?WG>V)#ETbv~9#iv#+<+CT!AOjG=n>jqGQd7us4aB1%SywDPI~%g4>( z7fshVtC4q|WZ4HRj*G?NoIP|PWs=jCpCn@*P2}P`T`O6>2_1;CNz^G;{bA%h)rmh0 z9W0o8*fv!j(xD71gj_AKQP!lUFe|j7ITL3!2&LHq&6#)1)b3-o@os4#u2r@I6|Po^ ztc^5OZcNe?Ix|Lyl=va?mqcgcL%*J?Pl0M#aI!LRXkc5dpv$EFr)^X5;W+sZ$_gP`T8 z{_pj8Od_=M(0%P2tO2e^8tbi^a5G|%73R9lPCS2u+`Q?gMJu}-M@I2hRGz5D!tDh= zqgH1Qqpp$u_ia>pM7fSsDG@8w5-zew<$s4k9;5Ozh)>ciZ!Sd3sU*P7n3ePht!Zw&!3tT@-wJk}UR4#zn#SrG8WK`29bXY~-)z&h zztz@d?EH!cq|}p=-#14(xgsJ${iuv{topz5ZpZF=)?iOYiHCR5JU`2=3VE^AwzRvy z74G_cmYNTjuYOpOu3uKF4-HML8?8nSCd~S;;Xll6H;N}uL94Ut@0l#R?nWsppM*rw zlTtMN)tUb-+9lc4y~%2$UyOv>(3`AAuI{#hIX8)ci65F5Z?ZavAAa<|WgnVszR|M( ztWb?crcS&(Opy90EAJaGWnZ&%9+aH$2LGRd6_d;>@nWEdt@gDVSp5hMTu}qx$)9Ob z)7KA>i`v9T{_DZ76DuEQmeE*JM`B!~CPrzl9wcdb;1oSh&jo`^^;k}(9OL~E<%J<4 zFCwFCKk6jue34JNH%upm* zLC>!p$$82Tuf(|lHOyoUYRP{(5LP`}!}nz9jCAO1cj&AqqwGotzeS!7LoYLtpw0P* z4EYn}VmYX#(ZOtVxw>~Z&xu;KJ_Il9 z)JNB(a+%Uom49O}@5XqMdPyzG?OUzsIWpvrJ9vhJ?-9neV6k>b**3l8QgIa=jvv;+ZUN-*|YOsQ@+h<~S_y!OzgJ zPpjXR2Vrkpw?TFvy;J>fJK^Qti&Qym+ILdxQ zd5%nw(ufIk+oM_q^ z6E>^-FgZ`+vW^$3r*V?S|_sKqykMqA~Cp6;)a*7ssh8&{d`yUxQ_7B*s@=4?b zEqgmTK-=7IvB|sDYT<3CvdVFcriD`r970AjFT1LnUrJ8U8cvdZ8lofQ6qWBMhp4B8 z9D` zfImfx$pwT?y%WgTSxF?9s?H#Cv2vWPuiS~8qwFEaDuoGVjRB4(6st!cs>I$@ev>RG7rEy~PE>x59IO1e&FaMrTVMO~ z9$R1KV{N(eP~j@?OcQa!6b`e3z0sZIsH+@#9@UK4RvokJXdz55`>s@!tB0wo^E)|K zYdl2`Q$9*ARS&-;7b|Zi=PQ3oM*LQUGJycTQDH_6w<5joaltQjVbso|ivF=Ie+s!= z?MxtRbp45BTx<>^!_PQ!qUv-aFI79G%g{y)=5_lq@4%ltVXqDnRhqyIaH7p>Xv!EA zz!7rfDuRORt^MQzb*_*cr*_tnacJg|QQ0ywoXa6Em9k#{JSI}LvNUp<8hwbIqw-`j zA~eR<(aI9YNy`1ms34XMr`rnafhG-2QCo{gqd^|!%+apDDolA>t8I9??pIe1jabb* zaK(5=T9HlHT|uieRhCCiP+oSW-28r*>`Fg6(rS496y~6cBw-%gs1{8d#C*6Hcg1`* zQXUixQ(0x57)Dnwqb}J0gB+uE{Yr+VV-EQNa*pb3bI3m<=d1ifhx|=)vC3caIx?Ok zmukl24*3jnnD)p$4*6JetjdQv-90mTqgh=G8 z{0te9_=#Ms@^2jSU6)MEC|NbWp|Z-DqMcdPLQK7m5;Mt&(Nr>;e-}ALy&Fl+Q65N! z7rlk;9+q*11G+7;J1sb(gE5l2SoUq?23M-e11L{adu9Kce@E#PbvQa>RkZP6G#Z>w z4%1?@xL}5fG%{Rzh+M8Zr8(Ruhd#?fKaM)6vJ)9LW3#v!WR~Annn`kd&1g2wc>&=icc2<~h0vQK-KXRtFFqRyrIy*LCkd)}A%hC&2@h9m{ z^+IyG+AJmGx~?pTy8=l%B2$=AtotJq$O-Dc9AI~9*DVOpE0t|hL^zd~YCV_(XO}j| zsp^PU^5i^d!B!Y;!I2td=-BmnVfG=Kg(D^B;W=7yh^(HABmZM{@V)Ofj;tCF7mG9s zVRR%?Is8uq7cKW?&~=qx{-aVZw_QsAFjvQ0ErN>wC^uaTtcWFZLTi}1yR8rtf2XX& zK2Y7tNjg$P^$JTP{`1MHYV|2{j&i-v(HFTIj#K>*8u)$m99pLV^nXc41O_Z}Zg*#e z9vx@j!ZSPWv^LfXbwS4BCC!B?q88fuW8&Rbxu-M3(jHL zp{rgnH{T_XKrDsFFx!S^bpZJP5znMBy#M}ewfA3TVFQmRg#$ILlOZQ>=&O*FA5Gj+fmXNQg$viVGJGiU7TFV(+ zjrv||eMMg%DDpir(oCFa^{O-8QRDF6%-a*KM)&lf%%k&G(WeNhPg~ZEay`5H!^qNW zvNcS`!a46n=qGB~a~IGWpE~N{7)nxZ`;uugNftRPHNW!sfz?-8B44$#9i`{mthLQ1 zV^utj3@;{<5tdP8gljMvUi2ZOY-cYMDBQ|c(h4HT`O2TSlTXOV=8^JK197mzxkt#w zD!*?Dnhg1P%Ar4;>{FcqWId(%KRu7IMAA2>xKSF@>1m^>@C;xL>dz?y6P2F5T;Q{rW_F+Lq-oI zkWscD*~8tmA)_&O6^a`&cjerUR6vN>3ZIW-KVR(@@R2Rqb89W9pIfgG!aPuQ$Vhskhm?-`Re-D=sq zR5EF$e~k2&Qbj*=c1#0x>pf<5`B}a^2K*C5wE*gOP^zJ zYO5^Dll3GSKu(kb(lzfSqW`h7xSu6T_4dx4!quIe9Xj+mv;1B;r!7JY($%}I`WLok z>7q5i!u4gLvY!tPmMfq4p_R}%PKKx7l4Dh84_O`ZzwsEH2EXXwXURG8{7!)XRTh8~ z*<^%kuEXeTG6umkht5P>u9f}%5f4|%T>RXuiUFGMr9GqKuG7G zKp(*C^JH|v?_9R!tI_)?N1u%+YX#B;mqwrqQgvR~!V)=h-1t8cc6PzLk~YKdvpP(F zp}G^A^hGBis283^@DS9S>tWVS(;+qFG&&(kxi2|R`Fb+kcBNGZ{_i=}d}fY5+TTY0 zOsf73u1H z897Aff*dkV8uM&coitlt-F%3Qc_i7PGY0JC&HV&sWNP7lWbBp4l2N!VIYeU^>Cm^x zd0IAr>`|xJJ&BINt&EhPG3KDNpN!qr;(?qTN_BD=#0;Ef;>g-!8Fa^P!=S^&`=*p| z4zw5Mn&cEY))ydLMcU-x-aOWok3Iu0(6Y{TFwA1ryRIh@cX$*$8#>^NvxJ?Ct%|{e zWWA-W_Wd{*JsKl+Wmf$vm$T}3a(1jc&bX&p_qt|$Vp69`?{*kymQS+=dV_yKEvWtC z32>3d={z}6JvmNJ(GLBVjQbIL9QvEc@Nf;;r>%RBjQ)9*oS^-aO`e*fiMdQd|PGAip#h7+w$m@glY0q+}#@I*2^L*HU}POLGPAF$fH zJ{Vx4ACxQJmyRP0u=1R6)k&vVACa5ITwTZdQ^@hk6C84nAA$S9{RUxr zr$I=i>H!=lyK3uaSW!d5)M({(4-TKJKf+a*{)3#LuKendA0r2FK%5+;535I*-Ve)L z6MI+-Onv(tS_RLh{fY5l`|<>};?>P4rhsww50)a5>cLI z5U(~41O7(LKyf!2EvfhcEkuQXlA&{&td;w}Cqw@$GAh_Eyktyhgt<9Yo@rWd%+yrr z=95FrOR3g~$aDQM7+Pzi>{D{nAu9uK>hRlf^a6NJe&;u$cGT7e346->c^`Gd=+-mVJRW6guC?-pW8LT zGq|YrxEUj(MBSFjMGMLMv-*7I1K&a~MyokMRxSTGT+Jlwns^B1#X5!bCF{ySEd4M5 zmhyGl$z_QESHJ^u3gwl2g3ezdEaKyJ(7&u))YQN^raWpOz{AN!t8Y7#hl@ri;TWT- zF7_j9g;ILR08{v=oN{C61{%>L10`|oU-TOqrwtPAW2_5NJa7~?wHf|xWLs+?wd~Z> zOu_Qw499hHtC!&J2-S&kTEps zlS5R$rtk>uOfB&5k?KfYAfw_F%FeZfZ2hMBR>^lVWCz;5Hf#8*j-(>r`*|jAmaH7^ zi8Bw)lGEgHhs^=PI*74w>A{S2^&*Cxt4=f{V@VN4PF49yZlXe`{5v>Ws@;2z4E+*v zk`9|O-)QG~dEHQe!~#5Ezfo64@;00*cVYIzm_5UE-4lHDquv##cgUzdc4x^vQ$hTSBwQgp0Bw{E> zB$|=cRcXm)nnmoMVF^T{-5MS#8tgO0&Pe>wuPPEcwhu5_q6g`TrqwO%Meosz9mr^5 z3o;&DZ`}YcChGyKQQXEehMkV|e=`_PXxjhxVd%ofv2PKjxCWYWfC=qOap#C>CFdbC zV2(UYy2*oUbVq9@;bY0IZ2#*uTCZzJ0!B3Qys)nW?q54s;t zqS1}KER?8y=_aF+ibL=omHbIYC8xNoMJKeR+_#U^0+`jp1Si}sumK-A%{O^;|_Scjvr*9AT-Q~{R6xk$| z>AM~4(+^W=eUskS`q~GzkqTBlVRdO)&tWuJ7;6!kqp%2CY|Ot;i0{*7lT~a*(bhjN z)7I2nhwokcSNh&4w#*bfDZXF$s@nGxWcYrV4Bz)E|9`$O?uz<4vc4g9eJ{L4-$!>T zGfzHcb@2{x80{%s>3gA+^Dm!+<0n=-GLnk80I>IY%T*_U@*~PU(x9KKoX3M0-u`d^ ztpFDbS6$O*nGR1|^*iTle&qrhJ6&(GM7mmfi43dH9Vq8Jmzht?BV78Y+2uPDx`0Zc z5*~B-VKL+ddZ5HozEpV%o0BN>z07gf_mnP>6D`-@X+4m_Vt65^0i69xxzI?}Iu`Tc z%_4OwspwBUrKGzVVr(djtD2zH{;KywC zY6a7oC{~`!!o}*uY;wBtG;+N1L~^O}C^9M-?9k~$#*S=faVsF!Tk9xy;LJU&Vew&>Z>FMpA~=&3lid=vd*Z z?Wbhzg_FEvkft1GYbtjlmn(b7g<5&ILnnm1RCO*F!NCGuMW$}Y;K@||LnE1xs}{Kp zcOUvKS!aY{lwM=w1qZK31xGZeLcZ`OlMW{I2Gl}{TI58vdTBS>2L0c_Be{wE z3o}Yo={qtC>{G5h7sd1bwbtN!NxttUr@!V>K)P(!LU!3ggAK!=QSw=ir=PXD4eRHy z6-&lhrY$*M>x(3Nlr1vOJ^^ICo|dN8zTRAZRzAJ-TW2&GB`-aU;GyIqZVjf1714g1 zTE)^ol6ufC!_-8k^4Uitnes3-fT;rYW#X>tkvfX(2^cOJgB=-tDlr)?2*CeB^f48FnC0g$VVQ0NRZ8u@_t>|8NIP9#TKJ2_fhMgDxQ+Dol zGhNG;&qsUV!!SqLct_bD|0&ycyV)ycZ+_iT_P1^D6ZQT=M!nyW;r~8ir~hAUQ~x7O z!UC(lx0}P*b1amry91Bg#*}B+#+2_N2k0z3mh4d;N{&~)k({jDjhwFBj-0F9gzPQU zL>(qdlwITiJyHF=6|M6qpCQL9|3t>c>o??dmG2_wDsLbcDt|;SQGSOUpjTc?w#Ksp zO)OwWyzB{#DJ3~2kt67?5Mc4oG`777Rn{PE=i`=_d{xs=VH=QjgAVTdR-YhLor4)G;&$(?Ys7_39QhHGh&G|9>!%tQpU7 z7Xm}{OkuU51JuE?bsITH&v&2MhLk@PcEy8u(Po_5zmNJl5BtZHai$$k zPFDGV|Jdoe#cUEg-n?fKB*gOaW;7s2{VydWkSEDF`y3(1Xn^;V(a(is-1u2XMnLmy zx%#=xmb0(kk8Z@+oq}notisES;&h#MX>*Sl+4n35r zJb{ef3WHAa0`$=Gd8i&e6tV?9RHz=G+k}V|YXnQkrOJoMVY-GXBF8Fk6n6I3s!hg| zBa_a!MOOWr+prRJ*&G%^mpw>EmrW+4%SQjl*uYI@>+v+3oUg%{MlRLiI+2{C!($W~ zLuD`-LG5F+9zUJQUiKv98!{v=wuTlApZ}t&ha_h`b8^+i zgV*G|!5ldDYDZYM5C06w@yZB88{cA~BYFtDOose|qb1?&m_}ci?_QJ#wyyqzgTbT0`h%P=6Oy#`Tr1P$C9Bhj z1FfoKcI;lX%%kql;3lh%Y0*xnmJSq24P^>VyMF^Bh_1PFgIWBN)jGV6=2u=-258-F zH<-Peb41Ei}htI5W^`pL|{}uTV`6Z5g7qRz%$6(U3k*OK^wvrlJP7ad^LE`XHGm~WG>g?ra=y{lYYZ9u0mG1j61LTPn(H=}K-I#+S&gBj&|P%nJ~)j;k&w+>BB)zT&8B2_v>#@BK(ECi){OFVK-^k&D@mkD59kP|XgV5je`EFO`e>JK<8H zT0K=07xjtCpWhCv@F?^rFiz>e4+1BKh)ys)ja9z*30i})=gIK&I2m@nC96mNJ>=B- zT6mM4(2O;onEtQIm1bH5t~5O&lPk^F#xdgOG`)j z2ErU%>1w(Lvl5h-K8ChJer_%N4b%QAA;aH8 zJ;OvYBT^>;i=40i%b;ugpYV?~>91Lx?&bw)fO>JNh9mlkh;od25&8odQL9IfVpTub z;q}Ee)nn;ASu6G*Ut>aFw;DCcllyeC1=5DW{NpJG^PRc!*{RfxH6qOD*R7^Olj@b3 zM_!k!_aU@^8v6?K@U;(FM6xY4;hjqL zS*+?TC5NcaxsT8Wlr13_tIi>^w?Gp~?5$!gu<)~?YWt;pBdgcj8B+X60~Ckh zSphH%CnK-XTIRwuGbdIDS=^&M*p)kx3x)Bh!TuYOXQw0m!rN@4$K(^iU5SjRq%c(YLo?Oxb>aB7RHIb@N+>#8Y8`=A%vW zCjm8A{uHrh{->dX!_3@wt=5BEIrDtl=Jk^iNmTOSTX;RNT;&xvpmIEE(qIMRg7(*1 zVSfUk)^fQ?dMFP$*eOfl26(29%n4-Oi9=sL)Ef^-U}rAiIn{hSx-b>SH}U#!RPS{Cu~s%?24 zlu#`(u!JdW=zVw|&-~X)QUj?;rp|jZrl!lEQhd*fb`8S+7*6#fJL>n`D+8=$#Zt@A z%8`Uhv)`_6*Y9LF`IkJ}T-mN^l%rh}$#%Oc#F%Iy65Clq9rjO^)49kIxsEJhH>){I zh*o{|rY@6cSDSNa*95igAOAl33-Lbx5Ui!Bd;sMM%00;i%I(S6w0t82{g$qt)U)Nv z!SCB6;<^v4x^>s}LJJc#r|3QVxF7O?)jsj5_oVL1uw`oggDSDVQ8Af}a-$vcTgcGA z!J*UTJ+tKltFbqnvP2yMA!HoCmzQ&7YCWao66KR*jO8Qbbd~QXr>dPoa*pykGRo$W z;o~y$L=?_pB3BK~BNr;Ck@NI`dWc-AoJ@ujW5}pDfm|#VOE2E;HtX`_I;OW9!vQ4+ z4o9cK;&-28kd;VHqV2C;tu_2B9LOj!Ksk%w8rbVl_5%t|>IYStzQzqf8f;v8!z?Ihb@!@d~S!_xyGC9~=>@ak>hqL90dj z^3hW6IOF~2h2#>I=XS+>601+qEhZQH{3O|WMNWQFAN2!(lBNO zXyMd780>mF_0J+_>bA9S8DgHV2gk5Cz{T35i8moExRTgGoiLgF`~~DRp1kjrwn{VO z!z8B#OGM};fOJMq2(ps(<%Q*^ITgifI3Bp&gs+sTXzB`6Z;)*EJg`!}OL?Q6cv%vW zQQf5O$^%Qi5p#`eRR+0ar4@Yt^RHLCeU=Qjf8(kFZr@8enmLYayM0lNRl2>2C2X&| zFb7@_{FN_FrE4r7%f(1j1O8BMMdOWvyD2YMojb_M%D0l^mHU&AD0e02sGTTsp7u#& zatZ8{v9t}$}oPrW^dd2IsjfF!{&T) zd>Fg)<(h$J)@u3G$?TduELDGQ0uJ6(oc}+q8a&cn(bS63rZu&#vLjCgqrBa%-!TPG z4tBwivvW2vr$7he#n*87D|`LtH6ib;r~_NyL_pHjfm6Rj3Bg%GIU4c?IY}G-A{k|$ zCFiT1$H)lIbTWc@H(AHGH0nWd$t&XqXYuE6LECe*>Za?QZSPFaQ?%`^XdqKLf^4_% z=Nis9e9aV``SN;a9M)f>x1!@U$=4ml%r(X4N{&uSEp zI~h)_C&P)AWH|8_8BV-x>uc{mPqusO#UKPYRhL|=^{L)=vT3Z<4Or{!tkHU^>tuy=f9AdZ%NjsHXW&iFq~ zEqiPx1O^)KT4_~F6<5X|E$K<)@T@%VobdT&fxkR_W zz9sA35dR)86Sx-1PLm-52l!^`NrcwI}*V2M;NOG+*w zr&KE}JH}OJfY!2Mu-UO*R+;OUVH2fRstA2AAYpH!=)3K{*-=t|Wl+^4IR{MpSN=kb zZlai+0{PIi@SVS(-!Wm=@y96=&B0`#md5il%`dw^) ze{O}^{XUXfxq6%rWcfnn-nL!kj>_`*kX__2@lN{6PMu~7t@@=kMu(mAZa>wmya?IV4#VuQP$rE+WH;407er{2P%9!O)CDq>?Z+-*ZN4 zB(-!BkhnGe+pOMXwQl&=Uy}UK%MdIc4-^JZld&o?unjNs-*QDAr1!o4+I2`UnPS;-TOfFPzMMgs+ zY`J#ub!0g2y|NIkh4;Uc;r%JH?fq|m!utgE-c9e*w71{lp04fu8fw|jKXFZJI#Y0L zesw)w|5Hrl>S6W>S-0K%_mPvd%JJk(<>BN!8DZW-Mrb#YOElzb$O!Fw4*gdh`q>Wsxn4(s*<=l- ze;T{T+G=KX$wCw(Uiz!s|#RA07&UyA4y*W(5wV6#Z3)*@Uf0y;L92D^GF`7VYrjyai zyUA$%9b`o1R&uhozCRf)>q@o!j0 zAL!8U?a=Q?#xc;6jANq#8OKbm`CO9VV7iovc4um+ek0@H`-O~(zazuZePlSgg$zeO zA)`}2u;m*K?PXWoa4rDPpirzr=2PYw{r{1x@! zKjhmf$HmfVhkPaFv8w--L;f=52_g@ZzqMCw=!xg;3!RsD%8P7+sD{<-5#DYHs4Gp$ z*c$223xKx{Bnsl5$u4`4kzaKe7FRxSQBGPGM$A5^NFIOb~BW(~dT*C~b{BCT3 z#4}OMdmAUtBa}IMCGb9rU|V45-DpI)_G}%N&}#}gvI1B_wIub&Ig~Hah}7KA%bqk{ z!|m^7*6xzao;}&T?8z6QFBb`3_L%tHR&eC=4aLpMm4jLln@^mzFMGVG-tR>V6V>YQ zbTHf<#kD3{xRW|);OFEVHt;Swh?ulw2{dr~WHb;le4Zuj20kX$%ODah-0^#mNwm`7ts^@cAnkocSsbyb4CUzkM2Q zMVt1JwN3uc-rmT7>uZ=1$KDuCUki1Qt&yxxtM&-xb;Vk(rs zJcuP)n!S6hI^J;Rgy{$iAtx$deg>BEwZ2kvky<)QhNUCqc$M!bXDSzxu@AA1T&i~R z$SAvvJSs&CE4^T?a#1m$^T9WDMea+2~xe}~97{&uwk7M}OsF9*ou4*yd&ni_+5PfmjRy1s zy$i*QdZ$^gAFfv{XT+R=WpyKkU(S`aDz1P2x z8R_a#IypcM&3cMT+JcZ^1g5Z-@RO96s!k3Wi87Y!5p7vIx$vt4zat(gkEE;09Zd@qw_BB(*%99G(Rr_gk@_^OKb^0k)YiOE( zW!3AwS$(NgLo-*2q-xI08XTKZqPIZ8GVY7rBDX+tWHk8ZKV|OwN}i>>%UL*CJ-U@m zOB4_M{mH4yUCC%pl&zy{q{ie@vFZ;c7b^#n^OgU45+OzZ`N_o+ii8Sp)Stg#fMK}S z)d$RFPg;llyDwoF1_;YA{FGX$QlX^0*Q6e~CUq}UTF$>Eianz|^9i`1f%Q+N3nelN zWY3O?Biid7RA?~5!1 ze+Sbv{Ov==aPLfpi>=6TJ%Ws(e;v6{E5GtM0$-y1JK1*k(s5p9#jC%K9R9B4X0_e- zn~pm}`usJi$F4~|cui^|Q|P|OSaE<0<7Xgq;q2K$`WgU!K z#D4>Id@8Sdk@7&{Hk7BRyb&4ka@#glUO}6P*Pmp>>$Gy^-}w06k@1zIz;=gxy+gjz zA%BaE@$fPk9r(OM=LuV`L-}Ecj`v39rAa{2(KYym}WV2yktyKGad4& zY4-U;`}i(L#z=CxRyNRBgfa!d*}ic^7ht%G)^Pjpmr|zO`ZoUD+U0PL}>P7Y&ea^N~OC`qC2p0~-7jFcK5r z?iKR-(y*-U6lnx}i$ApAXv#Wl1|GIXO-}kB;)Xa6BO{*iWQ47Ua^-XOvHb9ZD)}yb z$9jXR>P00rv|fFJ`TK9ppNFkpeYVd=B`~&L*k0C1ba1RLXEp}eQZnQVXPbMzvpU=r z&`&1Y%2P0MMo2;;8)p5-Qk+T$@y<-Da^4!80^r-iYqYTrPta#)%Vt0)LG_a!1|!lFxS*Y$ zsMA?7l?rvb+(FKf0^-p9bSO;6Vh0w;*9IC8wx-COJX*|1tJ9a8i%!|M;{$jqGO| zwPhqVJ&z8)Y*?dYZ;QI#&&RMqh?{&R_6;!^c0P_ZzlTm3OGp`NtNdFB5*8-fcmlf4$56 z@w0sQoQdxuU|8=UY`ZIc-;$FdHwb$S+DOw59Rc4yRuHV-w3BCOP=1Ii>b^x zcokT3b{aHGo}PqUSs4i{ayPLpS!q0%ruz@S&}SVQ_T={+G=q~y-}BF>^dmM4uI3y) zWD_h~?{Z*1-$^}wqv`)IJ!>wzQHGFBrR;cQ;pbtV2D#|-14mgt3OK?#ih$!he+B^i zS?&UMFuxEu&2l@ihvi4-i``HyZ}DkV5{&l&%ZW}sFum23?nnTu@f-Lb$*+Vp0-2Wy zvhG9)SB-)btXjISn##Xk@-D1!Ba6;=Iy^qx*3cQU9XyT)f zVyy#7KSE#Ul$r*)7>q;ia*}+M#;<`~X3c=Cxl|N# znX`qEtDrV!-JlRd4ZJtdBW^_eNKWIPoVF!7ZM8XV*XFdX&1oBx(^i2t3F_zxhp*sC z%PWq2nU5w}f7i}w94%^@gcc7?BB~uhP1eH&#M9Tqb0-`&M%c)(7T96gqG*|M;&XbM{(c~DZ-t4<#hUkM_gyXZs_r5_ki&fXkT$8zZ2v`ovM_S2f%0@F6a+zK;fH?{p72AiB zMwwLG(1SN$Y8mo@w8+#O`@A|Jibb2!#wQ4eugO|3)~xJ-Tv=HHU2-@bL00q)U{I^W z=IdY60r6pVddjol_7}x@Spy&8J2d3T@is6G9KAzwHjjF*IYI95kJ*x6IVz4kQ%)Gu zEH@#SBU>e~9L++&e&#F$mYa0nj+C4BVqhxdf-jqGKJiVy``p%bxFC3bT;@U~PAZZG z59=2q+#~s0mAXdQ@wR#NoBUB-*3ZgLhp56F$Ld)ehs#{_EuEt$_LBWd`SEHx=POFZ zbLzfSZBD&7mHvsoZn=?Pno8u<%jsh#V${!btrd)V7&nxNJjf@72Y~sm#l@)vDsrm3 z6FAO`qE2D%umw26I0jtJk*qB-$0q5sj(4!Eamq65MzG`@^g6A_RluU@QeZ#xFV;Bc zXq#LB6%Y z!2{d&x(0)fLvgCmDn995Jh-s$r+0z<^eMO4X8!P z)0A)OPa}C;ogDd4n5w1;LZ-%m7HvZ+lZ0f)(un7Wd=8lC^EX#muPz z7NzTf!z_;iM;Wi4q3*;iI+$PJEm19OtpPW#!;Ht_&EaA#0eKC}2P>_NOWUd>wk%KD z&5vH8Z@T|{uyIo8%jsGI6Kpfi67{=k+knMN4Y2sN9=MkIQD7J2eYkt=V_a{O1WMn< z-35z0@efI0f;lDEs?O|UF|bWS0+!BRU`gO$U|A7vU{Tr?ILb;Lz_pB9O;-tQm!_xY zqu_>oc;1I+Y%X4dLtm2fhGNDZU=R214J;g|#>v+>HjPs@O;RU)OM#=Ta~g2S#uYy* z2@Z1-Pf7q#q3IV!4|! zp8!wfAAa@m{ZsRkAM;Og?%P6VOO0PaKV%f2Gu0*c_J8P5{_MP4`kSSP=!ZlGZ8p~& z${&7e`zaDtEn95~ELMNHTD^Jb-BZdPIR`Zmk9uKPxo6 z7&yv(gTP+KCBO;RUkn^(`8eS2wcOxEMVuH69A&xtYIFNf`R*=z>F#wlZu>~YUGJuq zJ8UV9ko$1{_`Er8^VY)@f3F(z?}zh8o%;J#*=T+Q7Rz5>rQ$#R=lu5W4QP=Qk!oNM z`?p5*rin?1gmqhS*kAZ_{>hgWgofeN?8k!{gU54WTWE_ZG-_1jo)PEcw5}&daC4g`Q(fXZT3{*d(x)r&eXnb zjrCOhM6s1Xit@Hdh#t1w?GLaRzl3{%e!`TlZLiq|%ef4yt6q~%oH1$)qgKm~EdE*& z6J;Ekq&B-H4YZU?CW+Y??>WW5Q9dCX2OMDR1@`f&LLnR|WoO)4->$&2M>&9_%xMK& z&$t00+F8#5;7~0YAZL$k7T4vLeg_<1o$Ty7+^6I2#HsF{dxE%gCOZ(Mpz;sykEj-;@ECj{&~*sw^w9 zbL3Al*rIuENA$szDuYe8%=urXw@k0zxS7bkX-W+NOL-HrG0hj62bD4p#b<*6@(uEIyjwqvb+>gL%i_ z=`F7OIb?djjC>B6=T~wpvooi+Vx$QD!#qO=0LzSX0m~#S1eO_U2bR7^FB8Y>d4{He z#ixCYX{0>bFR+g~+$4}}jFX*YG!rKf9tyeqzErS5#!}tiyI`XXQGj~TXfAt2YF^Hv{eTQcg5y|! zdZ=+~q=J8vh5%1By2_$1*~^$p;|i(|=M!Vw<^WI8l`C08a$x~|hgT-YMXdAu??sLL z(!oW*t`kXq-*+O9^K*^XFy(7w^V8=ge9}<#*2aL83%zQ z>}UzF1W*ht0gPkJ4-eQQFB)RpVKA_y*9|P`?FuaEbpT6xTLDXY8^%iXlHLQrgEJQf_Ao93ZeYWuz_d*1Dh$}o z*bf{E^JE!?N|JFAaF87u0PJAw0+tzG2wcPl?7+p0kN!!bm!V7pSFwB_usBzJxy&bV zdd=l{>%2r$3z9^+0l1o@tOl-Nyaw3M4n;J)3|LZH4lEP!24K-202cj|fU9Z#(K0|q z3=9R9)Omo#>)ycPwG&vB<^zjT8*nu{de|qK5S>Y2(YXg$bjAsX=xeDuv>ND z$hrc{5IBHkLbU?+v4Mt5BzlSX0I)=y0G5Dv3Jxt7!*ys7!&`vGa16MD4X*_j!&SgC z-YbA*ZwLcNcomGg3|lPYB49t`Y2cLe#Po+yk(oaVIL!Nj9UUAz(T+|KMKM_g;M8#E zLWMbEyM~XBk?6&_G;oCb?gOspzV*Nr@-vk0qap@sfyL7ez(Mx98aTk?x(3+GIHLG$ zU>UG%GUdQ=mfxWG99RHYGBjyS!%Vrr;|3oZWOo}1Ec>XVBt4Mri)*i}ty10_Me6%Eb~MqM@lrctTYWQQ*a+} zfaUeTGL7B`mYavQz}2j01F(l3tp<*A-!+QE@(8e7k;4&x;wLSn3nD+|yd<31ZW$m?MWusA;f*w6A2z>?)5z_R7_ z2M%)vy8+j65;_1Ev2$&J?JfE6_3LnPLdN|dunfzWz!lti7qDdWUEn0kw*pJ{Ujmj< zSqEIrL-z=<1h5KNg1nP3AHHPH+=7M(M>ZEY&UgkejXQlr47iSmX^e(10G8n!2rSX} z1eW3Jtnu4r`JvPwUWr~(cL-RFeFH41-VGdNCq4icrEdX?LmPp`iRXYt=i|Vl^L}8_ zdAH!ua#6Yn4We{DuqeG2Sd>l%7Nui>i+L=E0T=Nc8l>cm`vS|=LKol$<`)3h@zCUj zP?51YaDEjxgQ}9A~@(Sfbeu>}UCA;2`4{fF+oxfF+oRfF+paz}0e(X$dMa zDHZ_xdG_|DHv!Z9kcg*19$@(d4UYhpXodhwF#Ul=XE$KkT{{5B*wHo@V>63z<=0^n zeVp+@V2SceU_Z-u0S6hs3oKD?1(qmZ0+uM(0n0Ew0$j>zUj;ja`;X9F^+SQ9LOR*#;g+ALD5nm-`UEoHvM3 z;K;^N{*C!iq0v3WqRgIK#iTY$5#wKn!b=$kh1tNDz%ItSfGcDi6lVEWjq?(4HFMS} z%$!GthQxpCf%tplWqYP&RpOmb7m;aoGUcW7+^aGaDl?iAEK}{pfcYMt9&PLbsxgj%9UT*FOs!Z-vfrG4~Jut5}x=nM+ zQ`rw~hTiy@9#%pL{2;<_Px8&9^03nXvV=ri(3n^|(Q(Ic<>ljdJfrlUQ#W&)Df^TC(cZNL)f;qygL1M5rz z3x5x=@Z-S3-v%s+sR5S6tk?L_^VQ7bS+W`pa&D{zOZBDsM!`4ppLAJtdv;%QEd_sD5C%c%Nz!%zHSt~$l& z8DeT?_@dl!qB6jpkDUjn8ULi=Z#DcGuq>Yszm~h>X*Txs5b0aWIlCV3|YL0oSwqDqvZYmjb6bDHj9B7@q^okE>Gs zfW5X6R5=wD>D(SzI=2Lt&c7fU>HHnAmlb_Jq`^#gF$RQKmdRr&$MytRE_Uw$t;b)1 z1Kj&IC6~~E#lm$O=PJcv{-wa;(Zw47oFP~SUMA5GUGnM|d@68&)Js1B;@Lz@n%vuqgU%utYD4egGCdUjd7rPk=?wd%&XSjVwMr z^)e~}8%6W1YT#5q3e0CvwBxMP}^T0rGi$o%$Wbm0!VVs`i;fC z4q8>jIv*^)SwOXxIklf3$!hp-UHm;s@yB9cZBQUivXs-~?ZkYzCIy{srJD%bx<4iSZC{Ez6e!%RajVILz_| zz*Ve&HgG^La;Kmo8}I~RFLxLL?BPrd0d}#xKX3yp>IPiSxC5{p1lj;saNl3glITkr z9|V^5@Fn3BDb|U^nA3U_0YdU?20R0m~_g zA2`YKQNVHL7ZGlJkXJd{yEM__F4Ox=e!F4SL``;LYU3Q@4lU8Sl<_YE5gIG~4mig0 z&j+e#+V?Wrh0u`X-1&Z%{Xnka*5kukGJqb)YdMc=Tl~s1P~>%2%lp{`Zvl4jLDmMo zX<0>|vY_>}PBP4l+J`rbNlxTPjJ| zoOf}4_mGWLC2P4Ulb$Fme*xqmlb=$UQ}PgSoH@&ZBP?G6>}R|HIL&xAu!Hdw;5g$6 zz#h63q$!F@jPVd)FB|9&9KmKic(t5#506kV$=%;-J2q_)ypwibEn7>NyY}2AiIVla zafD=(M~hf>514KG7(MeAKVbInW4N!q;sI@Y3DD>gXBf-qZ9S~%g4d-tKe3^f-e?gU zF0@3MHF$s|*T&clta==}-`v3VKDghkCwrkYv{XwPUtn{NW82^ZKiGyR@Itxi1=c8%ViNJJT`=y^P;~TyQ<#01tpu#q!lVL|)C<2f3FyLxG)k z!X99`soon{ZuK~U>)D}v;3~P_WYZcByCni%BdH{?bl9WGi*b@^ED_8XSy+z-it*OMpE*1&e{@2Pnq@i*sIJae6SYmomXi^Iln+ zlK3efN$zSmw1XGPGA+M>l1DTfXaP>;YCNlOQHrUhGg=ay@csQ{k1l7{gxlq51+!9b z^^=?l-UzHVq3|j(FOIG0$M3f2VYYva-bEGYZ%ha=HM5P%Xc_1%YqbS%HBXtJ`-*{L zHg*D>2s57kp+qF=KLV$oqk9`T$oYE}*w6TRV0n+ylYOzagS^lmR3ygt0LQt*?WzOI zZvvJ>;4I(@cJ6A$XFML*!F`7Vr&)fk!aRtlD^4C?cASPvj60kJEaTG}IKuM(^^xdh z48I2svZ615CGGzKj{ZdlnzuEehyKgp*_!lD#Fy zIP2d7Ty!1}Wn636rW#mY16E^DT5|VZ?a<0fc+phKv=@~<|1D95*@cbgOZ1#Y zV%04dmaP71`-K%j%U-m^I2$kZl10aTQl0-Ii%!B>-V3+t`6de~n}jY2HWTb6$rM_N zhKn^kj<8wVJKq^vIld@4fLk)zinFOM;EKKitzVwP;tpIZXFT^k2|)OJdy0Lzf3*Wx z?q6*Oj&gQ41E=L=`~_6JJQJP*b}@bk*v5D{uw-iqu;h0EFlR0`8(3!76kwTM6M$s~ zjsTYA3?a!X3^P3Uq6#Gvrl?Vm+s4pxyR)i9t|uB zIv?1^n!ev8T3uM5=b10|HadpJdy|RXjm}ptui&VT_38RoS$5*S`(NU6Er+t@T+zV^ zC)Njd3rkww>MkR#T2`P%)s~Z7K}P4$1a8m7=4D??pp7Ri*%_FlEq#|* z6>VKf8_mrC_wk@l1Lvc6)|-?QIKlqs16MJ}23$j58A^lRP287cCcCL;J8jM}Iu1gE zmwQwLyBM$0a0EEO^4?z`H9zWPbT{XoW3&&UA^Gi#qQ)aF>DQTqPmZhfW zT%)J+3cW2tAyC^el9@9v%I|U`laF=kqH}6F>7K5V7D+{KUq4{0b3$wHhS*rr8juSQw@@mF@;Ckka0#35L2-wa8G5}akR9wJv zidP66;J$X?Aoo4mQ|yM)9A+Ao7@xrGBdpJ}om9`=*4Re!ne5I$Ym7BMdZFx6Ubb{> zp5Q3sr}6kK!pb*wk(`KUr}D=Z>Fu7f;6fg8M;aagNy7araDWxvrr{ekd>wF_4O|5* zAzljX<-Qkd{BwXM+OGXjsbSKozz)02jy`wDH^6rOfFAv-Syd_Df<-f@-5utE^XNI) zvA4|jMMm$uznq0{J@6G7ojTtb)~2C{PJOAvIbm~Q5#0rCuea5p?YEHmcWMiLLMOD1 z(^vKTC(G!H8_ZWwlZamYn`F$%QNQh!v^H=MuL8>ic^+6M$dkY_p&kU5EZqZKC-1zx z9Tn+(6R>oi1uUJf2A0m_f$MnuhimfIE^$u!{;#`W(fK_v-<(Z-0W1gi{}2vQoIY;& zmulc?{W@^ECE*u=gN&a6_A`DM*u!`waD?$4z@@D7X5b3O*8?Y6|8(Fw!lBgVs8n;q zXw`x7`M?eugw&b9X+Ep%0nBH$sZPK##wP$r82{c)qK~mdKLVGs&aZ*1*`ZGbhnCAM z|F>%3l)ecp>3sz_$V&eP>}UKKu!r$|zz)WD5!To7%~a1_$DE|(82-v=*)uu+ezrRF zJXyRl%c64x7x63`h0i_385eh!87CfZSuY&HG2kF`27}|~aNQceE3ix;N0t*xwbDop zoy35U4giay1h5#}sd4Hw&K8Xm(>QB2PL;-4A@~G*y;-=EI>OH%YMdAXE5f7XJWWP2 zz$wZHjx)9a%VF_wSBy4?oCM}$O==HtoN*l3!+0C8gK-UTknwupw48uORfUbMCajO@ zGOFi}D%(h2nccJ0pk8{e3{r%Z{9~42KSwnY7m*&upFAh>Fmo>K&yj?1fqPk@3`Uws zBY`FK^MEBiX8?=R?!ZCjcLa_xZmTed_*+NO>0$W~zyUV=6>x+(pA1tKZg@{4y#Xw_ zdKoyzoM$!8qaD>iP8>$ZSv1(#TEnNfl3)wtAm?)+`6$?mrH$v{@(IiQY(3?FTCODJ zl(rE4{A|4_r*gHYzt>Ob@+IYA`>) z*tj5cl0+sM^wnoGxCZjZ4DPujH-po%^;Go9Yz9lvPwW>1O9sbjaxXA4I9N5X^KM|t zU{_$tpaa;>oMmm~Vn52b!6D8|fCqqulK_?tcBjUv1NLy=Ex^cNOp&-@EwDsTrQ|#m zD;y2x$l;VhDrXO;3{rXTaLOP!G3GSjUZRT+3tLW>O(VfmAO?DHq8bH>l0r%~v_zpZwxqe;n)3cyhxQ>7=O7E#{{qjQ-R9cQdcPZLaD6 z%p8I)c|#_Vm%Jq2=?hs4zDwv>pA)%8m(twEAA)`qskA}otg>wDu|8LonKMTkT`n$= zfMV>p4_E>k3LIy-2ROpGH*lJaDTH{w} z{KXnSsPRiQesMnT>igNiIIY18Eb_sc+^xyG0^9A>*P$>w*9usIX*f}$mtYP6i_Qcv zap*&EJ2g_BM%tn)) zrICs>&H#<$(l~`0$F6aX+9mop8%qO=L;HZ;{kfrDBfYPYY88n&8|?f^->!DfUGhGA zgE{O^M!ygf8uv-2P1d@M1(vxy3|KNh2)LM6Zr?UCH^sj$kjtDcfIP^{Ef4Zi)_vZ% zY5e&iRAlyE3oJu08CX&}7FY}q0~SXI0gI!3fh%~Jx-5_#nhy@C87*aKL}wm2f{(P4 zOt?ebVZW*{-mBpq8s4tq%^H3ISeEDrJeP9tJ~kPKOIhb~aD0rHXm~*@9KD4!8x4Y| z0Lz@1pvgx7%O*QSllRwfH()um?syc3R^GYWK^JDU)^q zSM%BLyBcS!lJnW@OTZP(S*LLx0j^`tD&SJ)+^KPHVNCZl?QCo=8hlKep^>ftb~9&; z!pylq;|v6@U`|h9J99c~oOX)C4*ijbRlpNDbVyaW^Ebe96KuDVv!V|)&RYtzqK&|I z#?NV-$APO^=l#HL=G?7u76Es!W72$7d`!AlBTdee$9q+m87H+Qv6=3d-?e3{yaw~V z%ZzTJ7Wjk=?O-nUawpXZ$2qKuhh^Yp$!vi>}4F*aGAy_ zCCpoAfJxIdl3yc@0v1k@#u=b-TpFiPdM~1 z`6A;wbdq}lTYzgg>NNd|136yGoVAck+N%_Y16rZ=4FlUnzmhYj)HXTm)ikZMU+X+d z!$rUn#Q@+6R_X#y5T-NP{&Vp0l@BjBT8HAB=~@vd2bJ=Ck_h>823V9{py7eQahmPqUeRp4Uy$!fCHKC1e3V__zeL%$T1HIf?B+r}%J*lPc@yd5 zw11d=CK>_zoQFwK@>;fRk-sR z&d*8?C0Sjicl&V;x=nuv-5z{^yLC3-m}Hy~TKi9NMbg@ERMHybY^;Dh$v6RdDNmA} zz)_al*GXT#oKJ0mJis^x>|_2~t#1{ui#aQRLw;5iMx~ZJlmScUQeZJW4OsYoO+E_P z%SwxYC71yk-=*;jfuqc~A1#oGYpFtG*x@=E!&wpXDOs~o8$&)g6XEc+oa5!Jb`&AfTCG2PzfAs(>Xi_OSHqcCsw zEHgdX=$`l4HuI#bj81u-@56u%yUJ*Ha__U{@E_n@InVkn^NB(;_F8_=%c3kD^Q#0E zX520>YyX3R($mZGw>*M_jN8nSNW{lSx@S3$d(8M%#%Xz>p5_nihP%ORQ*2z6f67Yv zWaM~XvVC{+vSQ=Xye?OpYl@9?^Ip5({J5AV=+AGNzZV;4<@p~l2VQOT%6sB1bK=!T zpi_%t&fkM!vPx66mWt%Yfo9#+hU@Ir|07xD_(1Z+N=k)lym%EpgUKC|gH$ETl?U%N zPnlx$7}oPN@t0+($;S@yJ{V@a=oiXC=DW_^nO1}CaTEkln-C#AUA2(Kpsah>!!)$|DKn{8snhv)8js~m{%!JWyssmH1pPJ zMz_3MA2-cubgS&gc6j6(pGGtD+o|Ta)9BsK57PeLcn0pyD4mx%3 zVR2B5Ed{P-`K`bnj%6OOgYit@a&~Sa;p}}*o;5Uioxx-wf0t}#ID9NV*2h29TsNIu z_dRBApH8m7bpl*JHl19rnPPUHVVv3XnkmH1Ts14#$Fod*P22T9nX_gXy+{8EPqtIM6(>QtFF<#FZZj7>BQxr6=>T1e&}QU#b{b zvT|UPEDiD03weP14pw}|ZiV@jwkz-nHoEqpVeMOtWoRc}^8LSSndI3*1UoWO#dZrH z5nHm~R=1G_6~>9f=Bs3oBbcAdP;;^E@EzHOw>mAcNemSVGiPx+lx+y2L4qg&7K2p> zWT6UP0W6BV;K);m!AdDR>sEbv2)k->2XKIs(F(Xq-ZxM>f}&R&&Ve7qAt!fE0E@Am zz>@7cO}+&yTBTcPz06COy0CBp;N+_8aP4oU57*Hv8(B2O-OxvZ{qmp$t_E^_mY1pyi3Trw zwuM=Ai70~+Lzf`uYArD01?Cx&TA|6qzzJ4V_)6BrQjIeWxR!I}SA4!o9|bIS3yKtp z4GcJFK6RaO`s8~iP-L0KoZ!j1^i3DVINUE0vm`bBJy}-bWDELgAj-Ws`S$k`yU0_w zX64U+Z}uoL+|KLh>zg8tU!Z*ZkED^lZ(;iD<~1e8q`bDTo103EL4E%@4&T4vB~!^U zOL3OrO%4TG$(E95EyWiMiP`7@F)QeDgCNH%VfV z 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 z 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

)CelW-{{cU6l#Ip_snZ{+@pPRFxAIzbb$Y`XA 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 diff --git a/src/App.tsx b/src/App.tsx index 8cfb8f4..f5b7f36 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -6,6 +6,7 @@ import RouteGuard from './components/RouteGuard' import WelcomePage from './pages/WelcomePage' import HomePage from './pages/HomePage' import ChatPage from './pages/ChatPage' +import AiAnalysisPage from './pages/AiAnalysisPage' import AnalyticsPage from './pages/AnalyticsPage' import AnalyticsWelcomePage from './pages/AnalyticsWelcomePage' import ChatAnalyticsHubPage from './pages/ChatAnalyticsHubPage' @@ -679,6 +680,7 @@ function App() { } /> } /> } /> + } /> } /> } /> diff --git a/src/components/Sidebar.tsx b/src/components/Sidebar.tsx index 9a9f0aa..c2aa61c 100644 --- a/src/components/Sidebar.tsx +++ b/src/components/Sidebar.tsx @@ -1,6 +1,6 @@ import { useState, useEffect, useRef } from 'react' import { NavLink, useLocation, useNavigate } from 'react-router-dom' -import { Home, MessageSquare, BarChart3, FileText, Settings, Download, Aperture, UserCircle, Lock, LockOpen, ChevronUp, RefreshCw, FolderClosed, Footprints } from 'lucide-react' +import { Home, MessageSquare, BarChart3, FileText, Settings, Download, Aperture, UserCircle, Lock, LockOpen, ChevronUp, RefreshCw, FolderClosed, Footprints, Sparkles } from 'lucide-react' import { useAppStore } from '../stores/appStore' import { useChatStore } from '../stores/chatStore' import { useAnalyticsStore } from '../stores/analyticsStore' @@ -409,6 +409,16 @@ function Sidebar({ collapsed }: SidebarProps) { 聊天 + {/* AI分析 */} + + + AI分析 + + {/* 朋友圈 */} [], columns: string[]): string { + const esc = (value: unknown) => { + const text = String(value ?? '') + if (/[",\n\r]/.test(text)) return `"${text.replace(/"/g, '""')}"` + return text + } + const header = columns.map((column) => esc(column)).join(',') + const body = rows.map((row) => columns.map((column) => esc(row[column])).join(',')).join('\n') + return `${header}\n${body}` +} + +function AiAnalysisPage() { + const aiApi = window.electronAPI.aiApi + const agentApi = window.electronAPI.agentApi + const assistantApi = window.electronAPI.assistantApi + const skillApi = window.electronAPI.skillApi + const [activeTab, setActiveTab] = useState('chat') + const [scopeMode, setScopeMode] = useState('global') + const [scopeTarget, setScopeTarget] = useState('') + const [conversations, setConversations] = useState([]) + const [currentConversationId, setCurrentConversationId] = useState('') + const [messages, setMessages] = useState([]) + const [assistants, setAssistants] = useState([]) + const [selectedAssistantId, setSelectedAssistantId] = useState('general_cn') + const [skills, setSkills] = useState([]) + const [selectedSkillId, setSelectedSkillId] = useState('') + const [contacts, setContacts] = useState>([]) + const [input, setInput] = useState('') + const [loadingConversations, setLoadingConversations] = useState(false) + const [loadingMessages, setLoadingMessages] = useState(false) + const [errorText, setErrorText] = useState('') + + const [sqlPrompt, setSqlPrompt] = useState('') + const [sqlGenerated, setSqlGenerated] = useState('') + const [sqlGenerating, setSqlGenerating] = useState(false) + const [sqlSchema, setSqlSchema] = useState(null) + const [sqlSchemaText, setSqlSchemaText] = useState('') + const [sqlTargetKey, setSqlTargetKey] = useState('message:') + const [sqlResult, setSqlResult] = useState(null) + const [sqlError, setSqlError] = useState('') + const [sqlHistory, setSqlHistory] = useState([]) + const [sqlSortBy, setSqlSortBy] = useState('') + const [sqlSortOrder, setSqlSortOrder] = useState<'asc' | 'desc'>('asc') + const [sqlPage, setSqlPage] = useState(1) + const [sqlPageSize] = useState(50) + + const [toolCatalog, setToolCatalog] = useState([]) + const [toolName, setToolName] = useState('') + const [toolArgsText, setToolArgsText] = useState('{}') + const [toolRunning, setToolRunning] = useState(false) + const [toolOutput, setToolOutput] = useState('') + + const sqlRunIdRef = useRef('') + const sqlGeneratedRef = useRef('') + const messageEndRef = useRef(null) + + const activeRunId = useAiRuntimeStore((state) => state.activeRunId) + const runtimeState = useAiRuntimeStore((state) => ( + currentConversationId ? state.states[currentConversationId] : undefined + )) + const startRun = useAiRuntimeStore((state) => state.startRun) + const appendChunk = useAiRuntimeStore((state) => state.appendChunk) + const finishRun = useAiRuntimeStore((state) => state.finishRun) + + const selectedAssistant = useMemo( + () => assistants.find((assistant) => assistant.id === selectedAssistantId) || null, + [assistants, selectedAssistantId] + ) + + const slashSuggestions = useMemo(() => { + const text = normalizeText(input) + if (!text.startsWith('/')) return [] + const key = text.slice(1).toLowerCase() + return skills.filter((skill) => !key || skill.id.includes(key) || skill.name.toLowerCase().includes(key)).slice(0, 8) + }, [input, skills]) + + const mentionSuggestions = useMemo(() => { + const match = input.match(/@([^\s@]*)$/) + if (!match) return [] + const keyword = match[1].toLowerCase() + return contacts + .filter((contact) => !keyword || contact.displayName.toLowerCase().includes(keyword) || contact.username.toLowerCase().includes(keyword)) + .slice(0, 8) + }, [contacts, input]) + + const sqlTargetOptions = useMemo(() => { + if (!sqlSchema) return [] + return sqlSchema.sources.map((source) => ({ + key: `${source.kind}:${source.path || ''}`, + label: `[${source.kind}] ${source.label}` + })) + }, [sqlSchema]) + + const sqlSortedRows = useMemo(() => { + const rows = sqlResult?.rows || [] + if (!sqlSortBy) return rows + const copied = [...rows] + copied.sort((a, b) => { + const left = String(a[sqlSortBy] ?? '') + const right = String(b[sqlSortBy] ?? '') + if (left === right) return 0 + return sqlSortOrder === 'asc' ? (left > right ? 1 : -1) : (left > right ? -1 : 1) + }) + return copied + }, [sqlResult, sqlSortBy, sqlSortOrder]) + + const sqlPagedRows = useMemo(() => { + const start = (sqlPage - 1) * sqlPageSize + return sqlSortedRows.slice(start, start + sqlPageSize) + }, [sqlPage, sqlPageSize, sqlSortedRows]) + + const loadConversations = useCallback(async () => { + setLoadingConversations(true) + try { + const res = await aiApi.listConversations({ page: 1, pageSize: 200 }) + if (!res.success) { + setErrorText(res.error || '加载会话失败') + return + } + const list = res.conversations || [] + setConversations(list) + if (!currentConversationId && list.length > 0) setCurrentConversationId(list[0].conversationId) + } finally { + setLoadingConversations(false) + } + }, [aiApi, currentConversationId]) + + const loadMessages = useCallback(async (conversationId: string) => { + if (!conversationId) return + setLoadingMessages(true) + try { + const res = await aiApi.listMessages({ conversationId, limit: 1200 }) + if (!res.success) { + setErrorText(res.error || '加载消息失败') + return + } + setMessages((res.messages || []).filter((message) => normalizeText(message.role) !== 'tool')) + } finally { + setLoadingMessages(false) + } + }, [aiApi]) + + const loadAssistantsAndSkills = useCallback(async () => { + try { + const [assistantList, skillList] = await Promise.all([ + assistantApi.getAll(), + skillApi.getAll() + ]) + setAssistants(assistantList || []) + setSkills(skillList || []) + if (assistantList && assistantList.length > 0 && !assistantList.some((item) => item.id === selectedAssistantId)) { + setSelectedAssistantId(assistantList[0].id) + } + } catch (error) { + setErrorText(String((error as Error)?.message || error)) + } + }, [assistantApi, skillApi, selectedAssistantId]) + + const loadContacts = useCallback(async () => { + try { + const res = await window.electronAPI.chat.getContacts({ lite: true }) + if (!res.success || !res.contacts) return + const list = res.contacts + .map((contact) => ({ + username: normalizeText(contact.username), + displayName: normalizeText(contact.displayName || contact.remark || contact.nickname || contact.username) + })) + .filter((contact) => contact.username && contact.displayName) + .slice(0, 300) + setContacts(list) + } catch { + // ignore + } + }, []) + + const loadToolCatalog = useCallback(async () => { + try { + const catalog = await aiApi.getToolCatalog() + setToolCatalog(Array.isArray(catalog) ? catalog : []) + if (!toolName && Array.isArray(catalog) && catalog.length > 0) { + setToolName(catalog[0].name) + } + } catch (error) { + setErrorText(String((error as Error)?.message || error)) + } + }, [aiApi, toolName]) + + const loadSchema = useCallback(async () => { + const res = await window.electronAPI.chat.getSchema({}) + if (!res.success || !res.schema) { + setSqlError(res.error || 'Schema 加载失败') + return + } + setSqlSchema(res.schema) + setSqlSchemaText(res.schemaText || '') + if (res.schema.sources.length > 0) { + setSqlTargetKey(`${res.schema.sources[0].kind}:${res.schema.sources[0].path || ''}`) + } + }, []) + + useEffect(() => { + void loadConversations() + void loadAssistantsAndSkills() + void loadContacts() + }, [loadConversations, loadAssistantsAndSkills, loadContacts]) + + useEffect(() => { + if (!currentConversationId) return + void loadMessages(currentConversationId) + }, [currentConversationId, loadMessages]) + + useEffect(() => { + if (activeTab === 'sql' && !sqlSchema) void loadSchema() + if (activeTab === 'tool' && toolCatalog.length === 0) void loadToolCatalog() + }, [activeTab, sqlSchema, loadSchema, toolCatalog.length, loadToolCatalog]) + + useEffect(() => { + const off = agentApi.onStream((chunk: AgentStreamChunk) => { + if (sqlRunIdRef.current && chunk.runId === sqlRunIdRef.current) { + if (chunk.type === 'content') { + setSqlGenerated((prev) => { + const next = `${prev}${chunk.content || ''}` + sqlGeneratedRef.current = next + return next + }) + } else if (chunk.type === 'done') { + setSqlGenerating(false) + if (normalizeText(sqlGeneratedRef.current)) { + setSqlHistory((prev) => [sqlGeneratedRef.current.trim(), ...prev].slice(0, 30)) + } + sqlRunIdRef.current = '' + } else if (chunk.type === 'error') { + setSqlGenerating(false) + setSqlError(chunk.error || 'SQL 生成失败') + sqlRunIdRef.current = '' + } + return + } + const conversationId = normalizeText(chunk.conversationId, currentConversationId) + if (!conversationId) return + appendChunk(conversationId, chunk) + if (chunk.type === 'done' || chunk.type === 'error' || chunk.isFinished) { + finishRun(conversationId) + void loadMessages(conversationId) + void loadConversations() + } + }) + return () => off() + }, [agentApi, appendChunk, currentConversationId, finishRun, loadConversations, loadMessages]) + + useEffect(() => { + messageEndRef.current?.scrollIntoView({ behavior: 'smooth', block: 'end' }) + }, [messages, runtimeState?.draft, runtimeState?.chunks.length]) + + const ensureConversation = useCallback(async (): Promise => { + if (currentConversationId) return currentConversationId + const created = await aiApi.createConversation({ title: '新的 AI 对话' }) + if (!created.success || !created.conversationId) throw new Error(created.error || '创建会话失败') + setCurrentConversationId(created.conversationId) + await loadConversations() + return created.conversationId + }, [aiApi, currentConversationId, loadConversations]) + + const handleCreateConversation = async () => { + const created = await aiApi.createConversation({ title: '新的 AI 对话' }) + if (!created.success || !created.conversationId) { + setErrorText(created.error || '创建会话失败') + return + } + setCurrentConversationId(created.conversationId) + setMessages([]) + setErrorText('') + await loadConversations() + } + + const handleRenameConversation = async (conversationId: string) => { + const current = conversations.find((item) => item.conversationId === conversationId) + const nextTitle = window.prompt('请输入新的会话标题', current?.title || '新的 AI 对话') + if (!nextTitle) return + const result = await aiApi.renameConversation({ conversationId, title: nextTitle }) + if (!result.success) { + setErrorText(result.error || '重命名失败') + return + } + await loadConversations() + } + + const handleDeleteConversation = async (conversationId: string) => { + const ok = window.confirm('确认删除该会话吗?') + if (!ok) return + const result = await aiApi.deleteConversation(conversationId) + if (!result.success) { + setErrorText(result.error || '删除失败') + return + } + if (currentConversationId === conversationId) { + setCurrentConversationId('') + setMessages([]) + } + await loadConversations() + } + + const handleSend = async () => { + const text = normalizeText(input) + if (!text) return + setErrorText('') + const conversationId = await ensureConversation() + setMessages((prev) => ([ + ...prev, + { + messageId: `temp-${Date.now()}`, + conversationId, + role: 'user', + content: text, + intentType: '', + components: [], + toolTrace: [], + createdAt: Date.now() + } + ])) + setInput('') + const run = await agentApi.runStream({ + mode: 'chat', + conversationId, + userInput: text, + assistantId: selectedAssistantId, + activeSkillId: selectedSkillId || undefined, + chatScope: scopeMode === 'session' ? 'private' : 'private' + }) + if (!run.success || !run.runId) { + setErrorText('启动失败') + return + } + startRun(conversationId, run.runId) + } + + const handleStop = async () => { + if (!currentConversationId) return + await agentApi.abort({ runId: activeRunId || undefined, conversationId: currentConversationId }) + finishRun(currentConversationId) + } + + const handleExportConversation = async () => { + if (!currentConversationId) return + const result = await aiApi.exportConversation({ conversationId: currentConversationId }) + if (!result.success || !result.markdown) { + setErrorText(result.error || '导出失败') + return + } + await navigator.clipboard.writeText(result.markdown) + window.alert('会话 Markdown 已复制到剪贴板') + } + + const handleOpenLog = async () => { + const logPath = await window.electronAPI.log.getPath() + await window.electronAPI.shell.openPath(logPath) + } + + const handleGenerateSql = async () => { + const prompt = normalizeText(sqlPrompt) + if (!prompt) return + setSqlGenerating(true) + setSqlGenerated('') + sqlGeneratedRef.current = '' + setSqlError('') + const target = extractSqlTarget(sqlSchema, sqlTargetKey) + const run = await agentApi.runStream({ + mode: 'sql', + userInput: prompt, + sqlContext: { + schemaText: sqlSchemaText, + targetHint: target ? `${target.kind}:${target.path || ''}` : '' + } + }) + if (!run.success || !run.runId) { + setSqlGenerating(false) + setSqlError('SQL 生成失败') + return + } + sqlRunIdRef.current = run.runId + } + + const handleExecuteSql = async () => { + const sql = normalizeText(sqlGenerated) + if (!sql) return + const target = extractSqlTarget(sqlSchema, sqlTargetKey) + if (!target) { + setSqlError('请选择 SQL 数据源') + return + } + const result = await window.electronAPI.chat.executeSQL({ + kind: target.kind, + path: target.path, + sql, + limit: 500 + }) + if (!result.success || !result.rows || !result.columns) { + setSqlError(result.error || '执行失败') + return + } + setSqlError('') + setSqlResult({ + rows: result.rows, + columns: result.columns, + total: result.total || result.rows.length + }) + setSqlHistory((prev) => [sql, ...prev].slice(0, 30)) + setSqlPage(1) + } + + const handleExportSqlRows = () => { + if (!sqlResult || sqlResult.rows.length === 0) return + const csv = toCsv(sqlResult.rows, sqlResult.columns) + const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' }) + const url = URL.createObjectURL(blob) + const link = document.createElement('a') + link.href = url + link.download = `sql-result-${Date.now()}.csv` + link.click() + URL.revokeObjectURL(url) + } + + const handleRunTool = async () => { + setToolRunning(true) + try { + const args = JSON.parse(toolArgsText || '{}') + const result = await aiApi.executeTool({ name: toolName, args }) + setToolOutput(JSON.stringify(result, null, 2)) + } catch (error) { + setToolOutput(String((error as Error)?.message || error)) + } finally { + setToolRunning(false) + } + } + + const groupedTools = useMemo(() => ({ + core: toolCatalog.filter((item) => item.category === 'core'), + analysis: toolCatalog.filter((item) => item.category === 'analysis') + }), [toolCatalog]) + + return ( +

+
+
+ +

AI Analysis

+ Chat Explorer + SQL Lab + Tool Test +
+
+ + + +
+
+ + {activeTab === 'chat' && ( +
+ + +
+
+
+ + + + + + + {scopeMode !== 'global' && ( + setScopeTarget(event.target.value)} + placeholder={scopeMode === 'contact' ? '联系人昵称/账号' : '会话ID'} + /> + )} +
+ {selectedAssistant?.presetQuestions?.length ? ( +
+ {selectedAssistant.presetQuestions.slice(0, 8).map((question) => ( + + ))} +
+ ) : null} +
+ +
+ {loadingMessages ? ( +
加载消息...
+ ) : ( +
+ {messages.map((message) => ( +
+
{message.role === 'user' ? '你' : message.role === 'assistant' ? '助手' : message.role}
+
{message.content || '(空)'}
+
+ ))} + + {runtimeState?.running && runtimeState?.chunks?.length ? ( +
+ {runtimeState.chunks + .filter((chunk) => chunk.type === 'tool_start' || chunk.type === 'tool_result' || chunk.type === 'error') + .slice(-16) + .map((chunk, index) => ( +
+ {chunk.type} + {chunk.toolName ? {chunk.toolName} : null} + {chunk.content ?
{chunk.content}
: null} + {chunk.type === 'tool_result' && chunk.toolResult !== undefined ? ( +
{JSON.stringify(chunk.toolResult, null, 2)}
+ ) : null} + {chunk.error ? {chunk.error} : null} +
+ ))} +
+ ) : null} + + {runtimeState?.draft ? ( +
+
助手(流式)
+
{runtimeState.draft}
+
+ ) : null} + +
+
+ )} +
+ +
+ + + +
+ +
+