
最近我把 OpenClaw 在本地完整部署了一遍并且把它接上了千问Qwen整体跑下来比预料中顺手。如果你也在关注本地部署大模型或者想搞一套能自己掌控、能写技能、能接消息渠道的 AI 助手平台这篇指南应该能帮你省下不少试错时间。OpenClaw 本质上是一个开源的 AI 代理运行框架它的核心价值是把模型接入、工具调用、技能编排、渠道对接这些事情统一管理起来Qwen 作为开源大模型在中文理解、指令遵循和本地推理性价比这几个维度上都很有优势。这篇文章我会从方案选型讲起把环境准备、OpenClaw 部署、Qwen 接入、Skill 编写到排错这条链路完整过一遍适合有一定基础、想搭一套私有 AI 助手的开发者参考。1. 为什么选 OpenClaw Qwen 这套组合1.1 OpenClaw 到底解决了什么问题很多人第一次接触 OpenClaw 会疑惑它不是模型不是聊天界面也不是像 Ollama 那样的推理引擎那它到底是个什么我的理解是OpenClaw 是一个本地优先的 AI 代理运行框架你可以把它当成一个“AI 助手网关”或者“代理调度中心”。它的工作方式是这样的用户在聊天窗口、微信或飞书里发来一条消息OpenClaw 收到消息后会在内部走一遍 agent 逻辑——判断用户意图、决定是否需要调用工具、选择合适的模型生成回复再把结果返回给用户。模型只是它手下的一个执行引擎真正干活的编排逻辑在 OpenClaw 里。这跟 Dify 这类平台不太一样。Dify 更偏“应用搭建平台”强调工作流可视化编排而 OpenClaw 更偏“代理运行时”适合习惯用代码、配置文件来定制行为的开发者。它跟 Ollama 也不冲突反而是互补关系Ollama 负责把模型跑起来OpenClaw 负责把模型用起来。我之所以选 OpenClaw核心原因有三个本地部署数据不出门隐私可控。支持多模型、多 provider 切换不需要被单一厂商绑死。有 Skill 机制可以把自己常用的 API、脚本、知识库全部封装成技能让代理自动调用。1.2 千问 Qwen 为什么适合本地部署千问 Qwen 系列是开源模型里我会优先推荐给中文用户的选择。首先是许可证友好Qwen2.5 开源版本使用 Apache 2.0意味着个人使用、商用、二次开发都很自由这对想拿 AI 做点正经事的开发者来说很重要。其次是中文能力确实强无论是写文案、整理对话、抽取结构化数据还是代码相关的任务Qwen 的表现在同量级模型里都属于第一梯队。最关键的是 Qwen 有从 0.5B 到 72B 的完整规格梯度这让它可以覆盖从树莓派到数据中心的各种硬件环境。我自己的经验是如果电脑只有 CPU跑 1.5B 或 3B 的小模型可以流畅对话如果有 12G 以上显存的显卡跑 7B 或 14B 会有很好的效果如果追求更强推理能力32B 加 AWQ 量化也是可以接受的。1.3 整体架构与数据流在动手之前先把我们要搭的东西画成一条链路这里不谈具体组件只说逻辑结构用户消息终端/微信/飞书/API ↓ OpenClaw Agent Core意图判断、会话管理、工具调度 ↓ 模型 Provider 层Ollama / DashScope / NIM / vLLM ↓ Qwen 模型本地跑或远端 API ↓ 回复组织 → 回到用户渠道这个结构最关键的一点是模型被抽象成了一个可替换的 provider。本地跑 Qwen 用 Ollama 接后面觉得模型不够用想用更强的模型改几行配置就行不需要动上层逻辑。数据流方面如果你用本地 Ollama用户消息会在你的机器上完成全部推理如果你配了 DashScope 的 API则消息会发到阿里云的模型服务去处理。这两种方式我会在第四部分详细展开。2. 部署前的准备与基础环境2.1 硬件配置建议我先说结论再解释理由。OpenClaw 本身是个编排框架不直接吃显存但它调用的模型吃资源。所以你的硬件配置上限基本就决定了能跑多大的模型。我整理了一份参考表硬件环境推荐模型规格体验说明8G 内存无独显Qwen2.5-1.5B / 3BCPU 推理能对话速度偏慢适合体验16G 内存M 系列芯片Qwen2.5-7BOllama 加载流畅度不错笔记本可长期跑RTX 3060 12G / 4060 Ti 16GQwen2.5-7B / 14B量化性价比高推荐大多数开发者使用24G 以上显存Qwen2.5-32BAWQ/GPTQ接近完整能力可代替部分云端模型多卡或企业级Qwen2.5-72B追求极限效果如果你在 Mac mini 上用 Docker 部署 OpenClaw我建议至少 16G 内存起步。实测下来M1 16G 跑 Qwen2.5-7B 量化版速度在每秒 8 到 12 个 token 左右对话够用想要更快的响应可以降到 3B。Windows 用户如果有 NVIDIA 显卡优先用 Ollama 的 CUDA 加速体验比 CPU 快好几倍。2.2 软件依赖清单部署 OpenClaw 之前先确认下面这些软件是否就绪。顺序我按照依赖层级排列操作系统Linux推荐 Debian/Ubuntu、macOS 实测都可以Windows 建议用 WSL2或者直接走 Docker Desktop。Docker 与 Docker Compose这是最省心的安装方式。如果打算用一键脚本原生安装Docker 不是必须的但我还是会建议装一个好隔离环境。Python 3.10OpenClaw 的部分源码工具和插件依赖 Python比如一些 Skill 的执行脚本。Ollama可选如果你决定本地跑 Qwen请先安装它。Git用来拉取 OpenClaw 官方仓库和后续获取 Skill 模板。安装顺序上我个人的经验是先装 Docker 和 Ollama再装 OpenClaw。这样后面配置模型时OpenClaw 一启动就能探测到 Ollama 可用少走弯路。2.3 安装 Ollama 与拉取 Qwen 模型Ollama 的安装非常简单官方脚本一行搞定。Linux 和 macOS 都可以执行curl -fsSL https://ollama.com/install.sh | shWindows 用户直接去官网下载安装包。装完之后拉取 Qwen 模型ollama pull qwen2.5:7b如果你想先用小模型跑通流程那就拉最小的ollama pull qwen2.5:1.5b拉取完成后用下面的命令验证一下ollama list能看到 qwen2.5 相关条目就说明模型就绪了。我特别想提醒一件事Ollama 默认会挂在本机的 11434 端口OpenClaw 接入时也需要填这个地址。很多人在后面报“连接被拒绝”之类的问题多半是 Ollama 没启动或者服务地址写错了。先手动跑一下ollama serve确认服务起来了再继续后面的步骤。3. OpenClaw 本地部署实操3.1 方式一一键脚本安装OpenClaw 官方提供了一键安装脚本适合想快速部署的人。打开终端执行具体命令以官方仓库 README 为准curl -fsSL https://openclaw.example/install.sh | bash这个脚本会检测系统环境、下载 OpenClaw 核心程序、生成默认配置目录。装完之后初始化和启动openclaw init openclaw serveinit 命令会引导你选择模型 provider。如果你已经装好了 Ollama可以直接选择 Ollama填写http://localhost:11434。脚本方式的优点是快缺点是你少了一层“知道自己装了什么”的掌控感。所以我的习惯是至少把生成的配置文件打开看一遍了解里面有哪些字段后面改起来心里有数。3.2 方式二Docker Compose 部署我自己最满意的部署方式是 Docker Compose因为整个环境的依赖都在镜像里不影响宿主机升级时只要重新拉镜像就行。对 Mac mini、NAS、服务器这类长期运行的设备来说这种方式的稳定性最好。先在某个目录下创建docker-compose.ymlversion: 3.8 services: openclaw: image: openclaw/openclaw:latest container_name: openclaw restart: unless-stopped ports: - 3000:3000 volumes: - ./data:/root/.openclaw environment: - OPENCLAW_LOG_LEVELinfo extra_hosts: - host.docker.internal:host-gateway然后启动docker compose up -d这里的几个细节值得展开讲。restart: unless-stopped是为了让服务在机器重启后自动拉起长期运行的服务必须加这个./data映射到容器内的配置目录是为了持久化配置和日志不然容器一重建啥都没了extra_hosts里把host.docker.internal指向宿主机这样容器里的 OpenClaw 才能通过这个域名访问你在宿主机跑的 Ollama。启动完成后用docker compose ps看容器状态再查看日志docker compose logs -f openclaw看到类似 “HTTP server started” 或 “listening on 0.0.0.0:3000” 的日志就说明起成功了。3.3 验证 Control UI 是否正常OpenClaw 自带一个 Web 控制界面一般叫 Control UI默认端口是 3000以你实际启动日志为准。浏览器打开http://localhost:3000如果一切正常你会看到一个管理界面可以查看对话记录、配置模型、管理 Skill、查看日志。我遇到过好几次“界面打不开”的情况后来发现大多是端口被占用了。排查方法很简单lsof -i :3000如果端口被其他程序占用可以改 docker-compose 里的端口映射比如3001:3000再重新启动容器。Control UI 的作用不只是聊聊天它还是排错入口。我强烈建议在接入模型之前先在 UI 上随便发一条消息试试如果报错UI 上的错误信息比日志更直观。4. 接入千问 Qwen 的详细配置4.1 方式一通过 Ollama 本地推理接入这是最推荐的接入方式模型在本地运行数据不出本机。OpenClaw 的模型配置通常在data/settings.json或config.yaml里具体文件看版本但核心字段是一致的。下面是一份典型的配置片段model: provider: ollama model: qwen2.5:7b base_url: http://host.docker.internal:11434 temperature: 0.7 max_tokens: 4096解释一下这几个字段provider声明使用 Ollama 作为模型服务。model填你在 Ollama 里拉的模型名称一定要和ollama list显示的一致。base_url如果 OpenClaw 跑在 Docker 里填http://host.docker.internal:11434如果用脚本直接跑在宿主机可以填http://localhost:11434。temperature控制随机性0.7 是通用推荐值。max_tokens限制单次回复的最大 token 数。配置完成后重启 OpenClaw 服务docker compose restart openclaw然后回到 Control UI发一条消息测试。我的经验是最好先问“你是谁”让模型简单自我介绍确认链路通了再测复杂任务。如果回复正常恭喜你本地版 AI 助手已经上线了。4.2 方式二通过 DashScope 兼容 API 接入不想占用本地算力或者没有大显存显卡也可以直接用阿里云百炼平台的模型服务它提供 OpenAI 兼容的接口OpenClaw 可以直接对接。做法是在环境变量里设置 API Key然后配置 providermodel: provider: openai-compatible model: qwen-plus base_url: https://dashscope.aliyuncs.com/compatible-mode/v1 api_key: sk-你的APIKey注意几点model可以填 qwen-plus、qwen-max、qwen-turbo 等按需求选。base_url固定是 DashScope 的兼容模式地址不要漏掉/compatible-mode/v1这个路径。API Key 去阿里云百炼控制台申请建议把 Key 放进环境变量而不是直接写死在配置里避免提交代码时泄漏。我个人会把这两种方式都配好然后用环境变量来切换。本地要跑就用 Ollama出门在外或者要跑大任务就切到 API。4.3 模型参数调优与踩坑点接入成功后很多人就会开始调参数。这里我分享几个实际中会踩的坑。关于温度。Qwen 在 OpenAI 兼容接口里的 temperature 取值范围是 0 到 2但 OpenAI 本身的取值范围是 0 到 1两边语义不完全一样。如果你用 DashScope建议先按 0.7 起步如果发现回答太飘就降到 0.4 以下。如果你发现某个场景需要更稳定的输出比如抽取信息直接设成 0.1 甚至 0反而更好。关于上下文长度。Qwen2.5 支持很长的上下文但 OpenClaw 默认对话轮次管理可能会把历史消息截断。如果对话到一半发现模型“失忆”先检查配置里的max_history_messages之类字段调大一点通常几十条对话是够用的。还有一个很容易踩的坑模型名称不匹配。Ollama 里你拉的是qwen2.5:7bOpenClaw 配置里写成了qwen2.5-7b一字之差就会报错。这种错误在日志里通常表现为 “model not found” 或 “unknown model”。遇到这种问题第一反应就是去核对模型名字。5. 用 Skill 把 OpenClaw 变成生产力工具5.1 Skill 机制到底是啥如果说模型是 OpenClaw 的大脑那 Skill 就是它的双手。一个 Skill 本质上是一个封装好的能力包里面包含一段描述、一组工具函数、一个调用说明。当用户输入的消息命中 Skill 的描述时OpenClaw 会自动调用这个 Skill让模型基于 Skill 提供的数据或工具来生成回答。举个例子。你想让 OpenClaw 帮你查天气不需要它在本地跑一个天气模型只需要给它一个“天气查询”的 SkillSkill 内部调用天气预报 API拿到数据后让 Qwen 把数据整理成自然语言回答。整个过程是模型理解 工具执行 模型总结的组合。这种机制最大的好处是解耦。模型的更新不影响 SkillSkill 的增加不需要重新训练模型。我甚至会在本地写一堆小工具比如 JSON 格式化、二维码生成、汇率查询然后全部封装成 Skill让 OpenClaw 自己去调用。5.2 编写一个 Skill 的完整示例一个常见的 OpenClaw Skill 目录结构是my_skill/ ├── SKILL.md └── main.pySKILL.md描述这个技能是干什么的、什么时候被调用、参数如何传递。示例--- name: currency_converter description: 当用户询问汇率换算时使用支持常见货币。 input: 原货币、目标货币、金额 --- ## 执行步骤 1. 解析用户指定的原货币和目标货币。 2. 调用 main.py 中的 convert() 函数。 3. 将换算结果整理成自然语言回复。main.py是实际干活的部分def convert(amount: float, from_currency: str, to_currency: str) - str: # 这里用免费汇率 API 做实际换算 import requests url fhttps://api.exchangerate-api.com/v4/latest/{from_currency.upper()} data requests.get(url, timeout10).json() rate data[rates][to_currency.upper()] return f{amount} {from_currency} {round(amount * rate, 2)} {to_currency}编写完成后把my_skill目录放到 OpenClaw 的 skills 目录下在 Control UI 里刷新一下Skill 就会生效。实测下来写 Skill 最需要注意的就是desc要写得准确。模型的判断完全依赖这段描述如果描述含糊模型就会在正确的时候不调用不该调用的时候乱调用。5.3 接入微信和飞书的注意事项Skill 让我们能自动化干活而接入 IM 渠道让我们能随时随地使用。OpenClaw 支持把微信、飞书等 IM 应用作为渠道接入本质上是走官方开放平台的接口注册一个应用、拿到凭证、配置 webhook 回调。以飞书为例你需要先去飞书开放平台创建企业自建应用开启“机器人”能力拿到 App ID 和 App Secret然后把它们填到 OpenClaw 的渠道配置里。微信接入的流程类似但微信个人号接入现在限制很多我建议优先用企业微信或者公众号接口。这一块最容易栽跟头的是回调地址必须是公网可以访问的 HTTPS 地址。本地调试时可以用内网穿透工具或直接把 OpenClaw 部署在公网服务器上。我自己的使用习惯是飞书群聊里拉一个机器人进去需要查资料、执行脚本、记录信息时直接 它Qwen 在背后干活Skill 在背后调工具体验非常像一个真正的助理。6. 常见问题与排查实录6.1 Control UI 一直没启动怎么办这是被问得最多的一个问题。现象是docker compose up -d后容器起来了但http://localhost:3000打不开。排查步骤我按顺序列一下先看容器是否真的在运行docker compose ps。看启动日志docker compose logs openclaw | tail -50。如果日志里有 “port already in use”说明端口被占。如果日志停在不正常位置可能是内存不够看有没有 OOM 信息。还有个容易忽略的问题浏览器访问的端口和容器映射的端口不一致。比如你映射成3001:3000但还在访问 3000那当然打不开。6.2 agent 报错 unknown model: deepseek这个报错很典型往往出现在你从网上抄了一份配置把model字段改成了deepseek-r1之类的名字但你的 provider 里根本没有这个模型。OpenClaw 启动时会去 provider 查询可用模型找不到就直接在 agent 回复前报错退出。解决方式很简单要么切换成你真正有的模型要么把模型下载下来。用 Ollama 的话执行ollama pull deepseek-r1:7b如果你确实想用千问就改成ollama pull qwen2.5:7b总之看到 “unknown model” 第一反应永远是去核对模型名称而不是去查别的地方。这一条真的能省掉至少半小时排查时间。6.3 推理速度慢、显存不足本地跑大模型的通病就是性能焦虑。我的建议是分几个方向优化。第一选对量化格式。Ollama 默认的 q4_K_M 量化在效果和速度之间比较平衡不要盲目追求 q8 或 fp16显存占用翻倍但效果提升有限。第二控制上下文长度。模型处理长文本时算力和显存消耗会明显涨。把max_tokens调到够用就好不要默认给到很大的值。第三如果机器同时跑了很多服务优先给 Ollama/OpenClaw 留出足够资源。在 mac 上注意看内存压力在 Linux 上可以关掉一些不需要的 Docker 容器。6.4 零 Token / 空回复问题有时候模型返回了内容但 UI 里什么都没显示日志里也没有明显报错。我排查的结果往往是两种情况一是模型返回了空字符串需要看 provider 日志二是 OpenClaw 在组装回复时没拿到 content 字段可能是配置里的 response path 不对。遇到这类问题别急着重启先开 Debug 日志级别把实际返回的 JSON 打出来看。我个人在实际操作中的体会是本地部署 OpenClaw 并接入 Qwen真正难的地方从来不是“跑起来”而是“稳定地跑下去”。模型选型、Skill 编排、渠道接入每一步都要有耐心去调试。如果你能从零手动部署一遍对 agent 编排、模型 provider 抽象、工具调用的理解会提升一大截。最后再分享一个小技巧在处理配置和模型问题时改完一项就重启一次并验证不要一次性改一堆配置否则出问题完全不知道是哪个坑引起的。希望这篇指南能帮你顺利把 OpenClaw 跑起来让千问在你的机器上真正为你干活。