1. OpenClaw 是什么:一个能跑 AI 代理的本地运行时
1.1 为什么叫“框架”而不是“应用”
OpenClaw 是一个开源的 AI 代理运行框架,名字挺直白——Open 是开放,Claw 是爪子,组合起来就是“伸出爪子去抓取任务”。它和市面上常见的 AI 聊天工具有一个本质区别:聊天工具的核心交互是“对话框”,你问一句它答一句;而 OpenClaw 的核心交互是“任务目标”,你把想做的事情描述清楚,它自己拆解步骤、调用大模型、读写本地文件、触发外部工具,最终把结果交付给你。
我在第一次上手时也有同样的困惑:这东西到底算什么?后来用了一段时间才明白,它更像是一套“Agent 基础设施”——一个用来承载自主代理(Agent)的本地运行时。你定义的每一个 Agent,本质上是一段可配置的逻辑流程:它绑定什么模型、允许访问哪些工具、通过什么渠道对外收发消息、会话数据存在哪里,这些都由你在 OpenClaw 的配置文件中控制。它不是又一个拿来即用的聊天网页,而是一个你可以随意改动的底座。
从热搜里能看出,很多人是被“部署”“本地运行”“多渠道接入”这些词吸引过来的。事实也确实如此:OpenClaw 装上之后,Agent 跑在自己的机器上,数据不出本地,逻辑透明可控,模型可以随意切换甚至混用。对那些有数据隐私要求、想把 AI 嵌入到日常工作流里的人而言,这种掌控感是云端网页版给不了的。
1.2 适合谁用,能解决哪些实际问题
先别急着复制安装命令,对照一下自己的需求,看是否真的需要装它。我总结了四类典型用户:
- 手里有多个大模型 API(比如千问、各类 GPT 兼容接口),想在一个框架里统一调度和切换;
- 想把 Agent 接到 Microsoft Teams、Obsidian 这类日常工具里,让 AI 自动发消息、整理笔记;
- 需要一个本地定时运行的自动化代理,处理日报汇总、文件归档、网页信息抓取这类重复劳动;
- 对 Agent 的底层行为有控制欲,比如“这个任务必须走哪条 channel”“那个 Agent 必须用哪个模型”。
最近常有人拿“openclaw 和 workbuddy 哪个好”来问。我的看法是:workbuddy 更像开箱即用的助手,偏向把简单任务快速跑通;OpenClaw 则更强调控制和扩展性,适合愿意花时间调教底层的人。两者不是谁取代谁的关系,而是两条路线。如果你追求“装上就能用”,OpenClaw 的前期投入确实比傻瓜式工具大一些;但如果你要的是长期可演进的自有 Agent 体系,这套投入是值得的。
2. 装之前先打地基:依赖环境与版本选择
2.1 必装依赖清单,一个都不能少
OpenClaw 本身是用现代脚本语言写的,但它依赖一堆基础组件。我在给一台服务器和一台 Windows 办公机分别部署时,把依赖坑踩了个遍,这里直接给你一份精简清单:
- 运行时:Node.js 18 或 20 的 LTS 版本,以及随附的 npm;
- 脚本层:Python 3.10 及以上,且能直接在命令行调用;
- 版本管理:Git,Windows 下建议装 Git for Windows;
- 数据库(可选但推荐):MySQL 8.x,用于保存会话和 Agent 状态;
- 编辑器(可选):VSCode,主要是方便编辑 YAML 配置;
- 终端工具:Windows 推荐 Windows Terminal,Linux 直接用系统自带终端即可。
为什么 Node.js 和 Python 都要?OpenClaw 的主进程跑在 Node 上,而它内部大量工具链和插件是通过 Python 脚本调用的。只装其中一个,启动时可能看不出来问题,一旦 Agent 执行到某个需要调用 Python 的环节,就会直接报“找不到解释器”之类的错误。所以我的建议是:两个运行时都装好,省得后期返工。
2.2 环境变量与国内镜像源配置
这一步是新手最容易翻车的地方。特别是 Windows 用户,装完 Python 和 Node.js 后,打开命令行输入python或者npm,系统提示“不是内部或外部命令”——十有八九是环境变量没配置对。
解决办法不是手动去“系统属性”里瞎点,而是采用最稳妥的路径:安装 Python 时勾选“Add Python to PATH”,Node.js 安装包默认就会写入环境变量,Git 安装时选择“Add to PATH”。装完这三样,重启终端,分别执行python --version、node -v、npm -v,能正常输出版本号,环境就通了。
然后是包管理器的镜像源问题。OpenClaw 安装过程会拉取大量 npm 依赖,直接走默认源在小水管网络下很容易超时中断。这里不需要任何特殊手段,只需要把 npm 默认 registry 切换到国内镜像即可:
npm config set registry https://registry.npmmirror.comPython 侧的 pip 也一样:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple这两条命令干的事,是把“软件下载服务器”换成一个离你更近、带宽更稳定的地址。换完之后再装依赖,速度体感差异非常明显。我自己第一次完整装完花了将近四十分钟,切完镜像后十分钟出头就搞定了。
2.3 数据库选型:会话数据到底存哪
OpenClaw 的会话文件默认存在本地目录,单机使用完全没问题。但你如果打算把它部署到服务器上、多个终端同时连,或者跑比较复杂的多 Agent 协作场景,建议一开始就接上 MySQL。
这里不展开数据库安装的每一步,只提醒三个关键点。第一,字符集必须选 utf8mb4,否则存中文会话内容会乱码;第二,要给 OpenClaw 单独建一个账号,不要用 root 直接连;第三,创建一张初始数据库,名字随意,比如openclaw,配置时填上地址、端口、账号、密码即可。
为什么强调“一开始就接”?因为 OpenClaw 的会话管理在 SQLite 和 MySQL 之间切换,不是改一行配置那么简单,它涉及表结构初始化和历史数据迁移。已经跑了一段时间再用到一半去迁库,纯属给自己找事。我在生产环境部署时直接选了 MySQL,省掉了后续迁移的麻烦。
3. 安装实操:Windows 和 Linux 两条路线都走一遍
3.1 Windows 下安装 OpenClaw 的完整步骤
Windows 安装的核心思路是:准备好依赖,拿到源码,安装依赖,启动服务。和装一个普通开发项目没有本质区别,按顺序操作就行。
第一步,创建一个干净的目录,比如D:\openclaw,在目录里打开终端,执行:
git clone <OpenClaw官方仓库地址> .仓库地址以官方文档为准,这里不方便贴具体链接。克隆完成后,目录下会有一份package.json,这就是项目入口。
第二步,安装依赖。两条命令:
npm install pip install -r requirements.txtnpm 那条在切过镜像源之后会快很多。pip 那条是把 Python 侧的依赖一次性装好。装的过程中如果有报错,多半是某个原生模块需要编译,Windows 下最容易缺的是 Visual Studio Build Tools。我的建议是:直接提前装好 VS Build Tools 的“使用 C++ 的桌面开发”工作负载,后面会省掉一堆奇奇怪怪的编译报错。
第三步,初始化配置。项目里通常有一个config.example.yaml或者类似文件,把它复制一份改成config.yaml:
cp config.example.yaml config.yaml第四步,启动服务:
openclaw start或者用 Node 直接拉起主进程。首次启动会检查依赖完整性、初始化会话目录、打印出本地访问地址。看到“started”或“listening”字样就说明跑起来了。
Windows 下最容易忽略的是防火墙弹窗。第一次监听端口时系统会问“是否允许应用通过防火墙”,记得要点“允许”,否则局域网内的其他设备没法访问。
3.2 Ubuntu 服务器部署步骤
服务器部署和 Windows 大同小异,但有几个点更严格。我在 Ubuntu 22.04 LTS 上完整走了一遍,步骤记录如下。
先更新系统索引并安装基础工具:
sudo apt update && sudo apt install -y git curl build-essential python3 python3-pipNode.js 不要用 apt 自带的老版本,建议走 nvm 装:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash source ~/.bashrc nvm install 20 nvm alias default 20然后同样克隆 OpenClaw 仓库、安装依赖。这里有个和 Windows 不同的点:生产环境建议用 systemd 管理进程,否则你一关 SSH,OpenClaw 就跟着停了。写一个 service 文件托管到 systemd,可以实现开机自启、崩溃自动拉起:
[Unit] Description=OpenClaw Agent Server After=network.target [Service] Type=simple User=yourname WorkingDirectory=/opt/openclaw ExecStart=/usr/bin/node server.js Restart=always RestartSec=5 Environment=NODE_ENV=production [Install] WantedBy=multi-user.target装上之后systemctl enable openclaw,机器重启它也会自己起来。
顺带说一句,经常有人问“飞牛安装 openclaw”。飞牛 OS 本身就是基于 Debian 的 Linux 系统,直接按 Ubuntu 这条路走,没有本质区别,注意目录权限和 systemd 配置就行。
3.3 一键部署脚本到底做了什么
如果你只想快速跑通,OpenClaw 社区提供了一键部署脚本,官方支持的安装命令通常长这样:
bash <(curl -sL <官方脚本地址>)我建议不要盲目执行,先搞清楚脚本做了什么。以我查看过的部署脚本逻辑来看,它大致干了这么几件事:
- 检测当前系统的发行版和架构;
- 检查 Node.js、Python、Git 是否已安装,缺失则自动安装;
- 克隆项目代码到固定目录;
- 安装 npm 和 pip 依赖;
- 生成默认配置文件(不覆盖已有配置);
- 创建 systemd service(Linux 下)或注册 Windows 服务;
- 启动服务并打印访问地址。
一键脚本最大的价值是省时间,尤其是重复部署多台机器时。但它有两个问题:一是你无法确认脚本每一步干了什么,存在被植入风险;二是脚本默认配置不一定适合你的网络环境。我的习惯是:第一次手动装一遍,把每个环节都摸透;之后再用一键脚本做批量复制。这样出了问题你也知道去哪排查。
4. 核心配置:从能跑到好用,只差这几步
4.1 配置大模型:以千问为例
OpenClaw 装好只是万里长征第一步,它本身不带任何模型能力,必须接入一个大模型 API 才能真正干活。这里以国内用户很容易拿到的阿里云千问(DashScope)为例,讲一下配置逻辑。
先到阿里云百炼平台申请一个 API Key。然后打开 OpenClaw 的config.yaml,找到模型配置段。整体思路是:指定 provider(服务商)、model(模型名)、api_key(密钥)、base_url(接口地址)。千问的 OpenAI 兼容模式地址是:
https://dashscope.aliyuncs.com/compatible-mode/v1配置文件大致长这样:
model: provider: dashscope name: qwen-plus api_key: sk-你的密钥 base_url: https://dashscope.aliyuncs.com/compatible-mode/v1改完后重启服务,测试一下 Agent 是否能正常回复。如果报 401 或者 403,优先检查是不是密钥复制错了;如果报连接超时,检查服务器能不能访问阿里云的接口地址。
一个实用的建议:不要只配一个模型。OpenClaw 支持多模型配置,你可以把qwen-turbo配成轻量任务的默认模型,把qwen-max这类更强模型留给复杂推理场景。实际跑下来,轻量模型负责日常文本处理、重模型负责复杂逻辑分析,成本和速度都能平衡。
4.2 Agent 的 Channel 选择逻辑
Channel 是理解 OpenClaw 的关键概念。我习惯把它解释成“Agent 对外发声的通道”:Agent 不直接面对用户,而是把消息发到某个渠道,用户在那个渠道里看到并回复它。channel 决定了 Agent 和外部世界交互的边界。
配置文件里通常会有一个 channels 段:
channels: - type: cli enabled: true - type: teams enabled: true - type: obsidian enabled: false - type: web enabled: true每个 Agent 启动时,你可以指定它走哪个 channel。新手最常问“agent 怎么选择 channel”,答案就在启动命令的参数里:
openclaw run --agent your_agent --channel teams或者通过配置文件给某个 Agent 绑定固定 channel。我的建议是:日常调试用 CLI 或 Web 渠道,因为即时反馈最快;稳定运行后再接到 Teams、Obsidian 这些正式渠道里。调试阶段直接上 Teams,每次消息都要走一遍外部服务,排查问题会慢很多。
4.3 接入 Teams 和 Obsidian 的实战配置
接入 Microsoft Teams 是不少公司用户的需求——早晨让 Agent 自动在团队频道里推送日报。实现方式是在 Azure 门户注册一个应用,拿到应用 ID 和客户端密钥,然后在 OpenClaw 的配置里填写这两个值,并指定运行模式。
相关配置大致长这样:
teams: client_id: "你的应用ID" client_secret: "你的客户端密钥" tenant_id: "你的租户ID"之后用 Teams 账号登录对应频道,添加机器人应用,Agent 就能在这个频道里收发消息了。这里要特别提醒:Azure 注册应用和配置机器人的流程,权限项非常多,最容易漏的是“Application permissions”里的 Team.ReadBasic.All 和 ChannelMessage.Send 这两项授权。漏了之后的表现很诡异——机器人看起来在线,但一调用接口就报权限错误。我当时卡了半个小时,最后发现就是少勾了一个权限。
接入 Obsidian 则是另一类场景,适合用 AI 自动整理笔记。Obsidian 社区有一个 Local REST API 插件,装上后开启服务,OpenClaw 就可以通过本地 HTTP 接口往 Vault 里写 Markdown 文件。配置非常简单,就三个值:Vault 路径、端口、API Key。配上之后,你可以让 Agent 定时把工作日报、会议纪要整理成规范笔记放进 Obsidian 库。
这条链路给我的体感是:AI 写笔记这件事,难点从来不是写,而是“写完能不能落到你舒服的位置”。OpenClaw 把写文件这个动作交给了可配置的 channel,这个设计很合我胃口。
5. 常见问题与排查实录:我踩过的坑都在这
5.1 “session file locked (timeout 60000ms)”深度排查
这个报错在 OpenClaw 的群里出现的频率非常高:
agent failed before reply: session file locked (timeout 60000ms)翻译成人话就是:Agent 尝试获取会话文件的锁,等了 60 秒一直没等到,直接放弃了。会话锁机制本身是防止多个进程同时读写同一个会话文件导致数据损坏,属于正常设计。出现这个错误,几乎可以断定是有哪个地方占了锁没有释放。按我的排查顺序,你照做即可:
- 看有没有多个 OpenClaw 进程在跑。Windows 按 Ctrl+Shift+Esc 打开任务管理器看 node 进程;Linux 执行
ps aux | grep openclaw。如果有多个,杀掉多余的,只留一个主进程。 - 清掉残留的锁文件。锁文件一般在会话目录下,以
.lock结尾,Linux 下通常在~/.openclaw/sessions/目录。停掉服务后手动删掉对应的.lock文件,再重启。注意:锁文件是程序退出时自动释放的,正常情况不需要手动删,只有异常退出(断电、强制 kill)才会残留。 - 检查是不是网络磁盘。如果会话目录放在 NFS 或者 SMB 挂载的共享盘上,文件锁往往不会正常释放,这个错误会特别频繁。解决办法是把数据目录改到本地磁盘。
- 修改超时时间作为临时规避手段。在配置里把 timeout 调大,例如
session_timeout: 120000,能缓解但不根治,锁竞争的根本原因还得查。
这个坑我印象太深了。有次在服务器上同时起了两个 OpenClaw 实例做测试,结果两个实例抢占同一个会话文件,报错刷屏。后来我养成了一个习惯:任何场景下,一个数据目录只允许一个 OpenClaw 实例访问。
5.2 Agent 无响应的通用排查清单
“Agent 不回话”是最让人抓狂的,因为报错信息经常没有。这里分享一个按优先级排序的排查清单:
- 模型链路是否通:用 curl 直接测一下配置的 base_url 和密钥,能通才是真通,别在 OpenClaw 里反复试错;
- 频道是否是真启用状态:有时候配置里写
enabled: true,但外面服务(比如 Teams 机器人没注册成功)没就绪,消息根本送不进来; - 日志级别有没有看够:把 OpenClaw 的日志级别调到 debug,大部分“无响应”其实是被某些异常静默吞掉了细节;
- 依赖进程是否存活:内存不够或者被系统 OOM kill,主进程还活着但子进程挂了,也会表现为无响应,
dmesg | tail看一下有没有 OOM 记录; - 端口是否冲突:多个实例监听同一端口,服务会起不来或者行为异常。
说实话,Agent 框架的排查思路和排查传统 Web 服务高度一致——看日志、看进程、看网络、看资源。别把它想得太特殊,按顺序查就是了。
5.3 环境变量配置错误导致启动失败的补救
这个坑在 Windows 上特别典型。装完 Python 和 Node 之后,终端里能跑通python,但 OpenClaw 启动时仍然提示找不到模块或者找不到命令。原因通常是:你所在的终端环境变量刷新时机不对。
Windows 修改环境变量后,已经打开的终端不会自动获取新值,必须新开一个终端窗口才会生效。很多人的操作顺序是:装完 Python → 继续在同一个旧终端里跑 OpenClaw → 报错 → 怀疑安装有问题。解决办法简单得离谱:重新打开终端再执行一遍安装启动命令。
如果是已经新开终端仍然报错,那就需要手动确认环境变量是否写入。
python -c "import sys; print(sys.executable)"这条命令能输出当前 Python 解释器的实际路径。如果输出的路径和你安装的不一致,说明 PATH 里存在多个 Python 版本,比如 Windows 应用商店的占位版和官网正规版冲突。解决方法是:在系统环境变量的 PATH 里,把官网版本的路径调到更靠前的位置。Linux 下遇到同类问题,多是因为没有重新加载 shell 配置:
source ~/.bashrc这个问题虽然低级,但一旦碰上,耽误的时间真不少。我自己就在一台机器上同时存在了三个 Python 版本,排查了快一个小时才搞清楚,最后把多余的版本卸载了个干净。
最后说点实在的
OpenClaw 的安装配置,单看每一步都不难:装依赖、拉代码、改配置、启动。难的是把这些步骤放在你的具体环境里,能一次跑通。我个人的体会是,第一次折腾时留出半天时间是合理的,真别想着“五分钟部署完”。但熬过最初阶段,把模型和 channel 都理顺之后,这套系统带来的自由度非常值得。
最后再分享一个小技巧:配置文件的修改请务必放到 git 里管理。每改动一次,提交一次,写清楚改了啥。Agent 配置这种东西,经常是调了一个模型参数,两天后想退回,发现忘了原来是怎么写的。有 git 历史保护,你的试错成本几乎为零。这个习惯比任何安装技巧都重要,真的。