wigolo:让AI编码助手零成本联网
导读
wigolo 是一个本地优先的 AI Agent Web 情报引擎——一行命令装好,你的 Claude Code、Cursor、Codex 等编码助手就能联网搜索、抓取网页、爬站、提取结构化数据,而且**不需要任何 API Key,不需要云端服务,查询费用为零**。
为什么选它
| 维度 | 评估结果 |
|---|---|
| Trending 排名 | GitHub 日榜连续上榜(7月19日 +203⭐,7月20日 +595⭐),总 Star ~2066 |
| 涨星速度 | 近 2 天增长超 700 颗星,Star 暴涨近三倍,曲线陡峭上升 |
| 讨论度 | 头条/掘金等多平台出现评测文章:《GitHub 涨星热榜 Top3》《日涨 605 星》《给AI编码助手装上"网络引擎"》等 |
| 实用性 | ✅ 一行 npx wigolo init 即用;支持 8+ 主流 AI 编码工具;普通人也能通过 CLI 直接使用 |
一句话理解项目
把搜索、抓取、爬虫、结构化提取这整套 Web 能力打包成一个 MCP 工具,跑在你自己电脑上,免费且不依赖第三方服务。
核心功能拆解
wigolo 提供了 10 个核心工具,覆盖了 AI Agent 在网络上能做的几乎所有事情:
🔎 search — 多引擎搜索
不是调一个搜索 API 就完事。wigolo 内置了 18 个搜索引擎适配器(DuckDuckGo、Brave、Searxng 等),并行发出多个子查询后做 rank fusion 融合排序,再用本地的 ML 模型做 reranking。每个结果都带逐项可解释的评分——语义分、关键词分、引擎共识数一目了然。
解决什么问题?AI 编码助手问一次问题可能触发多次搜索,多引擎融合让结果更全面,本地 reranking 让质量更高。

📄 fetch — 智能网页抓取
遇到普通 HTTP 请求搞不定的 SPA 单页应用或反爬页面?fetch 会自动升级到内置的无头浏览器引擎来渲染。返回干净的 Markdown 格式内容,附带元数据和链接列表。
解决什么问题?很多技术文档、产品官网都是 JS 渲染的,传统 fetch 只能拿到空壳。wigolo 的分层路由自动处理了这件事。
🕸️ crawl — 多页爬取
支持 BFS、DFS、sitemap 三种策略,自带 robots.txt 遵守和每域名速率限制,还能自动去重 boilerplate(导航栏、页脚等重复内容)。
解决什么问题?想了解一个竞品的完整功能列表?或者收集某个文档站的所有 API 说明?crawl 一把搞定。
🧩 extract — 结构化数据提取
从网页中抽取表格、JSON-LD 元数据、品牌信息,还支持自定义 JSON Schema。比如你告诉它"我要文章的标题/作者/发布时间/正文",它就按这个格式返回。
解决什么问题?从杂乱网页里拿到干净的结构化数据,直接喂给 AI 做分析。
💾 cache — 本地缓存记忆
每次搜索和抓取的结果都会缓存在 ~/.wigolo/ 目录下。支持关键词检索和语义混合检索,离线也能查历史记录。还能检测页面变化。
🧲 find_similar — 相似页面发现
给定一个 URL 或概念,找到语义相似的其他页面。三路融合:关键词 + 语义向量 + 实时网络搜索。
🧠 research — 自动研究
输入一个问题,wigolo 自己分解成子查询 → 搜索 → 抓取 → 综合,输出带引用的报告。相当于给 AI 装了一个"研究员"角色。
🤖 agent — 自主采集循环
更高级的自主模式:规划 → 搜索 → 抓取 → 提取 → 综合,带时间预算和输出 Schema 约束。适合复杂的信息收集任务。
🔁 diff + ⏱️ watch — 变更监控
对比页面两次抓取的差异,支持定时监控并通过 webhook 推送变更通知。
技术架构

┌─────────────────────────────────────────────┐
│ 你的 AI Agent │
│ Claude Code / Cursor / Codex / ... │
└──────────────┬──────────────────────────────┘
│ MCP 协议
┌──────────────▼──────────────────────────────┐
│ wigolo (本地进程) │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │
│ │ Search │ │ Fetch │ │ Crawl │ │
│ │ (18 引擎) │ │ (分层路由)│ │ (BFS/DFS) │ │
│ └──────────┘ └──────────┘ └──────────────┘ │
│ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │
│ │ Extract │ │ Cache │ │ Reranker │ │
│ │(Schema) │ │(本地存储) │ │ (ONNX 本地) │ │
│ └──────────┘ └──────────┘ └──────────────┘ │
│ ┌──────────────────────────────────────┐ │
│ │ 无头浏览器引擎 (内置) │ │
│ └──────────────────────────────────────┘ │
│ 数据全部留在 ~/.wigolo/ │
└──────────────────────────────────────────────┘
上手教程
前置条件
方式一:一键接入 AI 编码助手(推荐)
"color:#6a9955"># 接入 Claude Code
npx wigolo init --agents=claude-code
"color:#6a9955"># 接入 Cursor
npx wigolo init --agents=cursor
"color:#6a9955"># 同时接入多个
npx wigolo init --agents=claude-code,cursor,codex
这条命令会:
1. 下载浏览器引擎和本地 ML 模型
2. 自动写入 MCP 配置文件
3. 运行健康检查
4. 输出各组件状态摘要
安装完成后,在你的 AI 编码助手里直接问需要联网的问题即可——它会自动调用 wigolo 的搜索能力。
方式二:独立 CLI 使用
不用接任何 Agent,直接在终端用:
"color:#6a9955"># 搜索
npx wigolo search "Rust 异步运行时对比" --json
"color:#6a9955"># 抓取网页
npx wigolo fetch https://example.com/article
"color:#6a9955"># 交互式 Shell(支持管道)
npx wigolo shell
方式三:Docker 部署
适合服务器端使用:
docker build -t wigolo .
docker run -p 3333:3333 wigolo
暴露 REST API 在 127.0.0.1:3333,可以用 curl 直接调用:
curl -sX POST http://127.0.0.1:3333/v1/search \
-H 'Content-Type: application/json' \
-d '{"query":"local-first software","max_results":5}'
可选:配置 LLM 提升 research 质量
搜索和抓取完全免费无需 Key。但如果想让 research 和 agent 功能生成更好的综合报告,可以配一个免费的 Gemini Key:
export WIGOLO_LLM_PROVIDER=gemini
export GEMINI_API_KEY=你的key
Gemini 免费额度足够个人使用。也支持 OpenAI、Anthropic、Groq,甚至本地 Ollama。
使用思考
wigolo 不是又一个搜索 API 封装——它在回答一个更根本的问题:**当 AI Agent 需要频繁获取网络信息时,应该怎么设计基础设施?**
亮点在哪
第一,真正做到了"零门槛"。 不需要注册账号、申请 API Key、绑定信用卡。npx wigolo init --agents=cursor 一行命令,30 秒内你的 Cursor 就能联网了。这对刚上手 AI 编码工具的人来说极其友好——他们往往还没搞清楚 MCP 是什么,就已经在享受联网带来的便利。
第二,"为 Agent 设计而非为人设计"这个定位很精准。 传统搜索工具给人用的:返回十条链接让你自己点。wigolo 给 Agent 用的:一次 MCP 调用并行查十几个引擎,返回带引用 ID 和可解释评分的结构化数据,Agent 可以直接基于这些证据生成回答。这是两种完全不同的交互模式。
第三,诚实的设计哲学让我印象深刻。 结果质量不高?标为 junk。页面被反爬挡住了?返回 blocked_by_challenge 而不是伪装成正常内容。缓存过期了?明确标注 freshness signal。这种"说真话"的接口设计对下游 Agent 至关重要——Agent 只有知道信息可信度如何,才能做出合理决策。
适合什么人
局限性
未来演进方向
我猜 wigolo 可能会在三个方向继续深化:
实战演示

场景一:让 Claude Code 查最新框架文档
你:React 19 的 use() hook 和 Suspense 怎么配合用?
Claude Code(通过 wigolo):
→ 并行搜索 React 官方博客、Stack Overflow、GitHub discussions
→ 抓取 React 19 Release Notes 的相关章节
→ 返回带引用的综合回答:
根据 React 官方博客 [src-1],use() hook 在 React 19 中...
Suspense 的边界处理方式如下 [src-2]...
实际示例来自 Stack Overflow 高赞回答 [src-3]...
场景二:CLI 快速调研
"color:#6a9955"># 研究 "2024 年 Rust Web 框架生态"
npx wigolo research "2024 Rust web framework ecosystem comparison" --format=brief
"color:#6a9955"># 监控某开源项目的 changelog
npx wigolo watch https://github.com/some-project/blob/main/CHANGELOG.md --webhook http://your-server/webhook
使用建议
npx wigolo doctor:任何时候都可以用它检查各组件健康状态~/.wigolo/ 会随使用增长,定期清理不需要的缓存:wigolo cache clear --older-than 30d风险与注意事项
END
如果你也在用 AI 编码工具,试试给它们装上 wigolo——你会发现,能联网的 AI 和不能联网的 AI,完全是两个物种。
夜雨聆风