feat: 支持 FTS5 全文搜索,并新增快速搜索工具

This commit is contained in:
digua
2026-04-03 20:37:19 +08:00
committed by digua
parent 3a4d722645
commit 0a81238a0a
22 changed files with 722 additions and 20 deletions

View File

@@ -0,0 +1,49 @@
import { Type } from '@mariozechner/pi-ai'
import type { AgentTool } from '@mariozechner/pi-agent-core'
import type { ToolContext } from '../types'
import * as workerManager from '../../../worker/workerManager'
import { parseExtendedTimeParams } from '../utils/time-params'
import { formatTimeRange } from '../utils/format'
import { timeParamProperties } from '../utils/schemas'
const schema = Type.Object({
keywords: Type.Array(Type.String(), { description: 'ai.tools.deep_search_messages.params.keywords' }),
sender_id: Type.Optional(Type.Number({ description: 'ai.tools.deep_search_messages.params.sender_id' })),
limit: Type.Optional(Type.Number({ description: 'ai.tools.deep_search_messages.params.limit' })),
...timeParamProperties,
})
export function createTool(context: ToolContext): AgentTool<typeof schema> {
return {
name: 'deep_search_messages',
label: 'deep_search_messages',
description: 'ai.tools.deep_search_messages.desc',
parameters: schema,
execute: async (_toolCallId, params) => {
const { sessionId, timeFilter: contextTimeFilter, maxMessagesLimit, locale } = context
const limit = Math.min(maxMessagesLimit || params.limit || 1000, 50000)
const effectiveTimeFilter = parseExtendedTimeParams(params, contextTimeFilter)
const result = await workerManager.deepSearchMessages(
sessionId,
params.keywords,
effectiveTimeFilter,
limit,
0,
params.sender_id
)
const data = {
total: result.total,
returned: result.messages.length,
timeRange: formatTimeRange(effectiveTimeFilter, locale),
rawMessages: result.messages,
}
return {
content: [{ type: 'text', text: JSON.stringify(data) }],
details: data,
}
},
}
}

View File

@@ -9,6 +9,7 @@ import type { ToolRegistryEntry } from '../types'
import { createTool as createGetChatOverview } from './get-chat-overview'
import { createTool as createSearchMessages } from './search-messages'
import { createTool as createDeepSearchMessages } from './deep-search-messages'
import { createTool as createGetRecentMessages } from './get-recent-messages'
import { createTool as createGetMessageContext } from './get-message-context'
import { createTool as createSearchSessions } from './search-sessions'
@@ -30,6 +31,7 @@ export const TOOL_REGISTRY: ToolRegistryEntry[] = [
// ==================== Core 工具(始终加载) ====================
{ name: 'get_chat_overview', factory: createGetChatOverview, category: 'core' },
{ name: 'search_messages', factory: createSearchMessages, category: 'core' },
{ name: 'deep_search_messages', factory: createDeepSearchMessages, category: 'core' },
{ name: 'get_recent_messages', factory: createGetRecentMessages, category: 'core' },
{ name: 'get_message_context', factory: createGetMessageContext, category: 'core' },
{ name: 'search_sessions', factory: createSearchSessions, category: 'core' },