Files
WeFlow/electron/services/agentWebSearchPolicy.ts
2026-09-28 21:16:43 +08:00

28 lines
1.6 KiB
TypeScript

import type { AgentToolSource } from './agentToolCatalog'
const DIRECT_WEB_REFERENCE_PATTERN = /(?:联网|上网|网页|网站|官网|官方网站|浏览器|google|谷歌|bing|必应|百度)/i
const SEARCH_REQUEST_PATTERN = /(?:搜搜看|搜一搜|搜一下|搜索(?:一下|看看|下)?|查查(?:看)?|查一下)/i
const LOCAL_DATA_REFERENCE_PATTERN = /(?:聊天(?:记录)?|消息(?:记录)?|朋友圈|联系人|会话|本地(?:数据|记录)?)/i
const SOURCE_VERIFICATION_PATTERN = /(?:出自(?:哪|哪里|何处|什么)|出处|原文来源|原句来源|最早(?:出处|来源|发布)|是否(?:真的)?(?:出自|来自)|真伪|误传|误署)/i
const TIME_SENSITIVE_PATTERN = /(?:最新|实时|截至(?:现在|目前|今日|今天)|今天|今日|当前).{0,12}(?:新闻|消息|进展|价格|行情|数据|版本|政策|规定|规则|赛程|比分|天气)/i
export function explicitlyRequestsWebSearch(value: unknown): boolean {
const question = String(value || '').trim()
if (!question) return false
if (DIRECT_WEB_REFERENCE_PATTERN.test(question)) return true
if (SOURCE_VERIFICATION_PATTERN.test(question)) return true
if (TIME_SENSITIVE_PATTERN.test(question)) return true
if (LOCAL_DATA_REFERENCE_PATTERN.test(question)) return false
return SEARCH_REQUEST_PATTERN.test(question)
}
export function shouldRequireAgentWebSearch(
source: AgentToolSource,
question: unknown,
searchToolName?: string | null,
): boolean {
if (!String(searchToolName || '').trim()) return false
if (source === 'web') return true
return source === 'auto' && explicitlyRequestsWebSearch(question)
}