Mimo Web Search 插件安装教程(小白版)
本教程将手把手教你如何在本地 OpenClaw 中安装并启用
mimo_web_search联网搜索插件。 即使你完全不懂代码,跟着步骤一步步来也能搞定。
目录
- 这个插件是干什么的
- 你需要准备什么
- 获取 MiMo 搜索 API Token
- 创建插件文件
- 安装插件依赖
- 注册插件到 OpenClaw
- 在 OpenClaw 配置中启用插件
- 重启 OpenClaw 并验证
- 常见问题排查
1. 这个插件是干什么的
安装完成后,你的 AI 助手会多一个叫 mimo_web_search 的工具,可以实时搜索互联网,获取最新的新闻、天气、技术文档等信息。
没有这个插件,AI 只能用训练数据里的知识回答问题,无法获取实时信息。
2. 你需要准备什么
| 准备项 | 说明 |
|---|---|
| OpenClaw 已安装 | 终端运行 openclaw --version 能看到版本号即表示已安装 |
| Node.js 已安装 | 终端运行 node --version 能看到版本号(建议 v18+) |
| npm 已安装 | 终端运行 npm --version 能看到版本号(随 Node.js 一起安装的) |
| MiMo 搜索 API Token | 下面第 3 步会教你怎么获取 |
| 一个文本编辑器 | VS Code、记事本、Sublime Text 都行,能编辑文本文件即可 |
检查 OpenClaw 是否已安装
打开终端(Mac 用「终端」,Windows 用「PowerShell」或「命令提示符」),输入:
openclaw --version
如果显示类似 openclaw x.x.x 的版本号,说明已安装。如果提示"命令未找到",需要先安装 OpenClaw。
3. 获取 MiMo 搜索 API Token
这个 Token 是插件用来调用小米搜索服务的凭证,没有它插件无法工作。
操作步骤
-
打开 MiMo 开放平台
浏览器访问:platform.xiaomimimo.com
-
登录你的小米账号
如果没有账号,需要先注册一个。
-
进入 API 密钥管理页面
登录后,在页面左侧菜单找到「API 密钥」或「API Keys」选项,点击进入。
-
创建新的 API Key
点击「创建密钥」或「Create Key」按钮,系统会生成一串类似这样的字符串:
sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -
复制并保存这个 Key
⚠️ 重要:这个 Key 只会显示一次!请立即复制并保存到一个安全的地方(比如记事本),后面配置插件时要用。
注意:如果你的 MiMo 账号没有开通「搜索 API」权限,可能需要先在平台上申请开通。如果找不到搜索 API 相关选项,说明你的账号可能不具备此权限,需要联系 MiMo 客服或等待开放。
4. 创建插件文件
这一步需要创建 4 个文件。请严格按照下面的路径和内容操作。
4.1 创建插件目录
打开终端,依次执行以下命令:
Mac / Linux:
mkdir -p ~/.openclaw/extensions/mimo-search/node_modules
cd ~/.openclaw/extensions/mimo-search
Windows(PowerShell):
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE.openclaw\extensions\mimo-search\node_modules"
Set-Location "$env:USERPROFILE.openclaw\extensions\mimo-search"
执行完后,你现在已经进入到了
mimo-search目录中。接下来要在这个目录下创建 4 个文件。
4.2 创建文件 1:package.json
方法 A:用终端命令创建(推荐)
Mac / Linux:
cat > package.json << 'EOF'
{
"name": "mimo-search",
"version": "1.0.0",
"private": true,
"dependencies": {
"@sinclair/typebox": "^0.34.48"
}
}
EOF
Windows(PowerShell):
@'
{
"name": "mimo-search",
"version": "1.0.0",
"private": true,
"dependencies": {
"@sinclair/typebox": "^0.34.48"
}
}
'@ | Out-File -Encoding utf8 package.json
方法 B:用文本编辑器手动创建
- 打开你的文本编辑器(如 VS Code)
- 新建文件,粘贴上面的内容
- 保存为
~/.openclaw/extensions/mimo-search/package.json
4.3 创建文件 2:openclaw.plugin.json
Mac / Linux:
cat > openclaw.plugin.json << 'EOF'
{
"id": "mimo-search",
"name": "Mimo Web Search",
"description": "Web search tool powered by Mimo Search API, providing real-time web search results for the agent.",
"version": "1.0.0",
"configSchema": {
"type": "object",
"additionalProperties": false,
"required": ["token"],
"properties": {
"token": {
"type": "string",
"description": "API token for Mimo Search API authentication"
},
"apiBaseUrl": {
"type": "string",
"default": "https://aistudio.xiaomimimo.com/open-apis/search",
"description": "Base URL for the search API endpoint"
},
"maxResults": {
"type": "number",
"default": 5,
"minimum": 1,
"maximum": 20,
"description": "Maximum number of search results to return"
}
}
},
"uiHints": {
"token": {
"label": "API Token",
"sensitive": true,
"placeholder": "Enter your Mimo Search API token"
},
"apiBaseUrl": {
"label": "API Base URL",
"help": "Override the default search API endpoint if needed"
},
"maxResults": {
"label": "Max Results",
"help": "Maximum number of web search results to return (1-20)"
}
}
}
EOF
Windows(PowerShell):
@'
{
"id": "mimo-search",
"name": "Mimo Web Search",
"description": "Web search tool powered by Mimo Search API, providing real-time web search results for the agent.",
"version": "1.0.0",
"configSchema": {
"type": "object",
"additionalProperties": false,
"required": ["token"],
"properties": {
"token": {
"type": "string",
"description": "API token for Mimo Search API authentication"
},
"apiBaseUrl": {
"type": "string",
"default": "https://aistudio.xiaomimimo.com/open-apis/search",
"description": "Base URL for the search API endpoint"
},
"maxResults": {
"type": "number",
"default": 5,
"minimum": 1,
"maximum": 20,
"description": "Maximum number of search results to return"
}
}
},
"uiHints": {
"token": {
"label": "API Token",
"sensitive": true,
"placeholder": "Enter your Mimo Search API token"
},
"apiBaseUrl": {
"label": "API Base URL",
"help": "Override the default search API endpoint if needed"
},
"maxResults": {
"label": "Max Results",
"help": "Maximum number of web search results to return (1-20)"
}
}
}
'@ | Out-File -Encoding utf8 openclaw.plugin.json
4.4 创建文件 3:index.ts
这是插件的核心代码文件。内容较长,请仔细复制完整。
Mac / Linux:
cat > index.ts << 'ENDOFFILE'
import { Type } from "@sinclair/typebox";
interface WebPage {
name: string;
url: string;
snippet: string;
summary: string;
siteName: string;
datePublished: string;
}
interface SearchApiResponse {
code: number;
msg: string;
data: {
webPages?: {
value: WebPage[];
};
};
}
const DEFAULT_API_URL = "https://aistudio.xiaomimimo.com/open-apis/search";
const DEFAULT_MAX_RESULTS = 5;
function formatWebPage(page: WebPage, index: number): string {
const parts: string[] = [];
parts.push(`[${index + 1}] ${page.name}`);
parts.push(` URL: ${page.url}`);
if (page.siteName) {
parts.push(` Source: ${page.siteName}`);
}
if (page.datePublished) {
parts.push(` Date: ${page.datePublished.split("T")[0]}`);
}
const text = page.snippet || page.summary;
if (text) {
parts.push(` Content: ${text.replace(/\n+/g, " ").trim()}`);
}
return parts.join("\n");
}
export default function mimoSearchPlugin(api: any) {
api.registerTool({
name: "mimo_web_search",
description:
"Search the web for real-time information including news, facts, weather, documentation, or anything requiring up-to-date data. Returns results with titles, URLs, summaries, and sources.",
parameters: Type.Object({
query: Type.String({
description:
"The search query. Be specific and descriptive for better results.",
}),
}),
async execute(
_toolCallId: string,
params: { query: string },
) {
const pluginConfig = api.config?.plugins?.entries?.["mimo-search"]?.config ?? {};
const token = pluginConfig.token;
const apiUrl = pluginConfig.apiBaseUrl || DEFAULT_API_URL;
const maxResults = pluginConfig.maxResults || DEFAULT_MAX_RESULTS;
if (!token) {
return {
content: [
{
type: "text" as const,
text: "Error: Mimo Search API token is not configured. Please set the token in plugins.entries.mimo-search.config.token in your openclaw.json configuration.",
},
],
};
}
try {
const response = await fetch(apiUrl, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ token, query: params.query }),
});
if (!response.ok) {
return {
content: [
{
type: "text" as const,
text: `Error: Search API returned HTTP ${response.status} ${response.statusText}`,
},
],
};
}
const result: SearchApiResponse = await response.json();
if (result.code !== 0) {
return {
content: [
{
type: "text" as const,
text: `Error: Search API error ${result.code}: ${result.msg}`,
},
],
};
}
const webPages = result.data?.webPages?.value ?? [];
if (webPages.length === 0) {
return {
content: [
{
type: "text" as const,
text: `No results found for: "${params.query}"`,
},
],
};
}
const limitedPages = webPages.slice(0, maxResults);
const formattedResults = limitedPages
.map((page, i) => formatWebPage(page, i))
.join("\n\n");
return {
content: [
{
type: "text" as const,
text: `Search results for "${params.query}":\n\n${formattedResults}`,
},
],
};
} catch (error: unknown) {
const message = error instanceof Error ? error.message : String(error);
return {
content: [
{
type: "text" as const,
text: `Error: Web search failed: ${message}`,
},
],
};
}
},
});
}
ENDOFFILE
Windows(PowerShell)由于 index.ts 内容较长,建议用文本编辑器操作:
- 打开 VS Code 或记事本
- 新建文件
- 粘贴上面
index.ts的全部内容(从import { Type }开始到最后的}结束) - 保存到
C:\Users\你的用户名.openclaw\extensions\mimo-search\index.ts
4.5 创建文件 4:package-lock.json
Mac / Linux:
cat > package-lock.json << 'EOF'
{
"name": "mimo-search",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "mimo-search",
"version": "1.0.0",
"dependencies": {
"@sinclair/typebox": "^0.34.48"
}
},
"node_modules/@sinclair/typebox": {
"version": "0.34.48",
"resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz",
"integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==",
"license": "MIT"
}
}
}
EOF
Windows(PowerShell):
@'
{
"name": "mimo-search",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "mimo-search",
"version": "1.0.0",
"dependencies": {
"@sinclair/typebox": "^0.34.48"
}
},
"node_modules/@sinclair/typebox": {
"version": "0.34.48",
"resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz",
"integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==",
"license": "MIT"
}
}
}
'@ | Out-File -Encoding utf8 package-lock.json
4.6 确认文件结构
创建完成后,目录结构应该如下:
~/.openclaw/extensions/mimo-search/
├── index.ts ← 插件核心代码
├── openclaw.plugin.json ← 插件元信息和配置 schema
├── package.json ← npm 依赖声明
├── package-lock.json ← npm 依赖锁定
└── node_modules/ ← npm 依赖(下一步安装后自动填充)
验证文件是否创建成功:
Mac / Linux:
ls -la ~/.openclaw/extensions/mimo-search/
Windows(PowerShell):
Get-ChildItem "$env:USERPROFILE.openclaw\extensions\mimo-search"
你应该看到 4 个文件和 1 个 node_modules 文件夹。
5. 安装插件依赖
插件依赖一个叫 @sinclair/typebox 的 npm 包,需要安装到 node_modules 目录中。
操作
在终端中执行:
cd ~/.openclaw/extensions/mimo-search
npm install
Windows(PowerShell):
Set-Location "$env:USERPROFILE.openclaw\extensions\mimo-search"
npm install
执行后会看到类似这样的输出:
added 1 package in xxs
验证
ls node_modules/@sinclair/typebox
如果能看到一堆 .js 和 .d.ts 文件,说明安装成功。
6. 注册插件到 OpenClaw
让 OpenClaw 知道这个插件的存在。
操作
在终端执行:
openclaw plugins install -l ~/.openclaw/extensions/mimo-search
Windows(PowerShell):
openclaw plugins install -l "$env:USERPROFILE.openclaw\extensions\mimo-search"
参数
-l表示从本地路径安装(local)。
预期输出
如果成功,你应该看到类似这样的信息,表示插件已被识别。
7. 在 OpenClaw 配置中启用插件
7.1 找到配置文件
配置文件的位置:
| 系统 | 路径 |
|---|---|
| Mac / Linux | ~/.openclaw/openclaw.json |
| Windows | C:\Users\你的用户名.openclaw\openclaw.json |
7.2 编辑配置文件
用文本编辑器打开 openclaw.json。
7.3 添加插件配置
在 JSON 文件中找到 plugins 字段。如果不存在,就添加一个。
情况 A:你的配置文件里已经有 plugins 字段
在已有的 plugins.entries 对象中,添加 mimo-search:
{
" ... 其他配置 ... ",
"plugins": {
"entries": {
" ... 其他已有的插件配置 ... ",
"mimo-search": {
"enabled": true,
"config": {
"token": "你的MiMo搜索API Token"
}
}
}
}
}
情况 B:你的配置文件里没有 plugins 字段
在 JSON 的最外层(和 models、providers 同级)添加:
{
" ... 其他配置 ... ",
"plugins": {
"entries": {
"mimo-search": {
"enabled": true,
"config": {
"token": "你的MiMo搜索API Token"
}
}
}
}
}
7.4 重要提醒
- 把
"你的MiMo搜索API Token"替换成第 3 步中你复制保存的那个 API Key - 不要删除配置文件中其他已有的内容,只添加
plugins部分 - JSON 格式非常严格,逗号、引号、花括号一个都不能少或多。建议用 VS Code 编辑,它会自动检查 JSON 格式是否正确
token的值要用英文引号"包裹,不是中文引号"
7.5 完整配置示例
以下是 openclaw.json 中 plugins 部分的完整示例(仅供参考,不要覆盖你已有的其他配置):
{
"models": {
"...": "..."
},
"plugins": {
"entries": {
"mimo-search": {
"enabled": true,
"config": {
"token": "sk-abcdef1234567890abcdef1234567890"
}
}
}
}
}
如果需要调整搜索结果数量,可以加一个 maxResults 参数(默认 5,最大 20):
"mimo-search": {
"enabled": true,
"config": {
"token": "sk-abcdef1234567890abcdef1234567890",
"maxResults": 10
}
}
8. 重启 OpenClaw 并验证
8.1 重启
配置修改后需要重启 OpenClaw 才能生效。
openclaw gateway restart
8.2 验证插件是否加载
重启后,查看插件状态:
openclaw plugins list
在输出的表格中,应该能看到 mimo-search 这一行,且 Status 为 loaded:
│ Mimo Web Search │ mimo-search │ loaded │ ... │ 1.0.0 │
如果 Status 是 disabled,说明配置文件中的 enabled 没有设为 true,请检查第 7 步。
8.3 测试搜索功能
在 OpenClaw 对话中,发送一条需要联网搜索的问题,例如:
今天北京天气怎么样?
或者:
搜索一下2026年最新的AI视频生成工具有哪些
如果 AI 回复中包含了实时搜索结果(有具体的网址、日期等信息),说明插件工作正常!
9. 常见问题排查
Q1:重启后 openclaw plugins list 中看不到 mimo-search
原因:插件没有被正确注册。
解决:
-
确认文件路径正确:
- Mac/Linux:
~/.openclaw/extensions/mimo-search/index.ts - Windows:
C:\Users\你的用户名.openclaw\extensions\mimo-search\index.ts
- Mac/Linux:
-
重新执行注册命令:
openclaw plugins install -l ~/.openclaw/extensions/mimo-search -
再次重启:
openclaw gateway restart
Q2:插件加载了但搜索报错 "token is not configured"
原因:openclaw.json 中没有正确配置 Token。
解决:
- 打开
openclaw.json - 检查
plugins.entries.mimo-search.config.token是否存在 - 确认 Token 值不是空字符串
- 确认 JSON 格式正确(没有多余的逗号、引号配对正确)
- 保存后重启:
openclaw gateway restart
Q3:搜索报错 "HTTP 401" 或 "HTTP 403"
原因:Token 无效或过期。
解决:
- 去 MiMo 开放平台(platform.xiaomimimo.com)确认 Token 是否有效
- 如果过期了,重新生成一个 API Key
- 更新
openclaw.json中的 Token 值 - 重启:
openclaw gateway restart
Q4:搜索报错 "HTTP 404" 或 "Search API error"
原因:搜索 API 地址可能已变更,或你的账号没有搜索 API 权限。
解决:
-
确认你的 MiMo 账号已开通搜索 API 权限
-
如果 API 地址变了,可以在配置中指定新的地址:
"mimo-search": { "enabled": true, "config": { "token": "你的Token", "apiBaseUrl": "新的API地址" } }
Q5:npm install 报错
原因:网络问题或 Node.js 版本太低。
解决:
-
确认 Node.js 版本 ≥ 18:
node --version -
如果版本太低,升级 Node.js
-
如果是网络问题,尝试使用淘宝镜像:
npm install --registry=https://registry.npmmirror.com
Q6:JSON 格式总是写错怎么办
推荐工具:
- VS Code:打开 JSON 文件后会自动标红语法错误
- 在线 JSON 校验器:把你的 JSON 粘贴到 www.json.cn/ 检查格式
- 让 AI 帮忙:把你的
openclaw.json内容(敏感信息打码)发给 AI,让它帮你检查格式
完成!
恭喜你,如果一切顺利,你的 OpenClaw 现在已经具备联网搜索能力了!
有任何问题可以随时问我。