华为云部署OpenClaw:Skills配置与飞书接入避坑指南

发布时间:2026/10/13 3:01:29
华为云部署OpenClaw:Skills配置与飞书接入避坑指南 这篇教程其实我早该写了。从去年 OpenClaw前身 Clawdbot在 Agent 社区里火起来之后几乎每天都能在群里看到有人卡在同一批问题上脚本装不上、装上了报错、Skills 明明放进目录却不生效、飞书里叫它半天不回话。这玩意儿本来设计得挺聪明但它的聪明是建立在一堆基础设施之上的而基础设施的坑恰恰就是劝退新手最多的地方。所以这次我干脆用一套最省心的路径来写一台华为云服务器从零开始把 OpenClaw 本体和 Skills 装好、配好、跑通并且把这些年社区里反复出现的报错一次性说清楚。标题写得是喂饭教程那咱们就真的从画面最基础的部分开始喂。整篇内容我按自己实际踩坑的先后顺序来组织不整那些虚的每一条命令、每一处配置都是能在 2026 年的华为云 Ubuntu 22.04 上直接抄作业的。1. 动手之前先搞明白OpenClaw 到底在部署什么很多人一上来就急着复制粘贴安装命令结果装完发现跑了又好像没跑就是因为在动手之前没把架构搞清楚。这一节我用最直白的话把这个项目里最容易混淆的三件事拆开讲。1.1 一句话讲清 OpenClaw 与 Clawdbot 的关系OpenClaw 和 Clawdbot 其实指的是同一个开源项目只是不同时期的叫法。Clawdbot 是最早的仓库名后来因为项目定位从聊天机器人框架扩展成Agent 运行时平台社区逐步迁移到 OpenClaw 这个新名字。你搜 GitHub 时会同时看到两个名词它们的内核是同一套代码体系配置文件、Skills 机制和 Agent 管理逻辑是通用的。我在教程里统一用 OpenClaw 这个称呼。它本质上是一个Agent 载体程序本身不产生智能但它负责把大模型的能力、工具能力、消息渠道能力三者黏合在一起。没有它你手里的大模型 API 再强也只是一个聊天接口有了它大模型才能通过 Skills 调用浏览器、执行命令、读写文件、对接飞书和 Teams变成一个真正能干活的东西。1.2 Skills 不是什么插件商城而是一套技能编排机制很多新手把 Skills 理解成插件这个类比其实不准确。插件通常是独立分发、独立启停的而 OpenClaw 里的 Skills 更像是一套带说明书的工具集。官方和社区创建的 Skills 仓库里通常放着一批脚本、Prompt 模板和描述文件你需要把它们放到指定目录然后在配置里声明启用让 Agent 在运行的时候知道自己有这批工具可以用。这么说吧OpenClaw 本体是一台汽车的底盘Skills 是发动机、变速箱、轮胎。底盘空着车能通电能响但走不了只有把 Skills 挂上去这台车才真正能上路。所以网上说的装 Skills本质上是两件事——把技能文件下载到正确的位置以及让 Agent 在配置层面认识到这些技能。我后面第 4 节会拆到每一步。1.3 为什么这台机器要选华为云而不是本地电脑在热词里高频出现的华为云一键部署很多人第一反应是用我的 Mac 或 Windows 裸机跑不就行了吗理论上是行的但实际操作里你会遇到三个很现实的问题家里的网络环境对 Agent 对外回调不友好尤其是接入飞书、Teams 这些渠道时消息回调地址必须是公网可达的。Agent 需要长时间进程常驻笔记本电脑一合盖、一休眠进程就断了你人在外面叫不动它。本地 Windows 的路径分隔符、权限模型和 Linux 差异很大Skills 里大量脚本是 Bash 写的在 Windows 上跑要么装 WSL要么被各种引号转义折磨到怀疑人生。华为云 ECS 的安全性、访问速度和公网回传链路相对稳而且一年内使用新用户优惠的话一台 2C4G 的入门实例完全够跑 OpenClaw。这里的一键部署更准确点说是一套能落地的标准操作流程。2. 华为云开台与环境初始化一台干净的 Ubuntu 22.04如果你已经有一台云服务器可以直接跳到 2.3 节看连接和环境准备如果连服务器都还没买这一节从控制台申请开始。2.1 购买 ECS 时的关键选项与参数进入华为云控制台在产品列表里找到弹性云服务器 ECS点击购买。有几个关键选项直接决定后续体验我按优先级说明计费模式新手上路选按需计费就行用一小时扣一小时的钱跑通了再考虑包年包月。别一上来就包年万一配置出问题退费流程很麻烦。地域选离你实际使用位置最近的节点。如果主要用来接飞书或微信机器人选你日常工作范围内延迟最低的城市即可。地域不影响你 SSH 远程连接多少但会影响后续公网 API 回传的延迟。镜像一定要选 Ubuntu 22.04 LTS 或更新一点的 24.04 LTS。原因很实际OpenClaw 官方脚本对 Ubuntu/Debian 系列支持最完整Python 版本在 3.10 以上依赖下载基本不用折腾。实例规格最低 2核 4GB。我在 2G 内存的机器上也跑过能启但一旦接上 Teams 或者飞书这种线程占用较高的 Channel内存就紧张。4G 是安全线再低就不要省这个钱了。系统盘40G 起步80G 也不贵。Skills 仓库、日志、模型缓存加起来很快就十几个 G 了。2.2 安全组规则只开该开的端口安全组是华为云第一道网络防线它不是摆设。默认情况下入方向规则只放行了 22 端口SSH。对于 OpenClaw 这种 Agent 服务你至少需要考虑三类规则22 端口SSH 管理端口必须开但建议用密钥对登录而不是密码后面会说。3000 或 8080 端口OpenClaw 的 Web 或 API 管理界面。如果你打算用浏览器看控制台需要在安全组里放行对应端口。不需要开放的公网端口数据库、Redis 内部组件不要暴露到 0.0.0.0/0只允许内网 IP 访问或者干脆不对外开。我的建议是先只开 22 和一个管理端口跑通整个流程之后再按实际需要添加入方向规则。安全组宁缺毋滥这是我在生产服务器上学到的最重要一课。2.3 用 SSH 连上服务器的两种方式华为云购买实例时会让你选登录方式密码登录或密钥对登录。强烈建议选择密钥对登录——虽然密码更方便但暴力破解流量在公网服务器上非常密集用密码就是每天在门口赌运气。Windows 用户最省事的 SSH 客户端是 PowerShell 自带的 OpenSSH 或者 Windows Terminal。拿到公网 IP 之后在终端里执行ssh ubuntu你的服务器IP如果你创建的是密钥对登录需要用-i参数指定私钥路径ssh -i /path/to/your-key.pem ubuntu你的服务器IP首次连接会提示确认 host key输入 yes 回车即可。连接成功后就进入 Ubuntu 命令行界面了后面的操作全在这台远程服务器上进行本地电脑只是一个遥控器。2.4 系统更新与基础组件安装新开的 Ubuntu 系统通常带着旧软件源缓存建议先做一次全面更新避免后续 OpenClaw 依赖版本冲突sudo apt update sudo apt upgrade -y然后安装一批基础组件。OpenClaw 的安装脚本本身会解决大部分依赖但有些工具它不会替你做比如 git、curl、wgetsudo apt install -y git curl wget build-essential这里我建议顺手把screen或tmux也装上后面调试 OpenClaw 进程时会非常有用sudo apt install -y screen tmux做完这些服务器环境就基本就绪了。补一句不要在这个阶段安装 PythonOpenClaw 安装脚本会创建独立虚拟环境并自动拉取合适的 Python 版本你自己手动装的 Python 反而可能因为路径优先级问题干扰它。3. 一键部署 OpenClaw脚本跑完不等于部署完一键部署四个字最容易给人制造幻觉以为敲一条命令回车剩下的事程序自己办。实际上脚本只是把程序本体、依赖和初始配置做了快速铺设真正能用还差好几步人工确认。3.1 官方一键脚本的执行过程解析OpenClaw 官方仓库提供了一条标准安装命令大致逻辑是curl -fsSL https://raw.githubusercontent.com/OpenClaw/.../install.sh | bash这条命令先用 curl 拉取安装脚本然后以当前用户身份执行。脚本会依次做这些事检查操作系统类型和架构确认是 x86_64 还是 ARM64。检查 curl、git 等基础命令是否存在缺了直接报错并提示先安装。创建 OpenClaw 的安装目录通常在~/openclaw或/opt/openclaw取决于脚本版本和系统权限。创建 Python 虚拟环境并在虚拟环境内安装核心依赖。生成默认配置文件模板默认是 YAML 格式里面包含 Agent、Channel、模型等空配置。启动服务或者提示你手动启动。整个脚本跑完一般需要 5 到 10 分钟视网络状况和机器配置而定。如果你在华为云上跑国内网络访问 GitHub 偶尔会抽风脚本卡住时不要慌先看具体卡在哪一步。3.2 脚本跑完之后必须手动检查的四个地方脚本提示 Installation completed 不等于万事大吉。我会在第一次启动之前按下面这个清单逐项检查配置文件是否生成配置文件路径通常是~/.openclaw/config.yml或安装目录下的config.yml。打开看一眼确认里面有固定的模型和 Channel 区块而不是空文件。虚拟环境是否可执行找到安装目录里的虚拟环境手动执行bin/python --version确认版本在 3.10 以上。端口占用情况用sudo netstat -tlnp或ss -tlnp查看服务默认端口是否被别的程序占用。华为云镜像偶尔会自带 Nginx 或别的 Web 服务直接占用 80 或 3000 端口。服务进程是否已启动很多安装脚本最后一步只是提示你启动不会真的起后台服务。用ps aux | grep openclaw看看有没有进程在跑。这四步里任何一步异常都先处理完再进入下一步别带着病根往下推。3.3 手动安装路径脚本失败时使用脚本失败最常见的三个原因网络拉取超时、系统依赖版本太旧、文件权限不足。脚本失败时我的兜底方案是手动克隆仓库再安装过程并不复杂。cd ~ git clone https://github.com/你的仓库地址/openclaw.git cd openclaw python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt cp config.example.yml config.yml python main.py --config config.yml这段代码适合对命令行有一定基础的读者。如果你是第一次部署建议优先解决脚本本身的问题比如把 GitHub 的下载连接换成镜像源而不是直接跳到手动安装因为手动安装需要你自己处理更多环境变量和依赖细节。3.4 验证 OpenClaw 进程是否真正存活有的同学看到started successfully就关了终端结果下次想用的时候发现服务早断了。原因是这类启动方式默认绑定当前终端会话终端一关进程收到 SIGHUP 信号就退出。正确做法是用screen或tmux让进程脱离终端screen -S openclaw python main.py --config config.yml # 然后按 CtrlA 再按 D 分离会话之后用screen -r openclaw就能回到那个终端窗口查看日志。想看进程是否存活直接执行curl -s http://localhost:3000/api/health如果返回 JSON 格式的ok或类似状态说明服务本体活着。这一步是后面所有调试工作的前提——服务没起来配什么都没用。4. Skills 的安装与启用这是喂饭重点中的重点Skills 是 OpenClaw 的灵魂也是社区提问频率最高的部分。我见过太多人把仓库 clone 下来放在目录里然后问为什么 Agent 就是不调用答案很简单只放文件不算启用你的 Agent 在配置层面可能根本不知道这些文件存在。4.1 Skills 仓库与目录结构先搞清楚往哪里放OpenClaw 对 Skills 的目录约定相对固定。正常情况下安装目录下会有一个skills/文件夹里面每个 Skill 单独一个子目录。一个标准 Skill 目录包含这些内容skills/ └── web-search/ ├── SKILL.md # 技能说明文件Agent 通过它理解这个 Skill 怎么用 ├── main.py # 实际执行的逻辑脚本 └── requirements.txt # 该 Skill 额外的 Python 依赖SKILL.md是最重要的文件。Agent 在运行时通过解析这个文件来了解什么时候该用我的这个技能、怎么用、参数是什么。如果你从社区下载的 Skills 包里没有SKILL.md大概率是下载错了仓库或者作者没按规范写。社区里常说的 two-sentence 类型 prompt、meta prompt其实都会映射到这个文件里。一个高质量的 SKILL.md 会写清楚技能名称、触发条件、调用入口、输出格式。这个文件写的越清晰Agent 在运行过程中想到用这个技能的概率就越高。4.2 从 GitHub 拉取社区 Skills 的标准操作社区常用的 Skills 源网站和仓库有很多一些是官方维护的一些是开发者在自己的账号下分享的。下载时我建议用git clone而不是直接下载压缩包因为后续你随时git pull就能同步更新。cd ~/openclaw/skills git clone https://github.com/用户名/技能仓库.git如果你从 GitHub 拉取困难考虑用代理镜像或手动转存到 Gitee 再 clone。不要嫌麻烦一次把这些仓库拉下来后面省心很多。下载完成后检查一下每层目录确保技能文件不是被套在双层文件夹里。常见错误是拉下来之后路径变成skills/仓库名/技能名/但技能文件实际在skills/技能名/下才被识别。通常的做法是把内层技能目录整体移到skills/下。4.3 在配置里注册 Skills只有放目录里不算启用把目录放好只完成了一半。打开 OpenClaw 的配置文件config.yml在 Agent 或 Skills 区块确认是否有类似于下面的配置skills: enabled: - web-search - image-generation path: ./skillspath指向技能的根目录enabled列表里列出的名字要和 Skills 目录下的文件夹名一一对应。注意大小写Linux 是区分大小写的Web-Search和web-search是两个不同的目录名写错了就会被静默跳过。这一步是最容易被忽略的。很多人以为放进去就自动扫描了实际上 OpenClaw 出于安全考虑默认不会自动加载未注册的 Skills。每个 Skill 都意味着工具调用权限能执行命令、访问文件、联网这种能力默认不能执行配置声明只是信任的第一步。4.4 测试一个 Skill 是否真的生效配置修改完成后必须重启 OpenClaw 进程让配置重新加载# 如果你用的是 screen 方式 # 先回到会话CtrlC 停掉再重新启动测试 Skill 是否生效时不要一上来就问复杂问题。用最简单、最容易触发目标技能的自然语言请求比如测试网页搜索技能就直接说帮我搜索华为云开发者社区关于 OpenClaw 的教程。然后观察日志。OpenClaw 在调用 Skill 时会把调用了哪个 Skill、参数是什么、返回结果是什么写入日志。看到日志里出现技能名称说明启用成功如果日志里 Agent 直接用自己的知识回答没调用任何技能说明配置可能没生效回到第 4.3 节逐项检查。调试过程中用--debug参数启动 OpenClaw 会让日志多很多细节查问题效率高得多。另外提醒一句重组 config 后记得备份。cp config.yml config.yml.bak一行命令的事能在你把配置改崩之后帮你省下至少两个小时。5. Channel 接入与 Agent 实例配置让它能跟你对话OpenClaw 装好、技能配好但如果没有接通消息渠道Channel它就只能是个待在服务器上的逻辑引擎你没法在日常用的工具里叫它。这一节讲消息渠道的接入。5.1 Channel 与 Agent 的关系消息从哪来任务就往哪去OpenClaw 的架构里Agent 是大脑Channel 是感官。飞书、Teams、Discord、邮件等都属于 Channel。一个 Agent 可以同时接入多个 Channel用户在哪个渠道里发消息消息就通过对应 Channel 进入 AgentAgent 处理完再把结果沿同一条路返回。屏蔽掉无关细节核心配置模式是这样channels: feishu: enabled: true app_id: 你的应用ID app_secret: 你的应用密钥 microsoft_teams: enabled: true tenant_id: 你的租户ID client_id: 你的应用ID client_secret: 你的应用密钥你需要在飞书开放平台或 Microsoft Entra 后台分别创建应用拿到对应的凭证。这一步对没接触过 app 创建的同学来说比较绕我的建议是创建一个应用并不难难的是分清这些 ID 各自的用途。宁可多花 10 分钟把官方文档中对每个 ID 的说明看一遍也不要凭感觉复制粘贴。5.2 接入飞书/Teams 的常见坑飞书接入时最常见的坑是没有配置事件订阅或机器人能力导致 OpenClaw 能发消息但收不到用户消息。在飞书开放平台对应应用里必须启用机器人能力并在事件订阅中添加im.message.receive_v1事件。同时回调地址要填https://你的域名或IP:3000/feishu/callback之类的公网地址。Teams 的坑更多。你在 Entra 后台创建应用后还要在身份验证那里将平台配置为Web并把重定向 URI 填成 OpenClaw 回调地址再在API 权限中申请Chat.ReadWrite和ChatMessage.Send。新手通常在权限上卡住OpenClaw 报 403 错误就是权限没给全。网上有个流传的误区以为只要填了 App ID 就能用其实 Teams 的多租户访问、重定向 URI、证书密码任何一个环节漏了它都连不上。我当时第一次接 Teams 花了整个下午一条条排查最后发现只是重定向 URI 少了个斜杠。5.3 用千问等模型配置时的模型名与密钥问题按热词的关注度来看配置千问模型做 Agent 推理后端的人非常多。在 config.yml 的模型配置区把 provider 指向对应的 OpenAI 兼容接口再填入 API Keyllm: provider: openai_compatible # 或具体的云端模型平台 base_url: https://千问接口地址/v1 api_key: 你的API_KEY model: qwen-plus # 具体模型名别填成公司名这里最容易犯的错是模型名不准确。千问系列模型分qwen-plus、qwen-turbo、qwen-max等不同能力不同价格接口文档里写得很明白。填错模型名OpenClaw 启动时不报错但一调用就返回 400 或 404很多人以为是 API 欠费。Agent 层面建议在配置里限制默认的回复风格和任务边界。自定义 system prompt 是我每次部署都会做的事让 Agent 开口就是干练的工程口吻比默认的万能助手实用得多。6. 高频报错速查session file locked 等三个最常见的坑这个部分直接把社区最有名的几个报错摆出来。我自己被这些坑折磨过所以每一处都附上排查链路。6.1 session file locked 的根因与处理报错原文是agent failed before reply: session file locked (timeout 60000ms)第一次看到这条报错时我以为是权限问题检查了一遍文件所有者、改权限、重新安装全都没用。后来才搞明白这是 OpenClaw 在多个进程同时访问同一个 session 文件时出现的文件锁超时。最常见的触发场景是你用screen启动了一个实例又手动或在另一个终端里启动了一个实例两个进程同时锁定了同一个 session。处理链路ps aux | grep openclaw看是否多个进程并存是则全部 kill。找到 session 文件目录一般是~/.openclaw/sessions/删除对应.lock或.session.lock文件。确认只有一个 OpenClaw 主进程在运行后再启动。如果用了进程管理工具比如 systemd检查是否有重复的 service 实例在跑。这类问题本质上是你自己操作造成的双开根因不是 OpenClaw 有 bug而是并发控制逻辑就这么设计的。它不希望你同时用两套话术控制同一个 Agent。6.2 输出被截断问题飞书等渠道配置飞书时消息限制比较严格超长回复会被截断或发送失败。这不是 OpenClaw 的锅是飞书消息接口的长度上限问题。我的处理方案是双管齐下在 Agent 配置里设置 max_tokens控制单条回复量不要超过 1500 token。把内容格式化输出让 Agent 在长回复时走摘要分条列表的结构减少一次性输出的长度。这个优化同时还能提升人类阅读体验——Agent 一开口就是三段式论文其实是大多数人最想避免的。6.3 密钥/Token 配置不生效的排查顺序我明明填了正确的 Token 为什么授权失败这个问题的排查顺序按概率降序是配置里填错了环境变量OpenClaw 的环境变量名大小写敏感复制时漏了前缀或逗号白屏半天。token 有换行符或空格粘贴时带进来的隐藏字符。解决方式是sed -i s/ //g config.yml先把空格清了再试。端口或回调地址不是公网可达Token 校验通常需要回调验证本地 localhost 永远验不过。权限配置了但没等待生效飞书和 Teams 的应用权限修改后需要几分钟到几小时同步。排查顺序为什么重要因为跳步是最浪费时间的。很多人权限没配好就去怪 OpenClaw翻代码翻到凌晨三点最后发现是公网回调压根没通。遇到授权类报错先检查网络可达性再检查隐蔽字符最后才是程序本身。7. 让它能持续跑下去的几条运维经验部署完之后你大概率不是坐在服务器旁边盯着屏幕用而是希望这个 Agent 每天安静地在后台干活。最后一个部分分享几条我对生产环境的运维经验。7.1 systemd 守护进程配置虽然前面教了screen启动方式但那只是开局调试用的应急办法。想让 OpenClaw 像常规服务一样开机自启、崩了自动拉起标准做法是写一个 systemd 服务单元sudo nano /etc/systemd/system/openclaw.service文件内容如下[Unit] DescriptionOpenClaw Agent Service Afternetwork.target [Service] Userubuntu WorkingDirectory/home/ubuntu/openclaw ExecStart/home/ubuntu/openclaw/.venv/bin/python main.py --config config.yml Restartalways RestartSec10 [Install] WantedBymulti-user.target保存后执行sudo systemctl daemon-reload sudo systemctl enable openclaw.service sudo systemctl start openclaw.service这里面User要填运行 OpenClaw 的账号不要用 root 跑 Agent权限过大风险太高。Restartalways是灵魂配置进程崩了十秒钟内自动拉起这是 screen 方案做不到的稳定性保障。查看服务状态和日志sudo systemctl status openclaw sudo journalctl -u openclaw -f以后不再需要登录服务器手动管理进程了服务一直存活用journalctl便捷查日志体验好得多。7.2 定时备份 skills 与配置目录配置文件和 Skills 是你最宝贵的资产服务器本身随时可能出故障磁盘损坏、误删、被入侵但配置文件和 Skills 丢了等于 Agent 智商清零。我习惯用crontab做每日定时备份crontab -e添加这样一行0 3 * * * tar -czf /home/ubuntu/backup/openclaw_$(date \%F).tar.gz -C /home/ubuntu openclaw/skills config.yml sessions这样每天凌晨三点把 skills、配置文件、sessions 会话记录打成 tar 包保留着七天内的备份。等累计多了可以配合find /home/ubuntu/backup -mtime 7 -delete自动清理旧包。这套方案不比任何商业备份工具差胜在干净利落。Cloud 服务器上如果你用的华为云 OBS也可以把备份包同步上传到 OBS 桶里异地容灾更稳。热词里正好有人搜华为云 OBS不难理解为什么——跨节点备份这东西没遇到灾难时觉得多余遇到一次就知道值了。7.3 我个人的几条使用感悟写了这么多最后说点虚的。OpenClaw 这个东西能力上限完全取决于你对两个层级的理解模型层和工具层。模型层决定它想得有多清楚工具层主要是 Skills决定它能办多少事。很多用户抱怨 Agent 笨实际是 Skills 没配好或者配了但 Agent 路径里没有对应的触发逻辑还有一部分用户抱怨模型反应空泛其实是 prompt 和 system context 没有调教到位。我现在日常工作里已经把 OpenClaw 当成了一个真正的员工在用人——上午让它整理邮件、归纳事项下午让它跑数据处理脚本、生成图表晚上让它做信息聚合。它不会累不会漏只要你一开始把规则定清楚。这才是部署一个 Agent 平台最真实的收益。最后再分享一个我踩过很多次才形成的习惯每次改动配置文件之前先复制一份带日期的备份。这个习惯坚持下来比任何教程里的高级技巧都有用。OpenClaw 的配置语法在持续演进官方仓库版本更新以后旧配置偶尔会冒出兼容性问题而有了备份你能在五分钟内回到上一个能用状态而不是面对一堆陌生报错从头查起。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询