非常粗糙.
如果同时开启知识库和联网搜 (searchOrchestrationPlugin.ts), 则用 SEARCH_SUMMARY_PROMPT 做意图分析和 query 改写. 简单地把两种搜索的结果拼接起来 (不会混起来重排), index 加上偏移量避免重叠. 如果设置了召回 memory 也会拼在后面.
联网搜分为两种:
- 一种是 local search (见
LocalSearchProvider.ts), 直接解析 SERP (比如https://www.google.com/search?q=%s). 免费. - 另一种就是调搜索 API, 比如 Tavily.
访问搜索引擎以及 fetch url 内容都是通过 Electron 在后台打开不可见的浏览器窗口加载指定的 url.
window.api.searchService.openUrlInSearchWindow(uid, url)
类似白嫖搜索引擎的项目还有比如 duckduckgo-mcp-server 以及 open-webSearch. 不清楚是否合规.
