ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

CentOS 7 安装 OpenClaw AI 智能体框架:从零到实战

2026/10/8 15:06:30 拓冰建站 浏览量
CentOS 7 安装 OpenClaw AI 智能体框架:从零到实战 1. 安装前必读OpenClaw到底是个啥先说说这个项目。OpenClaw在国内社区被叫成“小龙虾”名字挺接地气但干的事一点也不简单——它是一个开源的AI智能体运行框架核心就是帮你把大模型、工具调用、自动化任务、外部接口全部串到一个统一的服务里。你可以把它理解成一个“大模型调度中心”或者一个长着龙虾钳子的全能管家它负责接收指令调用模型思考再通过一组叫“技能”的插件去执行。这篇文章要做的就是把这套东西老老实实装到一台 CentOS 7 上。这篇手册适合谁如果你手头有老旧的 CentOS 7 服务器想在内部网络部署一套自己的 AI 助手或者你是机器人方向的研究者打算让 AI 智能体接上 ROS2 和 Gazebo 仿真环境又或者你只是想绕开各种商业化平台的限制用 Ollama 跑本地模型、不花 API 费用——这篇文章都能给你一条完整、能照抄的路径。标题里那个“完整”不是噱头我会从虚拟机创建、ISO 选择、yum 源修复一直写到 systemd 守护进程和手机端 Companion全程记录我实际踩过的坑。我为什么坚持把这套东西跑在 CentOS 7 上说实话CentOS 7 早就进入 EOL 状态了官方不再更新Python 默认还停留 2.7 版本装个现代 AI 框架就跟在老平板车上装火箭发动机一样别扭。但现实情况是很多公司和机房里还躺着大量 CentOS 7 机器——内网隔离、业务迁移成本高、老板不愿意动。这种情况下与其反复争论“该换系统了”不如把手头的资源用起来。OpenClaw 这种以文本交互为主的智能体框架对系统版本要求并没有那么苛刻CPU 跑小模型也完全可行所以 CentOS 7 并非不能战关键是把环境配好。1.1 名字的由来和核心定位OpenClaw 英文直译是“张开的螯爪”官方 Logo 也是一只龙虾钳子中文社区顺口就叫“小龙虾”。名字虽然可爱项目本身却是个典型的 agent 框架它不像 ChatGPT 那样只有一个网页对话框而是把“模型对话”和“外部动作”绑定在一起。你可以告诉它“帮我查一下服务器磁盘空间”它会自动调用系统命令把结果整理成一段自然语言回复给你你也可以给它接上天气 API、数据库查询、ROS 机器人控制接口让它成为一个能干活的数字员工。这套框架里有一个非常重要的概念就是 Skill技能。技能可以理解为给智能体准备的“工具函数注册表”每个技能是一个文件夹里面包含一份 SKILL.md 描述文件和若干可执行脚本或代码。OpenClaw 在运行时会读取这些技能描述结合当前的大模型判断用户意图应该调用哪个技能。这种设计和现在主流 agent 工具的插件机制很像但 OpenClaw 更强调本地部署和与机器人领域的结合——这也是为什么它的社区里能看到 rosclaw、ROS2 Humble、Gazebo 这类关键词。1.2 为什么我坚持在 CentOS 7 上装如果只看“省事”我肯定会推荐 Ubuntu 22.04 或者 Debian 12包管理舒服Python 版本新跑 AI 框架几乎零折腾。但我这次的目标很明确一台闲置的 CentOS 7.9 Minimal配置是 4 核 CPU、8GB 内存、40GB 磁盘没有独立 GPU。这种机器现在干重活肯定不行但跑一个 7B 参数级别的量化模型做日常问答和工具调用其实绰绰有余。CentOS 7 装 OpenClaw 的难点主要有三个第一默认 Python 2.7 太老OpenClaw 要求 Python 3.8所以得先解决 Python 环境第二CentOS 7 已经停止维护yum 源大面积失效装基础依赖时经常报错第三系统自带的 GCC 版本较低某些 Python 包在编译时会失败。这些问题都不是绝症后面每一节我都会给出对应的解决办法。简单说我的立场是如果你有条件用新系统如果没条件看完这篇再决定也不迟。1.3 整体架构与算力来源在开始动手之前你得先搞清楚 OpenClaw 部署后到底有哪几个部分这样后面配置时才不会晕。整个架构分四层主服务Core跑在 CentOS 7 上的后台进程负责接收请求、调度模型、调用技能。模型源可以是本地 Ollama 服务也可以是任意 OpenAI 兼容的 API 接口。客户端CompanionWindows 桌面端、安卓端的交互界面通过 HTTP 连接主服务。技能层Skills存放在主服务上的可执行脚本目录是智能体“干活的手”。关于算力来源很多人在社区问“OpenClaw 是不是只能用接入 API 的方式使用算力”。答案是不是。它支持通过 Ollama 调用本地模型完全离线运行不花一分钱 API 费用。Ollama 在这套方案里扮演的是“本地推理引擎”的角色OpenClaw 负责智能体逻辑Ollama 负责算词。当然如果你本地没有 GPU 或者想用更强的模型也可以改成 API 模式配置方法后面我会详细写。2. 环境准备先把 CentOS 7 收拾利索老话说磨刀不误砍柴工CentOS 7 安装 OpenClaw 最大的变量不是 OpenClaw 本身而是这台机器的系统环境。我建议你从一台干净的 CentOS 7 开始尽量不要在一堆旧服务上叠着装因为依赖冲突会把你折腾到怀疑人生。下面这部分把虚拟机创建、ISO 下载、yum 源修复、Python 和 Node.js 环境全部串一遍。2.1 虚拟机与 ISO 选型如果你手头没有物理服务器用虚拟机是最快的。我这次用的是 VirtualBox原因是免费且跨平台但 VMware Workstation 也一样只是最后装 VMware Tools 的步骤略有区别。创建虚拟机时有几点可以照抄我的配置操作系统类型Linux → Red Hat (64-bit)对应 CentOS 7。内存8GB 是底线如果只想跑 3B 级别的模型4GB 也能用但 7B 模型加系统本身很容易吃紧。磁盘40GB动态分配。OpenClaw 本体不大真正的空间大户是 Ollama 的模型缓存默认会存在~/.ollama/models一个 7B 量化模型就有 4GB 左右。网络选桥接模式这样 Windows 和安卓端可以直接访问 CentOS 的 IP省去端口转发的麻烦。ISO 我用的是 CentOS 7 x86_64 Minimal 2009.iso这个版本是目前最稳定、也最容易找到的 CentOS 7 最终版。安装系统时只选最小化安装不要装桌面OpenClaw 是纯命令行服务图形界面纯属浪费内存。装完之后建议先给虚拟机装增强功能——VirtualBox 叫 Guest AdditionsVMware 叫 VMware Tools作用主要是优化网络、鼠标和共享文件夹。在 CentOS 7 里安装 VMware Tools 的常见做法是mkdir /mnt/cdrom mount /dev/cdrom /mnt/cdrom cd /mnt/cdrom tar zxf VMwareTools-*.tar.gz -C /tmp cd /tmp/vmware-tools-distrib ./vmware-install.pl -d注意-d参数是全默认安装省去交互。VMware Tools 装完后一般需要重启或者重启vmtoolsd服务否则剪贴板和共享目录可能不生效。2.2 处理 yum 源失效的经典报错CentOS 7 最坑的地方不是 Python 2.7而是安装完系统之后你执行yum install会看到类似这样的报错http://mirrors.aliyun.com/centos/7/os/x86_64/repodata/repomd.xml: [Errno -1]这个错误的本质是CentOS 7 EOL 之后阿里云等镜像站把centos/7目录归档到了centos-vault路径下原来的路径自然就 404 了。我最初以为是临时网络问题反复yum clean all也没用后来才反应过来是源挂了。解决办法是把仓库源切到 CentOS 官方 vault 地址。操作前先备份原文件避免改错后悔莫及cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak sed -i s/mirrorlist/#mirrorlist/g /etc/yum.repos.d/CentOS-Base.repo sed -i s|#baseurlhttp://mirror.centos.org|baseurlhttp://vault.centos.org|g /etc/yum.repos.d/CentOS-Base.repo这段命令的逻辑很简单注释掉 mirrorlist再把 baseurl 强制指向vault.centos.org。改完之后执行yum clean all yum makecache如果一切正常yum 就能用了。这里我要多说一句不要只替换这一个文件最好把CentOS-CR.repo、CentOS-SCLo-scl.repo等文件里的镜像路径也检查一遍否则后续安装某些开发包时还会碰到类似报错。另外epel-release包本身也可能失效最稳妥的方法是把 EPEL 源也切到 vault。2.3 安装 Python 3 和 Node.jsyum 源修好之后先更新系统yum update -y yum install -y git curl wget unzip vim接下来解决 Python 3。CentOS 7 自带的 python 命令指向 2.7但 OpenClaw 要 3.8 以上。系统自带的 SCL 源能装 Python 3.8但配置起来繁琐我推荐直接用 Miniconda理由有两个一是 conda 不依赖系统 GCC 就能装好 Python二是后面创建虚拟环境非常方便不会污染系统 Python。curl -fsSL https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -o miniconda.sh bash miniconda.sh -b -p /opt/miniconda3安装完成后把 conda 加到 PATH 里然后创建 OpenClaw 的专用环境echo export PATH/opt/miniconda3/bin:$PATH ~/.bashrc source ~/.bashrc conda create -n openclaw python3.10 -y conda activate openclawNode.js 并不是 OpenClaw 主服务的硬性依赖但如果你打算编译或开发前端面板最好先装一个 Node 16 或 18。用 NodeSource 的源安装最快curl -fsSL https://rpm.nodesource.com/setup_16.x | bash - yum install -y nodejs node -v这里插一句心得很多人看到curl | bash就觉得不安全我也是谨慎派但 NodeSource 的安装脚本是官方维护的且你可以在执行前先肉眼看一下脚本内容。如果实在不放心手动下载 rpm 包安装也行。接下来就可以进入 OpenClaw 主体安装了。3. 主体安装把 OpenClaw 跑起来环境收拾干净之后安装 OpenClaw 反而是最顺利的一部分。这一节会从获取源码、配置 Ollama、配置 API 模式、初始化技能目录四个角度展开覆盖两种最常见的部署方案——本地算力和纯 API。3.1 获取主程序与虚拟环境OpenClaw 的源码托管在 GitHub 上直接 clone 最新版即可。这里我假设你已经把代码拿到了/opt/openclaw目录cd /opt git clone https://github.com/你的项目地址/openclaw.git cd openclaw conda activate openclaw pip install -U pip setuptools wheel pip install -e .pip install -e .是开发模式安装好处是以后更新代码后不用重新安装直接生效。如果你下载的是打包好的发行版也可以用pip install openclaw或先安装requirements.txt但在我测试的版本里源码方式对 CentOS 7 兼容性最好。安装完成后执行openclaw --version能看到版本号说明主程序已经装好了。如果提示command not found不用慌很大概率是 conda 环境的 bin 目录没有加进 PATH。执行which python先确认当前环境然后在~/.bashrc里补一行export PATH/opt/miniconda3/envs/openclaw/bin:$PATH3.2 配置 Ollama 本地模型既然要本地跑模型Ollama 是绕不开的。Ollama 的安装命令很简洁curl -fsSL https://ollama.com/install.sh | sh systemctl start ollama systemctl enable ollamaOllama 默认监听 11434 端口跑起来之后拉一个模型。考虑到这台机器是 8GB 内存、无 GPU我选择的是qwen2.5:7b的量化版内存占用大概 5GB 左右CPU 推理速度能接受ollama pull qwen2.5:7b拉取模型可能需要一点时间取决于你的网络。模型就位后可以先用命令行快速验证ollama run qwen2.5:7b 你好然后开始配置 OpenClaw。首次运行会生成配置文件一般位置是~/.openclaw/config.yaml。你不需要从零写配置直接修改生成出来的文件就行。核心配置块长这样model: provider: ollama base_url: http://127.0.0.1:11434 model_name: qwen2.5:7b temperature: 0.7这里provider: ollama告诉 OpenClaw 走本地推理引擎base_url是 Ollama 的服务地址。如果 Ollama 和 OpenClaw 在同一台机器用 127.0.0.1 就行如果 Ollama 跑在别的机器上改成对应 IP。3.3 纯 API 模式怎么配再说回前面那个问题OpenClaw 是不是只能用 API当然不是但 API 模式在特定场景下更好用——比如你本地没有显卡但想用更大的模型或者你公司有统一的模型网关。OpenClaw 支持任何 OpenAI 兼容接口配置也很简单。把配置文件里的 model 块改成model: provider: openai base_url: https://你的API端点/v1 api_key: sk-xxxx model_name: gpt-4o-mini注意如果你是接本地 vLLM 或 One API 这类服务只要它暴露的是/v1/chat/completions接口OpenClaw 都能识别。这里有两个容易踩的坑一是base_url末尾要不要带/v1取决于服务商的具体路径很多 OpenAI 兼容服务只要填到根地址OpenClaw 会自动拼上二是api_key千万别写在公开仓库或聊天记录里建议用环境变量方式注入。如果两种模式都要支持OpenClaw 也允许在配置里写多个模型 profile运行时通过指令切换。我个人的建议是本地 Ollama 负责日常轻量任务API 模式负责高质量复杂任务两套并存灵活度最高。3.4 初始化用户目录和 Skill主程序装好后执行初始化命令生成用户工作目录openclaw init这条命令会在你的用户目录下创建~/.openclaw/文件夹里面包含config.yaml、skills/、logs/等子目录。其中skills/就是技能目录也是 OpenClaw 最有特色的部分。为了让你理解 Skill 机制我直接用一个例子说明。假设我想给小龙虾加一个“查询磁盘空间”的技能那就先在技能目录下建一个文件夹mkdir -p ~/.openclaw/skills/disk_usage cd ~/.openclaw/skills/disk_usage然后创建一个SKILL.md内容大致是# Disk Usage Skill 技能名称: disk_usage 功能描述: 查询服务器磁盘分区使用情况。 用法: 当用户询问磁盘空间、磁盘占用、df 命令结果时调用此技能。 执行命令: bash script.sh再创建一个script.sh#!/bin/bash df -h chmod x script.shOpenClaw 会读取SKILL.md里的描述当大模型判断用户意图匹配时就执行这个脚本。这个概念和我之前提过的“AI 工具调用”是一样的但好处是 OpenClaw 的技能文件就是普通脚本你不需要写任何复杂的 API 代码。技能库可以不断积累社区里也有人分享现成的技能包比如网页搜索、HTTP 请求、SQL 查询等。4. 服务化与生态接入命令行能跑通只是第一步一个正经部署的 agent 服务必须能做到开机自启、后台守护、异地访问。这一节把 systemd 配置、Windows/安卓 Companion 接入、ROS2 扩展三个内容讲完。4.1 用 systemd 开机自启开发环境里你可以直接前台开着openclaw serve但生产环境必须交给 systemd 管。先创建一个服务文件vim /etc/systemd/system/openclaw.service内容如下[Unit] DescriptionOpenClaw AI Agent Service Afternetwork-online.target ollama.service Wantsnetwork-online.target [Service] Typesimple Userroot WorkingDirectory/opt/openclaw ExecStart/opt/miniconda3/envs/openclaw/bin/openclaw serve --config /root/.openclaw/config.yaml Restarton-failure RestartSec10 EnvironmentPYTHONUNBUFFERED1 [Install] WantedBymulti-user.target有几个细节值得注意。ExecStart必须写绝对路径不能让 systemd 依赖你的环境变量Afterollama.service保证了 Ollama 先启动OpenClaw 再启动避免模型源还没就绪就疯狂报错Userroot图省事但更安全的是单独建一个openclaw用户只是这样一来文件权限要配好。写完文件后执行systemctl daemon-reload systemctl enable --now openclaw systemctl status openclaw如果看到active (running)说明服务已经起来了。用 CtrlC 是无法停掉 systemd 服务的必须用systemctl stop openclaw这也是以后最规范的运维方式。日志则统一通过journalctl -u openclaw -f查看比看日志文件方便得多。4.2 Windows/安卓 Companion 连接OpenClaw 的官方客户端叫 Companion目前有 Windows 桌面版和安卓版本质就是一个“远程遥控器”你在一台普通电脑或手机上输入服务器地址就能和 CentOS 7 上的智能体对话并查看它执行任务的实时状态。Windows 端配置比较简单下载 Companion 客户端并安装。打开设置填入服务器地址http://你的CentOS服务器IP:8000。填入 Access Token这个 token 在~/.openclaw/config.yaml里可以找到或自行生成。保存后连接正常情况下能看到在线状态。安卓端有两条路。如果官方提供了 Companion APK直接安装即可如果你想在 Termux 里跑命令行版也可以把 CentOS 7 上的 Python 环境迁移思路套用过来在 Termux 里创建同样的 conda 环境或直接用 pip 安装但这需要手机性能够用日常连接远程服务端的话用 Companion 更实用。这里有个很容易被忽略的问题防火墙。CentOS 7 默认 firewalld 是开启的你服务起来了但外部机器就是连不上。先看端口监听状态ss -lntp | grep 8000如果监听在 127.0.0.1说明 OpenClaw 只允许本机访问需要把配置里的监听地址host改成0.0.0.0。然后再放行防火墙端口firewall-cmd --permanent --add-port8000/tcp firewall-cmd --reload改完服务端配置后记得systemctl restart openclaw。4.3 顺带聊聊 ROS2 和 Gazebo 扩展热搜词里出现了 rosclaw、ROS2 Humble、Gazebo说明很多人想把 OpenClaw 接到机器人仿真里。想法虽好但有个现实问题ROS2 Humble 官方只支持 Ubuntu 22.04 这类新系统CentOS 7 原生装不上。所以我的方案是“Docker 隔离”把 ROS2 环境装进容器CentOS 7 只负责跑 OpenClaw 主服务两者通过网络通信。具体思路是docker pull osrf/ros:humble-desktop docker run -it --rm osrf/ros:humble-desktop在容器内安装 rosclaw 桥接包再把 OpenClaw 的意图输出转成 ROS2 话题发给 Gazebo 中的机器人模型。这样做的优势很明显CentOS 7 的老内核和库不会污染机器人开发环境ROS2 容器崩了也不会影响 OpenClaw 主服务。如果你是研究机器人方向的后续可以专门写一篇文章讲 rosclaw 的话题映射和 TF 树处理这里先提一个方向重点看 OpenClaw 输出的“结构化指令”如何转成 ROS2 的geometry_msgs/Twist话题。5. 踩坑记录这些问题我替你试过了装一遍下来前前后后踩了不少坑。有些问题光看官方文档根本想不到但这些才是真实的部署常态。我把最容易让新手卡住的几个问题整理成了排查套路和速查表希望你用不上。5.1 启动即崩溃的排查套路OpenClaw 装好后第一次启动最常见的就是立即退出没有任何像样的错误提示。这时候别慌先看服务状态和日志journalctl -u openclaw -e日志里如果出现ModuleNotFoundError: No module named ...十有八九是虚拟环境没激活或者pip install -e .装的包进了系统环境。确认一下执行openclaw命令时用的是哪个解释器which openclaw如果路径不是/opt/miniconda3/envs/openclaw/bin/openclaw说明 PATH 污染了。处理办法是重开终端或者手动指定全路径启动。另一个隐蔽的坑是 glibc 版本。CentOS 7 的 glibc 是 2.17某些新版 Python 包比如 pydantic、numpy在编译时可能依赖更高版本。解决办法是尽量用pip install预编译的 wheel 包不要强制从源码编译。如果某一步编译报错可以在pip install后加--only-binary :all:参数试试。5.2 端口访问不通服务起了防火墙也放行了Windows 端就是连不上。第一步先排除监听地址问题ss -lntp | grep 8000如果显示的是127.0.0.1:8000无论怎么配防火墙都没用——外部机器根本找不到这个端口。去config.yaml里把 host 改成0.0.0.0重启服务。如果监听地址已经是0.0.0.0再用另一台机器测试端口连通性telnet 192.168.1.100 8000连不上就检查防火墙连上了就查客户端。还有一个很少人注意的点SELinux 会拦截非标准端口的对外监听。临时测试可以执行setenforce 0但长期运行建议写一条对应端口的 SELinux 规则或者直接按需配置。5.3 模型加载慢和显存不足无 GPU 的 CentOS 7 上跑 Ollama模型加载确实慢第一次查询可能要几十秒。这不是 OpenClaw 的问题而是 CPU 推理的通病。如果慢到不可接受建议换小一点的量化模型比如qwen2.5:3b。如果 Ollama 报model requires more memory说明模型大小超过了可用内存。解决办法有几种关闭不必要的服务释放内存比如systemctl stop postfix。调整 Ollama 环境变量OLLAMA_NUM_PARALLEL1限制并行请求数OLLAMA_MAX_LOADED_MODELS1限制同时加载的模型数量。在~/.bashrc里配好环境变量后重启 ollama 服务export OLLAMA_MAX_LOADED_MODELS1 export OLLAMA_NUM_PARALLEL1做深度学习的朋友应该明白模型加载是稀疏矩阵运算和显存管理的事CPU 机上内存就是“显存”所以内存越充裕越能跑大模型。如果你只有 8GB跑 7B 就是极限了别硬上 13B。5.4 常见问题速查表问题可能原因解决办法yum 报 repomd.xml [Errno -1]CentOS 7 EOL 后源路径失效切换 vault 源重新 makecacheopenclaw 命令找不到PATH 未配置或环境未激活检查 conda 环境 PATH使用全路径ModuleNotFoundErrorpip 包装错环境确认进入 openclaw 虚拟环境重装Ollama 模型下载慢网络带宽受限换镜像站或用代理下载后离线导入openclaw 端口外部连不上监听 127.0.0.1 或防火墙未放行改 host 为 0.0.0.0开放端口systemd 启动立即退出配置错误或依赖服务未起用 journalctl 看日志检查 Ollama 状态API key 报 401密钥写错或服务商鉴权失败核对 api_key确认用环境变量注入ROS2 容器无法访问 OpenClaw网络隔离用 host 网络模式或桥接容器网络我个人在折腾这套环境时最大的体会是CentOS 7 就像一间老房子管道、电路都旧了但只要你肯花时间把基础设施理顺它照样能稳稳当当地住人。OpenClaw 本身并没那么娇气绝大多数安装失败都倒在系统环境这一关。如果你也准备在 CentOS 7 上部署务必先花半小时把 yum 源、Python 环境、系统依赖清理干净后续会顺很多。最后再分享一个小技巧装好之后记得把~/.ollama和~/.openclaw这两个目录做一次快照或者 tar 备份。模型缓存和技能配置是你最宝贵的资产有了备份以后不管怎么折腾系统都能快速恢复到能用的状态。祝你一次成功。