我先把话放前面:如果你手里恰好有一台腾讯云轻量服务器,又一直想跑一个真正“长脑子”的 AI 智能体,OpenClaw 值得你花一个下午折腾一遍。它前身叫 Clawdbot,在 2026 年这个节点已经迭代到 2.x 时代,不只是一个聊天机器人壳子,更接近一个能自己规划任务、调工具、带长期记忆的自动化代理框架。这篇文章不搞虚的,把我从零部署到接入微信、再到让它自动处理日常任务的完整过程拆开揉碎讲清楚,包括你大概率会踩的坑和怎么绕开。
腾讯云在这套方案里承担的角色也比较有意思:大陆服务器不用考虑额外配置问题,OpenClaw 的模型请求走的是兼容 OpenAI 协议的国内大模型网关或自建模型服务,所以整个链路是通顺的。文中涉及的操作均基于 Ubuntu 22.04 系统,轻量应用服务器和云服务器 CVM 通用,我尽量把每一步写细,让你照着做就能跑起来。
1. 部署前必须想明白的几件事
1.1 OpenClaw 究竟是个什么东西
很多人把它和传统的 QQ 机器人框架或者 ChatGPT 套壳混为一谈,这个认知偏差会在后续配置里坑到你。OpenClaw 的本质是一个自主智能体运行时,核心模块包括 Planner(任务分解)、Executor(工具调用)、Memory(记忆管理)和 Channel(多渠道接入)。它和普通聊天机器人的最大区别在于:它不是为了“陪你聊天”设计的,而是为了“替你干活”设计的。
举个具体例子。你给它一句“每天上午十点检查我的服务器磁盘占用,如果超过 80% 就调用腾讯云 API 创建快照并推送通知到微信”,OpenClaw 会拆解成三个任务:定时触发、执行检查、条件判断与调用云 API。这个过程里每一步都可能调用不同的工具,而 Clawdbot 这个名字背后的血统,就来自早期开发者对“一个 Agent 用自然语言操作电脑”的执念。
判断它适不适合你,就看三点:第一,你有没有重复性的数字劳动想自动化;第二,你能否接受初期调试成本,毕竟它不是一个开箱即用的聊天软件;第三,你愿意不愿意为它准备一个长期运行的云服务器环境。如果三个答案都是肯定的,那继续往下看。
1.2 2026 年版本的关键变化
我是在 v2.0 发布后不久才开始重度使用的,这个时间点很关键,因为 2.x 版本进行了一次架构大改,把原来单体插件系统换成了 Skill 生态,同时引入 Active Memory(主动记忆)机制。网络热词里能看到“OpenClaw active memory高阶指南”和“OpenClaw skill”这些搜索词,说明大家已经开始关心这类高阶特性了。
最直观的变化是配置文件格式。老版本用的是单一 clawdbot.yaml 做全局配置,2.0 开始拆分为 config.yaml、memory.yaml、channels.yaml、skills.yaml 四个文件,每个模块独立管理。第一次迁移的人通常会找不到原来的配置项在哪,所以网上才有那么多报错帖子。另一个大改动是默认工作目录从执行目录改成了 ~/.openclaw/workspace,所有 Agent 生成的临时文件、下载的资源、脚本输出都被收纳到这里,方便统一清理和备份,这个设计其实很贴近真实服务器管理习惯。
还有一点值得提:2.0 之后默认模型能力要求提高,官方推荐至少使用支持 Function Calling 的模型,不再建议用纯文本模型硬跑。很多人遇到的“agent failed before reply: unknown model”这类报错,根源就在于模型列表配置和实际加载的模型对不上。
1.3 腾讯云用作部署平台的选型逻辑
腾讯云在个人开发者和中小企业群体里的热度一直很高,核心原因是轻量应用服务器性价比高、续费稳定,而且控制台的防火墙规则对新手友好。OpenClaw 这类常驻型服务不需要强劲 GPU,因为它只做任务编排和工具调用,真正的推理发生在云端模型 API。所以你别被“AI 部署”这个词吓到,一台 2 核 4G 的轻量服务器就绰绰有余。
但我强烈不建议用最低配的 1 核 2G。OpenClaw 运行后 Node.js 进程常驻内存约 300MB 左右,如果还挂了 Chromium 做网页访问工具,内存很快会吃紧。2 核 4G 属于舒适区,如果计划接入多个渠道或者让 Agent 处理比较重的文件操作,直接上 4 核 8G 更省心。地域选择上,如果你主要在国内使用、模型 API 也走国内网关,选上海或广州地域的延迟体感最好;主要面向海外用户的话再考虑新加坡或硅谷,别无脑选首尔,之前实测线路稳定性一般。
1.4 需要提前准备的三样东西
正式开工前,你手头至少要备齐这些:一台腾讯云服务器(系统选 Ubuntu 22.04 LTS,别选 CentOS,后面一堆依赖会装到你怀疑人生)、一个拥有 API 访问权限的大模型服务密钥(OpenClaw 支持 OpenAI 兼容协议,国内可用 DeepSeek、智谱、MiniMax 等网关)、一个用来接收消息通知的渠道账号。
渠道账号这块需要特别说明。很多人一上来就想接微信个人号,先泼盆冷水:个人微信接入属于灰色地带,Web 协议极不稳定,腾讯官方会风控。OpenClaw 官方稳定支持的是企业微信、钉钉、Slack 和 Telegram。如果你只是自己用,推荐走企业微信自建应用,个人注册免费,且消息推送到手机微信客户端体验和私聊几乎一样。我在测试阶段使用企业微信,稳定运行一个多月没有掉过链子。个人微信登录的方案网上有第三方 hook,风险自己评估,跑生产环境不建议碰。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 腾讯云服务器的初始化与基础环境搭建
2.1 服务器购买与登录准备
购买流程简单过一遍:登录腾讯云控制台,在轻量应用服务器界面点新建,地域选离你最近的城市,镜像选 Ubuntu 22.04 LTS,套餐选 2 核 4G 或以上,带宽选 4Mbps 起步(安装依赖包时太窄会很痛苦),设置好 root 密码或者密钥登录。如果只是测试,按量计费比包年划算,跑完就销毁也不心疼。
拿到公网 IP 后,我习惯第一时间做两件事:更新系统源和创建普通用户。很多人图省事一直用 root 跑服务,一旦应用被入侵,攻击者拿到的也是 root 权限,风险太大。OpenClaw 官方虽然没强制,但安全习惯不能丢。
bash复制ssh root@你的服务器IP
apt update && apt upgrade -y
adduser claw
usermod -aG sudo claw
su - claw
后续所有操作我都建议在 claw 用户下进行,如果遇到权限不足就加 sudo,不要直接切回 root。这一步能帮你避开很多权限混乱问题,比如后面 OpenClaw 的配置文件和日志目录归属于 root,导致普通用户无法正常写入,这类问题在排查帖里出现的频率非常高。
2.2 Docker 与 Compose 插件安装
OpenClaw 官方提供三种安装方式:原生 npm 安装、Docker 容器部署、一键脚本安装。在云服务器上我首推 Docker 方式,原因有三个:环境隔离干净,卸载时不会在系统里残留一堆 Node 模块;升级版本只需拉新镜像,回滚也方便;日志管理通过 docker logs 统一查看,比翻文件省事。
安装 Docker 本身不难,难的是让国内服务器顺利拉取镜像。Docker Hub 的官方源在国内访问不稳定,这是每个大陆服务器用户都会遇到的问题,需要配置镜像加速器。腾讯云控制台里的容器镜像服务提供了专属加速地址,每个账号一个,用起来最省心。
bash复制sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update && sudo apt install -y docker-ce
# 配置腾讯云镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
EOF
sudo systemctl daemon-reload && sudo systemctl restart docker
装完验证一下:sudo docker run hello-world 能正常输出就说明 Docker 工作正常。如果这一步就报网络超时,先检查服务器安全组和防火墙是否放行了 80、443 和所需端口。这是新手最容易忽略的环节,后面单独开一节细讲。
2.3 Docker Compose 配置与目录规划
新版 Docker 已经把 Compose 集成成了子命令 docker compose,不需要单独安装二进制(老版本插件叫 docker-compose,中间有个横杠,命令写法也略不同)。我用 Docker Compose 来编排 OpenClaw 和它的附属服务,比裸 docker run 更清晰。
规划目录结构时,建议把 OpenClaw 的数据目录独立出来挂载到宿主机,否则容器一删,配置和聊天历史全没了。我的标准布局如下:
bash复制mkdir -p ~/openclaw/{config,data,logs,workspace}
cd ~/openclaw
config 目录放四个 yaml 配置文件,data 放记忆向量库和数据库文件,logs 挂载容器日志,workspace 对应 Agent 的工作目录。这样后续备份或者迁移服务器,只需要打包这个目录,整体搬运即可,不用一个个文件去找。
2.4 防火墙与安全组完整开放策略
“腾讯云如何开放所有端口”这个热搜词我看到了,在这里必须认真劝一句:不要开放所有端口。这是云服务器被入侵的最快途径,没有之一。腾讯云有两层网络控制:控制台里的防火墙规则(轻量)或安全组(CVM)和服务器内部的 ufw/iptables。两层都要放行需要的端口才行。
OpenClaw 默认 Web 管理面板跑在 3000 端口,API 服务走 3001,如果你还计划暴露其他附属服务,需要按需添加规则。在腾讯云轻量控制台的操作路径是:实例详情页 -> 防火墙 -> 添加规则 -> 应用类型选自定义,TCP 端口填 3000,来源填 0.0.0.0/0(仅限测试环境)。生产环境建议来源填你家里的公网 IP,别图省事全放通。
服务器内部的 ufw 配置与之对应:
bash复制sudo ufw allow OpenSSH
sudo ufw allow 3000/tcp
sudo ufw allow 3001/tcp
sudo ufw enable
有个小坑你要有预期:Docker 容器使用 bridge 网络时,内部端口映射到宿主机后,ufw 默认策略可能不放行 docker 的 FORWARD 链流量。如果你发现控制台端口放行了、宿主机端口也监听了,但外部就是访问不了,大概率是这个原因。临时解法是 sudo ufw allow in on docker0,治本方案是把容器网络改成 host 模式(但不推荐,会损失端口隔离)。这个问题我在后面排查章节会详细演示判断过程。
2.5 域名解析与 HTTPS 证书申请
直接用 IP 访问管理面板不是不行,但 OpenClaw 很多能力依赖浏览器 API,比如剪贴板读取、OAuth 回调,浏览器对这些 API 有限制,非 HTTPS 环境下部分功能会被禁用。所以有域名的话尽量配上。
域名解析操作不复杂:在腾讯云 DNSPod 控制台给域名添加一条 A 记录,主机记录填你想要的二级域名前缀,记录值填服务器公网 IP。TTL 保持默认 600 秒即可。比如你把 agent.example.com 解析到服务器,等全球 DNS 生效(通常几分钟到几小时)就可以接着申请证书。
我用 acme.sh 申请 Let‘s Encrypt 证书,免费且支持自动续期,比手动上传证书省心得多。安装过程如下:
bash复制curl https://get.acme.sh | sh
~/.acme.sh/acme.sh --set-default-ca --server letsencrypt
~/.acme.sh/acme.sh --issue -d agent.example.com --webroot /home/claw/www
在证书申请前先创建一个临时目录,否则 webroot 校验会失败。当然如果你已经能用 Nginx/Caddy 反代域名,也可以直接走 standalone 模式申请,但那样需要临时停掉占用 80 端口的服务。我的做法是直接用 Caddy 做反向代理,它会自动申请和续期证书,配置文件极其精简:
code复制agent.example.com {
reverse_proxy localhost:3000
}
Caddy 自动搞定 HTTPS,省掉手工维护证书的负担。如果你是第一次用 Caddy,记住它的配置默认在 /etc/caddy/Caddyfile,改完执行 systemctl reload caddy 生效,不用重启。这个方案我已用了很久,稳定性相当好。
3. OpenClaw 核心部署流程实操
3.1 配置文件体系详解与最小可用配置
OpenClaw 2.x 的配置采用 YAML 格式,四个主文件各司其职。新手最常见的错误是试图把所有配置堆在 config.yaml 里,结果 OpenClaw 启动时根本不读,报错信息也不明确。我一开始也被这问题卡了两个小时,后来翻官方文档才确认 2.0 的配置加载顺序。
先看 config.yaml,这是全局配置文件,包含 Agent 名称、默认语言、最大执行步数等基础参数。一个最小可用的例子:
yaml复制agent:
name: "my-agent"
language: "zh-CN"
max_steps: 20
default_timeout: 60
model:
provider: "openai-compatible"
base_url: "https://api.deepseek.com/v1"
api_key_env: "DEEPSEEK_API_KEY"
default_model: "deepseek-chat"
temperature: 0.7
workspace:
path: "/home/claw/openclaw/workspace"
max_file_size_mb: 50
这里有一个设计细节值得留意:api_key_env 指向的是环境变量名,而不是直接填写密钥明文。这样做的目的是避免密钥硬编码进配置文件,防止仓库泄露时连带密钥暴露。你在 shell 里执行 export DEEPSEEK_API_KEY=sk-xxxx,然后在启动 OpenClaw 前确保这个环境变量存在即可。如果是通过 Docker 部署,可以写在 compose 文件的 environment 里,或者用 Docker Secret 管理。
channels.yaml 负责消息渠道接入。每个渠道一个配置块,下面是企业微信的接入示例:
yaml复制wecom:
enabled: true
corp_id: "ww1234567890abcdef"
agent_id: "1000002"
secret: "your-app-secret"
callback_url: "https://agent.example.com/wecom/callback"
token: "random-token-string"
encoding_aes_key: "random-43-char-key"
企业微信的配置字段看起来多,其实每一个都能在管理后台找到对应项。第一次配置时最容易被坑的是回调 URL,必须填写外网可访问的 HTTPS 地址,不能填 IP。另外 Token 和 EncodingAESKey 是你自己生成的随机字符串,需要与企微后台保持一致,改一处就收不到消息。
3.2 使用 Docker Compose 启动服务的完整步骤
确定好配置后,创建 docker-compose.yml。我习惯把 OpenClaw 主服务和 Caddy 反代写在一个 compose 文件里,这样一条命令就能拉起整个环境。如果只想先跑通 OpenClaw,可以暂时不管 Caddy,直接用 IP 加端口访问。
yaml复制version: "3.8"
services:
openclaw:
image: openclaw/openclaw:latest
container_name: openclaw
restart: unless-stopped
ports:
- "3000:3000"
- "3001:3001"
environment:
- DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}
- TZ=Asia/Shanghai
volumes:
- ./config:/home/claw/.openclaw
- ./data:/home/claw/.openclaw/data
- ./logs:/home/claw/.openclaw/logs
- ./workspace:/home/claw/.openclaw/workspace
extra_hosts:
- "host.docker.internal:host-gateway"
caddy:
image: caddy:2
container_name: caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
depends_on:
- openclaw
volumes:
caddy_data:
caddy_config:
这里注意镜像的版本标签,我写的是 latest,但生产环境推荐锁定具体版本号,比如 openclaw/openclaw:2.1.3。原因很简单:AI Agent 项目迭代速度极快,每个版本都可能改配置结构,今天跑得好好的配置,明天拉个新镜像可能就启动失败。锁定版本保证可复现性,等确认新版本兼容后再手动升级。
启动前把环境变量写入 .env 文件:
bash复制echo "DEEPSEEK_API_KEY=sk-xxxx" > ~/openclaw/.env
然后在 ~/openclaw 目录下执行:
bash复制docker compose up -d
docker compose logs -f openclaw
第一次启动会拉取镜像,耗时取决于网络状况,腾讯云内网拉取官方镜像一般几分钟内完成。看到日志输出 OpenClaw agent is ready 之类的字样,说明主服务起来了。这时候访问 http://服务器IP:3000,应该能看到管理面板的登录页。
3.3 验证 Agent 是否真正可用的两种途径
管理面板能打开不代表 Agent 能正常干活,还需要验证模型调用链路。首选验证方式是面板内的对话框直接发消息。如果返回正常回复,说明模型 API 密钥配置正确,基础链路通了。
第二种验证方式是命令行发送测试消息。在面板还没完全配置好时,用命令行验证更直接:
bash复制docker exec -it openclaw openclaw send "你好,请回复'OpenClaw 部署成功'"
看到 Agent 回复预期内容,就说明 Planner 和模型服务都工作正常。如果这条命令报错 unknown model,十有八九是 config.yaml 中的模型名和 API 服务商实际支持的模型名不匹配。比如 DeepSeek 的模型名是 deepseek-chat,你填成 deepseek-v2 就会挂,去官方文档查一下正确的模型标识即可。
还有一个非常隐蔽的问题:某些兼容 OpenAI 协议的网关要求请求头里带 project 或 organization 字段,否则返回 401。OpenClaw 的配置里未必有对应的直接字段,但可以通过环境变量透传解决。如果你拿到的报错信息提示鉴权失败,而密钥明明是对的,就往这个方向查。我自己在接入某个服务商时就栽在这上面,后来翻源码才发现它读取的是 OPENAI_ORG_ID,补上就通了。
3.4 基于 Workspace 机制的目录持久化与备份策略
前面规划目录结构时,我把 workspace 单独挂载了出来,这步的实际好处,等你让 Agent 第一次生成文件、执行脚本后就会有体感。OpenClaw 的 Agent 在执行任务时会产生大量中间文件——下载的临时资源、生成的报告、代码片段、CSV 结果集——这些全部堆积在 workspace 里。如果目录没持久化到宿主机,容器重建一次,Agent 就彻底失忆了。
更重要的原因是 Active Memory 机制的底层依赖。OpenClaw 的长期记忆不是简单存聊天记录,而是把重要信息向量化后存入本地向量库,向量库文件、索引文件都在 data 目录下。不持久化 data 目录,等于每次重启都做一次脑前额叶切除手术。
我的备份策略很朴素:每天凌晨用 cron 执行一次增量打包,保留最近 7 天的备份文件。不搞花哨的远程备份,先保证本地有副本,后续再考虑同步到腾讯云 COS。命令如下:
bash复制#!/bin/bash
BACKUP_DIR="/home/claw/backups"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
tar -czf "$BACKUP_DIR/openclaw_$TIMESTAMP.tar.gz" \
-C /home/claw openclaw/config \
-C /home/claw openclaw/data \
-C /home/claw openclaw/workspace
find "$BACKUP_DIR" -name "*.tar.gz" -mtime +7 -delete
如果你打算长期认真使用 OpenClaw,建议从第一天就养成每日备份的习惯。等你积累了几个月的工作记忆、技能库、渠道配置后,这些数据会越来越宝贵,丢失的代价远高于维护备份的成本。
4. 多模型接入、渠道打通与技能扩展
4.1 让 OpenClaw 同时使用多个模型的配置思路
OpenClaw 一个很实用的特性是支持多模型并行管理。不是简单地在配置里写多个模型,而是可以为不同场景指定不同模型。比如日常对话用 DeepSeek 兼顾速度与成本,复杂任务推理用更大的模型,记忆归纳压缩用便宜的小模型。这种分工策略在 2.x 版本里通过 Model Profile 机制实现。
在 config.yaml 里定义多个模型段,然后在 Skill 或 Channel 配置中按需引用:
yaml复制model_profiles:
fast:
provider: "openai-compatible"
base_url: "https://api.deepseek.com/v1"
default_model: "deepseek-chat"
temperature: 0.3
smart:
provider: "openai-compatible"
base_url: "https://api.minimax.io/v1"
default_model: "minimax-h3"
temperature: 0.5
然后在 Skills 的配置文件里指定需要使用的 profile 名称,或者让 Agent 根据任务类型自动路由。热搜词里有“openclaw 多模型”“minimax h3 本地部署”,说明不少人已经在往这个方向折腾了。我个人的建议是:不要贪多,先配一个主力模型跑通全流程,再加入第二个模型做对比,否则出了问题你很难判断是哪条链路挂了。
本地部署模型和这个机制的配合也很有想象空间。如果你有一台带 GPU 的机器,用 Ollama 部署了 DeepSeek 蒸馏版,OpenClaw 可以通过 ollama provider 直接调用本地模型,走局域网地址,不消耗 API 费用。虽然模型能力比云端旗舰版弱,但用来处理摘要、分类、信息抽取这类结构化任务绰绰有余。用 OpenClaw 自己的话说,这是“让便宜模型干脏活,让贵模型干脑力活”。
4.2 企业微信接入的完整实战
接入渠道是 OpenClaw 从“玩具”变“工具”的分水岭。没有渠道,你只能在管理面板里跟 Agent 对话,那和使用网页版 ChatGPT 没有本质差别。接入企业微信后,Agent 才能真正融入你的工作流——在手机上随手丢个任务,它跑完把结果推回来。
企业微信接入的第一步是在管理后台创建自建应用。路径为:企业微信管理后台 -> 应用管理 -> 自建 -> 创建应用。创建后你会获得 Corp ID(企业 ID)、Agent ID(应用 ID)和 Secret(应用密钥)。这三个参数是 OpenClaw 和企微通信的凭证。
第二步配置接收消息的 API。在企业微信后台的应用详情页,找到“接收消息”设置项,填入你在 channels.yaml 里配置的 callback_url、token 和 encoding_aes_key。这里的 Token 和 EncodingAESKey 必须和配置文件完全一致。填完后点击保存,企业微信会发送一条验证请求到你填写的 URL,OpenClaw 收到后自动响应,验证通过即完成绑定。
有个经验之谈:如果你把 OpenClaw 跑在 Caddy 反代后面,回调地址必须是 https://agent.example.com/wecom/callback 这类完整路径,并且要确保 Caddy 把 /wecom/ 路径的请求转发到了 OpenClaw 容器的 3000 端口。调试这类回调问题时,最有效的办法是先看 Caddy 的访问日志,再对比 OpenClaw 的容器日志,很快就能定位是网络层问题还是应用层问题。
第三步行配置成员可见范围。在企业微信后台的应用详情里设置可见范围,只有范围内的成员才能在企微里找到这个应用并发送消息。个人使用就选你自己,团队使用再按部门添加即可。
4.3 Skill 机制:让 Agent 学会新技能的推荐路径
OpenClaw 的 Skill 相当于给 Agent 装上的新“能力包”。一个 Skill 可以是一个 Python 脚本、一段 Node.js 代码甚至一组 API 调用的描述。Skill 配置存放在 ~/.openclaw/skills 目录,每个 Skill 一个子目录,里面包含 SKILL.md(技能说明文件)和可执行文件。
SKILL.md 的重要性容易被低估。它不仅是给 Agent 看的说明书,还影响 Agent 决定“何时该调用这个技能”。一个清晰的 SKILL.md 应该写明:技能名称、适用场景、触发条件、输入参数说明、输出格式。描述得越精确,Agent 在任务规划阶段就越容易正确选择技能。
举个例子,我写了一个“腾讯云服务器巡检”技能,让 Agent 定期执行磁盘、内存、负载检查。SKILL.md 开头是这样写的:
markdown复制# 腾讯云服务器巡检
当用户要求检查服务器健康状态、磁盘空间告警或提到“巡检”时使用。
## 输入参数
- 无必填参数。可选参数: `disk_threshold`(默认80), `memory_threshold`(默认90)
## 执行步骤
1. 运行 `df -h` 检查磁盘使用率
2. 运行 `free -m` 检查内存状态
3. 运行 `uptime` 查看负载
4. 根据阈值判断是否告警
## 输出要求
以表格形式汇总各项指标,超过阈值重点标出。
Agent 收到“帮我看看服务器现在什么状态”的消息后,会判断这属于巡检任务,自动调用这个 Skill 并执行其中的命令序列,然后把结果整理成人类可读的格式。如果 SKILL.md 写得含糊,Agent 可能选择不调用技能而直接瞎编一个结果,这就失去了工具型 Agent 的意义。
安装第三方 Skill 时留个心眼:只从官方仓库或可信源下载。Skill 本质是能在你服务器上执行任意代码的脚本,来源不明的 Skill 等于把服务器钥匙交给陌生人。我之前见过有人把 Skill 打包成所谓“终身会员特惠”来兜售,里面塞了挖矿程序,安装后服务器 CPU 直接跑满。这类东西坚决不要碰。
4.4 Active Memory 的正确配置姿势
Active Memory 是比 Skill 更底层的机制,决定了 Agent 能不能记住“你是谁”“你们聊过什么”“上次那个项目进展到哪了”。2.x 版本把记忆分成了两层:短期对话上下文和长期工作记忆。长期工作记忆会自动抽取重要信息写入本地向量库,下次相关任务出现时再加载出来。
配置记忆不是简单地开关一个选项,而是选择合适的记忆提取频率和存储粒度。在 memory.yaml 中:
yaml复制active_memory:
enabled: true
extractor_model: "fast"
embedding_model: "bge-m3"
store_type: "chroma"
extraction_interval_minutes: 10
max_memory_items: 5000
relevance_threshold: 0.65
注意 embedding_model 这一项,它决定了记忆向量化的质量。如果你用云端 OpenAI 兼容接口,一般会提供 embedding 模型;如果是本地部署,用 Ollama 跑 bge-m3 效果也不错。relevance_threshold 控制检索时多相关的记忆才会被召回,设得太低会拉出一堆无关旧事干扰回答,设得太高又会导致该想起来的想不起来,0.6 到 0.7 之间是比较合理的起始值。
我实际调参的心得是:记忆问题不像代码问题那样有精确答案,需要你在使用中不断观察 Agent 的回溯效果来微调。如果你发现 Agent 经常忘记早期的约定,试着降低 threshold 或者调大 max_memory_items;如果它经常答非所问、明显受到无关旧记忆干扰,就反方向调。这个“调参—观察—再调”的循环本来就是驾驭智能体的乐趣所在。
按照热搜词里的说法,网上也有“active memory 高阶指南”这类内容,我看到后也学习了一下,确实有些案例把记忆管理玩得很细,比如按项目分区、定时压缩记忆碎片。不过作为新手,先把基础配置跑通比追求“高阶玩法”重要得多,一口吃不成胖子。
5. 常见报错与排查经验实录
5.1 安装与启动阶段的高频报错
OpenClaw 的报错信息不算友好,很多问题要靠日志逐行猜。我按出现频率整理了部署阶段最常见的几种报错,附上我的排查方式和解决路径,你按图索骥能省不少时间。
openclaw: 无法将“openclaw”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。这个报错在 Windows 本地安装时非常典型,原因很简单——没有把 OpenClaw 的安装目录加入系统 PATH,或者压根没装成功。云端部署不会遇到这个问题,因为走的是 Docker 路径。如果你非要在本地 Windows 跑,优先把 Node.js 和 npm 环境装好,然后确认 npm install -g openclaw 执行过程没有报权限错误。PowerShell 下如果遇到脚本执行策略限制,需要先 Set-ExecutionPolicy RemoteSigned 放开限制。
agent failed before reply: unknown model: deepseek... 这行报错我从热搜词里看到出现在不少人的搜索记录中。原因基本跑不出两个:配置里的模型名写错,或者该模型名在当前 API 服务商处不可用。DeepSeek 官方 API 的模型标识会在版本迭代中调整,别凭记忆填,去看一眼服务商文档里最新的模型列表。如果你是通过第三方聚合网关调用多家模型,还要确认网关侧的模型映射名和 OpenClaw 侧配置一致。
legacy exec approvals exist at /root/.openclaw/exec-approvals.json 这个提示比较冷门,但一旦遇到就很困惑。它的背景是 OpenClaw 为了安全,对 Agent 要执行的系统命令会做审批记录,首次执行某类命令会询问用户是否允许。当你从老版本升级到新版本,或者从 root 用户切换到普通用户运行时,审批文件路径不匹配就会触发这个提示。解法很简单:删除旧的审批文件让 Agent 重新生成,或者用新版本命令迁移审批记录。
5.2 网络与端口类故障的定位思路
端口不通是云服务器部署永恒的话题。判断端口是否在监听,先上服务器执行 ss -lntp | grep 3000,如果没有任何输出说明服务根本没起来,回看容器日志找启动错误;如果有监听但外部访问不了,问题在防火墙链路。
排查防火墙链路按这个顺序来:先检查腾讯云控制台的防火墙规则是否放行对应端口,再检查服务器内 ufw 状态 sudo ufw status,最后确认 Docker 端口映射没有绑定到 127.0.0.1。
有一个谁都会遇到的教训:Docker 的 ports 配置中如果你写成 127.0.0.1:3000:3000,那服务只能在服务器本机访问,外部永远连不上。别问我怎么知道的,有一次在客户环境排查了一下午,最后发现是配置里多了个回环地址前缀。如果你需要从外部访问管理面板,写成 0.0.0.0:3000:3000,或者直接 3000:3000 让 Docker 自动绑定所有网卡。
如果按流量计费的服务器突然跑出高额账单,先别慌,用腾讯云控制台的流量监控看是哪个时间段、哪个 IP 在大量进出。最常见的原因是 Agent 的某个 Skill 进入死循环,疯狂调用外部 API。给 Skill 配置超时时间和执行步数上限能有效避免这类问题,OpenClaw 的 max_steps 参数就是为了兜底这种场景。
5.3 模型调用与响应质量问题的判断方法
模型调用失败的问题通常能通过日志确认。但我更想聊的是“调用成功但回答质量差”这类更难定位的问题。比如 Agent 答非所问、逻辑混乱、或者根本没有调用该调用的工具,这类问题根源往往不在模型而在 Prompt 编排和配置细节。
首先看模型本身是否支持 Function Calling。很多本地部署的量化模型名义上支持工具调用,实际推理效果很拉胯,经常漏参数或者编造函数名。如果你发现 Agent 经常给出“我已经帮你发了邮件”这种假成功回复,而实际上什么都没发生,优先怀疑模型能力不足,换一个更强的模型试试。
再看 Temperature 参数。OpenClaw 默认 0.7 偏创造性,适合聊天,不适合任务执行。如果你是让它干活,把 temperature 降到 0.2 以下,能明显减少自由发挥的概率。任务型 Agent 需要的是稳定和精确,不是文采。我自己的配置里,所有任务执行类的 Profile 都统一用 0.1,对话类才回到 0.7。
最后检查上下文管理。OpenClaw 默认上下文窗口有限,如果对话历史太长,早期的关键信息可能被截断,Agent 自然就“失忆”了。解决办法是频繁使用记忆机制,把关键约定写进 Active Memory,而不是指望模型在长上下文中记住一切。市面上那些动不动“你的 Agent 失忆了怎么办”的帖子,八成都在让你优化记忆配置,原因就在这里。
5.4 关于备份恢复的实操演示
万一服务器真的出问题需要迁移,或者你想把现有环境复制到另一台服务器,OpenClaw 的迁移流程其实很顺畅。新服务器上装好 Docker 和 Compose,把备份的 tar 包解压到相同路径,然后执行 docker compose up -d 即可。如果数据目录里的向量库版本和镜像版本差距过大,可能需要先跑一次索引重建,OpenClaw 新版本一般会在启动时自动完成迁移。
恢复后要检查三样东西:配置里的 API 密钥环境变量是否已在新服务器设置;渠道回调地址(比如企业微信后台)是否指向了新的公网 IP 或域名;workspace 目录权限是否属于当前运行用户。这三项查完,基本就能无缝接续之前的工作状态。我的经验是迁移后先在管理面板发一条测试消息,确认模型调用正常,再恢复渠道绑定,这样能避免渠道那边一堆报错同时涌过来的时候手忙脚乱。
备份这事,平时一万次用不上,用上一次就值回票价。我做运维的朋友常说:备份不是技术问题,是习惯问题。OpenClaw 承载了你的工作流和记忆数据之后,它的价值会指数级上升,到时候你会感谢当初愿意写那几行 cron 脚本的自己。
6. 部署后的进阶之路与提效心得
6.1 从单 Agent 到多 Agent 协作的跃迁
跑通单 Agent 只是下山的第一步。OpenClaw 2.x 最让我感兴趣的能力是支持多个 Agent 实例之间的协作——可以理解为一个管规划、一个管执行、一个管审查,各自有独立的记忆和技能配置,通过消息总线互相通信。这种架构在处理复杂项目时优势很明显,比如让规划 Agent 负责拆解需求,执行 Agent 并行处理不同模块,审查 Agent 最后把关质量。
配置多 Agent 不需要额外装东西,在 config.yaml 中定义多个 Agent Profile,然后通过编排规则指定它们的协作方式。实际使用时,会让不同 Agent 对口不同渠道或不同任务域,比如工作群里的任务走一个严谨的执行 Agent,私人闲聊走一个话痨的聊天 Agent,互不干扰。
不过我要提醒的是:多 Agent 的调试复杂度不是线性增长,而是指数级增长。两个 Agent 之间互相误解指令、循环触发任务的情况我见过不少。新手没有十足把握前,先把单 Agent 的能力边界摸透,再考虑多 Agent 编排。盲目追求架构上的“高级感”,带来的往往不是效率提升,而是运维噩梦。
6.2 日常维护与健康检查自查清单
最后分享一份我每周会花十分钟过一遍的检查清单,帮你判断部署是否处于健康状态:
容器状态是否正常:docker ps 看 OpenClaw 和 Caddy 容器是否都处于 Up 状态,异常重启次数是否过高。日志是否有异常报错:docker logs --tail 200 openclaw 扫一眼最近的日志,重点关注 API 调用失败、工具执行超时字样。磁盘剩余空间是否充足:OpenClaw 的 workspace 和向量库会缓慢增长,别让数据把磁盘撑爆。内存占用是否合理:2 核 4G 的服务器跑 OpenClaw 加 Caddy,长期内存占用一般在 1.5G 到 2G 之间,如果超过 3G 就要看是不是某个 Skill 内存泄漏了。备份任务是否正常执行:随便挑一个最近的备份文件解压看看内容完整性,别等要用的时候才发现备份早就断了。
这份清单看着简单,但能坚持执行的人不多。自动化运维的终极悖论就在这里:我们部署 Agent 是为了让机器替我们干活,但维护 Agent 本身却需要持续的耐心。这也是为什么我一直强调,部署只是开始,真正的价值在使用中慢慢浮现。别急着追求完美架构,先用起来,让它解决一个你真实遇到的问题,哪怕只是每天帮你汇总天气和待办,都比空转一个高配 Agent 有价值得多。
