@framers/agentos-ext-web-search

中文文档
1.4.0发布于 2026/11/11Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 2.1万

AgentOS的网络搜索、研究汇总和事实检查工具

中文使用文档
文档目录13 节
  1. 安装
  2. 快速启动
  3. 环境变量
  4. 选项
  5. 从代码搜索
  6. 工具
  7. web_search
  8. research_aggregate
  9. fact_check
  10. 排名
  11. 与代理服务器重排
  12. 页:1
  13. 许可证

AgentOS 网络搜索扩展

专业的网络搜索,研究汇总,以及AgentOS代理的实况调查.

支持Serper.dev,Tavily,Brave,SerpAPI,Firecrawl和SearXNG等. 搜索按此顺序询问被配置的提供者,并用第一个没有出错返回的提供者来回答,即使它没有返回任何结果(Tavily或Firecrawl要求出局时不返回结果). 它只有在一个投出出出错或超过其速率限制时才会移动到下一个提供商,而返回到DuckDuckGo,它不需要API密钥,而每个配置的提供商都这样做了. 英文维基百科不需要密钥,它回答一个搜索 锁定它和 multiSearch 一旦一个主机允许它(见 选项) (中文(简体) ).

安装

npm install @framers/agentos-ext-web-search

快速启动

import { AgentOS } from '@framers/agentos';

const agentos = await AgentOS.create({
  extensionManifest: {
    packs: [
      {
        package: '@framers/agentos-ext-web-search',
        options: {
          // Any one of these is enough; configured providers are tried in the order above.
          serperApiKey: process.env.SERPER_API_KEY,
          tavilyApiKey: process.env.TAVILY_API_KEY,
          braveApiKey: process.env.BRAVE_API_KEY,
          serpApiKey: process.env.SERPAPI_API_KEY,
          firecrawlApiKey: process.env.FIRECRAWL_API_KEY,
          searxngUrl: process.env.SEARXNG_URL,
        },
      },
    ],
  },
});

环境变量

  • SERPER_API_KEY (可选)
  • SERPAPI_API_KEY (可选)
  • BRAVE_API_KEY (可选)
  • TAVILY_API_KEY (可选)
  • FIRECRAWL_API_KEY (可选)
  • SEARXNG_URL (可选, 一个 SearXNG 实例 URL)

如果没有设置,扩展将返回 DuckDuckGo 。 维基百科不需要键和变量: wikipedia 选项允许它.

选项

除了上面的键,包选项和 SearchProviderService配置 :

选项它会做什么当被忽略时
wikipedia{ enabled, client, limiter?, origin?, timeoutMs? }:英语维基百科的REST搜索通过 @framers/agentos-ext-public-sources' WikipediaSourceProvider不需要钥匙. client (单位:千美元){ name, version, contact })作为Wikimedia用户代理的政策要求发送. limiter 是一个过程 SourceLimiter 维基百科中的相关条目: 向每个服务单位和每个调用它的读者传递相同的一个,因为维基媒体计算每个客户端的极限. origin 将提供者指向另一个维基或站点; timeoutMs 是每个请求的最后期限.关. 一旦启用:一个新的 SourceLimiter, (中文(简体) ), https://en.wikipedia.org3000ms (英语).
serperUrl塞尔珀的搜索端点,例如主机测试中的站站.https://google.serper.dev/search
tavilyUrl塔维利的搜索终点.https://api.tavily.com/search
firecrawlUrlFirecrawl的搜索终点.https://api.firecrawl.dev/v1/search
tavily{ searchDepth: 'basic' | 'advanced' },则 search_depth 塔维利被派来. include_answer 财务报告和审定财务报表 include_raw_content 任何深度都是虚假的.advanced

这个 wikipedia 提供者在所有其他配置提供者之后列出。 A 类 search 没有 provider 从不问:它只回答文章标题,所以一般查询会到按键提供者,然后到 DuckDuckGo. 把它绑起来 provider: 'wikipedia',或使用 multiSearch,它问它与其他人。 每个被击中的答案是 { title, url, snippet: '', position },则 url 由公共来源建造 articleUrl这样 decodeURIComponent 路径 /wiki/ 将文章的密钥送回读取 WikipediaSourceProvider.read。 。 。 .

从代码搜索

import { SourceLimiter } from '@framers/agentos-ext-public-sources';
import { LimiterRefused, SearchFailed, SearchProviderService } from '@framers/agentos-ext-web-search';

// One limiter for the wiki in the process, shared with every other caller of it.
const wikiLimiter = new SourceLimiter();

const search = new SearchProviderService({
  tavilyApiKey: process.env.TAVILY_API_KEY,
  tavily: { searchDepth: 'basic' },
  wikipedia: {
    enabled: true,
    client: { name: 'MyApp', version: '1.2.0', contact: 'https://example.org/contact' },
    limiter: wikiLimiter,
  },
});

let sent = 0;
const controller = new AbortController();
try {
  const response = await search.search('Treaty of Versailles', {
    provider: 'wikipedia',
    maxResults: 2,
    signal: controller.signal,
    onSend: () => {
      sent += 1;
    },
  });
  // response.results[0]: { title: 'Treaty of Versailles', url: 'https://en.wikipedia.org/wiki/Treaty_of_Versailles', snippet: '', position: 1 }
} catch (error) {
  if (error instanceof LimiterRefused) {
    // Nothing was sent: error.reason is 'blocked', 'minute', 'wait' or 'caller'.
  } else if (error instanceof SearchFailed) {
    // error.provider is 'wikipedia'; error.status is the HTTP status, or null when none came.
  }
}

search(query, { maxResults, provider, category, signal, onSend })数字 :

  • provider 针入一个提供者:没有其他提供者被尝试过,没有任何东西回到DuckDuckGo. 解答错误状态的被绑定的密钥提供者抛出自己的 Error被钉住 wikipedia 搜索限制器拒绝丢出公共来源 LimiterRefused,这个包的再出口, 一个失败扔 SearchFailed。拒绝是宿主的限制器投掷的,理由和所有,甚至来自另一份公共来源的限制器。 一个搜索锁定在 wikipedia 在一个服务 它不能扔和发送什么.
  • signal 结束搜索的每一个提供者请求,搜索则以信号的理由拒绝. Tavily和Firecrawl自己的15秒计时器在旁边跑,他们自己的计时器没有结果. 无 provider中,中止结束搜索:没有询问下一个提供者, DuckDuckGo 则不是.
  • onSend 在每个提供者被问到之前,等待其请求。 投出后,一无所寄;再无所求;而取出所投之物而拒之. 对于 wikipedia 一旦限制器批准请求,它就会运行,所以限制器拒绝运行。 搜索会被拒绝 onSend 当一个429或一个503 屏蔽了限制器时, 或间距会经过限制器时 waitMs。 。 。 .

一个没有的搜索 signal 也没有 onSend 在这些选项存在前发送请求 .

工具

web_search

腾讯网. provider 针头之一 serper, (中文(简体) ), serpapi, (中文(简体) ), brave, (中文(简体) ), tavily, (中文(简体) ), firecrawl, (中文(简体) ), searxng 或者说 duckduckgo,以及 wikipedia {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}我为它提供了服务 该工具在构建时读取服务供应商: 在没有服务的情况下 wikipedia它的图谋 provider enum及其描述将维基百科排除在外 validateArgs 拒绝 provider: 'wikipedia' 作为无效的提供者.

research_aggregate

运行多个搜索和汇总结果 .

fact_check

交叉核对各种来源的索赔.

排名

与 multiSearch: true (工具输入或包选项) defaultMultiSearch: true ),每个已配置的提供者都会有一个查询 wikipedia 当它被启用时,在其中提供)和 DuckDuckGo 并行进行。 结果通过规范化的URL合并,并根据从有多少供应商返回URL以及每个供应商将其放在哪里而建立的信任分数来命令. 包头运行没有再排队模式,并将结果发送到没有再排队服役.

与代理服务器重排

AgentOS 重排一个 RerankerService (单位:千美元)@framers/agentos/cognition/rag/reranking) (中文(简体) ). 重新排序是提供者不可知的:您要注册提供者,以及 rerankChain(query, chunks, chain) 按顺序运行链的相位,每个相位指定一个提供者 id, a topK 也可以选个模特儿 提供商未注册或无法提供的舞台被跳过,而扔出之前的顺序的舞台被丢出.

网络搜索有两种使用方式:

  • 这包的结果. 包的工具不叫重排机。 重新排序什么 web_search 返回,将结果传递给 rerankChain 自己,每个块与一个 id,一个 originalDocumentId (例如URL)及其片段为 content。 。 。 .
  • AgentOS自己的搜索. WebSearchService (单位:千美元)@framers/agentos/cognition/web-search)是与其自己的提供商进行单独搜索(FirecrawlProvider, (中文(简体) ), TavilyProvider, (中文(简体) ), SerperProvider 财务报告和审定财务报表 BraveProvider,随 registerProvider不是这个包 鉴于a reranker 联合国 RerankerService)和a 数据 rerankChain,它会重新排序其被熔化的结果,发送每个结果的页面内容,或者当它没有时它的片段. 如果重排失败, 它会返回未重排的导出结果 .

AgentOS 飞船 3个重排供应商,全部从 @framers/agentos/cognition/rag/reranking。该表描述了执行中的代理操作系统 c46ff75;其他版本可能有所不同(在v0.10.40,这个包申报的最古老的AgentOS, LlmJudgeReranker 接受一个 timeoutMs (但不适用).

编号类如何得分剩下的过程默认失败时
localLocalCrossEncoderReranker交叉编码器通过 Transformers.js 给每个查询和文档配对进行中评分(@huggingface/transformers,则 @xenova/transformers,由主机安装).没有查询或文档。 该模型被下载在先使用后被缓存.型号 cross-encoder/ms-marco-MiniLM-L-6-v2,设备 cpu, (中文(简体) ), maxSequenceLength 512号, batchSize 32. 国家.当两个变形器.js软件包都没有安装时不可用 。 无法装入抛出物的模型 。 一份得分为0的文档.
cohereCohereRerankerCohere是Rerank API对文件的评分.查询和每个文件的全部内容,发送到 <baseUrl>/v1/rerank 与 apiKey。 。 。 .型号 rerank-v3.5, (中文(简体) ), baseUrl https://api.cohere.ai超时3000毫秒.未提供 apiKey. 非-2xx 答案或超时抛出.
llm-judgeLlmJudgeReranker一个语言模型,通过主机调用 llmCallFn(system, user, model?)评分 maxPointwiseDocuments 文档分为批次为0至10个,然后在一次呼叫中将得分最高者排在首位。 过去的文件 maxPointwiseDocuments 没有答案.查询和每个文档的前200个字符, 发送到主机所在的地方 llmCallFn 派他们来.没有自己的模式 : scoringModel 财务报告和审定财务报表 rankingModel 转至 llmCallFn 现予印发. maxPointwiseDocuments 一百块, batchSize 10号, pointwiseTopK 20,超时3000分的电话.拨打失败,出局或不分析得分的批次 排名失败的调用将顺序留给分数.

见特工OS 重新排队 页 次 WebSearchService.ts。 。 。 .

页:1

  • 工具只读(无副作用).
  • 提供者选择是自动的,基于哪个密钥配置以及是否 wikipedia 已启用.

许可证

Apache-2.0 框架.dev

版本与发布记录

@framers/agentos-ext-web-search 共发布 11 个版本,首次发布于 2026/02/06;过去 12 个月发布了 11 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.4.0latest2026/11/114 天前
1.3.62026/11/114 天前
1.3.52026/11/105 天前
1.3.42026/11/0115 天前
1.3.32026/10/2125 天前
1.3.22026/10/121 个月前

关于 @framers/agentos-ext-web-search 的常见问题

@framers/agentos-ext-web-search 是什么?

AgentOS的网络搜索、研究汇总和事实检查工具

如何安装 @framers/agentos-ext-web-search?

在项目目录运行 npm install @framers/agentos-ext-web-search,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@framers/agentos(>=0.10.40)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@framers/agentos-ext-web-search 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@framers/agentos-ext-web-search 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@framers/agentos-ext-web-search 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@framers/agentos-ext-web-search 可以商用吗?

@framers/agentos-ext-web-search 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@framers/agentos-ext-web-search 的下载量有多少?

根据 npm 官方下载统计,@framers/agentos-ext-web-search 在 2026/10/16 – 2026/11/14 这 30 天内被下载 20,861 次,日均约 695 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@framers/agentos-ext-web-search 还在维护吗?

最新版本 1.4.0 发布于 2026/11/11(4 天前);至今共发布 11 个版本,其中过去 12 个月发布了 11 个;首次发布于 2026/02/06。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。