feat(pi-web-search): 统一 web_search/web_fetch 并由主模型路由搜索厂商

7 个按厂商命名的搜索工具收敛为 2 个统一工具,schema 与提示词不再暴露
provider 概念:web_search 由当前主模型按内置规则在 Tavily/Exa/Keenable
间路由(会话内 LRU 缓存,失败按可用性降级),web_fetch 固定走 Exa 并
静默降级。三家均改为纯 fetch 直连——Exa 直接对 mcp.exa.ai 发 JSON-RPC
并缓存会话,彻底移除 pi-mcp-adapter、@tavily/pi-extension 与
@keenable/pi-search 依赖。

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
云服务部-叶林立
2026-10-19 20:13:37 -07:00
co-authored by Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
parent 6fe6cb29ae
commit ee1e6999d7
32 changed files with 1690 additions and 1188 deletions
+7 -25
View File
@@ -77,31 +77,13 @@ export const BUNDLE_GROUP_DEFINITIONS: BundleGroupDefinition[] = [
tools: ["codegraph_explore", "lsp_definition", "lsp_references", "lsp_hover", "lsp_symbols", "lsp_diagnostics"],
},
{
id: "web-tavily",
title: "Tavily web discovery",
summary: "Discover broad, current, or news-oriented web sources with Tavily and fetch selected pages.",
useWhen: ["Keywords are uncertain, many candidate sources help, or current/news coverage is needed"],
avoidWhen: ["Official technical sources or Chinese site/date constraints are more important"],
keywords: ["tavily", "web", "news", "discovery", "网页", "新闻", "广泛搜索"],
tools: ["tavily_web_search", "tavily_web_fetch"],
},
{
id: "web-exa",
title: "Exa precision research",
summary: "Find precise official, technical, academic, company, or API sources with Exa and read selected pages.",
useWhen: ["Source precision, official documentation, papers, releases, or advanced filters matter"],
avoidWhen: ["Broad news discovery or Chinese policy search is the primary need"],
keywords: ["exa", "official docs", "paper", "api", "research", "官方文档", "论文", "精确搜索"],
tools: ["exa_web_search", "exa_web_search_advanced", "exa_web_fetch"],
},
{
id: "web-keenable",
title: "Keenable focused search",
summary: "Search Chinese-language, site-restricted, policy, government, or date-filtered sources and fetch selected pages.",
useWhen: ["Chinese pages, policies, government notices, domain restrictions, or publication dates matter"],
avoidWhen: ["Broad international discovery or academic semantic search is a better fit"],
keywords: ["keenable", "Chinese", "policy", "site", "date", "中文", "政策", "站点", "日期"],
tools: ["keenable_search", "keenable_fetch"],
id: "web-search",
title: "Web search and fetch",
summary: "Search the web for current or citable information and read selected pages as clean markdown.",
useWhen: ["Current events, external facts, documentation, papers, or page content are needed"],
avoidWhen: ["The answer is already in the workspace or local code tools suffice"],
keywords: ["web", "search", "fetch", "news", "docs", "网页", "搜索", "新闻", "文档"],
tools: ["web_search", "web_fetch"],
},
{
id: "context-execution",