open claw小龙虾接入小米大模型联网搜索教程

52 阅读11分钟

Mimo Web Search 插件安装教程(小白版)

本教程将手把手教你如何在本地 OpenClaw 中安装并启用 mimo_web_search 联网搜索插件。 即使你完全不懂代码,跟着步骤一步步来也能搞定。


目录

  1. 这个插件是干什么的
  2. 你需要准备什么
  3. 获取 MiMo 搜索 API Token
  4. 创建插件文件
  5. 安装插件依赖
  6. 注册插件到 OpenClaw
  7. 在 OpenClaw 配置中启用插件
  8. 重启 OpenClaw 并验证
  9. 常见问题排查

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 是插件用来调用小米搜索服务的凭证,没有它插件无法工作。

操作步骤

  1. 打开 MiMo 开放平台

    浏览器访问:platform.xiaomimimo.com

  2. 登录你的小米账号

    如果没有账号,需要先注册一个。

  3. 进入 API 密钥管理页面

    登录后,在页面左侧菜单找到「API 密钥」或「API Keys」选项,点击进入。

  4. 创建新的 API Key

    点击「创建密钥」或「Create Key」按钮,系统会生成一串类似这样的字符串:

    sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    
  5. 复制并保存这个 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:用文本编辑器手动创建

  1. 打开你的文本编辑器(如 VS Code)
  2. 新建文件,粘贴上面的内容
  3. 保存为 ~/.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 内容较长,建议用文本编辑器操作:

  1. 打开 VS Code 或记事本
  2. 新建文件
  3. 粘贴上面 index.ts 的全部内容(从 import { Type } 开始到最后的 } 结束)
  4. 保存到 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
WindowsC:\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 的最外层(和 modelsproviders 同级)添加:

{
  " ... 其他配置 ... ",
  "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.jsonplugins 部分的完整示例(仅供参考,不要覆盖你已有的其他配置):

{
  "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

原因:插件没有被正确注册。

解决

  1. 确认文件路径正确:

    • Mac/Linux: ~/.openclaw/extensions/mimo-search/index.ts
    • Windows: C:\Users\你的用户名.openclaw\extensions\mimo-search\index.ts
  2. 重新执行注册命令:

    openclaw plugins install -l ~/.openclaw/extensions/mimo-search
    
  3. 再次重启:

    openclaw gateway restart
    

Q2:插件加载了但搜索报错 "token is not configured"

原因openclaw.json 中没有正确配置 Token。

解决

  1. 打开 openclaw.json
  2. 检查 plugins.entries.mimo-search.config.token 是否存在
  3. 确认 Token 值不是空字符串
  4. 确认 JSON 格式正确(没有多余的逗号、引号配对正确)
  5. 保存后重启:openclaw gateway restart

Q3:搜索报错 "HTTP 401" 或 "HTTP 403"

原因:Token 无效或过期。

解决

  1. 去 MiMo 开放平台(platform.xiaomimimo.com)确认 Token 是否有效
  2. 如果过期了,重新生成一个 API Key
  3. 更新 openclaw.json 中的 Token 值
  4. 重启:openclaw gateway restart

Q4:搜索报错 "HTTP 404" 或 "Search API error"

原因:搜索 API 地址可能已变更,或你的账号没有搜索 API 权限。

解决

  1. 确认你的 MiMo 账号已开通搜索 API 权限

  2. 如果 API 地址变了,可以在配置中指定新的地址:

    "mimo-search": {
     "enabled": true,
     "config": {
       "token": "你的Token",
       "apiBaseUrl": "新的API地址"
     }
    }
    

Q5:npm install 报错

原因:网络问题或 Node.js 版本太低。

解决

  1. 确认 Node.js 版本 ≥ 18:node --version

  2. 如果版本太低,升级 Node.js

  3. 如果是网络问题,尝试使用淘宝镜像:

    npm install --registry=https://registry.npmmirror.com
    

Q6:JSON 格式总是写错怎么办

推荐工具

  1. VS Code:打开 JSON 文件后会自动标红语法错误
  2. 在线 JSON 校验器:把你的 JSON 粘贴到 www.json.cn/ 检查格式
  3. 让 AI 帮忙:把你的 openclaw.json 内容(敏感信息打码)发给 AI,让它帮你检查格式

完成!

恭喜你,如果一切顺利,你的 OpenClaw 现在已经具备联网搜索能力了!

有任何问题可以随时问我。

最后,雷总如此大气,MiMO邀请码K38E74,免费额度赠送