最近好几个群里都在讨论 OpenClaw,每次聊到一半总有人问同一个问题:OpenClaw 为什么叫“龙虾”?还有人真以为它是哪个海鲜外卖项目的代号。其实答案并不复杂——OpenClaw 这个名字拆开看就是 Open + Claw,翻译过来是“打开爪子”。项目想做的是把散落在命令行、浏览器、智能设备、API 里的各种工具统一“抓”起来,交给一个 AI 代理来调度,而最能代表“爪子”这个意象的动物,就是举着一对大钳子的龙虾。再加上项目 Logo 和界面里到处都能看到龙虾元素,中文社区干脆就直接叫它“龙虾”,叫着叫着这个外号反而比官方名还顺口。
这篇文章不光解释清楚这个梗的来源,还会把 OpenClaw 从零到一的本地部署步骤完整拆开。我会覆盖 Docker Compose 快速部署、源码手动部署、日常使用、常见问题和安全加固,全程按我自己实操时会检查的点来写。如果你想在本地跑一个自己的 AI 自动化助手,又不想数据出内网,那这篇文章正好适合你。
1. OpenClaw 的核心思路与“龙虾”绰号的由来
1.1 它到底解决了什么问题
现在市面上的对话式 AI 产品很多,但大多数还停留在“聊天”阶段,你问一句它答一句,真让它去干活往往就卡住了。OpenClaw 的定位不太一样,它更像一个个人 AI 代理,任务是拆解你的自然语言指令,然后调用各种工具去执行,最后把结果整理给你。
举个日常生活里的例子。你想让它“查一下服务器上磁盘剩余空间,如果超过 80% 就发一条通知到手机”。传统的做法是你自己登录服务器,敲几条命令,再配置告警脚本;而 OpenClaw 的交互方式是直接说一句话,它会自己决定要执行哪些检查步骤、在什么条件下发通知、以及通知走哪个通道。这里的核心不是“它比你更懂命令”,而是它把决策链路接在自己的钳子里,你只需要告诉它目标,不需要帮它规划每一步。
这个思路解决了两类痛点。第一类是“AI 只会聊不会做”的问题,模型负责理解和规划,OpenClaw 负责真正落地。第二类是“工具太多切换成本高”的问题,文件系统、网页操作、HTTP 接口、智能家居、手机推送,这些原本分散在不同软件里的能力,现在都围绕同一个代理来调度。本地部署的意义也在这里,数据不出内网,响应链路更短,行为规则完全由自己定义,不像云端服务那样有可能会调整策略。
1.2 “龙虾”这个外号是怎么传开的
从字面逻辑看,“OpenClaw”天然就带“爪子”的意思。Claw 在英文里指动物的爪子或者钳子,而一说到钳子,大多数人的第一反应就是龙虾,这几乎是跨文化的直觉。项目界面、文档示例、终端启动页里出现的卡通龙虾图,也进一步强化了这个联想,大家看到那只举着钳子的龙虾就会心一笑,开始用“龙虾”来代指整个项目。
这个外号在中文社区传开还有个很现实的原因:OpenClaw 念起来有些拗口,说“龙虾”只要两个字,而且形象感极强。你在群里说“我的龙虾跑起来了”,大家立刻知道是 OpenClaw;有人把更新版本叫“脱壳”,把插件叫“虾须”,也都是从这个外号自然延伸出来的梗。与其说这是一个刻意设计的品牌名,不如说它是生态自发形成的昵称,和很多开源项目一样,社区里流传的名字有时候比官方定名更有生命力。
1.3 影响范围:适合哪些人使用
OpenClaw 适合三类人群。第一类是个人开发者和技术极客,他们熟悉命令行,愿意折腾自动化流程,希望把重复性工作交给代理去处理。第二类是智能家居用户,特别是家里已经有不少设备、但彼此联动不顺的人,OpenClaw 可以充当语音和规则调度中心。第三类是隐私敏感的用户,他们不想把对话记录、文件内容、设备状态这类数据交给云端,所以坚持在本地或者内网环境里运行。
它不适合完全不看文档的纯小白。安装过程虽然不算难,但至少你得知道什么是环境变量、什么是容器、日志报错怎么看。如果你只是抱着“下一个 App 就能用”的心态,建议还是先了解一点基础概念再来,否则很容易在配置阶段就卡住。掌握基本命令之后,整个部署流程其实是相当顺畅的。
2. 本地部署前的准备工作
2.1 硬件门槛:内存是关键,存储别太小
OpenClaw 本身不是一个特别吃资源的程序,真正吃资源的是它要接的底层模型和可能加载的语音能力。我的建议是最低 8GB 内存起步,如果能到 16GB 会舒服很多。CPU 方面四核就够了,因为大部分推理工作不在 OpenClaw 内部完成,除非你要在部署机器上同时跑本地模型。
磁盘空间至少要留 10GB,这还不算日志增长和数据备份。如果你打算让 OpenClaw 长期跑,并且准备安装不少技能插件,建议直接预留 20GB 以上,数据目录独立放一块,避免和系统盘混在一起。ARM 架构的单板电脑也能运行,但内存最好也别低于 8GB;微型设备跑起来没问题,只是首次启动和技能安装时会比较慢。
2.2 系统环境:Linux、macOS、Windows 都能跑
我自己主要在 Linux 上跑,Ubuntu 22.04 和 Debian 12 都属于最省心的选择。macOS 也可以,不过要注意数据目录的权限问题,特别是从网上下载的二进制文件如果被系统拦截,需要在“安全性与隐私”里放行。Windows 用户推荐使用 Linux 子系统,因为很多部署命令在原生 Windows 终端里会碰到路径和换行符的坑,放到 Linux 子系统中会标准很多。
部署之前可以先确认自己的系统版本:
cat /etc/os-release uname -m如果是 Ubuntu 或者 Debian,后续用apt安装依赖就行。如果是其他发行版,把包管理器换成自己对应的命令即可。另外提醒一下,OpenClaw 本身不绑定某个特定 Linux 发行版,关键是 Docker 环境要能正常跑,其他都是次要的。
2.3 软件依赖与模型服务准备
需要提前装好四样东西:Git、curl、Docker 和 Docker Compose 插件。Docker 是最常用的一步到位方案,我用 Docker 部署过很多开源项目,最深的感受是它能把大量依赖隔离在容器里,卸载和升级都干净。如果你准备源码手动部署,才需要额外装 Go 和 Node.js 工具链。
模型服务是另一个必须提前想好的点。OpenClaw 通过统一的接口对接模型服务,你可以接远程 API,也可以接本地模型推理服务。远程 API 的优势是反应快、效果好,但数据要出内网;本地模型的优势是私密、免费,但需要比较强的硬件。第一次部署我建议先用远程 API 跑通流程,之后再切换到本地模型,因为这样能先把部署链路和权限设置调顺,模型推理的变量留到后面再处理。
在配置环境变量之前,建议先把你的 API Key 放进一个安全的地方。这个 Key 值一定要保管好,凡是会写入.env文件的敏感信息都不要走聊天工具转发,也不应该被提交到代码仓库。还有一点,要确认你的模型服务使用的是 OpenAI 兼容接口,因为 OpenClaw 默认按这种协议请求,如果你的服务不是兼容格式,就需要额外写适配层,前期没必要给自己找这个麻烦。
3. Docker Compose 快速部署
3.1 获取安装文件与目录规划
快速部署 OpenClaw 有两种情况:一种是官方提供了完整 Docker Compose 文件,你直接拿过来用;另一种是只有基础镜像,需要自己写 Compose 配置。无论哪种,我都建议你先建一个干净的工作目录,把数据、日志和技能目录从安装目录里分离开。
推荐的结构是这样:
mkdir -p ~/openclaw/data mkdir -p ~/openclaw/skills cd ~/openclawdata目录用来放配置、数据库文件和日志,skills目录放技能插件。这样做的原因是以后升级镜像时只需要替换程序本身,数据和技能可以原样保留。很多人在部署完成之后遇到“一升级配置全没了”的问题,根源就是安装目录、数据目录、技能目录混在一起。提前分清楚可以少踩很多坑。
如果你的项目版本没有提供现成的 Compose 文件,可以按下面的模板自己写一份,注意把<版本号>替换成官方文档里最新的实际版本:
services: openclaw: image: openclaw/openclaw:<版本号> container_name: openclaw ports: - "8080:8080" env_file: - .env volumes: - ./data:/data - ./skills:/skills restart: unless-stopped extra_hosts: - "host.docker.internal:host-gateway"这个模板里最容易被忽略的是extra_hosts那一行。它解决的问题是让容器内部能够访问宿主机上的服务,如果你后续要接本地模型或者宿主上的其他应用,没这行配置会连接不上。
3.2 配置 .env 里的关键参数
OpenClaw 在部署时主要通过.env文件读取配置。这是最容易出状况的一步,经常会有人把参数拼错或者漏写,所以我会一条一条拆开说明。
最基础的配置项大概长这样:
OPENCLAW_MODE=prod OPENCLAW_PORT=8080 OPENCLAW_LLM_API_KEY=你的模型服务Key OPENCLAW_LLM_BASE_URL=你的模型服务地址 OPENCLAW_DATA_DIR=/dataOPENCLAW_MODE表示运行模式,本地长期使用就填prod,不要用开发模式跑生产,有些调试接口默认开着会有风险。OPENCLAW_PORT是 Web 管理界面的端口,如果 8080 被占用就改成别的,但记得 Compose 文件里的端口映射也要同步改。OPENCLAW_LLM_API_KEY和OPENCLAW_LLM_BASE_URL是模型服务的连接信息,Base URL 的格式一般需要包含版本前缀,比如常见的https://你的服务地址/v1。如果你用的是本地模型服务,可以把地址写成http://host.docker.internal:11434/v1这种形式,这样容器就能通过宿主机回环地址访问到本地推理服务。
不要急着把 Key 写到命令行参数里,而是统一放到.env中,因为 Compose 会自动读取这个文件,同时它也不会因为进程重启而丢失。给.env设置文件权限,让其他用户不可读:
chmod 600 .env3.3 启动服务与首次初始化
配置文件准备好之后,回到~/openclaw目录,先拉取镜像再启动服务:
docker compose pull docker compose up -d第一次启动需要一些时间,容器会下载依赖并初始化数据库。启动完成后查看容器状态:
docker compose ps docker compose logs -f看到日志里出现类似“服务已启动,监听 8080 端口”的信息后,打开浏览器访问http://localhost:8080,页面上会让你创建管理员账号。这一步我建议把密码设置得复杂一些,因为 OpenClaw 管理界面能控制整个代理的权限配置,弱密码等于给所有技能开后门。
创建完账号之后先不要急着搭技能,先到设置页面把模型连接配置填好,发一条测试消息确认能收到回复。很多人的经验是“界面能打开,但调度一说话就报错”,这类问题大概率出在模型接入上,所以先跑通最小链路再说其他功能。模型测试通过之后,再逐步安装技能和绑定设备,每加一个功能就验证一次,这样问题会好定位得多。
4. 源码方式手动部署
4.1 准备依赖工具链
如果你不需要 Docker,或者想在特定环境里调试代码,那么源码手动部署是另一个选择。相比容器方式,源码部署更灵活,但需要自己处理更多细节。第一步是准备工具链,以 Linux 为例:
sudo apt update sudo apt install -y git curl build-essentialOpenClaw 的后端主进程通常是用 Go 写的,前端管理界面用 Node.js 构建,所以还需要安装对应的版本。版本号以官方仓库的说明为准,不要随手装最新版,有些工具链版本和代码不兼容会直接编译失败。安装完检查一下版本信息,确认在预期范围内。源码部署时最难受的问题几乎都是环境不一致造成的,提前锁定版本能减少很多不确定性。
4.2 拉取代码并编译后端与前端
工具链准备好之后,把代码克隆到本地。这里把具体仓库地址略过,你从官方文档复制真正可用的地址即可,命令格式上保持一致:
git clone <OpenClaw官方仓库地址> openclaw cd openclaw后端编译通常用项目自带的构建脚本,我见过比较标准的做法是执行make build,也有项目直接提供go build命令。编译产物一般会生成在bin/目录下,可执行文件名类似openclaw。前端部分则进入web目录执行:
cd web npm ci npm run buildnpm ci适合在锁定依赖版本的场景下使用,它严格按照package-lock.json安装,比npm install稳定很多。构建完成后前端静态文件会输出到dist目录,后端启动时会自动从这个目录提供服务。如果你修改了前端代码,需要重新构建一次,后端服务也会自动加载新的静态文件吗?不一定,这里最好的习惯是构建完成后重启后端进程。
4.3 数据库迁移、启动与 systemd 托管
OpenClaw 默认使用轻量的 SQLite 来存配置和运行记录,对大多数个人部署来说足够用。如果你准备接入更复杂的查询或者多实例并发,可以换用独立数据库,但那属于额外运维工作,第一次源码部署不建议折腾。启动前先看项目文档里有没有数据库迁移步骤,如果有,执行对应的迁移命令;如果没有,一般程序会在首次启动时自动建表。
直接用命令行启动:
./bin/openclaw --config ./config.yaml如果一切正常,会看到进程在前台跑起来。前台运行的缺点是一关终端服务就停,要长期跑的话最好交给 systemd 管理。一个典型的服务配置是这样的:
[Unit] Description=OpenClaw Service After=network.target [Service] User=你的用户名 WorkingDirectory=/你的路径/openclaw ExecStart=/你的路径/openclaw/bin/openclaw --config /你的路径/openclaw/config.yaml Restart=always RestartSec=5 [Install] WantedBy=multi-user.target把文件放到/etc/systemd/system/openclaw.service后执行:
sudo systemctl daemon-reload sudo systemctl enable openclaw sudo systemctl start openclaw这样服务崩溃后会自动拉起,开机也会自动启动。源码部署的优势在这里体现得很明显,你可以灵活调整启动参数,也更容易打断点排查问题。
5. 日常使用:模型接入、技能扩展与局域网访问
5.1 创建智能体与模型绑定
部署完成后,OpenClaw 的核心使用单位是“智能体”,你可以创建多个不同角色的智能体分管不同事务。比如一个负责日常问答,一个专门操作家庭设备,还有一个负责服务器巡检。每个智能体都可以选择不同的模型、不同的系统提示词、不同的工具权限。
首次创建智能体时,需要指定模型连接。常见做法是取一个容易识别的名字,比如“default”,然后填上对应的模型服务地址和 Key。填完之后先发送一条简短测试消息,确认响应正常。这一步看似简单,但很多人会在同一个地方卡住,因为填错了模型名称或者地址格式,服务端不报错但返回空结果。我的排查习惯是先把模型名称抄到配置文档里逐字符核对。
权限配置是最容易忽视的点。OpenClaw 的工具调度能力很强,如果所有技能都无限制自动执行,风险非常明显。我建议把“自动审批”范围控制在只读类操作上,比如查日志、读文件、获取状态;凡是会执行写操作或者影响系统的动作,都设为“需要确认”。代价是每次执行写操作会多一步确认,但换来的是更高的安全余量。
5.2 技能插件:安装与二次开发
技能是 OpenClaw 最重要的扩展机制。一个技能本质上是一个描述文件加若干可执行脚本,描述文件告诉 OpenClaw 这个技能能做什么、参数格式是什么、在什么场景下调用。
安装技能一般有两种方式:一种是在管理界面的技能商店里直接安装;另一种是把技能手动放到skills目录,然后执行重新加载。手动安装的目录结构通常是这样:
skills/ └── weather/ ├── manifest.json └── run.jsmanifest.json里声明技能名称、版本、描述、执行命令、参数 schema,run.js是实际执行逻辑。写技能没有太多魔法,本质就是写一个能接收参数的命令行脚本,然后告诉 OpenClaw 如何调用它。如果你想自己开发技能,先用一个最简单的例子跑通,比如“echo 参数并返回”,确认能被智能体正确调用之后,再逐步增加真实业务逻辑。
技能安全问题需要单独强调。来源不明的技能里可以写任何命令,权限是跟 OpenClaw 进程绑定的,这意味着它删除文件、读写网络都拦不住。不要手动安装你没看过的第三方技能,至少把脚本内容读完再决定用不用。技能越多,代理不受控的风险面就越大,宁可少装几个必要技能,也不要图省事全装上。
5.3 局域网内使用与语音控制
如果只在部署机本机使用,那保持默认监听127.0.0.1就够了。要让手机或者局域网内其他电脑访问,需要把监听地址改成0.0.0.0,具体参数一般写在配置文件里。改完之后,其他设备就可以通过http://部署机IP:8080访问管理界面。
这一步容易踩的网络坑有两个。一是防火墙放行端口,有些系统默认会拦截外部访问;二是手机和部署机必须在同一个子网,如果做了网络隔离就访问不到。用命令行快速验证:
curl http://部署机IP:8080/health如果部署机本机能通、外部设备不通,优先检查防火墙和监听地址。语音控制是更有沉浸感的使用方式,OpenClaw 可以配置唤醒词和语音回复,但语音链路依赖麦克风、音频驱动和 TTS 引擎,容器环境里需要把音频设备挂载进去,不然程序能跑但没声音。调试阶段建议先在 Web 界面测试一小段播报,确认音频输出正常,再去折腾唤醒词。没有公网 IP 的情况下,不要直接把端口映射出去,局域网访问已经能满足绝大多数个人需求,外网访问应通过网关或跳板机实现。
6. 常见问题与排查实录
6.1 容器起不来或不断重启
容器一直重启是最常见的问题,通常不是程序本身坏了,而是配置给得不完整。第一步永远是看日志:
docker compose logs --tail=50 openclaw我见过的高频原因无非三件事。第一,端口被占用,日志里会明确写“bind: address already in use”,这时候换一个端口即可。第二,.env里少配置了必要变量,程序启动时没有拿到模型地址或者数据目录,直接初始化失败。第三,数据目录权限不对,容器内的进程没有写权限,日志里会出现 permission denied。第三个问题在 Linux 上很典型,解决方法是把宿主机数据目录的属主改成当前用户,或者调整 Compose 文件里的用户映射。
排查时不要频繁重启容器,每次重启会刷掉一部分日志,开一个持续跟踪日志的终端窗口,边看边改会高效很多。
6.2 模型请求超时或返回空内容
模型接入之后,最常见的异常表现是超时、空响应、乱码。超时通常是网络不通或者模型推理过慢,远程 API 要考虑网关超时设置,本地模型则要检查显存是否足够、推理进程是否被系统杀掉。空响应很大概率是模型名称填错了,服务端返回了一个模型不存在的错误,但 OpenClaw 没有把这个错误透传出来。
乱码问题要看两端编码是否一致。建议在配置里明确指定返回内容的编码方式,同时保持模型输出的格式稳定。还有一个容易被忽略的点是 Base URL 末尾是否带/v1,OpenClaw 发起请求时会拼接后面的路径,如果地址不对,请求直接 404。遇到这种情况,先用 curl 手动测一下模型服务接口,确认服务本身能通,再回头查 OpenClaw 的配置。
6.3 语音功能没有声音
语音问题既可能是采集端的问题,也可能是播放端的问题。先判断是哪种,在管理界面触发一次文本转语音播放,如果没声音,问题出在播放链路上;如果播放正常但唤醒词不响应,问题出在麦克风采集上。容器部署时,音频设备必须显式挂载,否则容器内根本看不到声卡。如果用的是本地源码部署,则要确认运行 OpenClaw 的用户有访问音频设备的权限。
另一个常见问题是没有安装语音模型或者 TTS 引擎,OpenClaw 本身不内置语音能力,它只是对接外部服务。检查日志里有没有关于 TTS 引擎初始化失败的记录,没有就补装对应组件。调语音功能要有耐心,音频链路涉及设备、驱动、权限很多层,解决一个问题之后另一个问题可能才暴露出来。
6.4 局域网访问不了 Web 界面
部署机本机能访问,外部设备访问不了,最常见的原因就是防火墙和监听地址。先看配置文件里监听的是127.0.0.1还是0.0.0.0,如果是前者,外部当然进不来。改成0.0.0.0之后再看防火墙,Linux 下需要放行对应端口:
sudo ufw allow 8080/tcp如果你使用的是 Windows 上的 Linux 子系统,情况会更特殊一些。子系统里的服务对外部设备并不总是直接可见,需要在 Windows 侧设置端口转发,并让子系统的 IP 保持稳定。检查端口是否在监听:
ss -tlnp | grep 8080如果端口只监听在127.0.0.1,说明配置没生效,需要重启服务。这个问题本身不难,但因为它跨了配置文件、服务进程、防火墙三个环节,经常会让人排查半天。
7. 资源限制、安全加固与备份
7.1 限制资源占用
OpenClaw 长期运行会持续占用内存和 CPU,特别是在技能执行比较频繁的时候。如果不想让它影响宿主机上的其他服务,可以在 Compose 文件里加上资源限制:
deploy: resources: limits: memory: 2g cpus: "2.0"资源限制本质上是在给程序划定运行边界,能防止某个技能误操作瞬间吃满所有内存。配置完后重启容器生效。确定合理值的方式很简单,先不限制观察几天,看日志和系统监控工具里的峰值占用,然后在这个峰值上留出 30% 余量。
7.2 保护 API Key 与数据目录
密钥和敏感配置一定要放进.env,并且不要上传到任何代码仓库。如果你用了系统初始化工具,同样不要把它生成的文件标记为可公开访问。识别一个项目里哪些文件是敏感文件有个比较实用的办法:看它是否可能在部署文档里被要求提供;凡是部署文档说“填写你的密钥”的位置,对应的文件都不能公开。
局域网内访问不等于绝对安全,同一局域网里的其他设备仍然有可能扫描到服务。管理后台要开启强密码,API Key 不要写死在业务代码里,定期轮换密钥。如果后续确实要公网访问,建议用带身份验证的网关,而不是直接暴露端口。
7.3 数据备份与升级
本地运行最怕的就是数据丢失。OpenClaw 的配置、日志、技能和对话记录都放在数据目录里,备份时直接整体复制data和skills目录即可。为了备份不影响运行,建议先停容器再打包,或者至少确保数据目录处于一致状态:
docker compose stop tar -czf openclaw-backup-$(date +%Y%m%d).tar.gz data skills docker compose start升级版本前一定要做一次全量备份。升级流程一般是拉新镜像、备份、启动新容器、数据库自动迁移。别跳过迁移步骤检查,否则新版本启动后可能会出现字段对不上的问题。真的遇到升级失败,最稳妥的办法是回滚到旧版本并用备份恢复数据。
代码编译版的手动升级稍微麻烦一些,需要重新拉取代码、编译后端、构建前端再重启服务。我的习惯是给当前运行的版本打一个标签,比如备份bin/openclaw到别的目录,再替换新二进制,万一新版本有问题能立刻切回旧版本。任何自动化工具,稳定性永远建立在可回退的前提下。
从我实际使用下来的感受看,OpenClaw 最容易翻车的地方不在部署本身,而在模型接入和权限配置。很多人在 Docker 启动那一步很顺利,但在设置模型和技能时过于着急,结果后面排查了很长时间。如果你想快点跑起来,第一周建议老老实实用 Docker Compose,只用最简单的聊天调度,先摸清楚它的配置和日志规律,再逐步加入技能和语音功能。开源项目玩得深入之后,真正拉开体验差距的往往不是功能多不多,而是你对它运行机制的理解程度。名字是不是叫龙虾,其实没那么重要,重要的是它能不能成为你手里那只真正能干活的钳子。