OpenClaw + DeepSeek + 飞书 机器人完整部署指南(避坑实录)
适合:
- 喜欢折腾的佬,喜欢原生部署的佬
- 有 VPS / 云服务器(Ubuntu / Debian / Alibaba Cloud ECS) - 配置需要大于2h2g
- 想把原生 DeepSeek 接入飞书
- 希望 OpenClaw 后台长期运行
- 不想再被 Cloudflare Tunnel / WebUI token 折磨的人
一、环境说明(本文基于真实部署)
- 云服务器:Alibaba Cloud ECS
- 系统:Ubuntu / Debian(root 用户)
- Node.js:v22.x
- 包管理器:pnpm
- OpenClaw 版本:
2026.2.9 - 模型:DeepSeek API
- 通道:飞书(WebSocket 模式)
二、基础环境准备
1. Node.js(必须 ≥ 20,推荐 22)
node -v
如果没有或版本过低,建议直接用官方方式装 22.x(略)。
2. 启用 Corepack + pnpm
corepack enable
1. corepack prepare pnpm@latest --activate
2. npm install -g pnpm(推荐)
# 1 - 2 选择一个进行运行即可
pnpm -v
重要提醒
OpenClaw 是 pnpm workspace 项目,
用 npm 会直接炸(workspace:* unsupported)
三、获取并构建 OpenClaw(源码方式)
1.创建项目目录并部署官方 OpenClaw
mkdir OpenClaw-Zens
cd ~/OpenClaw-Zens
我们直接从 GitHub 克隆官方代码,这样最纯净:
# 克隆官方项目
git clone https://github.com/openclaw/openclaw.git
cd openclaw
# 安装依赖(国内服务器建议使用淘宝镜像加速)
pnpm install --registry=https://registry.npmmirror.com
常见现象:
- 下载 1000+ 包(正常)
- 时间 3~5 分钟
- 出现
Ignored build scripts: core-js→ 可忽略
卡在 @matrix-org/matrix-sdk-crypto-nodejs 是非常典型的“国产服务器”部署痛点。
这个包是 OpenClaw 用来处理加密消息的(比如 Matrix 协议),它的安装脚本通常会尝试从 GitHub 下载预编译的二进制文件(Rust 编译的 .node 文件),或者在本地进行编译。
大概率是因为:
- 网络问题:服务器访问 GitHub Releases 太慢,下载超时。
- 内存不足:如果是 1核2G 或 2核2G 的服务器,编译这种 Rust 模块时容易把内存撑爆(OOM),导致系统假死。
ps: 一般都是内存不足的问题,多试几次可以成功,或者提升内存到2h4g,一定要耐心等待安装完成
增加 Swap 虚拟内存(推荐,解决内存不足)
很多国内轻量云服务器默认没有 Swap,编译大项目必死。我们先给服务器加 4G 虚拟内存:
# 1. 创建一个 4GB 的文件用于交换
sudo fallocate -l 4G /swapfile
# 2. 设置权限
sudo chmod 600 /swapfile
# 3. 设置交换区
sudo mkswap /swapfile
# 4. 启用交换区
sudo swapon /swapfile
# 5. 确认是否生效(看到 Swap 有值即可)
free -h
2. 构建 OpenClaw
# 在当前目录下
pnpm run build
成功标志:
- 无
error - 最后看到大量
dist/*.js - 出现
Build complete
3. 进入你的项目目录
cd ~/OpenClaw-Zens/openclaw
确认你能看到:
openclaw.mjs
pnpm-workspace.yaml
packages/
apps/
ui/
四、OpenClaw 配置文件(核心)
1. 创建配置目录
mkdir -p ~/.openclaw
推荐最终稳定配置(DeepSeek + 飞书)
飞书开放平台创建机器人
- 创建应用:
- 登录 飞书开放平台。
- 点击 “创建自定义应用”,输入名称(如:Zens-AI)和描述。
- 获取凭证(Credentials):
- 在左侧导航栏点击 “凭证与基础信息”。
- 记下这三个关键信息:
App ID、App Secret、Verification Token。
- 启用机器人能力:
- 点击 “添加应用能力” → “机器人”。
- 点击“启用机器人”按钮。
- 配置事件权限:
- 点击 “权限管理”。
- 搜索并开通以下权限:
im:message.p2p_msg:readonly(读取用户发给机器人的单聊消息)im:message.group_msg:readonly(读取群组中 @ 机器人的消息)
2. 编辑配置文件
nano ~/.openclaw/openclaw.json
!按照我的模板填入自己的信息即可
"env": {
# 这个是要填写的
"DEEPSEEK_API_KEY": "你的API Key"
},
"models": {
"providers": {
"deepseek": {
"baseUrl": "https://api.deepseek.com",
# 这个是要填写的
"apiKey": "你的API Key",
"api": "openai-completions",
"models": [
{
"id": "deepseek-chat",
"name": "DeepSeek Chat",
"reasoning": false,
"input": [
"text"
],
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 64000,
"maxTokens": 8192
},
{
"id": "deepseek-reasoner",
"name": "DeepSeek Reasoner",
"reasoning": false,
"input": [
"text"
],
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 64000,
"maxTokens": 8192
}
]
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "deepseek/deepseek-chat"
},
"models": {
"deepseek/deepseek-chat": {},
"deepseek/deepseek-reasoner": {}
},
"maxConcurrent": 4,
"subagents": {
"maxConcurrent": 8
},
"workspace": "/root/.openclaw/workspace"
}
},
"commands": {
"native": "auto",
"nativeSkills": "auto"
},
"channels": {
"feishu": {
"enabled": true,
"appId": "你的飞书App ID",
"appSecret": "你的飞书 App Secret",
"verificationToken": "你的飞书 Verification Token"
}
},
"gateway": {
"mode": "local",
"auth": {
"mode": "token",
"token": "你自己可以随便写一个(这个是登录 WebUI 的凭证)"
},
"trustedProxies": [
"127.0.0.1",
"::1"
],
"port": 18789,
"bind": "loopback",
"tailscale": {
"mode": "off",
"resetOnExit": false
}
},
"plugins": {
"entries": {
"feishu": {
"enabled": true
}
}
},
"messages": {
"ackReactionScope": "group-mentions"
}
}
操作如下
#清空全部文件
ctrl + k 快速剪切掉文件(全部删除)
#复制你填写好的信息
ctrl + shift + v
#保存
ctrl + O(英文字母‘O’)
#退出
ctrl + x
#启动你的Openclaw(当前工作目录)
cd ~/OpenClaw-Song/openclaw
node openclaw.mjs gateway
- 开启长连接(关键步骤):
- 确保你的OpenClaw正在运行
- 点击 “事件与回调” → “事件配置”。
- 将订阅方式设置为“使用长连接接收事件”。
- 这样你就不需要配置那个容易报错的 Webhook URL 了,机器人会主动连你的服务器。
- 发布应用:
- 点击 “版本管理与发布” → “创建版本”。
- 版本号填
1.0.0,详情随便写,保存并申请发布。
踩坑记录(非常重要)
提示配置文件不正确
如果你和我的配置相同,可以先关掉服务,运行
node openclaw.mjs doctor --fix
等待修复完成,再重新进行启动服务
node openclaw.mjs gateway
五、验证 DeepSeek API(关键一步)
1. 测试模型列表
curl -s https://api.deepseek.com/v1/models \
-H "Authorization: Bearer sk-你的key"
正确返回:
{
"data": [
{ "id": "deepseek-chat" },
{ "id": "deepseek-reasoner" }
]
}
如果这里 401 / 无返回 → key 或 base_url 有问题
正确启动标志
你应该看到类似:
[gateway] agent model: deepseek/deepseek-chat
[gateway] listening on ws://127.0.0.1:18789
[feishu] starting feishu[default] (mode: websocket)
[feishu] WebSocket client started
此时:
- 飞书机器人已经在线
- 给机器人发消息会有回复
六、飞书侧必要配置(否则会假在线)
飞书开发者后台 → 你的应用
1. 事件订阅
- 订阅方式:
使用长连接接收事件(WebSocket)
2. 权限(最少)
- im:message
- im:message:send
- contact:user.base(否则会报 99991672)
七、让 OpenClaw 后台长期运行(systemd)
1. 创建 systemd 服务
sudo nano /etc/systemd/system/openclaw.service
内容(亲测稳定):
[Unit]
Description=OpenClaw Gateway
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/root/OpenClaw-Song/openclaw
ExecStart=/usr/bin/node openclaw.mjs gateway
Restart=always
RestartSec=5
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
2. 启用并启动
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable openclaw
sudo systemctl start openclaw
3. 查看状态
sudo systemctl status openclaw
查看日志(排错必备)
journalctl -u openclaw -f
八、你遇到过的几个经典报错解释
Gateway start blocked: gateway.mode=local
原因:
你用了 token / auth,但没显式指定 gateway.mode
解决:
配置里必须有:
"gateway": {
"mode": "local"
}
pairing required
原因:
- WebUI / WS 没带 token
- 或你在公网(Cloudflare Tunnel)访问
本教程解决方式:
- 不用 Cloudflare Tunnel
- 只通过飞书通道交互
- WebUI 不作为核心入口
可以通过本机SSH进行远程连接,代理服务器,来实现本机访问WebUI
输入密码即可,如果密码正确不会有任何显示,直接打开浏览器访问即可http://127.0.0.1:18789/
Unknown model: openai/deepseek-chat
DeepSeek 不是 OpenAI provider
模型名必须是:
deepseek/deepseek-chat
九、最终结论
你现在可以:
- 不用管 外网WebUI
- 不用 Cloudflare Tunnel
- OpenClaw 常驻 systemd
- 飞书里直接用 AI
不推荐你做:
- 公网暴露 WebUI的(我还没搞明白Cloud Flare Tunnel ws传输协议)
- 纠结 token + Cloudflare WS
- 再折腾 pairing
总结一句话
OpenClaw + DeepSeek + 飞书 = 一个“纯后端 + 消息通道”的 AI Agent
不要强行当 Web 产品用,稳定性会直线上升。











