你的 AI 助手刚搜了个技术问题,Tavily 扣了 0.008 刀。再搜一个,Firecrawl 又扣 0.01 刀。一天下来搜了 200 次,账单 2 刀。一个月 60 刀——光搜索就 60 刀,还没算模型调用费。
3,739 个人决定不给这个钱了。
wigolo:一行命令,18 个搜索引擎同时跑
wigolo 是一个本地优先的 MCP 服务器,给 Claude Code、Cursor、Codex 等 AI 编程助手装上"上网大脑"——搜索、抓取、爬虫、提取、缓存、研究,全跑在你本地,零 API Key,每次查询 $0。
npx wigolo init --agents=claude-code,cursor
一行命令,自动下载浏览器引擎和本地 ML 模型,配置好 MCP 客户端。装完就能用。
10 个工具,覆盖 Agent 全部上网需求
| 工具 | 干什么 | 需要 API Key? |
|---|---|---|
search |
18 个搜索引擎并行查询,ML 重排序 | ❌ |
fetch |
抓单个 URL,三层路由自动升级 | ❌ |
crawl |
爬整个站点,自动处理分页 | ❌ |
extract |
从页面提取结构化内容 | ❌ |
cache |
查询结果自动缓存,语义搜索可复用 | ❌ |
find_similar |
找相似网页(关键词+语义+实时三路融合) | ❌ |
research |
拆解问题→多源搜索→合成带引用的报告 | ⚠️ 可选配 Gemini 免费 Key |
agent |
自主收集循环:计划→搜索→抓取→合成 | ⚠️ 同上 |
diff |
对比网页变化 | ❌ |
watch |
监控网页更新,变化推送到 webhook | ❌ |
核心 6 个工具完全不需要 API Key。research 和 agent 如果要答案合成,配一个 Gemini 免费 Key 就行——免费额度对 wigolo 绰绰有余。
怎么做到 $0/查询?
wigolo 的搜索层不调任何搜索 API。它直接通过 18 个适配器访问搜索引擎的网页版:
查询 "Rust async runtime comparison"
├── Google 适配器 → 结果集 A
├── Bing 适配器 → 结果集 B
├── DuckDuckGo 适配器 → 结果集 C
├── Brave 适配器 → 结果集 D
├── ... 共 18 个引擎并行
└── 倒数排名融合(RRF)→ ML 交叉编码器重排序
└── 每条结果带可解释的逐条分数
重排序用的是本地 ML 模型(交叉编码器),跑在你机器上。缓存存到 ~/.wigolo/,下次搜类似的东西直接命中,不重复查询。
抓取层也是三层路由自动升级:
- HTTP 直连——最快,能抓就抓
- TLS 模拟——绕基础反爬
- 无头浏览器——处理 SPA 页面和验证码挑战
而且 wigolo 会记住每个域名最有效的策略(per-domain learning),下次直接走最快路径。
服务器部署:Docker 一键起
wigolo 不只能跑在本地。它原生支持服务器部署,三种方式:
方式一:Docker(推荐)
# HTTP 服务器模式——多客户端远程访问
docker run -p 3333:3333 -v wigolo-data:/data -e WIGOLO_API_TOKEN=your-secret-token ghcr.io/knockoutez/wigolo serve --host 0.0.0.0
# stdio MCP 模式——单客户端直连
docker run -i --rm -v wigolo-data:/data ghcr.io/knockoutez/wigolo
- 镜像:
ghcr.io/knockoutez/wigolo或 Docker Hubtowhid69420/wigolo - slim 镜像懒加载模型;
:full镜像预装浏览器引擎 - 绑定非 loopback **必须设
WIGOLO_API_TOKEN**,否则拒绝连接
方式二:REST API
wigolo serve # 默认 127.0.0.1:3333
POST /v1/{tool} 覆盖全部 10 个工具,GET /openapi.json 提供 OpenAPI 3.1 文档,/mcp + /sse 同时服务远程 MCP 客户端。可以接入 n8n、Hermes 等自托管 Agent。
方式三:SDK 嵌入
import { createLocalClient } from 'wigolo-sdk/local';
const { client, close } = await createLocalClient();
const res = await client.search({ query: 'xxx', max_results: 5 });
await close();
Python SDK:pip install wigolo
服务器部署注意事项
| 事项 | 说明 |
|---|---|
| 数据中心 IP 信誉差 | 某些反爬严格的网站会按 IP 信誉打分,数据中心 IP 过不了家庭宽带能过的验证。wigolo 标注 blocked_by_challenge,官方提供 opt-in 代理方案 |
| SSRF 漏洞 | Issue #206/#207/#210 是一系列 SSRF 漏洞,服务器暴露面更大,务必升级到最新版 |
| AGPL-3.0 协议 | 可以在公司内自部署使用,但如果修改了代码作为网络服务运行,必须开源修改后的源码 |
| 资源需求 | ML 重排序模型 + 浏览器引擎,建议 2C4G 起步 |
竞品对比:wigolo vs Tavily vs Firecrawl vs Exa
| wigolo | Tavily | Firecrawl | Exa | |
|---|---|---|---|---|
| 定价 | $0/查询 | $0.008/credit | $0.003-0.01/页 | $0.001/搜索 |
| API Key | 不需要 | 需要 | 需要 | 需要 |
| 搜索引擎 | 18 个并行 | 自研 | 自研 | 自研 |
| 本地运行 | ✅ | ❌ 云端 | ❌ 云端 | ❌ 云端 |
| 数据隐私 | 全本地 | 数据过云 | 数据过云 | 数据过云 |
| 重排序 | 本地 ML 模型 | 云端 | 云端 | 云端 |
| 语义缓存 | ✅ | ❌ | ❌ | ❌ |
| MCP 支持 | ✅ 原生 | ✅ | ✅ | ✅ |
| Docker 部署 | ✅ | ❌ | ✅ | ❌ |
| REST API | ✅ | ✅ | ✅ | ✅ |
| SDK | TS + Python | Python | TS + Python | Python |
wigolo 的差异化:免费 + 本地 + 多引擎 + 可自部署。Tavily/Firecrawl/Exa 都是云端按次计费,wigolo 把整个搜索-抓取-重排序链路搬到本地。
代价清醒:4 个必须知道的问题
1. SSRF 漏洞没完全补完
Issue #206 是最初的 SSRF 报告,#207 是后续修复——pin socket 到已验证 IP 防 DNS rebinding / TOCTOU 攻击。说明之前的修复不完整。Issue #210 是第三轮。让一个有 SSRF 问题的工具访问内网?服务器部署场景风险更大。
2. 中文搜索质量拉胯
Issue #232 "preserve CJK relevance signals"——中文搜索结果相关性有问题,需要专门修复。18 个引擎直连的设计对英文效果好,但百度、搜狗等中文引擎的适配质量参差不齐。
3. 巴士因子 = 1
KnockOutEZ 一个人贡献了 1,881 / 总共约 1,900 commits。第二贡献者只有 7 commits。作者一旦停更,项目基本就死了。 3.7K Star 但只有 15 个 subscriber watching——大多数人装了就用,没人守着。
4. "免费"的根本矛盾
18 个搜索引擎直连 = 绕过官方 API 免费用。搜索引擎随时可以改反爬策略封杀。Tavily/Firecrawl 付费是因为它们和搜索引擎有商业协议,wigolo 的"免费"建立在"搜索引擎暂时没封"的基础上。README 自己也承认:> Degraded backends are reported in the output——引擎挂了不藏着,但挂了就是挂了。
趋势判断
wigolo 切中的需求是真实的:AI Agent 的搜索层不应该是一个持续计费的云端黑盒。搜索引擎的原始数据是公开的,重排序和提取可以本地跑,查询历史可以缓存——这在技术上完全成立。
但它也暴露了本地优先路线的固有边界:反爬对抗是军备竞赛,单开发者扛不住。巴士因子 1 + 18 个引擎的适配维护 = 每次搜索引擎改版都可能断一个适配器。
适合:用 Claude Code/Cursor 写代码、需要 AI 助手联网查资料、不想付 Tavily/Firecrawl 月费的个人开发者。本地跑,数据不出门,搜索免费——这个承诺目前成立。
不适合:需要高可靠生产搜索的团队(SSRF 漏洞 + 巴士因子 1 + 中文搜索弱)、需要 SLA 保障的企业用户、搜索质量不能有任何下降的场景。
相关链接:
暂无评论。