# @agntn/web 中文文档

规范地址：https://npmcn.com/package/%40agntn/web/

版本：0\.9\.1
npm 元数据更新时间：2026-10-29T00:25:18.837Z
中文译文更新时间：2026-11-05T22:18:00.073Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40agntn/web
原文对照：https://npmcn.com/package/%40agntn/web/?lang=original
项目主页：https://web.agntn.dev/
源码仓库：https://github.com/agntn/web

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：459 kB，64 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=26
- 运行依赖：5 个
- peer 依赖：ai ^7\.0\.0，@earendil-works/pi-tui \>=0\.86\.1 \<2，@oh-my-pi/pi-coding-agent \>=18\.0\.0 \<19，@earendil-works/pi-coding-agent \>=0\.86\.1 \<2
- 首次发布：2026-08-25T21:33:55.063Z
- 最新版本发布：2026-10-29T00:25:18.546Z
- 近 30 天下载量：13180（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：20（近 12 个月 20 个）

## 中文简介

统一网络搜索和读取代理和CLI的提供者.

## 安装

```sh
npm install @agntn/web
```

也可以使用：`pnpm add @agntn/web`、`yarn add @agntn/web`、`bun add @agntn/web`

## README

# @agntn/web (韩语)

[![npm version](https://npmx.dev/api/registry/badge/version/@agntn/web)](https://npmx.dev/package/@agntn/web) [![npm downloads](https://npmx.dev/api/registry/badge/downloads/@agntn/web)](https://npmx.dev/package/@agntn/web) [![license](https://npmx.dev/api/registry/badge/license/@agntn/web)](https://npmx.dev/package/@agntn/web) [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/agntn/web)

十三个搜索API,一个 `{ url, title, snippet }`。你用同样的方式问 Exa, Brave 或你自己的 SearXNG, 你读的页面 后面的一击相同的方式, 没有人会记得 哪个键走进哪个标题.

## 为什么?

每个搜索API都卖出相同的东西,有10个有标题和片段的链接,每个链接都采用不同的顺序. 埃克萨想要一个POST与 `x-api-key`勇于行动 `X-Subscription-Token`塔维利把钥匙放在JSON体内 为什么不呢? 将其中的3个连接到一个特工中 你有三个客户 3个响应形状 以及3个关于日期的想法 所以这是其中13个前面的一个类形状, 搜索,读取和反向图像搜索, 不管是谁回答, 相同的对象都出来了.

医生和一个活探险家: [互联网档案馆的存檔,存档日期2013-12-04](https://web.agntn.dev/)。 。 。 .

## \* 特性

-   🧩 **13个后台,一个合同.** Brave, Contex.dev, Exa, Firecrawl, Jina, 玛吉纳利娅, Mojeek, OpenAI Codex, SearXNG, SerpAPI, SerpBase, Tavily and TinyFish, 从你这边看, 区别是弦.
-   🔎 **搜索,读取,反向图像.** 查询结果, URL 到Markdown, 图像 URL 到它显示的页面 。 三个电话,不是三个包裹.
-   🕵️ **页面所隐藏的.** 注释,隐藏的形式字段,隐形字符,白上白文字. `web reveal` 从 HTML 直接逐行列出.
-   🌐 **`all` 意为一切.** 每一个有钥匙的供应商都有一个查询, 被URL拆掉的UTM垃圾.
-   🛟 **退后不写.** 从Firecrawl的信贷中, 利率限制在 SerpAPI 上? 下一个配置的提供者会得到查询和实际回复的答案名.
-   📏 **读者有天花板.** `maxChars` 准确的,在代码点中计算, 和一页不匹配的手 一个续作符而不是你没有要求的 400 kB.
-   📄 **第二页存在.** 勇者斗恶龙、马吉纳利亚、莫杰克、SaerXNG、SerpAPI、SerpBase和TinyFish的页面通过结果显示不透明符号.
-   🤖 **一个包裹,六个门.** CLI,库,AI SDK工具,一款MCP服务器,一款Pi扩展和一款OMP扩展,出道后JSON每款都是一样的.
-   🔐 **钥匙不在你的日志里.** 关键是从 URL 中被擦去的 在有错误说出来之前.
-   🧠 **已登录的编码搜索 .** 已签入 Codex, Pi, OMP 或 OpenCode 吗 ? OpenAI网络搜索运行于此,没有API密钥.

## QQ 安装

```bash
pnpm add @agntn/web
```

节点.js 26或更新. AI SDK 工具打开 `@agntn/web/ai` 请求 `ai` 旁边有7个 主条目从来不碰它:

```bash
pnpm add ai
```

## 第一次通话

```bash
npx @agntn/web "how many r in strawberry"
```

```
How many 'r's are in strawberry? And do LLMs know how to spell? - DEV Community
  https://dev.to/savannah_norem/how-many-rs-are-in-strawberry-and-do-llms-know-how-to-spell-2513
  Well the short answers are three and kind of… but not really. ... Any which way you cut it, there are three ‘r’s in stra...

Language Log » "The cosmic jam from whence it came"
  https://languagelog.ldc.upenn.edu/nll/?p=66206
  Elle Cordova offers an update from ChatGPT on the number of Rs in "strawberry": ... As of this morning, ChatGPT 4o gives...

How many r are in strawberry? | AI Roundtable by Opper
  https://opper.ai/ai-roundtable/questions/how-many-r-are-in-strawberry-fc2d3d2d
  Answer: There are exactly three "r"s in the word "strawberry". (All 4 models agreed) ... Answer: There are 3 “r” letters...
```

三个 所有四个模式都同意,对它们有好处

没有副指挥 没有旗帜 任何没有的 `search`, (中文(简体) ), `read`, (中文(简体) ), `search-image`, (中文(简体) ), `reveal`, (中文(简体) ), `providers` 或者说 `mcp` 是一个查询。 哪个供应商回答? 第一个在您的嵌入器中带有密钥, 按此顺序检查 : exa, Brave, Contex. dev, Firecrawl, Jina, Tavily, TinyFish, SerpAPI, SerpBase, Mojeek, 玛吉纳利亚, 然后是保存的 Codex 登录, 然后是 SearXNG 打开 `localhost:8080`任何地方都找不到钥匙,就意味着没人可以打电话说. `--provider brave` 如果你宁愿选择.

阅读是不同的,一个工作 在你的洞里没有任何:

```bash
web read https://example.com
```

```
[provider=jina requested=auto] read https://example.com/
Example Domain
  https://example.com/

This domain is for use in documentation examples without needing permission. Avoid use in operations.

[Learn more](https://iana.org/domains/example)
```

读数从Jina开始 `r.jina.ai`,不需要钥匙,然后转到背景。 德夫,Firecrawl,TinyFish,Tavily或Exa 当Jina失利,利率受限,下行或以409的回答. 第一行告诉你谁做了这个工作.

还有几把钥匙,允许:

```bash
web search "typescript 7" "node.js 26" --provider all --json
web search "rust 2027 edition" --provider brave --max-results 3
web search "typescript 7" --provider exa --summary --full-text
web search "typescript 7" --include-domains '["github.com"]' --start-published-date 2026-01-01
web read https://example.com --format markdown --max-chars 20000 --json
web search-image https://example.com/image.jpg --max-results 5
web providers
```

### 图标

| 命令 | 它会做什么 | 示例 |
| --- | --- | --- |
| `web <query>` | 用第一个配置的提供者搜索 | `web "typescript 7"` |
| `web search <query...>` | 一个查询或批次,一个提供者或 `all` | `web search "a" "b" --provider all --json` |
| `web search-image <url>` | 包含或类似于公共图像的页面 | `web search-image https://.../logo.png` |
| `web read <url...>` | 一个 URL 或一个批次进入规范内容 | `web read https://example.com --max-chars 20000` |
| `web reveal <url>` | 页面对读者的隐瞒 | `web reveal https://gsmg.io/theseedisplanted` |
| `web providers` | 谁被配置,谁能做什么 | `web providers` |
| `web mcp` | Stdio上的 MCP 服务器 | `web mcp` |

`--provider` 财务报告和审定财务报表 `--max-results` 在每次搜索中工作。 域名,出处,分类和日期过滤器到了解它们的提供者那里去,被报道为忽略了那些没有被忽略的提供者. 列表为JSON阵列. 无 `--json` 你读一个模型读 `--json` 打印下的数据 `result`,同一对象的MCP发送。 满旗名单在 [CLI 指南](https://web.agntn.dev/guide/cli)。 。 。 .

## 图书馆

```typescript
import { create, readUrl, searchAll } from "@agntn/web";

const exa = await create("exa"); // reads EXA_API_KEY, loads the Exa adapter and nothing else
const results = await exa.search("typescript runtime benchmarks", { maxResults: 5 });

for (const result of results) {
  console.log(result.title, result.url);
}

const everything = await searchAll("typescript runtime benchmarks"); // every configured provider, deduplicated
console.log(everything.map((result) => [result.url, result.providers]));

const page = await readUrl("https://example.com", { format: "markdown", maxChars: 20_000 });
console.log(page.title, page.truncated, page.continuation);
```

这是大部分,真的. `create("brave")` 改为 `create("exa")` 代码里没有其他变化 导入包装入没有适配器, `create()` 输入您命名的, 然后再运行. `searchWithFallback()` 选择 CLI 会告诉你的提供者 `attempts` 他们沿途辍学. `searchProviderDetailed()` 是同一个搜索与 `pagination` 附加,通过 `continuation` 回到第二页 错误是一个家族: 401是 `AuthError`,使用过的贷项为: `PaymentError` 不管他们隐藏什么身份 429是 `RateLimitError` 与 `retryAfter`,没有任何反应 `HTTPError` 与状态0 和下面的真正原因。 细节和教训: [搜索中](https://web.agntn.dev/guide/search), (中文(简体) ), [风扇出](https://web.agntn.dev/guide/fanout), (中文(简体) ), [阅读](https://web.agntn.dev/guide/read), (中文(简体) ), [反向图像搜索](https://web.agntn.dev/guide/image)。 。 。 .

## 提供商

| 提供者 | 认证 | 对 | 过滤器 | 页 次 |
| --- | --- | --- | --- | --- |
| **勇士们** | `BRAVE_API_KEY` | 搜索 | 日期 | 对 |
| **上下文** | `CONTEXT_DEV_API_KEY` | 搜索, 读取 | 域 |  |
| **exa (英语)** | `EXA_API_KEY` | 搜索, 读取 | 域、 类别、 日期 |  |
| **相接线** | `FIRECRAWL_API_KEY` | 搜索, 读取 | 域、来源、类别 |  |
| **吉纳** | `JINA_API_KEY`改为: | 搜索, 读取 | 包括域、 类别 |  |
| **边际** | `MARGINALIA_API_KEY`, (中文(简体) ), `public` 名称时键 | 搜索 | 无 | 对 |
| **摩吉克语name** | `MOJEEK_API_KEY` | 搜索 | 域,日期 | 对 |
| **打开编码x** | 现有登录, 可选 `OPENAI_CODEX_ACCESS_TOKEN` | 搜索 | 无 |  |
| **搜索** | 没有,你自己的情况 | 搜索 | 类别 | 对 |
| **塞尔帕皮** | `SERPAPI_API_KEY` | 搜索, 搜索图像 | 日期 | 对 |
| **螺旋基团** | `SERPBASE_API_KEY` | 搜索 | 类别 | 对 |
| **轻快地** | `TAVILY_API_KEY` | 搜索, 读取 | 域、 类别、 日期 |  |
| **小鱼** | `TINYFISH_API_KEY` | 搜索, 读取 | 域、 类别、 日期 | 对 |

Codex是出局的奇数:没有密钥,它借用了您已经在Codex, Pi, OMP 或 OpenCode 中的登录,以及 `snippet` 由于模型的答案不是页取出,所以返回为空. 每一个都填什么, 过滤它的荣誉和它咬的地方: [供应商](https://web.agntn.dev/providers)。 。 。 .

## 代理人

```bash
web mcp
pi install git:github.com/agntn/web
omp install @agntn/web
```

```json
{
  "mcpServers": {
    "web": { "command": "npx", "args": ["-y", "@agntn/web", "mcp"] }
  }
}
```

`web_search`, (中文(简体) ), `web_image_search`, (中文(简体) ), `web_read`, (中文(简体) ), `web_reveal` 财务报告和审定财务报表 `web_providers`,每个定义一个, AI SDK上的同一套(`@agntn/web/ai`),MCP,Pi,OMP和CLI. 除非模型要求更多,否则阅读会停留在20000个字符,页面链接列表和搜索结果的favicon URL不在此列,除非它也要求这些,所以没有人偶然将整个网站输入上下文窗口. Pi也会得到 `/web` 财务报告和审定财务报表 `/web-providers`每个主机的外观和信封: [代理指南](https://web.agntn.dev/guide/agents)。 。 。 .

## ~ 这不起作用 ~

没有浏览器 。 这里没有任何东西可以让JavaScript,爬行一个站点或取一个截图,以及 `search-image` 发送一个 URL 并获取页面返回, 它后面没有 OCR 或图像分析 。 昨天的页面版本是 [@agntn/存档](https://github.com/agntn/archives)。 。 。 .

## ++ 添加提供者

错过你最喜欢的引擎了吗? 扩展 `Provider`,执行 `search`, (中文(简体) ), `read` 或者说 `searchByImage`电话 `register()`,和CLI,工具和 `all` 查看它时没有要编辑的名称 tuple。 一个建筑在其中 得到一个条目 在清单在 `src/providers/index.ts` 相反,凭借它的能力和懒惰 `import()` 中,加上其行码 `builtinProviders`。 。 。 . `test/index.test.ts` 财务报告和审定财务报表 `test/unit/providers-manifest.test.ts` 如果你忘了,会告诉你的 合同规定: [自定义提供者](https://web.agntn.dev/guide/custom)。 。 。 .

## 发展

```bash
vp install       # installs the library and docs
vp check         # format, lint and type-check
vp test
vp run build     # obuild, straight into dist/
vp run docs      # Docus on :3000, bundling src/ itself
```

## 谢谢

这个软件包的存在得益于两个开源程序, [Claude 打开源代码](https://claude.com/contact-sales/claude-for-oss) 在雅典和纽约 [开源代码](https://developers.openai.com/community/codex-for-oss) 在开放AI.

## 许可证

[麻省理工学院](https://npmcn.com/package/%40agntn/web/LICENSE)

## 常见问题

### @agntn/web 是什么？

统一网络搜索和读取代理和CLI的提供者\.

### 如何安装 @agntn/web？

在项目目录运行 npm install @agntn/web，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 web，可以用 npx web 直接运行。

### @agntn/web 支持 TypeScript 吗？

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

### @agntn/web 支持 ESM 还是 CommonJS？

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

### @agntn/web 需要什么版本的 Node\.js？

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

### @agntn/web 可以商用吗？

@agntn/web 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @agntn/web 的下载量有多少？

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

### @agntn/web 还在维护吗？

最新版本 0\.9\.1 发布于 2026/10/29（9 天前）；至今共发布 20 个版本，其中过去 12 个月发布了 20 个；首次发布于 2026/08/26。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

