字数 1704,阅读大约需 9 分钟
最近,OpenClaw 在开发者社区火得一塌糊涂。作为一个能够打通 WhatsApp、Telegram、Discord 和 iMessage 的 AI Agent 网关,它简直就是连接你和 AI 的“任意门”。
但是,当你想深入了解 OpenClaw 的技术细节时,面对浩如烟海的文档,是不是也有点不知所措?
别担心!今天我们不仅要带你了解 OpenClaw,还要手把手教你利用 Elastic Open Crawler(注意:这可不是 OpenClaw 哦,别搞混了😉)和 Jina Embeddings v5,在本地搭建一个强大的多语言语义搜索引擎。
准备好了吗?让我们开始这段奇妙的旅程!
我们的目标很简单:爬取 OpenClaw 的官方文档,将其转化为向量,然后通过自然语言与它对话。为了实现这一点,我们集结了三位“大将”:

首先,你需要确保本地已经安装了 Docker 和 Docker Compose。
我们将使用一个名为 elastic-crawler-control 的项目(我们亲切地称它为 Crawly),它提供了一个友好的界面来管理爬虫任务。
在项目根目录下,直接运行:
git clone https://github.com/ugosan/elastic-crawler-control
cd elastic-crawler-control
docker-compose up -d --build这会启动两个服务:


Crawly 需要知道往哪里写数据。在 env.local 文件中配置你的本地 ES 地址:
ES_URL=https://es01:9200
ES_API_KEY=your_generated_api_key普通的搜索只能匹配关键词,而我们要的是语义搜索。这就轮到 Jina v5 出场了。
在 Elasticsearch 中,我们通过 inference API 来注册 Jina 模型。最酷的是,Elasticsearch 的 semantic_text 字段类型可以自动处理这一切。
Elastic Connect 打通本地与 Elastic Cloud,EIS 无需本地部署模型,直接接入 Jina。 核心步骤:




PUT multilingual-semantic-index
{
"mappings": {
"properties": {
"content": {
"type": "semantic_text",
"inference_id": ".jina-embeddings-v5-text-small"
}
}
}
}
# Ingest data about France
POST multilingual-semantic-index/_doc
{
"content": "The capital of France is Paris"
}
GET multilingual-semantic-index/_search
{
"query": {
"semantic": {
"field": "content",
"query": "法国的首都是哪里?"
}
}
}在我们的 Crawler 代码中,我们已经贴心地为你配置好了映射。每当爬虫创建一个新索引(比如 openclaw-docs),它会自动应用如下 mapping:
"body": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
},
"semantic_elser": {
"type": "semantic_text",
"inference_id": ".elser-2-elastic",
"model_settings": {
"service": "elastic",
"task_type": "sparse_embedding"
}
},
"semantic_multilingual": {
"type": "semantic_text",
"inference_id": ".jina-embeddings-v5-text-small",
"model_settings": {
"service": "elastic",
"task_type": "text_embedding",
"dimensions": 1024,
"similarity": "cosine",
"element_type": "float"
}
}
}
},这意味着,爬下来的每一段 HTML body,都会自动变成一个高维向量,随时准备被检索。
但最重要的是,你不用担心关于搜索的任何问题,因为在整个过程中,你不需要具备任何 elasticsearch 的知识,agent 已经在后台为你搞定一切!
打开浏览器,访问 http://localhost:16700。你会看到一个简洁的控制台。
点击 "New Crawl",填入以下信息:
https://docs.openclaw.aiopenclaw-docs/zh-CN.*(如果你想看中文文档的话,虽然 OpenClaw 文档目前主要是英文,但 Jina v5 的多语言能力让你搜中文也能搜到英文文档!)点击 Run。

在 Dashboard 上,你可以实时看到:
稍等片刻,当状态变为 Completed 时,我们的数据金矿就准备好了。
现在,最激动人心的时刻到了!我们不再需要 grep 或者 Ctrl+F,我们可以直接问数据。
打开 Kibana -> Agent 。
无需进行任何配置,即可开始对话!

试着在 Chat 窗口中问它:
User: "OpenClaw 是什么?它支持哪些聊天软件?"
这时,Agent 就像一位经验丰富的图书管理员,迅速理解了你的意图,并自动将问题“路由”到了正确的知识库。
你甚至可以看到它思考的过程:
🤔 思考中...
openclaw-docs。
紧接着,它会根据检索到的内容,给出一个精准的回答:
OpenClaw 是一个个人 AI 助手,运行在用户自己的设备上。它可以在用户已经使用的消息平台上进行回复,包括 WhatsApp、Telegram、Slack、Discord、Google Chat、Signal、iMessage、WebChat 等。OpenClaw 的设计理念是本地优先,用户可以在自己的硬件上运行这个助手,并保持会话历史和数据的本地存储。..."
你可以看到,它的回答是基于我们爬取到的 openclaw 的官方文档:

再问个技术点的:
User: "how to config Lark integrations?"

看!它不仅理解了你的英文问题,还根据对上下文的理解,在自动路由到了 openclaw-docs 索引。这就是 Jina Embeddings v5 多语言能力的完美展示。
通过 Elastic Open Crawler 和 Jina Embeddings v5 的强强联手,我们只用了几分钟,就构建了一个私有的、多语言的、懂语义的 OpenClaw 知识库。
现在,你不仅了解了 OpenClaw,还掌握了一套通用的知识库搭建方案。快去试试爬取你感兴趣的其他文档吧!