老早之前我就想搞一个能随时喊一声就帮忙查资料、写文案、管日程的 AI 助手,但市面上的方案总差点意思——要么只能打开网页聊,要么接不上我日常用的微信,要么没法按我的习惯干活。后来我找到了 OpenClaw,一个开源的个人 AI 助手框架,折腾了几天总算把它完整跑起来了。这篇文章就把我的完整安装过程、踩过的坑和配置技巧整理出来,从环境准备到接入本地模型,再到写自定义技能,尽量写得让小白也能顺着走通。
OpenClaw 本质上是一套"AI 助手外壳",它把大模型能力、消息渠道、自动化任务和工具调用整合在一起。你不需要自己从零写代码去调用各家模型 API,也不需要为每个聊天平台维护一套机器人逻辑。装好之后,你只需要在配置文件里声明用哪个模型、接哪个渠道,再给它写几个"技能",它就能变成一个真正属于你的助手。适合谁?想自己部署 AI 助手的人、想把助手接到微信或飞书的人、想用本地模型保护隐私的人,以及想在 AI Agent 方向上练手的人,都可以从这篇文章里找到可落地的内容。
1. 项目概述与方案选择:先搞清楚 OpenClaw 到底是什么
1.1 一句话理解 OpenClaw:AI 助手的"总调度"
OpenClaw 是一个开源的个人 AI 助手框架,核心思想是把"模型"和"工具"解耦。模型负责理解和生成,工具负责执行。你作为使用者,只需要定义好模型从哪里来、有哪些工具可以用,以及助手出现在哪些聊天渠道里。
我自己的理解是,它像一个"总调度":你告诉它"帮我干嘛",它先调大模型思考怎么做,再调用对应的工具或者 API 去完成。比如你说"帮我把这篇文档总结一下发到飞书",它就会调用文本处理能力、文档读写能力和飞书机器人能力,一步步完成。这个机制跟市面上的 Agent 框架思路一致,但 OpenClaw 更偏个人使用场景,安装和配置门槛相对低一些。
1.2 它解决了哪些痛点,适合谁
如果你只用一个 ChatGPT 网页版,可能觉得没必要装这么一套东西。但当你开始有这些需求时,OpenClaw 的价值就出来了:
- 你想在微信、飞书、Telegram 等多个地方唤起同一个助手,而不是每个平台单独维护一个 bot。
- 你想让助手定时干活,比如每天早上汇总新闻发给你的飞书。
- 你想接入私有数据或本地模型,所有对话和记录都留存在自己的机器上。
- 你想给助手定义一些专属技能,比如"用固定风格写小说""帮我查某个 API 的数据",普通聊天工具做不到这种定制。
所以它特别适合两类人:一类是技术爱好者,喜欢折腾、希望拥有一套完全可控的 AI 基础设施;另一类是重度知识工作者,日常大量依赖 AI 处理信息,需要一个能嵌进工作流的助手。
1.3 部署方式怎么选:源码、Docker 还是一键脚本
OpenClaw 的部署方式,我实测下来大致有三条路,各有优劣:
| 方式 | 优点 | 缺点 | 适合谁 |
|---|---|---|---|
| 源码安装 | 最灵活,改代码方便,方便调试 skill | 依赖环境多,新手容易卡在 Node 版本或依赖安装上 | 想深度定制、后续要开发 skill 和插件的人 |
| Docker 部署 | 环境隔离,升级方便,不污染宿主机 | 数据卷和端口映射需要理解,本地改代码不如源码直观 | 追求稳定、不想折腾环境的人,推荐新手 |
| 一键脚本 | 快,输入命令就完事 | 黑盒,出了问题不好排查,也不方便自定义 | 只想快速体验的人 |
我个人的建议是,如果你打算长期用、后面会写不少 skill,就直接源码安装,虽然前期折腾一点,但调试起来很顺手。如果你只是先体验一下,或者对命令行不熟,那就老老实实用 Docker,遇到问题删掉容器重来也不心疼。
2. 环境准备与前置条件:动手前先把这几样装好
2.1 硬件和系统要求
很多人一听到 AI 助手就以为要很高的配置,其实看你怎么用。如果你只是通过 API 调用云端的模型,OpenClaw 本身只是一个管家程序,4 核 CPU、8GB 内存的机器就够跑了。你平时的树莓派、旧笔记本、云服务器都能胜任。
真正吃配置的是本地模型。你要是打算完全离线推理,就按模型大小来评估资源。以 7B 参数左右的模型为例,量化版本大概需要 8GB 左右的显存,内存至少 16GB 起步;没有独显纯 CPU 跑也能跑,但速度会慢得让人着急。我劝新手别一上来就上 70B 大模型,先拿小模型跑通流程,后面再慢慢加资源。
2.2 安装 Docker Desktop 并验证(可选但推荐)
如果你走 Docker 路线,需要先装好 Docker。Windows 和 macOS 用户直接装 Docker Desktop 就行,Linux 用户安装 Docker Engine 加 docker compose 插件。
装完之后记得验证一下环境:
docker --version docker compose version有版本号输出就说明没问题。我遇到过的情况是 Windows 上 Docker Desktop 装好但一直起不来,后来发现是 WSL 2 没启用,去 BIOS 打开虚拟化、在控制面板启用"适用于 Linux 的 Windows 子系统"之后就好了。这个坑比较常见,大家留意一下。
麒麟桌面这类国产 Linux 系统我实测也能装,直接按 Linux 方式装 Docker Engine,注意一下 CPU 架构是 x86 还是 ARM 就行,后面拉镜像的时候会用到。
2.3 准备 Git 和 Node.js 环境
源码安装 OpenClaw 需要 Git 和 Node.js。Git 用来拉取代码,Node.js 用来跑服务。Node 版本建议用 20 以上,太老的版本容易在安装依赖的时候报错。
装好之后同样验证一下:
git --version node -v npm -v如果你机器上已经有其他 Node 项目,版本不一致也没关系,可以用 nvm 做多版本管理,按项目切换 Node 版本。我一开始直接装系统级 Node,后来做别的项目要降版本,就折腾了一阵子,建议有条件的人直接用 nvm。
2.4 提前准备好模型服务:云 API 或本地模型
OpenClaw 本身不带模型,它需要连接一个"模型后端"。这一步建议在安装 OpenClaw 之前就准备好,否则装好之后也没法对话。
方案 A 是云端 API。OpenAI、DeepSeek、通义千问这些服务商都提供兼容接口,你只需要注册账号、创建一个 API Key。以 DeepSeek 为例,去开放平台创建一个 Key,记下来备用。
方案 B 是本地模型。Ollama 是我用得最多的方案,安装后执行ollama pull qwen2.5:7b就能把模型拉下来,非常省事。NVIDIA NIM 是另一种方式,用容器跑模型,适合有 NVIDIA 显卡的人。后面我会专门讲怎么在 OpenClaw 里配置这两种方案。
3. 安装实操:从零到跑通 OpenClaw
3.1 源码安装完整流程
源码安装的核心步骤就是四件事:拉代码、装依赖、配环境、启动。
先克隆仓库。到 GitHub 搜索 OpenClaw 官方仓库,复制链接后执行:
git clone <OpenClaw 官方仓库地址> cd openclaw然后安装依赖。OpenClaw 的依赖比较多,npm install可能要跑几分钟:
npm install这一步我经常遇到卡住不动的情况,多半是网络原因。可以切换到国内 npm 镜像源再试:
npm config set registry https://registry.npmmirror.com npm install依赖装完之后,会有一个初始化流程,引导你填写配置文件。先复制环境变量模板:
cp .env.example .env然后在.env里填你的 API Key、默认模型名等关键信息。有些版本提供了npm run setup这个交互命令,跟着提示走就行,它会自动生成主配置文件。
最后启动:
npm start看到类似OpenClaw is running的日志,基本就成功了。
3.2 Docker 一行命令部署(推荐新手)
Docker 部署相比源码安装会简单不少。官方提供了镜像,配置通过环境变量注入,数据目录通过卷挂载出来。
我写了一份最简 docker-compose.yml,你可以直接参考:
version: "3" services: openclaw: image: openclaw/openclaw:latest container_name: openclaw restart: unless-stopped ports: - "3000:3000" environment: - OPENCLAW_MODEL_PROVIDER=deepseek - OPENCLAW_MODEL_NAME=deepseek-chat - OPENCLAW_API_KEY=sk-你的密钥 volumes: - ./openclaw-data:/data然后执行:
docker compose up -d查看日志确认启动状态:
docker compose logs -f如果日志里有报错,先别慌,去倒数几行找关键错误信息,多半是 API Key 填错或者网络连不上。Docker 的好处就在这里,出问题改完配置执行docker compose restart就行,不用重装。
3.3 遇到 Control UI did not start 怎么办
Control UI 是 OpenClaw 自带的 Web 控制台,可以在浏览器里管理会话、查看配置、调试 skill。但不少人都遇到过它起不来的情况,报错信息一般就是Control UI did not start。
我排查这个问题时通常按顺序做三件事:
第一,看端口占用。Control UI 会监听一个默认端口,如果你机器上那个端口被别的程序占了,它自然起不来。可以用netstat -ano | findstr <端口号>(Windows)或者ss -lntp | grep <端口号>(Linux)查看。
第二,确认 Node 版本。有些版本的 Control UI 对 Node 版本有要求,20 以下是高危区。用node -v看看,如果版本太低就升级。
第三,清理缓存后重启。浏览器缓存有时候会让控制台页面显示不出来,换个无痕窗口试试。服务端也可以清一下 npm 缓存再重启。
如果你的 Control UI 是通过单独子命令启动的,记得先启动主服务再启动控制台,顺序反了它也可能起不来。
3.4 首次对话验证:确认助手真的活了
安装完成之后,先别急着接各种渠道,第一件事是验证助手能不能正常对话。
打开 Control UI 的地址,创建一个新的会话,发一句"你好"。如果配置没问题,几秒钟内就能收到回复。这时候观察两件事:一是回复速度,二是日志里有没有报错。
如果你配置的是云端 API,回复速度通常比较快;如果你配置的是本地模型,第一次加载模型会慢一些,需要多点耐心。日志里如果出现agent failed before reply之类的字样,大概率是模型配置的问题,下一节我会详细讲。
4. 模型接入与核心配置:让助手"变聪明"
4.1 配置文件关键字段解析
OpenClaw 的配置核心是"模型提供方"(provider)和"模型"(model)两层。provider 定义了这个模型从哪里来、鉴权信息是什么,model 定义了你具体用哪个模型。
一个典型的模型配置看起来是这样:
{ "model": { "default": "deepseek-chat", "providers": { "deepseek": { "baseUrl": "https://api.deepseek.com/v1", "apiKey": "sk-你的密钥", "supportedModels": ["deepseek-chat", "deepseek-reasoner"] } } } }这里的关键点是baseUrl。很多 OpenAI 兼容接口的地址必须要带/v1,不少新手漏了这个尾巴,结果请求一直 404。
default字段指定默认使用的模型 ID,这个 ID 必须和supportedModels里的某一个完全一致,否则就会报"找不到模型"。
4.2 高频报错 unknown model 的根因与解决
有个报错在 OpenClaw 用户里非常常见,基本每个新手都会遇到:
agent failed before reply: unknown model: deepseek这句话的意思是:你把默认模型写成了deepseek,但配置里能用的模型列表中根本没有叫deepseek的,只有deepseek-chat或deepseek-reasoner。
解决办法很简单,把配置里的模型 ID 改成真实存在的名字。或者有些版本支持别名(alias),你可以给一个模型起个短名字,方便记忆。但我的建议是直接用官方模型的完整 ID,省得后面混淆。
另外我提醒一句,网上很多教程会让你在配置里写model: "deepseek",那是人家在某个特定版本里的写法,不代表你也能用。遇到 unknown model,直接去看你 API 服务商文档里的模型列表,把准确的模型 ID 抄进去。
4.3 接入本地模型:Ollama 与 NVIDIA NIM
本地模型最大的优势是隐私可控,所有对话数据不出你这台机器。对于不想把聊天记录送到云端的人,这是刚需。
先说 Ollama。安装 Ollama 之后,先拉模型:
ollama pull qwen2.5:7b然后启动 Ollama 服务:
ollama serve这个时候 Ollama 会在本机 11434 端口暴露一个 OpenAI 兼容接口。在 OpenClaw 里这样配置:
{ "model": { "default": "qwen2.5:7b", "providers": { "ollama": { "baseUrl": "http://localhost:11434/v1", "apiKey": "ollama", "supportedModels": ["qwen2.5:7b"] } } } }注意apiKey随便填一个值占位就行,Ollama 本地接口不校验 Key。
再说 NVIDIA NIM。如果你有 NVIDIA 显卡,并且想体验更好的本地推理性能,NVIDIA NIM 是另一个好选择。它本质上是用容器把模型服务跑起来,同样暴露一个 OpenAI 兼容 API。安装 NIM 容器后,把它的baseUrl填到 OpenClaw 配置里即可。
我个人的体会是,Ollama 胜在轻量、上手快,适合绝大多数个人用户;NVIDIA NIM 性能更强,但配置复杂度高不少,适合对推理速度有要求的人。
4.4 多模型切换与降级策略
日常使用中,就算配置好了模型,也难免遇到 API 限流、服务波动或者额度用完的情况。我习惯同时配置两家模型,一个做主模型,一个做备用。
比如主模型用 DeepSeek,便宜且速度快;备用模型用通义千问的兼容接口。主模型挂了就手动切到备用。如果你用的是 GitHub Copilot 或者其他编程助手,其实也能从 OpenClaw 接,但那是另一个话题,这里不多说。
在配置里,备用模型和主模型一样定义,切换的时候改一下default字段,重启服务就生效。如果版本支持 fallback 配置,可以直接让它在主模型失败时自动重试备用模型。
5. 渠道接入:把助手接到微信和飞书
5.1 微信接入实操与风险提示
微信是很多人第一个想接的渠道,因为日常使用频率实在太高。但这里我必须先泼一盆冷水:微信个人号官方并不开放机器人接口,所有第三方接入方案都游走在灰色地带,有封号风险。
如果你只是自己测试,建议用小号,别拿主号去试。OpenClaw 的微信接入方式通常是在渠道配置里启用 wechat 相关的配置项,填上你的账号凭证或者 webhook 地址。
以 webhook 方式为例,思路是:微信侧收到消息后转发到 OpenClaw 暴露的接口,OpenClaw 处理完再通过接口把回复发回去。企业微信和公众号的官方接口会更稳定,个人号方案虽然也能跑通,但我见过不少朋友用了一阵子就被限制登录了。
所以我的建议是:如果一定要接微信,优先考虑企业微信或者公众号,这是官方支持的正规路径;个人微信只适合短时间体验。
5.2 飞书机器人接入步骤
如果你用飞书办公,把 OpenClaw 接进飞书会非常爽。飞书开放平台对机器人支持很完善,创建应用、开启机器人能力、配置事件订阅,三步就能搞定。
具体步骤大概是:
- 去飞书开放平台创建一个企业自建应用,拿到 App ID 和 App Secret。
- 在应用能力里开启"机器人"能力。
- 配置事件订阅,把回调 URL 填成 OpenClaw 提供的事件接收地址。
- 在 OpenClaw 渠道配置里填入 App ID、App Secret,启用飞书渠道。
飞书这边有一点要注意:如果你的 OpenClaw 跑在内网机器上,飞书服务器得能访问到你的回调地址。没有公网 IP 的话,你需要用内网穿透工具把本地端口暴露出去,并且最好配一个固定的域名,免得每次重启 IP 都变。
5.3 多渠道并存时的会话管理
我的 OpenClaw 同时接了飞书和 Telegram,刚开始发现一个问题:我在飞书里和它聊了一半的事,跑到 Telegram 里它完全想不起来。
后来我理解了,OpenClaw 默认按渠道和会话维度隔离上下文。这其实是合理的——不同渠道、不同对话场景,记忆理应是分开的,否则你在公司群里问的东西和私聊里问的东西混在一起,会非常尴尬。
所以如果你也想多渠道并用,不用纠结上下文不共享,这恰恰是框架的设计取舍。你只需要记住:每个渠道的对话历史是独立的,想跨渠道延续话题,就把上下文信息明确写在新的对话里。
6. 扩展玩法:用 Skill 让助手学会新技能
6.1 Skill 的工作原理与目录结构
Skill 是 OpenClaw 最打动我的功能,它相当于给助手装上了"外挂工具"。普通的聊天机器人只能动嘴,而带 Skill 的 OpenClaw 能动手。
一个 Skill 通常包含两部分:一个描述文件SKILL.md,和一个或多个可执行脚本。描述文件告诉模型"这个技能什么时候可以用、怎么用",脚本负责真正干活。
当你在对话里提出需求时,模型会判断当前需求匹配哪个 Skill 的描述,然后按描述中规定的参数格式调用脚本,脚本执行完把结果返回给模型,模型再把最终答案组织成自然语言回复你。
Skill 的目录结构大概是这样的:
skills/ weather/ SKILL.md script.py6.2 从零写一个天气查询 Skill
我拿一个天气查询 Skill 举例,这是最容易理解也最实用的入门案例。
SKILL.md的内容大致是:
--- name: weather description: 查询指定城市的实时天气,当用户询问天气时使用 input: - city: string 必填,城市名称,如"北京" --- 使用示例: "北京今天天气怎么样?" -> 执行 weather(city=北京)script.py的逻辑就是调一个公开天气 API,把结果输出到标准输出:
import sys import json import urllib.request city = sys.argv[1] url = f"https://api.example.com/weather?city={city}" with urllib.request.urlopen(url) as resp: data = json.loads(resp.read()) print(f"{city} 当前天气:{data['weather']},温度:{data['temp']}℃")写完这两个文件,重启 OpenClaw,让技能加载生效。然后你在对话里问一句"北京天气怎么样",如果配置正确,助手就会去调这个脚本并给你返回结果。
6.3 实战扩展:写一个"AI 写小说"的 Skill
天气查询只是热身,玩 Skill 最有意思的是可以组合出复杂的创作流程。我给自己写了一个"AI 写小说"的 Skill,专门用来生成固定风格的章节内容。
这个 Skill 的核心思路是:不直接把整本小说丢给模型让它自由发挥,而是把它拆成"设定管理"和"章节生成"两步。在 SKILL.md 里,我定义好输入参数:小说名、大纲、当前章节序号、人物状态。脚本负责拼接一个完整的 prompt,把上下文、风格要求、字数限制全部写清楚,再调用模型 API 生成内容。
代码核心逻辑大概是:
def generate_chapter(title, outline, chapter_no, style): prompt = f""" 你是一位小说作者。请按照以下要求创作第 {chapter_no} 章。 小说标题:{title} 大纲:{outline} 写作风格:{style} 要求:逻辑连贯、人物性格稳定、对话自然、本章不少于 2000 字。 """ response = call_model_api(prompt, max_tokens=4000) save_to_file(f"{title}_第{chapter_no}章.md", response) print(f"第 {chapter_no} 章已生成")这里的关键是 max_tokens 一定要给够,小说章节动辄几千字,token 太短会读到一半就断掉。还可以加一个章节历史摘要,把前面的剧情传给模型,避免它"失忆"。
6.4 Skill 稳定运行的几点经验
写 Skill 踩过几次坑之后,我总结了几条经验,新手可以直接照着做:
第一,SKILL.md 的描述一定要写得足够清晰。你可以把"什么时候用""参数怎么传""返回什么格式"都写出来,模型才有把握正确调用。含糊的描述会导致模型瞎猜、乱传参。
第二,脚本一定要做参数校验。模型调用脚本时给的参数有时是反的,比如把城市名传给了日期字段。多一层校验,宁可让它返回错误信息,也不要让脚本崩溃。
第三,每个 Skill 脚本先手动在终端跑一遍,确认输入输出格式没问题,再交给模型调用。要不然出了问题你根本分不清是模型的问题还是脚本的问题。
7. 常见问题排查与运维心得
7.1 问题速查表
我把自己和身边朋友安装 OpenClaw 过程中最常遇到的几个问题整理成了表格,方便你快速定位:
| 现象 | 可能原因 | 解决办法 |
|---|---|---|
| Control UI did not start | 端口被占用、Node 版本低、缓存异常 | 换端口、升级 Node、清缓存重启 |
| unknown model: xxx | 默认模型 ID 和可用模型列表不一致 | 核对服务商模型列表,改正确 ID |
| agent failed before reply | API Key 无效、baseUrl 错误、网络不通 | 检查 Key、确认 baseUrl 带 /v1、测试网络 |
| 微信收不到消息 | 回调地址不对、账号被风控 | 检查回调配置、用小号测试 |
| 本地模型响应极慢 | 显存不足、模型过大、CPU 推理 | 换更小量化模型、加显存 |
| 中文乱码 | 编码设置不对 | 检查终端编码、环境变量加 LANG=zh_CN.UTF-8 |
7.2 日常维护与数据安全
OpenClaw 跑起来之后,日常维护其实不多,但有三件事我建议养成习惯。
一是定期看日志。Docker 部署就用docker compose logs -f,源码安装就去日志目录翻文件。日志里藏着很多潜在问题,比如某个 API 偶尔超时、某个 Skill 调用失败,早发现早处理。
二是备份配置和数据。配置文件和 skill 目录是心血的结晶,务必备份。会话数据库如果重要也一起备份。我的做法是把整个 openclaw 数据目录同步到私有仓库,换机器时直接拉下来就能恢复。
三是 API Key 安全。千万别把 Key 写死在代码里再推到公开仓库。用环境变量或者.env文件管理,.gitignore里把.env排除掉。
7.3 我从踩坑里总结的几点心得
最后聊点实在的。第一次装 OpenClaw 的时候,我在 Node 版本这里卡了一晚上,装依赖反复报错,后来发现是版本太旧。这个印象太深了,所以现在看到安装教程第一步永远是检查环境版本。
还有一件事,刚装好 OpenClaw 的时候我特别贪心,一上来就配了微信、飞书、Telegram 三个渠道,还写了五六个 Skill,结果乱成一团,出了问题都不知道该查哪里。后来我重新来了一遍:先本地跑通对话,再接一个渠道,再加一个 Skill,每一步稳定了再继续。这个"最小可用"的思路,对折腾任何开源项目都适用。
如果你打算部署 OpenClaw,我的建议是从一个小场景开始,比如先接上 DeepSeek 的 API 跑通对话,再加一个飞书机器人,然后慢慢探索 Skill 的玩法。它值得你花一个周末去折腾,因为一旦跑通,你就拥有了一套完全属于自己、可以无限扩展的 AI 助手基础设施。