2核16GB零成本部署OpenClaw:AI代理全链路自托管实战指南

发布时间:2026/10/5 13:51:13
2核16GB零成本部署OpenClaw:AI代理全链路自托管实战指南 1. 为什么2核16GB就能把OpenClaw跑起来1.1 OpenClaw 到底是个什么东西最近“OpenClaw”这个名字在AI代理圈子里出现频率很高很多朋友都是从 Clawdbot 那边顺着搜过来的。简单说OpenClaw 是一个开源的个人 AI 代理运行时它本身不产模型而是当“调度大脑”负责上下文管理、记忆持久化、工具调用、技能编排以及和本地或远程大模型通信。它跑起来之后你等于有了一台 24 小时在线的 AI 助手服务可以通过网页控制台、命令行、甚至聊天工具跟它对话让它帮你查资料、写代码、跑脚本、操作浏览器。我之前第一次听到“harness”这个词时也愣了一下翻译过来是“马具”。这个比喻其实特别到位马具本身没有智能但你把缰绳套好后就能控制住马。OpenClaw 这个常驻进程就是套在大模型外面的马具你只要把模型接口接好它就能让模型完成复杂的任务循环。相比直接调 APIOpenClaw 多出来的价值是“有状态”每次对话它不是一问一答而是会记住前因后果能主动调用工具能按你设定的技能去做事。这个差别用过的人都会懂。很多人会纠结2核CPU、16GB内存跑得动吗我的结论是跑得动而且是这类项目的甜点配置。因为 OpenClaw 的主要开销不在计算而在内存。只要你不跑那些需要 AVX-512 或大显存的几十B模型7B 量化模型在这个配置上是能流畅转的。本文后面的完整流程就是围绕这套配置展开的适合手里有一台老电脑、一台低配云主机、或者只是想在 Windows 机器上先试水的朋友。1.2 16GB内存才是决定成败的关键指标先聊一个很多人误解的点跑 AI 代理CPU 核心数真没那么敏感。为什么因为 7B 级别的量化模型在 CPU 上推理时瓶颈几乎都在内存带宽和内存容量上。2核4线程和 4核8线程的差别主要体现在并发和首字延迟上不会出现“完全跑不动”的情况。真正让你翻车的是内存不够。用一个超简单的类比模型是“菜谱”内存是“锅”。菜谱再大锅够大就能慢慢抄锅太小菜谱再好也直接溢出来。以常用的 Qwen2.5 7B 模型为例量化到 Q4 级别后模型权重大约占 5GB 左右。OpenClaw 自身的 Node.js 服务、网页控制端、Python 工具链、运行时依赖再吃掉 2GB 到 3GB。上下文窗口和记忆索引又得留出 1GB 到 2GB。这么一算16GB 内存装下整条链路刚好有盈余甚至能再开一个 Docker 容器。但如果你只有 8GB 内存就要开始精打细算模型可能用 3B 或 1.5B能力下降一截还得关掉 Chrome、关掉桌面环境。所以 16GB 是一个很舒服的起点既能跑 7B 模型又不用太伺候它。这也是我把标题里“2核16GB配置”当做一个核心卖点的原因它不是最低配而是性价比最稳的配置。1.3 “0元”部署并不是白嫖付费服务而是全链路自托管标题里的“0元”我得多说两句免得有人误以为是要去搞什么破解或者薅羊毛。真正的 0 元指的是整条链路不用花一分钱模型用开源权重运行时用开源框架部署在你自己的电脑或已有的服务器上。不买 GPU、不开云 API 账单、不付费订阅就靠开源生态把事办了。这套路线的投入主要是时间。你不需要买昂贵的显卡也不需要租按小时计费的 GPU 云实例。只要有一台能长时间开机的机器哪怕是 5 年前的笔记本装上 Linux 或者 WSL2就能把这个系统跑起来。我身边的很多朋友就是这么玩的一台吃灰的旧笔记本重新装了系统扔在角落里就变成家里或者工作室里的“AI 值班员”。省下来的钱足够喝好几箱奶茶了。当然也有例外如果你所在的内网环境已经有一台 GPU 服务器在跑 vLLM那 OpenClaw 可以直接通过 OpenAI 兼容接口连上去本地这台 2核16GB 机器只做代理编排那更是轻松。接下来这几章我把从环境准备到排错救命的流程完整走一遍。2. 部署前的选择题三条路线怎么掂量2.1 路线ALinux 物理机或云主机直跑如果机器上本身就是 Linux比如 Ubuntu 22.04、Debian 12那我强烈建议直跑。直跑的逻辑很简单少一层虚拟化少一层网络地址转换少一堆证书问题进程管理用 systemd 一步到位。你只需要装好 Node.js 20、Git、curl然后把 OpenClaw 的源码克隆下来按官方文档跑安装脚本。整个过程基本不会遇到“玄学问题”。如果用的是一台国内云主机记得把源换成镜像源然后开始逐步安装。这条路的缺点是Windows 用户会觉得门槛偏高毕竟不是所有人都熟悉 Linux 命令行那一套。2.2 路线BWindows WSL2最常用也最容易出问题的组合我自己平时就是在 Windows 上做日常办公所以我特别能理解为什么大多数人会选 Windows WSL2。Windows 的优势是生态熟悉文件管理、截图、浏览器都顺手WSL2 提供了一个真正的 Linux 内核环境OpenClaw 跑在 WSL2 里面相当于在 Windows 里寄生了一台 Linux 虚拟机两者文件可以互访网络通过 localhost 转发。但这个方案的隐藏代价就是网络与证书问题。许多人遇到“无法安全验证”这个报错基本都出在这一层。因为 WSL2 用的是 NAT 网络虚拟机的 IP 地址每次重启都可能变Windows 侧的防火墙、杀毒软件还会悄悄拦截端口。而且它启动只是 WSL 子系统不跑 systemd你得额外做开机自启设置。即便如此我还是觉得如果 Windows 是你唯一熟悉的环境别犹豫就用 WSL2。先别贪多把第一步跑通再说。2.3 路线CDocker 容器化最干净但网络要留神如果你机器上已经装了 Docker或者将来想把 OpenClaw 迁移到别的服务器上直接用 docker-compose 是很好的选择。Docker 的好处是环境隔离所有依赖打包进镜像不会污染宿主机升级时直接拉新镜像、重建容器回滚也方便。坏处也有Docker 网络要多一层映射端口映射、卷挂载、容器重启策略都得配好。如果是在 Windows Docker Desktop 上跑数据卷在文件系统和 WSL2 之间来回转性能有损耗。所以我建议没问题的时候挺好一旦出了问题排查链路会比你直跑多绕两个弯。一张表看清楚路线适合人群日常维护上手难度排错成本Linux 直跑有 Linux 基础、长期运行的服务器最低systemd 托管中低Windows WSL2只有 Windows、想快速体验中需额外配置自启低中高Docker 容器已容器化、想多机迁移中镜像升级即可低中没有绝对的最好只有最适合你当前条件的方案。接下来的安装流程我以 Windows WSL2 为主线来写因为这条路径踩坑最多、涉及面最广各位不管选什么路线读完都能少绕很多弯路。3. 从零到跑通的安装流程Windows WSL2 实测版3.1 先把 WSL2 和系统依赖装稳在 Windows 上装 WSL2第一步用管理员身份打开 PowerShell执行wsl --install -d Ubuntu-22.04装完后重启系统进入 Ubuntu第一件事就是换源和更新sudo apt update sudo apt upgrade -y sudo apt install -y git curl build-essential ca-certificates这里要特别提醒很多人不喜欢重启但 WSL2 的首次安装和内核更新必须重启。见过太多人跳过重启结果后面 vscode 连接不上、端口不通其实都是内核没加载。别省这一步。接着配置 WSL2 的内存和处理器限制。在 Windows 用户目录下新建一个.wslconfig文件写入[wsl2] memory10GB processors2 swap6GB localhostForwardingtrue这段配置的意思是给 WSL2 分配最多 10GB 内存CPU 用 2 核额外留 6GB 交换空间启用 localhost 转发。为什么不是直接给 16GB因为 Windows 自身和宿主机的其它软件也需要内存全给虚拟机Windows 就卡成幻灯片了。10GB 足够跑 7B 模型 OpenClaw 服务还能留一点缓冲。改完配置后在 PowerShell 里执行wsl --shutdown再重启配置才生效。这步不能偷懒改完不重启等于没改。3.2 安装 Node.js 20 和 OpenClaw 本体Node.js 这块我不推荐直接用 apt 里的老版本因为 OpenClaw 对 Node 版本有底线要求。这里用 NodeSource 的方式装稳定版curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt-get install -y nodejs node -v看到 v20 打头的输出就对了。接下来装 OpenClaw。目前官方推荐的安装方式是用 npm 全局安装再初始化一个数据目录。不同版本命名可能略有差别以--help输出为准npm config set registry https://registry.npmmirror.com sudo npm install -g openclaw openclaw --version如果环境里网络不畅把 npm 镜像设置成国内镜像能省很多事。但这只是拉包加速不是绕开什么限制放心用。然后初始化一个工作目录mkdir -p ~/openclaw-home cd ~/openclaw-home openclaw init --name myclaw openclaw serve --host 0.0.0.0 --port 8288第一次启动会生成默认配置文件和目录结构看到“listening on 0.0.0.0:8288”之类的输出就说明服务已经起来了。这里有个小经验首次启动时日志里如果有 WARN 提示缺模型或缺 API Key别慌这是让你去配置大模型接口。下一章专门讲模型接入这里先保持服务运行。3.3 端口访问与 Windows 防火墙那些坑服务在 WSL2 里跑起来了但你会发现 Windows 浏览器打开http://localhost:8288时有时候能通有时候忽然不通。这就是 WSL2 的 NAT 网络在捣乱。首先确认当前 WSL2 的 IPhostname -I假设输出172.20.10.5那么 Windows 侧要访问这个服务需要两条命令做端口转发。在管理员 PowerShell 里执行netsh interface portproxy add v4tov4 listenaddress0.0.0.0 listenport8288 connectaddress172.20.10.5 connectport8288 netsh advfirewall firewall add rule nameOpenClawPort dirin actionallow protocolTCP localport8288第一条命令把 Windows 的 8288 端口转发到 WSL2 的 8288第二条命令放行防火墙入站规则。注意WSL2 的 IP 重启后会变如果你需要长期稳定访问要么设置静态 IP要么就依赖localhostForwardingtrue走 localhost 访问局域网内其它设备访问才需要做端口转发。很多教程到这里就结束了但真实情况是跑得起来和服务是否稳定访问中间还隔着好几个“安全问题”。接下来我们把最常见的“无法安全验证”这个报错单独拉出来完整过一遍排查链路。4. “无法安全验证”这个报错我是怎么一层层拆掉的4.1 报错的三种真凶“无法安全验证”这句话在浏览器里出现很多人的第一反应是“之前不是还能开吗”。我排过一晚上这种问题最后总结下来无非三种情况第一OpenClaw 的 Web 控制台用了本地自签名证书浏览器不认。第二WSL2 内部时间漂移导致证书链的起始时间和当前系统时间对不上。第三你访问的地址和证书上签发的域名或 IP 不一致也就是 SANSubject Alternative Name不匹配。这三种原因的报错界面几乎长得一模一样但解决方法完全不一样。要是你盲目去点“继续访问”或者乱加信任后面只会越来越乱真实环境里还可能导致连接被中间设备拦截。下面我按排查顺序一个个拆。4.2 先排除时间漂移这一步免费又高效WSL2 有一个老毛病长时间睡眠或休眠后虚拟机的系统时间会慢慢漂移。证书验证、TLS 握手、甚至 Git clone 都依赖精确时间。你如果发现“报错只出现在早上第一次开机”那八成就是时间问题。排查命令很简单date -R对照一下当前真实时间如果差了超过 5 分钟那就直接做时间同步sudo apt install -y ntpdate sudo ntpdate -u ntp.aliyun.com sudo hwclock -w同步完成后再刷新浏览器很多时候报错直接消失。这个修复思路最免费、最安全也是我建议任何证书报错都要先做的一步。因为时间错了后面把证书导到任何信任区都没用。4.3 自签名证书要怎么“安全地”信任如果时间正常问题多半出在证书上。OpenClaw 默认为了方便本地访问会生成一套自签名证书。Chrome、Edge 对这类证书的态度非常保守直接把它判为不安全。正确的做法不是绕过检查而是把这个自签名证书加到系统信任区。以 Ubuntu 侧为例sudo mkdir -p /usr/local/share/ca-certificates/openclaw sudo cp ~/.openclaw/certs/rootCA.crt /usr/local/share/ca-certificates/openclaw/ sudo update-ca-certificates如果你的 OpenClaw 是跑在 WSL2 里而浏览器是 Windows 侧你需要把证书文件导出来然后用 Windows 的“证书管理”导入到“受信任的根证书颁发机构”。导入后重启浏览器再次访问就不会看到“无法安全验证”了。这个操作是标准的证书信任流程不是绕过校验整个过程安全合规。4.4 如果局域网里其它设备访问问题会更复杂本地浏览器通过 localhost 访问没问题但换成局域网 IP比如http://192.168.1.50:8080大概率再次报“无法安全验证”。原因往往是证书里没有签发给192.168.1.50这个 IP。解决方法有两个方向要么访问时用机器的 hostname而不是 IP要么在 OpenClaw 的证书配置里重新生成带 IP SanSubject Alternative Name的证书。重新生成证书的命令通常官方配置里会有certificate-san之类的参数如果没有可以先用 hostname 访问避坑。记住一个是“地址”维度的不匹配一个是“信任库”维度的不匹配别混一起。这一整套排查下来你会发现“无法安全验证”并没有那么玄乎。先把时间对齐再检查主机名和证书签名域最后决定要不要导入信任库90% 的疑难杂症都能在这个流程里结束。而且这套排查思路不限于 OpenClaw任何自托管 Web 服务都能套用。5. 接入大模型本地 Ollama 与远端 API 的取舍5.1 本地拉一个开源模型和 OpenClaw 做邻居OpenClaw 只是“马具”没有“马”就跑不起来。这里说的“马”就是大模型。在 2核16GB 的配置上我首推本地 Ollama。它是一个开源的大模型运行框架支持 GGUF 量化格式直接用 CPU 就能跑 7B 模型安装命令一条curl -fsSL https://ollama.com/install.sh | sh systemctl status ollama安装完成后拉取一个开源模型。以 Qwen2.5 7B 为例ollama pull qwen2.5:7b这条命令会下载约 4 到 5GB 的模型文件。如果你不想占用那么多磁盘空间可以换 3B 版本ollama pull qwen2.5:3b内存紧张的场景下3B 模型更快响应延迟更低16GB 内存则完全可以直接上 7B。我的建议很直接先拉 7B如果首字响应太慢再降级 3B不要一开始就委屈自己。5.2 配置环境变量别让内存爆掉拉完模型后要让 OpenClaw 知道去哪找模型。在 OpenClaw 的配置目录下编辑.env文件填上如下内容OPENCLAW_MODEL_PROVIDERollama OPENCLAW_MODEL_NAMEqwen2.5:7b OPENCLAW_OLLAMA_BASE_URLhttp://127.0.0.1:11434 OPENCLAW_CONTEXT_LIMIT8192 OPENCLAW_MAX_TOKENS2048这里的逻辑是OpenClaw 通过11434端口和本机 Ollama 通信模型名保持一致上下文窗口限制在 8192 个 token 以内。为什么要限制因为上下文越大内存占用越高。7B 模型在 16GB 内存上如果放开脑洞设置 32K 上下文可能跑几个小时后就把内存吃满。留点余量系统才能稳定运行几天几周。另外Ollama 的并发控制也得设置。在系统服务文件里加两行环境变量限制并行请求数OLLAMA_NUM_PARALLEL1 OLLAMA_MAX_LOADED_MODELS1这两个参数的意思是同时最多处理一个模型的请求内存里最多常驻一个模型。OpenClaw 自己就已经处理了多数并发所以 Ollama 这边不需要那么多并行省下来的内存都是稳定性的本钱。5.3 如果公司内网已经有大模型服务该怎么接很多朋友看到“部署”就以为必须本地拉模型其实不必然。OpenClaw 支持 OpenAI 兼容接口如果你的内网已经有 vLLM、TensorRT-LLM 或者 DeepSeek 之类的 API 服务只要把配置换成远端地址即可OPENCLAW_MODEL_PROVIDERopenai OPENCLAW_MODEL_NAMEdeepseek-chat OPENCLAW_OPENAI_BASE_URLhttp://内网服务IP:8000/v1 OPENCLAW_OPENAI_API_KEY内网服务下发的密钥这是我在企业环境里特别推崇的做法模型请求打到大 GPU 服务器上的推理服务本地的 2核16GB 机器只负责编排和工具调度。这样既不用把模型文件复制到每一台机器也能让算力集中方便统一升级模型版本。换句话说OpenClaw 是前端推理集群是后端中间靠一个兼容接口串联。这里顺带讲一下“技能skill”这个词。OpenClaw 的 skill 是一组可复用的提示词、工具函数和配置规则的结合体。你可以把“查服务器状态”“定时备份日志”写成技能放到~/.openclaw/skills/目录下。部署到内网服务器时技能也会一并分发让代理在需要时自动调用对应工具。因为有技能机制OpenClaw 不只是一个聊天机器人更像一个可以持续扩展的“数字员工”。6. 抄作业区一份开箱即用的配置模板6.1 一个顺手且稳的启动脚本到这里你应该已经把环境和模型都跑通了。长期运行的话每次手动敲命令太累。我在~/openclaw-home下放了这样一个脚本#!/bin/bash export OPENCLAW_HOME$HOME/openclaw-home export OPENCLAW_MODEL_PROVIDERollama export OPENCLAW_MODEL_NAMEqwen2.5:7b export OPENCLAW_OLLAMA_BASE_URLhttp://127.0.0.1:11434 export OPENCLAW_CONTEXT_LIMIT8192 export OPENCLAW_MAX_TOKENS2048 export MEMORY_LIMIT6GB openclaw serve --host 0.0.0.0 --port 8288我给这个脚本起名叫start-openclaw.sh每次改配置都不用翻文档。MEMORY_LIMIT用于限制 OpenClaw 自己最多吃多少内存防止它动态使用无上限。如果你完全不知道调什么参数直接照抄这个模板就能用。6.2 用 systemd 实现开机自启Linux 直跑的机器想让服务断电后自动恢复加一个 systemd 服务最方便。创建/etc/systemd/system/openclaw.service[Unit] DescriptionOpenClaw AI Agent Afternetwork-online.target Wantsnetwork-online.target [Service] User你的用户名 WorkingDirectory/home/你的用户名/openclaw-home ExecStart/usr/bin/openclaw serve --host 0.0.0.0 --port 8288 Restartalways RestartSec5 EnvironmentOPENCLAW_HOME/home/你的用户名/openclaw-home [Install] WantedBymulti-user.target然后执行sudo systemctl daemon-reload sudo systemctl enable --now openclaw sudo systemctl status openclaw三条命令之后服务就托管给 systemd开机自启、崩溃自动拉起都覆盖了。如果你用的是 WSL2那 systemd 不一定启用可以在.bashrc里加一行openclaw serve --host 0.0.0.0 --port 8288 /dev/null 21 或者更专业一点用 Windows 任务计划程序来触发启动。前者简单后者可控性更好。6.3 备份、升级与恢复把“开箱即用”变成常态自托管服务的最大风险不是部署不了而是哪天数据没了只能从头开始。OpenClaw 的记忆、对话索引、通信录配置、密钥信息基本都集中存放在OPENCLAW_HOME目录下。我把备份写成一条常规命令tar czf openclaw-backup-$(date %Y%m%d).tgz -C ~ openclaw-home恢复时把压缩包解回去即可。升级建议按月进行先备份再升级别直接覆盖老数据sudo npm install -g openclawlatest openclaw migrate这里的migrate命令用于数据库结构升级。如果服务以前一直在跑升级后起不来多半是数据结构需要迁移这个时候别急着回滚先跑一遍迁移工具再启动。每次大版本升级前一定先看一眼变更日志避免新版本和旧技能不兼容。7. 一些我踩过的坑和给你兜底的建议写到最后分享几条真心话。这套部署方案我从一台 2核16GB 的旧主机开始折腾中间经历了无数个“咋又挂了”的夜晚现在它已经稳定跑了好几个月。经验最大的感受是跑起来不难难得是稳定。而稳定靠的不是运气是几个习惯。第一别追求大模型。16GB 内存的机器老老实实用 7B 模型体验比硬上 14B 然后频繁卡死好得多。第二随时备份。我见过有人折腾一晚上结果一个误操作把整个数据目录删空的惨案半小时一次的自动备份脚本能救你大命。第三把日志当朋友。服务崩溃时别急着重启先看journalctl -u openclaw -n 100或者自己的日志文件很多时候报错信息已经把答案写在脸上了。我个人现在最顺手的状态是OpenClaw 跑在 WSL2 里本地 Ollama 负责模型推理Windows 浏览器访问控制台所有配置都放一个脚本里管着。需要迁移时把整个openclaw-home目录打包拷到新机器一条启动命令就回来了。这套模式陪我处理了不少日常文本工作目前仍然觉得够用、稳、省心。希望这份完整流程也能让你少加班早睡觉。