searxng-cli:Exa MCP 的开源替代路径,用更少上下文拿到更准的信息
Exa MCP 的体验很接近“为 LLM 优化过的搜索 API”:结果干净、可读、适合直接喂给模型。但对普通用户来说,额度/配额往往是最大阻力——一旦把“搜索”变成稀缺资源,Agent 的研究链路就会被迫降频。
另一端是 SearXNG MCP / Browser MCP:可用、开放,但经常把整页 HTML(导航、脚本、推荐、无关段落)一股脑回传,导致上下文窗口被噪声挤占;模型在“信息过载”里反而更容易答偏、引用不准。
searxng-cli(MIT,https://github.com/Suknna/searxng-cli)走的是第三条路:用 SearXNG 作为开源检索底座,但把“返回给模型的内容”做成强约束、低噪声、可控大小的输出契约,从而在不依赖商业配额的前提下,尽量复刻 Exa MCP 的关键体验:少上下文、更准信息。
核心思路:把噪声挡在工具侧,而不是让模型硬吞
searxng-cli把 Web Research 固化成两步,并分别做了“输出裁剪”:
search:只返回做决策必须的信息(title/url/摘要),固定输出为紧凑的 Markdown 表格read:对选中的 URL 做正文抽取与净化,输出 markdown 或更省 token 的纯文本
这比“直接把 HTML 丢给模型再总结”更可靠:模型的上下文预算用在内容上,而不是页面结构上;候选筛选也更快、更稳定。
为什么这会带来“更少上下文 + 更准信息”
更少上下文来自“硬边界”而不是“运气”:
search阶段输出列固定、字段少、可通过--limit控制候选规模;不会把页面内容提前塞进上下文read阶段支持--max-bytes(默认 2MB)、--timeout、--retry等硬限制,避免单页爆 token--format text可进一步去掉 markdown 结构,压低 token 成本
更准信息来自“更少噪声 + 更可验证”:
- 先表格化候选,再挑权威来源(官方文档/标准/一手资料)逐个
read,减少模型从低质聚合页“学错”的概率 - 输出保留 URL,天然支持引用与交叉验证:同一结论读 2-3 个来源确认再生成回答
一句话:它不试图用“更聪明的模型”对抗噪声,而是用“更干净的输入”提高准确性。
最小用法:像 Exa 一样“先搜再读”
搜索只拿候选集(适合直接贴进对话让模型挑链接):
searxng-cli search "golang context cancellation best practices" --limit 5
读取只拿正文(更省上下文可用 --format text):
searxng-cli read "https://go.dev/blog/context" --format text
如果你已经有 URL,就跳过 search 直接 read。
面向 Agent 的工程化细节:稳定输出 + 可恢复错误
这类工具要替代 MCP,关键不是“能跑”,而是“输出可依赖”:
- 成功输出走
stdout;错误走stderr - 错误是结构化
key=value单行信息,便于 Agent 判断:要不要重试、要不要换源、要不要提示用户改超时/认证 - 配置优先级明确:
flags > env > config > defaults,可复现、好排障
这些约束会显著减少“模型需要猜测工具行为”的情况,从而提升链路稳定性与最终答案质量。
这是不是完全替代 Browser MCP?
不是。边界也很清晰:
- 适合:非交互式研究(查资料、读文章、做对比、要引用)
- 不适合:登录、表单、强 JS 渲染/交互页面(这些仍然需要浏览器自动化工具)
实践上,把 searxng-cli 作为默认检索/阅读入口,把 Browser 工具留给少数必须交互的页面,通常是 token 成本和准确性都更好的组合。
快速开始(OpenCode / Claude Code / Codex)
在 opencode、claude code、codex 中直接输入以下指令即可,模型会自动完成安装与配置:
Install and configure searxng-cli by following the instructions here:
https://raw.githubusercontent.com/Suknna/searxng-cli/refs/heads/main/install.md
完成后直接在opencode、claude code、codex 中让模型帮你搜索即可



浙公网安备 33010602011771号