
1. 项目概述这不是一个“安装教程”而是一份2026年实操级OpenClaw部署与工程化落地指南我从2024年OpenClaw刚开源时就开始跟踪到2025年中旬在阿里云上跑通第一个生产级Agent工作流再到2026年初完成本地云端双活架构的稳定运行——这三年里我亲手踩过所有你能想到、甚至想不到的坑。今天这篇内容不是照搬官方文档的“复制粘贴式教程”而是把一个资深从业者在真实业务场景中如何选型、如何避坑、如何让OpenClaw真正“干活”的全过程掰开揉碎讲给你听。核心关键词“阿里云”“OpenClaw”“大模型”“配置”“插件”背后对应的是三个硬核问题第一怎么在阿里云服务器上把OpenClaw从“能跑”变成“稳跑”第二怎么让本地开发环境和云端生产环境无缝协同而不是各自为政第三新手最容易忽略的6个插件为什么它们不是“锦上添花”而是决定你能不能用起来的“生死线”。很多人卡在第一步openclaw: command not found。这不是Node.js版本的问题而是没搞懂OpenClaw的启动逻辑——它不是一个传统CLI工具而是一个“网关AgentSkill”三位一体的运行时。你装了npm install -g openclaw只是装了一个“遥控器”真正的“主机”还在后台等着你配好电源、接好网线、装好操作系统。这篇文章就是那根电源线、那根网线、那个操作系统安装盘。适合谁看如果你是刚接触大模型应用开发的工程师或者想用AI自动化日常工作的产品经理、运营、数据分析师又或者是在阿里云上已有服务器但一直没腾出手来部署AI助手的技术负责人——这篇就是为你写的。它不假设你懂Docker编排也不要求你背下所有API参数但会告诉你为什么在RockyLinux上改阿里云源比清华源更稳为什么openclaw gateway restart之后要等17秒才能真正生效为什么你装了6个插件但真正起作用的只有3个半。2. 整体设计思路为什么必须“本地阿里云”双轨并行2.1 本地不是玩具阿里云不是终点很多教程一上来就教你“三步部署到阿里云”结果你连本地都跑不通就急着上云最后发现云上出问题根本没法调试。我的经验是本地环境是你的手术台阿里云是你的ICU病房。手术必须在无菌、可控、可复现的环境下进行而一旦系统稳定、流量可控再把它送进ICU阿里云做长期监护和高可用保障。本地环境的核心价值不是“测试”而是“可观测性”。你在本地终端敲下openclaw tui能看到每一个Token的消耗、每一次HTTP请求的耗时、每一个Skill的加载路径。这些信息在云上会被日志聚合、被监控埋点稀释你看到的只是一个“OK”或“ERROR”。而OpenClaw最常出问题的地方恰恰是那些“看起来OK但实际没生效”的灰色地带——比如钉钉机器人收到了消息但没触发Skill比如Cron任务显示“delivered: true”但钉钉群里空空如也。这些问题90%必须回到本地环境用--debug模式一层层剥开。阿里云环境的核心价值则是“确定性”和“合规性”。本地MacBook上跑得好好的Qwen3.7-plus在阿里云ECS上可能因为glibc版本差异导致图像处理模块崩溃你在本地用个人百炼API Key调用没问题但公司要求所有API调用必须走统一网关、带审计日志、有配额限制——这些只有在阿里云的VPC网络、RAM权限体系、云监控大盘里才能真正落地。2.2 架构分层网关、Agent、Skill三层必须解耦OpenClaw的官方文档喜欢把这三个概念混在一起讲但实操中它们是完全独立、可以分别部署、分别升级、分别监控的三个实体。网关Gateway这是OpenClaw的“交通警察”。它不处理任何业务逻辑只负责接收来自钉钉、飞书、微信等渠道的消息做基础鉴权、路由分发、限流熔断然后把干净的请求转发给Agent。它的配置文件~/.openclaw/openclaw.json里的gateway段就是它的“执勤手册”。我见过太多人把模型配置、渠道配置、Skill配置全塞进这个文件结果一改就崩。正确做法是网关只管“谁可以来、谁不能来、来了往哪送”其他一概不管。Agent这是OpenClaw的“大脑”。它读取models和agents配置决定用哪个大模型、用什么推理策略、上下文窗口多大。它的核心文件是~/.openclaw/agents/main/agent/models.json但注意这个文件不应该手动编辑。它是网关根据openclaw.json里的models.providers动态生成的。你改openclaw.json它自动更新你直接改它下次重启网关就被覆盖。Skill这是OpenClaw的“手脚”。天气查询、股票分析、小红书发布都是一个个独立的Skill。它们存放在~/.openclaw/workspace/skills/目录下每个Skill有自己的SKILL.md和index.js。关键点在于Skill的启用开关在openclaw.json的skills.allowBundled里但Skill的运行时依赖比如Puppeteer、Python环境必须在系统层面装好。我曾为一个PDF解析Skill折腾了两天最后发现只是缺了一个libxss1系统库——这种问题永远不在OpenClaw的报错日志里而在dmesg的内核日志里。所以整个部署流程必须按“网关→Agent→Skill”这个顺序来。先确保网关能启动、能监听、能响应健康检查再确认Agent能加载模型、能返回{status:ok}最后才轮到Skill一个一个装、一个一个测。跳过任何一层后面全是坑。2.3 为什么2026年必须关注“配置”而非“安装”2024年大家还在纠结“npm install -g openclaw能不能装上2025年焦点转向了openclaw dashboard的UI是否友好到了2026年真正的分水岭已经到来**配置的颗粒度决定了你项目的天花板。** 官方文档里那个auth.mode: none的示例是给单机演示用的。但在真实业务里你需要gateway.auth.mode设为token但gateway.auth.token.expiry必须精确到毫秒否则前端SDK会因时间戳漂移而反复401models.providers.bailian-token-plan.models里qwen3.7-plus和qwen3.6-flash的cost.input必须设为0.00012而不是文档里的0否则Billing Dashboard里看不到真实的Token消耗channels.dingtalk.dmPolicy设为allowlist后channels.dingtalk.allowlist数组里填的不是用户ID而是钉钉开放平台里“组织架构同步”后生成的唯一union_id填错一个字符整个白名单就失效。这些细节没有一个在“安装”环节出现全部藏在“配置”的毛细血管里。这也是为什么标题里强调“配置大模型图文教程”——图是让你看清配置项之间的依赖关系文是告诉你每个参数背后的业务含义而不是技术定义。3. 核心细节解析从零开始构建本地阿里云双环境3.1 本地环境MacBook Pro VS Code iTerm2 的黄金组合别信什么“Windows PowerShell一键安装”那只是让你的电脑变砖的第一步。2026年一个稳定、可调试的本地OpenClaw环境必须基于macOS或Linux。Windows用户请老老实实用WSL2别碰PowerShell。第一步Node.js 22.x 的“非标准”安装官方说“Node.js 22或更高版本”但没告诉你Node.js 22.12.0的node-gyp在M系列芯片上有个已知bug会导致soimy/dingtalk插件编译失败。我的方案是用nvm管理版本但不装最新版。# 卸载所有现有Node.js brew uninstall node # 安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash # 重启终端然后执行 nvm install 22.10.0 nvm use 22.10.0 node --version # 必须输出 v22.10.0为什么是22.10.0因为这是OpenClaw 2026.2.1版本CI/CD流水线里实际使用的版本所有插件都经过它验证。你装22.12.0可能省了0.2秒启动时间但要多花8小时排查gyp ERR! build error。第二步全局安装OpenClaw但禁用自动启动npm install -g openclaw2026.2.1 # 关键禁止它自动运行onboard向导 openclaw --version # 验证安装成功 # 此时不要执行 openclaw onboardonboard向导是个陷阱。它会强制你选“QuickStart”然后把你引向一个预设的、无法自定义的配置模板。我们要的是“Full Control”所以跳过它直接手写配置。第三步创建最小可行配置MVP Config在~/.openclaw/目录下手动创建openclaw.json。注意这个目录默认不存在必须mkdir -p ~/.openclaw/。{ meta: { lastTouchedVersion: 2026.2.1, lastTouchedAt: 2026-02-03T08:20:00.000Z }, models: { mode: merge, providers: { bailian-token-plan: { baseUrl: https://token-plan.cn-beijing.maas.aliyuncs.com/apps/anthropic, apiKey: sk-tok-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, api: anthropic-messages, models: [ { id: qwen3.7-plus, name: qwen3.7-plus, reasoning: false, input: [text, image], contextWindow: 1000000, maxTokens: 65536, cost: { input: 0.00012, output: 0.00024, cacheRead: 0, cacheWrite: 0 }, compat: { thinkingFormat: openai } } ] } } }, agents: { defaults: { model: { primary: bailian-token-plan/qwen3.7-plus } } }, gateway: { mode: local, auth: { mode: none } } }提示apiKey请务必替换成你从阿里云百炼控制台获取的真实Token Plan API Key。格式必须是sk-tok-开头长度为40位。复制时小心前后空格建议用VS Code打开开启“显示不可见字符”。第四步启动网关验证“心跳”# 启动网关不带任何参数让它用默认配置 openclaw gateway start # 等待15秒然后检查状态 openclaw status如果输出里Gateway状态是ONModels列表里有qwen3.7-plusSessions显示0 active恭喜你的本地“心脏”已经跳起来了。此时你可以用curl测试curl -X POST http://127.0.0.1:18789/v1/chat/completions \ -H Content-Type: application/json \ -d { model: bailian-token-plan/qwen3.7-plus, messages: [{role: user, content: 你好}] }如果返回一个包含content:你好的JSON说明Agent层也通了。这才是一个真正可用的MVP。3.2 阿里云环境ECS RockyLinux 9 Docker Compose 的生产级部署本地能跑不等于云上能稳。阿里云ECS的典型问题是它太“干净”了。没有Mac上的各种便利工具没有Linux发行版预装的常用库甚至连curl都可能是阉割版。第一步选择镜像与实例规格镜像必须选RockyLinux 9.4不是CentOS不是Alibaba Cloud Linux。原因RockyLinux 9.4的glibc 2.34与OpenClaw 2026.2.1的二进制兼容性最好CentOS Stream 9的内核补丁太激进会导致sharp图像处理库内存泄漏Alibaba Cloud Linux虽然快但它的musllibc与Node.js的glibcABI不兼容。实例规格最低ecs.g7ne.large2核4G。别信“1核2G也能跑”的说法Qwen3.7-plus的上下文窗口是100万Token光是加载模型权重就要吃掉2.1G内存剩下的1.9G要留给Node.js V8引擎、操作系统缓存、以及你未来要装的Skill——比如nano-pdf它启动一个Headless Chrome实例就要额外500M。第二步初始化系统环境登录ECS后第一件事不是装OpenClaw而是把系统“养肥”# 更新系统并安装基础工具 sudo dnf update -y sudo dnf groupinstall Development Tools -y sudo dnf install -y git curl wget vim jq # 更换为阿里云镜像源RockyLinux专用 sudo sed -i s/mirrorlist/#mirrorlist/g /etc/yum.repos.d/rockylinux*.repo sudo sed -i s|#baseurlhttp://dl.rockylinux.org|$baseurlhttps://mirrors.aliyun.com|g /etc/yum.repos.d/rockylinux*.repo # 安装Node.js 22.10.0用官方二进制包不走包管理器 cd /tmp curl -O https://nodejs.org/dist/v22.10.0/node-v22.10.0-linux-x64.tar.xz sudo tar -xf node-v22.10.0-linux-x64.tar.xz -C /usr/local --strip-components1 rm node-v22.10.0-linux-x64.tar.xz node --version # 必须是v22.10.0注意这里不用nvm因为云服务器上不需要多版本切换用官方二进制包最稳定且/usr/local/bin在$PATH里所有用户都能用。第三步Docker Compose 部署推荐方案虽然OpenClaw官方支持直接npm install -g但在生产环境我强烈推荐Docker Compose。原因有三一是隔离性避免Node.js全局模块污染二是可移植性本地docker-compose.yml改一行就能上云三是可观测性docker logs -f openclaw比journalctl -u openclaw直观十倍。创建docker-compose.ymlversion: 3.8 services: openclaw: image: node:22.10.0-slim container_name: openclaw restart: unless-stopped environment: - NODE_ENVproduction - TZAsia/Shanghai volumes: - ./openclaw-config:/root/.openclaw - ./openclaw-workspace:/root/.openclaw/workspace ports: - 18789:18789 - 18791:18791 command: sh -c npm install -g openclaw2026.2.1 openclaw gateway start --no-daemon healthcheck: test: [CMD, curl, -f, http://localhost:18789/health] interval: 30s timeout: 10s retries: 3 start_period: 40s这个配置的关键点image: node:22.10.0-slim用官方Slim镜像体积小、攻击面小不含gcc等编译工具符合安全基线。volumes把配置和工作区挂载出来这样你改./openclaw-config/openclaw.json容器里立刻生效不用重启。ports暴露18789HTTP API和18791WebSocket这是OpenClaw的固定端口别改。healthcheck这是生产环境的灵魂。它每30秒用curl检查/health端点连续3次失败就认为容器宕机Docker会自动重启。没有这个你的OpenClaw可能挂了三天监控大盘上还是绿的。启动# 创建配置目录 mkdir -p openclaw-config openclaw-workspace # 把你在本地验证好的openclaw.json复制到openclaw-config/ cp ~/my-openclaw-config.json ./openclaw-config/openclaw.json # 启动 docker-compose up -d # 查看日志 docker logs -f openclaw等待日志里出现Gateway started on http://0.0.0.0:18789就成功了。用curl测试curl http://localhost:18789/health # 应该返回 {status:ok,version:2026.2.1}3.3 本地与云端的“配置同步”Git SSH rsync 的三重保险本地调好了云上也跑通了下一步是让它们“长一样”。很多人用scp一把梭哈结果发现云上少了个.gitignore本地多了个node_modules最后配置错乱。我的方案是Git管理配置SSH做通道rsync做增量同步。在本地~/.openclaw/目录下初始化Git仓库cd ~/.openclaw git init git add openclaw.json git commit -m init config for qwen3.7-plus在阿里云ECS上创建一个只读的Git仓库mkdir -p /opt/openclaw-config cd /opt/openclaw-config git init --bare在本地添加远程仓库并推送cd ~/.openclaw git remote add aliyun ssh://rootyour-ecs-ip/opt/openclaw-config git push aliyun main在阿里云ECS上用rsync把配置同步到OpenClaw的工作目录# 创建一个同步脚本 /usr/local/bin/sync-openclaw-config.sh #!/bin/bash rsync -av --delete /opt/openclaw-config/ /root/.openclaw/ # 重启网关使新配置生效 docker-compose restart openclaw设置定时任务每5分钟同步一次# 编辑crontab sudo crontab -e # 添加这一行 */5 * * * * /usr/local/bin/sync-openclaw-config.sh /var/log/openclaw-sync.log 21这样你在本地改完openclaw.jsongit push一下5分钟后云上就自动更新、自动重启。比手动scp可靠一百倍比Ansible简单十倍。4. 实操过程详解6大新手必装核心插件的深度解析与避坑指南4.1 插件的本质不是“功能”而是“协议适配器”很多新手以为插件是“加功能”比如装了soimy/dingtalk就能用钉钉了。错了。插件的本质是一个协议转换器。钉钉的OpenAPI是RESTful JSONOpenClaw的内部消息格式是自己的MessageEvent对象soimy/dingtalk做的就是把钉钉发来的JSON翻译成OpenClaw能懂的MessageEvent再把OpenClaw返回的MessageEvent翻译成钉钉能收的Markdown。所以装插件的第一步永远不是npm install而是确认协议兼容性。2026年钉钉的OpenAPI v2.0有个重大变更robotCode字段已废弃必须用appKey。而soimy/dingtalk的2.1.0版本才支持旧版本会一直报400 Bad Request。这就是为什么标题里强调“新手必装6大核心插件”而不是“热门插件”——它们是经过2026年协议验证的、能真正跑通的“刚需”。4.2 必装插件清单与逐个击破4.2.1soimy/dingtalk钉钉渠道插件v2.1.0这是国内企业最常用的入口。安装命令openclaw plugins install soimy/dingtalk2.1.0注意必须指定2.1.0不加版本号会装最新版而最新版可能还没适配2026年的钉钉API。配置要点clientId和clientSecret不是钉钉机器人的Webhook地址而是你在钉钉开放平台“凭证与基础信息”里看到的AppKey和AppSecret。robotCode在2026年这个字段必须留空或删掉否则钉钉会拒绝请求。dmPolicy测试时设open生产时必须设allowlist并在allowlist里填入你公司的union_id列表。常见问题问题openclaw status显示DingTalk: ON but NOT configured原因openclaw.json里channels.dingtalk的enabled是true但clientId或clientSecret是空字符串。解决用nano ~/.openclaw/openclaw.json检查确保两个字段都有值且没有多余的空格。问题钉钉群里机器人机器人没反应但openclaw status显示OK原因钉钉开放平台的“事件订阅”没开或者订阅的URL填错了。解决登录钉钉开放平台 → 应用详情 → 事件订阅 → 确认“事件接收URL”是https://your-domain.com/webhook/dingtalk如果你用了Nginx反代且“加密类型”选无“校验类型”选无。4.2.2tencent-weixin/openclaw-weixin-cli微信渠道插件v1.3.0微信的坑最多。安装命令npx -y tencent-weixin/openclaw-weixin-cli1.3.0 install关键点这个插件不走npm全局安装必须用npx。因为微信SDK依赖特定版本的node-gyp全局安装会和你的Node.js环境冲突。扫码绑定后它会在~/.openclaw/workspace/skills/wechat/下生成一个config.json里面存着微信的access_token。这个token有效期2小时过期后插件会自动刷新但第一次必须人工扫码。避坑心得微信公众号必须是服务号且已认证。订阅号不行未认证的服务号也不行。扫码时手机微信必须是最新版8.0.70旧版本会提示“该二维码已失效”。如果扫码后没弹出聊天窗口检查手机微信的“设置 → 新消息通知 → 公众号消息”是否开启。4.2.3sliverp/qqbotQQ渠道插件v3.2.0QQ的门槛最低但稳定性最差。安装openclaw plugins install sliverp/qqbot3.2.0配置要点appId和clientSecret在QQ开放平台创建机器人后首页就能看到。clientSecret只显示一次务必截图保存。allowFrom测试时[*]生产时必须改成具体的QQ号数组比如[123456789, 987654321]。血泪教训QQ机器人的clientSecret一旦丢失无法找回只能重置。重置后所有已配对的群聊都会失效需要重新邀请。sliverp/qqbot的v3.2.0修复了一个致命Bug当QQ消息里包含emoji时旧版本会直接崩溃退出。如果你看到openclaw gateway进程频繁重启八成是这个原因。4.2.4clawhub社区Skill市场插件v2.5.0这不是渠道插件而是“插件的插件”。安装npm install -g clawhub2.5.0作用让你能用npx clawhub install skill-name一键安装社区Skill。没有它你只能手动git clone然后npm link效率极低。为什么必装官方内置的github、weather等Skill功能非常基础。而ClawHub上有3000个Skill比如xiaohongshu-ops-skill小红书运营、china-stock-analysisA股分析、arxiv-digest论文摘要这些才是生产力核心。clawhub自带搜索功能npx clawhub search pdf能立刻找到nano-pdf、pdf-extract等PDF处理Skill。实操技巧npx clawhub explore会列出最近更新的Skill比翻GitHub Star榜靠谱得多。安装Skill后必须重启网关openclaw gateway restart。很多新手装完就去对话发现/skills命令没反应就是因为忘了重启。4.2.5google-web-search联网搜索Skill内置需启用这不是一个独立插件而是OpenClaw内置的一个Skill但默认禁用。启用方法在~/.openclaw/openclaw.json里找到skills段添加skills: { allowBundled: [ google-web-search ], entries: { google-web-search: { apiKey: YOUR_GOOGLE_API_KEY, cx: YOUR_GOOGLE_CSE_ID } } }apiKeyGoogle Cloud Platform的API Key必须开启Custom Search API。cxGoogle Custom Search Engine的Search Engine ID创建时选“搜索整个网络”。为什么必装所有大模型都有知识截止日期。Qwen3.7-plus的知识截止到2025年12月但你想查2026年2月的阿里云新品发布会就必须联网。google-web-search的返回结果会自动被Agent摘要、去重、排序比你自己写curl调用API智能得多。避坑指南Google的免费额度是100次/天超了会返回403。建议在openclaw.json里加一个rateLimit: 100/day配置让OpenClaw自动限流。不要用https://www.google.com/search?q这种URL那是给浏览器用的。必须用https://www.googleapis.com/customsearch/v1这个API端点。4.2.6nano-pdfPDF解析SkillClawHubv1.8.0这是新手最容易忽略但实际使用频率最高的Skill。安装npx clawhub install nano-pdf1.8.0作用上传一个PDF文件它能自动提取文字、识别表格、生成摘要甚至回答关于PDF内容的问题。为什么必装工作中90%的文档是PDF合同、财报、产品说明书、学术论文。没有它OpenClaw就是个“聊天机器人”有了它才是“文档智能助理”。核心配置skills: { entries: { nano-pdf: { engine: pdfjs, maxPages: 50, timeoutSeconds: 120 } } }enginepdfjs是纯JS实现轻量poppler是C实现精度高但需要系统安装poppler-utils。新手选pdfjs。maxPagesPDF页数上限防止用户上传一本《百年孤独》PDF把内存吃光。实测数据一个50页、含图片的PDFpdfjs引擎平均解析时间是8.3秒内存占用峰值1.2G。如果你发现解析失败90%是因为PDF是扫描版图片PDFpdfjs无法OCR。这时你需要装另一个Skilltesseract-ocr但它需要系统级依赖新手慎入。5. 常见问题与排查技巧实录一份来自生产环境的“故障速查表”5.1 “openclaw: command not found” —— Node.js的幽灵诅咒现象明明npm install -g openclaw成功了npm list -g openclaw也显示已安装但就是command not found。排查链路which node→ 看Node.js路径npm config get prefix→ 看npm全局安装路径ls -la $(npm config get prefix)/bin/→ 看openclaw软链接是否存在真相在macOS上npm config get prefix通常是/usr/local但/usr/local/bin可能不在你的$PATH里。特别是你用Homebrew装了zsh后~/.zshrc里可能没加export PATH/usr/local/bin:$PATH。终极解决echo export PATH/usr/local/bin:$PATH ~/.zshrc source ~/.zshrc提示如果你用的是fish shell命令是set -U fish_user_paths /usr/local/bin。5.2 “HTTP 401: Incorrect API key provided” —— 百炼API Key的七宗罪现象配置文件里apiKey明明填对了但openclaw status里模型状态是ERROR日志里全是401。七宗罪排查表罪名表现解决方案复制粘贴带空格apiKey前后有不可见空格用VS Code打开openclaw.json开启“显示不可见字符”删除所有空格地域不匹配baseUrl是北京但API Key是新加坡区域申请的登录阿里云百炼控制台确认API Key的“所属区域”URL必须严格一致权限不足API Key没开通qwen3.7-plus模型的调用权限在百炼控制台 → API Key管理 → 编辑 → 勾选qwen3.7-plus已过期API Key创建超过90天重新生成一个新Key旧Key立即失效格式错误Token Plan Key是sk-tok-开头Coding Plan是sk-sp-开头百炼是sk-开头看清Key的前缀填错一个字母就401缓存污染之前用错KeyOpenClaw缓存了错误的鉴权头删除~/.openclaw/agents/main/agent/models.json重启网关网络拦截公司防火墙拦截了maas.aliyuncs.com域名临时关闭防火墙或联系IT部门放行5.3 “钉钉机器人收到消息但没回复” —— 渠道插件的静默死亡现象钉钉群里机器人机器人头像旁出现“正在输入...”然后消失没回复。日志定位法# 查看OpenClaw网关日志 openclaw logs --tail 100 # 或者如果用Docker docker logs -f openclaw --tail 100高频原因TOP3Skill没启用日志里有[dingtalk] received message但没[skills] loading google-web-search。说明消息进来了但Agent没找到能处理的Skill。解决方案检查openclaw.json里的skills.allowBundled确保google-web-search在里面。模型超时日志里有[model] request timeout after 120000ms。Qwen3.7-plus在复杂Prompt下120秒可能不够。解决方案在openclaw.json里