ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Win11本地部署AI智能体:WSL2+Docker+Ollama跑通Openclaw并接入飞书

Win11本地部署AI智能体:WSL2+Docker+Ollama跑通Openclaw并接入飞书 最近Openclaw俗名“小龙虾”在AI智能体圈子里热度一直没降几乎每天都有人在问Windows能不能本地部署。我的结论很明确能但千万别直接在Windows裸环境里折腾正确路径是走Win11自带的WSL2也就是Windows的Linux子系统。这篇我把从头到尾的操作按纯小白标准整理了一遍从打开WSL开关、装Docker、用Ollama拉起千问模型到最终把Openclaw跑通并接入飞书全程不需要你懂Linux跟着命令敲就行。适合完全没接触过本地部署的新手也适合想从零了解AI Agent本地部署流程的开发者参考。1. 部署前先弄明白三件事1.1 Openclaw到底是个什么东西Openclaw是一个开源的AI智能体Agent项目社区里习惯叫它“小龙虾”。你可以把它理解成一个有手有脚的AI助手它不只是能和你聊天还能调用工具、读网页、操作文件甚至通过飞书这类IM渠道和你交互。核心价值在于所有大模型推理都在你自己的机器上完成数据不出门也不依赖云端API的配额。这个项目对本地部署方案的要求不算低但也没有高到离谱。它本身更像一个“调度中枢”真正干活的是大模型推理引擎。所以整体架构里至少有四层硬件层、系统层、模型层、Agent层。我们这篇教程要做的就是把这四层一层一层搭起来。1.2 为什么Win11上必须用WSL2很多新手最纠结的问题就是Windows有Docker Desktop为什么不直接在Windows里跑原因其实很现实。Openclaw的官方部署方式基本以Linux容器为主几乎所有依赖、脚本、环境变量都是按Linux生态设计的。Windows虽然有Docker Desktop但底层还是需要一个Linux内核来跑Linux容器。WSL2本质上就是一个轻量级虚拟机但它和Windows的集成度远高于传统VM文件互通、端口互通、 GPU直通都做得很好。对Openclaw来说WSL2就是那个“免费附赠的Linux环境”官方对这套组合的支持也最顺。换句话说在Win11上部署OpenclawWSL2不是可选项而是默认推荐路径。它能最大程度避免那些“Windows上跑Linux镜像”的玄学兼容问题。所以这篇教程所有内容都默认你在Win11 WSL2环境下操作。1.3 你需要的物料清单动手之前先花两分钟确认一下自己的装备避免装到一半发现少了什么。项目最低建议推荐配置备注系统Win11 22H2及以上Win11最新版WSL2需要新内核支持内存16GB32GB模型推理非常吃内存硬盘40GB剩余空间1TB NVMe SSD模型文件动辄4-8GB起步GPU可选NVIDIA显卡8GB显存以上有卡跑得快没卡也能用CPU硬扛DockerDocker Desktop最新版同上用来跑Openclaw容器模型千问Qwen2.5 7B更大的14B/32B7B是内存和效果之间的平衡点这里我多说一句如果你的电脑只有8GB内存也不是完全不能跑但大概率会卡到怀疑人生。建议至少加到16GB不然光是Windows、WSL、Docker、模型服务同时跑起来内存就爆了。2. 环境准备Windows侧和WSL2的一次性配置2.1 开启Windows的虚拟化功能第一步不是装WSL而是先把Windows的虚拟机平台功能打开。这一步决定了你后面能不能顺利跑WSL2。以管理员身份打开PowerShell在开始菜单里搜PowerShell右键选“以管理员身份运行”执行下面的命令dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart第一行是开启WSL功能第二行是开启虚拟机平台。两个命令执行完系统会提示你重启。必须重启别偷懒跳过否则后面各种莫名其妙的报错都会找上门。提示如果你之前装过第三方虚拟机软件比如VMware或VirtualBox建议先确认它们和Windows虚拟化功能不冲突。实测下来Hyper-V和VMware共存偶尔会出问题但WSL2通常没事。2.2 安装Ubuntu并升级到WSL2重启完之后再次打开管理员PowerShell执行一条命令就能装好WSL和默认的Ubuntu发行版wsl --install这条命令会自动安装WSL2内核并下载安装Ubuntu。装完后它会提示你设置Linux的用户名和密码这个可以随便设但一定要记住后面进入Linux环境经常要用。安装完成后在PowerShell里确认一下WSL版本wsl --list --verbose如果看到版本那栏是2说明已经是WSL2了。如果显示的是1可以用下面的命令把默认版本设为2wsl --set-default-version 2WSL2装好之后建议顺手更新一下Ubuntu的软件源和基础软件不然很多工具装不上。进入WSL环境wsl然后在Linux终端里执行sudo apt update sudo apt upgrade -y这一步会花几分钟取决于网络状况。更新完之后你相当于有了一个干净的Linux环境接下来的Docker和Ollama都装在这里面。2.3 装Docker Desktop并和WSL打通Docker Desktop是Windows上的Docker图形化管理工具它最大的优点是能在Windows和WSL2之间做无缝协调。下载安装包时认准官网装的时候一路默认选项即可。装完第一次启动它会要求你接受协议然后进入设置页。这里有一个关键操作进入“Settings → Resources → WSL Integration”确认“Enable integration with my default WSL distro”是打开的同时确保你安装的Ubuntu发行版也在启用列表里。如果没打开Docker容器就无法和WSL里的服务通信后面跑Openclaw必挂。打通之后可以在WSL终端里验证一下docker --version能输出版本号说明Docker已经能在WSL里直接使用了。这一步完成后系统层基本就位。注意Docker Desktop每次开机不会自动启动但Openclaw容器需要Docker后台运行。建议把Docker Desktop设置里的“Start Docker Desktop when you sign in”打开省得每次手动启动。2.4 用.wslconfig限制资源防止电脑卡死WSL2默认会占用你很大一部分内存如果不管它可能吃掉50%甚至更多的物理内存导致Windows本体卡成PPT。这里我们可以通过一个配置文件来限制它的资源占用。在Windows的当前用户目录下比如C:\Users\你的用户名\新建一个文件名字是.wslconfig注意开头有个点然后写入[wsl2] memory8GB swap4GB processors4 localhostForwardingtrue这里的memory8GB是限制WSL最大用8GB内存processors4是限制最多用4个CPU核心。数值可以根据你电脑的实际配置调整原则是别让WSL把所有资源都抢走。保存后在PowerShell里执行wsl --shutdown然后重新打开WSL配置就生效了。这个操作我强烈建议每个人都做尤其是内存只有16GB的机器能明显感受到整体流畅度的提升。3. 模型层用Ollama在本地把大模型“点亮”3.1 在WSL里装好OllamaOllama是目前本地跑大模型最简单、最无脑的工具没有之一。它把模型下载、加载、API服务都封装好了你只需要一条命令就能把一个大语言模型跑起来。Openclaw通过调用Ollama的API接口就能完成所有的模型推理请求。在WSL终端里执行curl -fsSL https://ollama.com/install.sh | sh安装过程会自动配置好服务。装完后先启动Ollama服务ollama serve正常情况下终端会输出日志并出现Listening on 127.0.0.1:11434字样说明Ollama已经在本地11434端口提供服务了。提示ollama serve是前台运行命令如果你关掉这个终端Ollama就停了。如果是临时测试无所谓长期使用建议用systemctl start ollama或者让终端保持打开。3.2 选模型比选参数更重要很多人第一次跑本地模型都会犯“越大越好”的毛病。实际上模型大小和显存/内存的关系是硬约束7B模型在量化后大约需要5-6GB内存/显存14B模型需要10-12GB32B直接奔着20GB以上去了。你的机器是什么水平就选什么模型硬上大模型的结果只有一个推理慢到你想砸键盘。以千问Qwen2.5系列为例这是目前中英文效果比较均衡的开源模型。在Ollama里拉取并运行7B版本只需一条命令ollama run qwen2.5:7b第一次运行会自动下载模型大概4GB多下载时间取决于你的网络情况。下载完成后会直接进入一个交互式对话界面你可以先发一句“你好”测试一下。能正常回复说明模型层已经是通的。如果你对Ollama本身的安装和模型管理不熟建议记住这几个常用命令命令作用ollama list查看本地已经下载的模型ollama run 模型名运行指定模型ollama pull 模型名只下载模型不进入对话ollama stop 模型名停止指定模型3.3 验证模型真的能出话交互式对话只是验证模型可用但要给Openclaw用我们得确认它的API接口是通的。Ollama本身自带OpenAI兼容接口地址是http://localhost:11434。在WSL里执行curl http://localhost:11434/v1/models如果返回一个JSON列表里面能看到类似qwen2.5:7b的模型信息说明API服务正常。注意这个接口在WSL内部访问没问题但Docker容器要访问它还需要做一些额外配置这个我放到第4节详细说因为这是最容易踩坑的地方。4. Openclaw本体部署与配置4.1 拉镜像、建目录、准备配置文件环境就绪后开始部署Openclaw本体。由于官方仓库的镜像名和版本会跟随发布节奏变化我以最常见的镜像名来做演示。你先建一个存放配置的目录再拉镜像mkdir -p ~/openclaw-data cd ~/openclaw-data docker pull openclaw/openclaw:latest拉镜像时间取决于网络耐心等它跑完。然后创建配置文件config.toml这是Openclaw核心配置所有模型、渠道、行为逻辑都在这里定义。我不会逼迫自己去背所有配置项只教你最实用的一批。4.2 配置项逐条解读下面是一个简化但能跑通的基础配置示例我把关键字段都加了注释对应的中文说明在表格里[server] host 0.0.0.0 port 8080 [agent] default_channel web [agent.model] provider ollama model qwen2.5:7b base_url http://host.docker.internal:11434 [channel.web] enabled true [channel.feishu] enabled true app_id cli_xxxxx app_secret your_secret_here配置项意思说明server.host/server.portOpenclaw服务监听地址和端口0.0.0.0可以被外部访问8080是Web面板端口agent.default_channel默认渠道有web、feishu、discord等选项agent.model.provider模型提供方这里用ollamaagent.model.model具体模型名要和ollama list里显示的完全一致agent.model.base_url模型服务地址这个是关键后面单独讲channel.web.enabled是否开启Web界面设为truechannel.feishu.enabled是否开启飞书渠道想用飞书机器人就设为true如果你想换更大的模型只需要修改model字段比如改成qwen2.5:14b前提是你的机器带得动。4.3 把Openclaw接到Ollama模型上这里是我踩坑最多的地方必须重点强调。Openclaw跑在Docker容器里Ollama跑在WSL里容器内访问宿主WSL服务不能用localhost因为容器内部有自己独立的网络命名空间它的localhost指的是容器自己。正确做法是使用host.docker.internal这个特殊域名它会被Docker自动解析到宿主机。但这里有个坑在WSL2环境下host.docker.internal并不总是直接指向WSL2内部实测中经常需要手动指定。我的做法是把Ollama的监听地址改到所有网卡上而不是默认的127.0.0.1。在WSL里先停掉Ollama然后设置环境变量再启动export OLLAMA_HOST0.0.0.0:11434 ollama serve这样Ollama就会在所有网络接口上监听。然后在Docker启动Openclaw时加上--add-hosthost.docker.internal:host-gateway参数确保那个特殊域名能解析到WSL的IP。4.4 启动、看日志、判断是否成功配置写好后用下面的命令启动Openclaw容器docker run -d --name openclaw \ -p 8080:8080 \ -v ~/openclaw-data:/root/.openclaw \ --add-hosthost.docker.internal:host-gateway \ openclaw/openclaw:latest启动后看日志docker logs -f openclaw正常情况下日志里会出现类似server started或listening on 0.0.0.0:8080的提示。这时候打开Windows浏览器输入http://localhost:8080应该能看到Openclaw的Web界面。如果说不出话优先看日志里有没有报错最常见的是模型地址连不上。可以在WSL里用一行命令测试容器到宿主机Ollama的连通性docker exec openclaw curl http://host.docker.internal:11434能返回Ollama的信息就说明网络通了问题多半出在模型名不匹配。5. 接入渠道从网页到飞书机器人5.1 Web面板先跑通Openclaw默认的Web界面是最直接的体验入口。在浏览器打开http://localhost:8080后你会看到一个类似聊天窗口的界面。左侧通常是会话列表和渠道选择右侧是对话区。第一次进去不用急着调参数先随便问一句“你是谁”“你能做什么”看看模型能不能正常响应。如果能正常回复说明整套链路已经通了浏览器 → Openclaw → Ollama → 模型 → 返回结果。如果这里就卡住了请回到第4节优先检查网络连通性和模型名。Web面板跑通后再去做其他渠道接入这样排查问题的时候可以确定问题出在“渠道配置”而不是“模型链路”。5.2 飞书机器人接入的几个关键环节飞书接入是很多人关心的热点这里也最容易踩坑。要在飞书里建一个机器人然后通过Openclaw让这个机器人具备AI能力。流程分两步先在飞书开放平台创建应用再把应用凭证填到Openclaw配置里。飞书侧的操作登录飞书开放平台创建一个企业自建应用添加“机器人”能力拿到App ID和App Secret。然后在“事件订阅”里配置请求地址这里建议使用长连接模式不需要暴露公网回调地址对本地部署友好得多。Openclaw侧的操作把channel.feishu.app_id和channel.feishu.app_secret填成你的凭证然后重启容器docker restart openclaw同时在agent.default_channel或飞书渠道的entry配置里确认机器人入口是打开的。启动后在飞书里搜索你的应用给它发一条私聊消息如果它能回复说明飞书渠道已经打通。5.3 飞书输出被截断的解决办法很多人在飞书里和Openclaw对话时会遇到一个典型问题AI回复到一半突然没了或者内容变得不完整。这个现象在热搜词里也有体现核心原因是模型输出长度超过飞书单条消息的上限。解决思路有两条。第一在模型侧限制输出长度让AI不要一口气生成太长的内容。在Openclaw的配置里找到模型参数相关的max_tokens字段把它设置成适中的值比如1024或2048。这样模型每次回复最多生成这些token从源头避免超长。第二如果确实需要长文本输出可以让AI以分段、列表、摘要形式回复或者让它在需要长篇输出时拆成多条消息发送。这需要在Prompt或Agent指令里做约定属于调教层面的技巧但非常实用。我实测下来把max_tokens限制到2048并且要求模型分段输出后飞书截断的问题基本不再出现。6. 常见报错与排查速查表6.1 WSL2环境验证失败的经典报错网上很多人反馈Openclaw启动时提示could not safely verify the WSL2 environment这个报错基本可以锁定为WSL2环境不完整或版本过旧。我第一次遇到这个报错排查了快一下午最后发现就是WSL内核版本的问题。解决步骤按顺序来wsl --update wsl --set-default-version 2 wsl --status如果wsl --status提示默认版本是1说明WSL2没有真正生效。再用wsl --list --verbose查看你安装的Ubuntu发行版状态如果显示版本为1手动升级wsl --set-version Ubuntu-22.04 2升级完成后重启Docker Desktop再重启Openclaw容器报错基本就会消失。这个报错的根源就是WSL2内核组件太老没有别的玄机。6.2 模型下载慢、端口被占用、内存爆掉这三个是本地部署最常遇到的运行时问题我放在一起说。模型下载慢Ollama默认从官方源拉模型国内网络环境下确实容易龟速而且容易中途断开。推荐做法是配置国内可访问的镜像源在WSL里设置环境变量后重启Ollamaexport OLLAMA_MODELS/home/你的用户名/.ollama/models这个只是指定模型存放路径解决的是磁盘空间管理问题。下载慢本身可以通过配置镜像站或者多次重试来解决如果网络条件实在不行也可以考虑把模型文件从别的机器拷过来放到OLLAMA_MODELS路径下。端口被占用Openclaw默认用8080端口如果和本机其他服务冲突启动日志会明确提示端口占用。解决办法要么改Openclaw配置里的port要么用系统命令找出占用进程并释放端口netstat -ano | findstr :8080找到PID后在任务管理器里结束对应进程或者换个端口重新启动。内存爆掉这基本是WSL2资源不受控导致的。我之前已经把.wslconfig的memory限制写过了这里再强调一遍这个文件不是可选项是必选项。如果已经设置了限制还是爆那大概率是你选的模型太大了建议换小一号的模型。6.3 关于channel选择和魔塔模型的一点提示Openclaw里选channel其实就是在配置文件里决定AI可以从哪些渠道被唤起。web是最基础的飞书适合日常手机办公场景如果你在配置时看到多个channel不要全部开启首个部署阶段只开web和飞书就够减少变量出错的可能。有人会问能不能对接魔塔ModelScope社区的模型。可以思路有两种一种是把魔塔下载的模型文件通过Ollama导入用Modelfile方式加载成Ollama的格式然后用我上面说的Ollama路径接入另一种是直接用魔塔提供的OpenAI兼容API接口把base_url指向魔塔的服务地址同时把provider改成对应的OpenAI兼容模式。后一种方式需要网络能访问魔塔的API适合不想在本地占太多磁盘空间的人。7. 一些实测后的经验心得按这套流程走下来你基本能在半天内把Openclaw从零跑到能对话。整个过程最费时间的不是安装反而是模型下载和首次加载。我的建议是先用7B模型把链路跑通确认所有配置都正常之后再考虑换更大的模型不要一上来就挑战32B否则你会同时面对“模型下载要半天”和“加载完内存爆掉”两个问题。还有一点很重要Openclaw本地部署的体验上限很大程度取决于模型选型和Prompt调教而不是工具本身。同一个Openclaw用7B模型和用32B模型完全是两个体验同一个模型用默认Prompt和精心设计过的指令效果也天差地别。如果你只是图新鲜装完随便聊两句就放一边那大概率感受不到这个项目的价值。我个人在实际使用中的体会是本地部署AI Agent最大的乐趣不是“装成功”那一瞬间的成就感而是后面你可以完全按自己的需求去改它、调它。模型不够聪明就换模型回复太啰嗦就改指令飞书消息太长就限制token。这些东西全部捏在自己手里那种可掌控感是云端API给不了的。先把这个基础环境跑通后面你想怎么折腾都行。
返回列表