大家好,我是 钰珠AIOT,一个正在捣鼓桌面机器人的创客。经过一周的踩坑和摸索,我终于在自的电脑上成功跑通了 OpenClaw,下面我把整个过程整理出来,希望对有类似需求的朋友有所帮助。

🖥️ 我的电脑配置

  • CPU:Intel i9-12900K(12核24线程)

  • GPU:NVIDIA RTX 3090(24GB 显存)

  • 内存:64GB DDR5

  • 系统:Windows 11 专业版 23H2

  • WSL2:Ubuntu 22.04 LTS

🎯 目标

  • 在 WSL2 Ubuntu 中通过源码安装 OpenClaw。

  • 在 Windows 11 中运行 Ollama 服务,并拉取支持工具调用(function calling)的模型(如 Qwen2.5-Coder)。

  • 让 OpenClaw 能调用 Windows 上的本地模型,并正确使用工具。


📦 准备工作

1. Windows 端

  • 安装最新版 NVIDIA 驱动(确保 WSL2 支持 GPU 直通)。

  • 安装 Ollama(从 ollama.com 下载安装包)。

  • 开启 WSL2 功能(已安装的用户跳过)。

2. WSL2 端

  • 确保 Ubuntu 22.04 已安装并更新:

    sudo apt update && sudo apt upgrade -ysudo apt install curl git build-essential -y

🔧 详细步骤

1️⃣ 配置 WSL2 镜像网络模式(关键)

为了让 WSL2 能通过 localhost 直接访问 Windows 服务,需要启用镜像网络。

在 Windows 的用户目录(C:\Users\你的用户名)下创建或编辑 .wslconfig 文件,内容如下:

networkingMode=mirrored dnsTunneling=true firewall=true autoProxy=true

然后重启 WSL:

powershell

wsl --shutdown

重新打开 WSL 终端,测试网络连通性:

bash

curl http://localhost:11434

如果返回 Ollama is running,说明配置成功。

2️⃣ 在 Windows 上拉取支持工具调用的模型

在 Windows 的命令提示符或 PowerShell 中运行:

ollama pull qwen2.5-coder:14b-instruct-q4_K_M

(你也可以选 7B 或 32B 版本,根据显存大小决定)

验证模型已下载:

ollama list

3️⃣ 在 WSL2 中安装 Node.js 和 pnpm

OpenClaw 需要 Node.js 22+,这里用 nvm 安装(方便切换版本):

bash

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
source ~/.bashrc
nvm install 22
nvm use 22

安装 pnpm(使用 corepack):

bash

enable corepack prepare pnpm@latest --activate

验证:

bash

node -v   # 应显示 v22.x
pnpm -v   # 应显示 9.x 或更高

4️⃣ 源码安装 OpenClaw

创建并进入开发目录:

bash

mkdir -p ~/develop && cd ~/develop git clone https://github.com/openclaw/openclaw.git cd openclaw

安装依赖并构建:

bash

pnpm install pnpm ui:build # 构建前端资源 pnpm build # 构建整个项目

(如果 pnpm install 遇到 A2UI 相关错误,可尝试 pnpm approve-builds 后重试)

5️⃣ 配置 OpenClaw 连接 Windows 上的 Ollama

运行配置向导:

bash

pnpm openclaw onboard --install-daemon

关键选项说明:

  • Onboarding mode → Manual

  • What to set up → Local gateway (this machine)

  • Workspace directory → 默认(回车)

  • Model/auth provider → 选择 Custom Provider

  • API Base URL → 输入 http://localhost:11434/v1(如果镜像网络生效)或 http://<你的Windows IP>:11434/v1

  • API Key → 随便填,比如 ollama(本地不校验)

  • Endpoint compatibility → OpenAI-compatible

  • Model ID → 输入你刚拉取的模型名,例如 qwen2.5-coder:14b-instruct-q4_K_M

  • Endpoint ID → 默认生成的 ID 即可(如 custom-127-0-0-1-11434

  • Model alias → 可选,如 local

  • Gateway bind → Loopback (127.0.0.1)

  • Gateway auth → Token(直接回车让系统生成)

  • Tailscale exposure → Off

  • Gateway service runtime → Node (recommended)

向导完成后,OpenClaw 会自动保存配置并启动服务。

6️⃣ 启用工具调用能力

OpenClaw 默认不会自动给模型传递工具定义,需要手动开启。编辑 ~/.openclaw/openclaw.json,在 agents.defaults 中添加:

json

"capabilities": ["tool_use"]

然后重启网关:

bash

pnpm openclaw gateway restart

7️⃣ 添加一个简单工具(以查天气为例)

为了让模型能调用外部 API,我们需要定义一个工具并实现它的逻辑。

定义工具

在 ~/.openclaw/agents/main/agent/agent.json 中(如果没有则创建),添加 tools 字段:

json

{
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_current_weather",
        "description": "获取指定城市的实时天气",
        "parameters": {
          "type": "object",
          "properties": {
            "city": { "type": "string", "description": "城市名称" }
          },
          "required": ["city"]
        }
      }
    }
  ]
}
实现工具(使用 OpenClaw 的内置 HTTP 技能)

OpenClaw 支持通过技能(skills)扩展功能。我们利用内置的 HTTP 技能直接调用免费天气 API(无需密钥)。

在 ~/.openclaw/skills/ 下创建 get_current_weather 目录,并在其中创建 skill.yaml

yaml

name: get_current_weather
description: 获取指定城市的实时天气
type: http
url: "https://api.open-meteo.com/v1/forecast?latitude={{ .city_lat }}&longitude={{ .city_lon }}¤t_weather=true"
method: GET
response_template: "{{ .city }} 当前天气:温度 {{ .current_weather.temperature }}°C,风速 {{ .current_weather.windspeed }} km/h"

注意:这里需要将城市名转换为经纬度,为简化演示,我们可以先写死一个城市(如北京)的经纬度,或者用另一个技能先转换。更复杂的实现可参考 OpenClaw 文档。

为了快速测试,我们先用一个简单的返回固定格式的技能(稍后改进)。

8️⃣ 测试

重启网关后,运行 TUI:

pnpm openclaw tui

在对话框中输入:“北京的天气怎么样?” 如果一切正常,模型应该会返回工具调用请求,然后 OpenClaw 执行技能,最后模型根据结果生成自然语言回答。

如果模型直接回答“我不知道”或报错,请查看日志:

pnpm openclaw logs --follow

🚧 遇到的坑及解决方案

坑1:WSL2 无法访问 Windows 上的 Ollama

  • 现象curl http://localhost:11434 超时或连接拒绝。

  • 原因:WSL2 默认 NAT 模式下,localhost 指向 WSL2 自身,而非 Windows。

  • 解决:启用 WSL2 镜像网络模式(见步骤1),或使用 Windows 的真实 IP(ip route 获取)替代 localhost。

坑2:OpenClaw 报错 does not support tools

  • 现象:在 TUI 中输入任何话,模型都返回 400 错误,提示模型不支持工具。

  • 原因:使用的模型(如 deepseek-r1:8b)官方版本未启用工具调用模板。

  • 解决:换用明确支持 tool 调用的模型,如 qwen2.5-coder 系列或社区优化的 MFDoom/deepseek-r1-tool-calling

坑3:手动编辑 auth-profiles.json 格式错误

  • 现象:OpenClaw 报错“No API key found”或“ignored invalid auth profile entries”。

  • 原因:手动创建的文件缺少 version 和 profiles 顶层字段,或键格式错误。

  • 解决:通过 openclaw agents add 命令自动生成,而不是手动编辑。如果必须手动,格式应为:

    json

    {
      "version": 1,
      "profiles": {
        "openai:custom-127-0-0-1-11434": {
          "type": "api_key",
          "key": "你的key"
        }
      }
    }

坑4:源码安装后 openclaw 命令找不到

  • 现象:直接输入 openclaw 提示 command not found。

  • 原因:源码安装的可执行文件在 node_modules/.bin 中,未加入 PATH。

  • 解决:始终使用 pnpm openclaw 作为前缀运行命令,或临时添加 export PATH="$PATH:$(pwd)/node_modules/.bin"

坑5:TUI 中模型无响应或一直转圈

  • 现象:输入后无返回,或长时间无响应。

  • 原因:可能是网络不通、模型加载慢,或网关崩溃。

  • 解决:先检查 pnpm openclaw logs 看具体错误。常见问题:

    • 模型还在加载(首次运行慢),等一会儿。

    • Ollama 服务未运行,在 Windows 中重启 Ollama。

    • 显存不足,换用更小的量化版模型。


🎉 最终效果

现在,你的 WSL2 Ubuntu 中运行着 OpenClaw,它通过 localhost 调用 Windows 上的 Ollama 服务,使用 Qwen2.5-Coder 模型,并且模型能够正确请求工具调用。你可以通过 TUI 与它对话,让它帮你查天气、写文件、执行命令等(取决于你实现的工具)。

下一步,你可以根据自己的桌面机器人项目,为 OpenClaw 添加更多自定义工具,比如控制电机、读取传感器等,让 AI 真正成为机器人的大脑。


📚 参考资料

如果部署过程中遇到本文未覆盖的问题,欢迎在评论区留言,我们一起交流解决!

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐