是什么
NLWeb 是一组开放协议和开源工具,用途是为网站搭建对话式界面(conversational interface)[1]。它想解决的是这样一个问题:今天访问一个网站,通常只能靠菜单、搜索框和一列列链接去找内容;有了这层接口,站点可以直接用日常语言回答问题。项目的定位不是某个单独的产品,而是一层很薄的公共设施——让很多站点用同一种方式对外提供问答能力。
怎么工作
设计上分成两部分。第一部分是一套简单的协议,用自然语言与站点交互,并以 Schema.org 的结构返回 JSON[1]。第二部分是一个实现,直接利用站点已有的标记(markup)[1]。因为它建立在 Schema.org 以及 RSS 这类半结构化格式之上,而这些格式按项目的说法被超过 1 亿个网站使用[1],所以站点不必先为内容重新设计一套数据模型,就能开口回答问题。
在服务这一侧,每一个 NLWeb 实例同时也是一个 MCP 服务器,并支持一个名为 `ask` 的核心方法[1]。它对模型上下文协议(Model Context Protocol,MCP)是原生支持的,因此同一套自然语言 API 既能服务人类,也能服务 AI 智能体[1]。人在站点的聊天框里打字提问,智能体替用户去调用这个站点,走的是同一个入口,拿到的也是同一种格式的答案。
项目用一句话概括自己的位置:NLWeb 之于 MCP 和 A2A,就像 HTML 之于 HTTP[1]。这个类比说的是分层。HTTP 负责在机器之间搬字节,却不规定文档内部怎么组织,于是 HTML 提供了一个人人都能读的共同格式。MCP 和 A2A 是 AI 系统调用工具、彼此调用的协议;NLWeb 想做的则是「对话本身」的共同格式,让一个站点的回答无论由哪个客户端来问,都是同一个样子。
跑在什么之上
NLWeb 与平台无关,支持 Windows、macOS 和 Linux[1]。它的设计目标是既能跑在数据中心的集群上,也能跑在笔记本电脑上,并将很快支持移动设备[1]。对一个希望被广泛采用的协议来说,这种跨度很重要:小站点可以在一台机器上先试起来,大站点则可以铺到集群上。
存储和模型都是可替换的。支持的向量库(vector store)包括 Qdrant、Snowflake、Milvus、Azure AI Search、Elasticsearch、Postgres 和 Cloudflare AutoRAG[1]。向量库存放的是站点内容的数值表示,作用是:面对一个问题时,先把最相关的段落检索出来,再交给模型。支持的模型提供方包括 OpenAI、DeepSeek、Gemini、Anthropic、Inception 和 Hugging Face[1]。这份名单既覆盖大型托管服务,也覆盖开放权重的模型,把选型留给了部署站点的人。
处在什么位置
在查看时,这个公开仓库采用 MIT 许可证,有 6.3k 星标和 695 次复刻[1]。宽松的许可证,加上对多种向量库和模型提供方的支持,指向与协议设计相同的打算:做一层很薄、很通用的东西,让站点和智能体开发者都不必绑定某一家厂商的技术栈。它在整个领域里的位置也由此而来——当越来越多的 AI 智能体成为访问网页内容的一方,一种让站点回答自然语言问题的标准方式,其价值就接近一种提供页面的标准方式。
不过,用这种方式搭起来的对话界面,最终效果取决于它背后的标记和检索质量。项目自己的描述讲的是管道怎么接、问题怎么问、答案怎么回,而不是某个具体站点应该说些什么。
开发1
互补1
注释与来源
- NLWebhttps://github.com/microsoft/NLWeb
引用本页: NLWeb 协议. TellWorld, https://www.tellworld.net/zh/protocols/nlweb. 更新于 2026-11-08