OpenClaw 是一个支持 WhatsApp、Telegram、Discord、iMessage 等多平台的消息网关,可连接 AI 代理(如 Pi)实现自动化聊天。本教程将指导你在 Ubuntu 22.04 服务器上完成从零到完整配置的部署。
一、服务器环境要求
1.1 最低配置
| 资源 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 1 核 | 2 核+ |
| 内存 | 2 GB | 4 GB+ |
| 磁盘 | 10 GB | 20 GB+ SSD |
| 网络 | 宽带上网 | 稳定网络 |
1.2 软件要求
- 操作系统: Ubuntu 22.04 LTS (推荐) 或 Ubuntu 20.04+
- Node.js: >= 22 (必需)
- 包管理器: npm 或 pnpm (推荐)
- 可选: Docker (用于容器化部署)
1.3 检查环境
# 检查系统版本
lsb_release -a
# 检查 Node.js 版本 (需要 >= 22)
node -v
# 如果没有 Node.js 22+,安装:
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
# 安装 pnpm (推荐)
npm install -g pnpm
二、安装 OpenClaw
2.1 方式一:使用安装脚本 (推荐)
# 下载并执行安装脚本
curl -fsSL https://openclaw.ai/install.sh | bash
安装脚本会自动:
- 下载最新版本的 OpenClaw
- 安装到全局
- 创建必要的目录结构
2.2 方式二:使用 npm 全局安装
# 使用 npm 安装
npm install -g openclaw@latest
# 或使用 pnpm
pnpm add -g openclaw@latest
2.3 方式三:从源码安装 (开发者)
# 克隆仓库
git clone https://github.com/openclaw/openclaw.git
cd openclaw
# 安装依赖
pnpm install
# 构建项目
pnpm build
# 全局安装
pnpm install -g .
2.4 验证安装
# 检查 OpenClaw 版本
openclaw --version
# 查看帮助
openclaw --help
三、初始化配置
3.1 运行引导程序
首次安装需要运行引导程序进行初始配置:
# 交互式引导 (推荐)
openclaw onboard --install-daemon
# 非交互式安装
openclaw onboard --non-interactive
引导程序会让你选择:
- Gateway 模式: 本地 (loopback) 或远程
- 认证方式:
- Anthropic API Key
- Anthropic Setup-token (Claude 订阅)
- OpenAI API Key
- Venice API Key
- 其他模型提供商
- Channel 配置: WhatsApp、Telegram、Discord 等
- 后台服务: 安装 systemd 服务 (推荐)
3.2 手动初始化 (可选)
# 仅初始化,不安装后台服务
openclaw onboard
# 仅安装后台服务
openclaw onboard --install-daemon --skip-onboarding
四、配置文件详解
4.1 配置文件路径
OpenClaw 的主配置文件位于:
~/.openclaw/openclaw.json
这是一个 JSON5 格式的文件 (支持注释和尾随逗号)。
4.2 默认配置示例
{
// Gateway 设置
gateway: {
port: 18789, // Gateway 端口
auth: {
token: "your-token" // Gateway 认证令牌
}
},
// 代理配置
agents: {
defaults: {
workspace: "~/.openclaw/workspace", // 工作目录
model: {
primary: "anthropic/claude-opus-4-5", // 默认模型
fallbacks: ["anthropic/claude-sonnet-4-5"]
}
}
},
// Channel 配置
channels: {
whatsapp: {
dmPolicy: "pairing", // 配对模式
allowFrom: [] // 白名单
}
}
}
4.3 配置文件结构
{
// Gateway 配置
gateway: {
port: number, // 端口号
auth: { token: string }, // 认证令牌
bind: string // 绑定地址
},
// 模型配置
agents: {
defaults: {
workspace: string, // 工作目录
model: {
primary: string, // 主模型
fallbacks: string[] // 备用模型
}
},
list: Agent[] // 多代理配置
},
// Channel 配置
channels: {
whatsapp: { /* ... */ },
telegram: { /* ... */ },
discord: { /* ... */ }
},
// 消息配置
messages: {
responsePrefix: string, // 回复前缀
groupChat: { /* ... */ }
},
// 日志配置
logging: {
level: string, // 日志级别
file: string // 日志文件路径
},
// 环境变量
env: {
// API keys 等
}
}
五、配置大模型
5.1 Anthropic (Claude) 配置
方式一:API Key
# 设置 API Key
export ANTHROPIC_API_KEY="sk-ant-api03-xxx"
# 或在配置文件中设置
配置示例:
{
env: {
ANTHROPIC_API_KEY: "sk-ant-api03-xxx"
},
agents: {
defaults: {
model: {
primary: "anthropic/claude-opus-4-5",
fallbacks: ["anthropic/claude-sonnet-4-5"]
}
}
}
}
方式二:Setup-token (Claude 订阅)
# 在有 Claude CLI 的机器上生成 token
claude setup-token
# 粘贴到 OpenClaw
openclaw models auth paste-token --provider anthropic
5.2 Venice AI 配置 (推荐隐私模式)
# 1. 获取 API Key: https://venice.ai/settings/api-keys
export VENICE_API_KEY="vapi_xxx"
# 2. 交互式配置
openclaw onboard --auth-choice venice-api-key
配置示例:
{
env: {
VENICE_API_KEY: "vapi_xxx"
},
agents: {
defaults: {
model: {
primary: "venice/llama-3.3-70b" // 隐私优先
// 或: "venice/claude-opus-45" // 高质量
}
}
}
}
5.3 OpenAI 配置
export OPENAI_API_KEY="sk-xxx"
配置示例:
{
env: {
OPENAI_API_KEY: "sk-xxx"
},
agents: {
defaults: {
model: {
primary: "openai/gpt-4o",
fallbacks: ["openai/gpt-4-turbo"]
}
}
}
}
5.4 其他模型提供商
Ollama (本地模型)
{
models: {
mode: "merge",
providers: {
ollama: {
baseUrl: "http://localhost:11434/v1",
apiKey: "ollama", // 不需要真实 key
api: "openai-completions",
models: [
{
id: "llama3.1",
name: "Llama 3.1 70B",
contextWindow: 131072,
maxTokens: 8192
}
]
}
}
},
agents: {
defaults: {
model: {
primary: "ollama/llama3.1"
}
}
}
}
OpenRouter
{
env: {
OPENROUTER_API_KEY: "sk-or-v1-xxx"
},
agents: {
defaults: {
model: {
primary: "openrouter/deepseek/deepseek-chat"
}
}
}
}
5.5 提示词缓存 (Anthropic)
{
models: {
mode: "merge",
providers: {
anthropic: {
params: {
// short: 5分钟, long: 1小时
cacheRetention: "long"
}
}
}
}
}
六、配置 Channel
6.1 Telegram 配置
步骤 1:创建 Bot
- 在 Telegram 中联系 @BotFather
- 发送
/newbot创建新机器人 - 记录 Bot Token
步骤 2:配置 Token
方式一:环境变量
export TELEGRAM_BOT_TOKEN="123456:ABC-xxx"
方式二:配置文件
{
channels: {
telegram: {
enabled: true,
botToken: "123456:ABC-xxx",
dmPolicy: "pairing", // 配对模式
groups: {
"*": {
requireMention: true // 群组需要 @ 提及
}
}
}
}
}
完整 Telegram 配置示例
{
channels: {
telegram: {
enabled: true,
botToken: "123456:ABC-xxx",
dmPolicy: "pairing", // pairing | allowlist | open | disabled
allowFrom: ["tg:123456789"], // 白名单
groups: {
"*": {
requireMention: true, // 默认需要 @ 提及
// "-1001234567890": { // 特定群组配置
// requireMention: false // 该群组无需 @ 提及
// }
}
},
customCommands: [ // 自定义命令
{ command: "backup", description: "Git backup" },
{ command: "status", description: "Check status" }
],
historyLimit: 50, // 群组历史消息数
textChunkLimit: 4000, // 文本分块大小
streamMode: "partial", // 流式模式
linkPreview: true, // 链接预览
mediaMaxMb: 5 // 媒体文件大小限制
}
}
}
步骤 3:启动 Gateway
openclaw gateway --port 18789
步骤 4:配对 (首次使用)
首次发送 DM 给机器人会收到配对码,批准后即可使用:
# 列出待配对请求
openclaw pairing list telegram
# 批准配对
openclaw pairing approve telegram <code>
6.2 WhatsApp 配置
步骤 1:准备工作
- 需要一个独立的手机号 (推荐)
- VoIP 和虚拟号码通常被封锁
- 建议使用实体 SIM 卡或本地 eSIM
步骤 2:配置
{
channels: {
whatsapp: {
dmPolicy: "pairing", // 配对模式
allowFrom: ["+15551234567"], // 白名单
textChunkLimit: 4000, // 文本分块
chunkMode: "length", // 分块模式
mediaMaxMb: 50, // 媒体大小限制
sendReadReceipts: true // 已读回执
}
}
}
步骤 3:登录 (扫码)
# 开始扫码登录
openclaw channels login
# 多账户登录
openclaw channels login --account <accountId>
扫码流程:
- 在手机上打开 WhatsApp
- 设置 → 已关联设备 → 关联新设备
- 扫描显示的二维码
完整 WhatsApp 配置示例
{
channels: {
whatsapp: {
dmPolicy: "pairing", // pairing | allowlist | open | disabled
allowFrom: ["+15551234567"], // 白名单
groupPolicy: "allowlist", // 群组策略
groups: {
"*": {
requireMention: true // 群组需要 @ 提及
}
},
textChunkLimit: 4000,
chunkMode: "length", // length | newline
mediaMaxMb: 50,
sendReadReceipts: true,
historyLimit: 50, // 群组历史消息数
// 多账户支持
accounts: {},
personal: {
default: {},
work: {}
}
}
}
}
步骤 4:配对 (首次使用)
首次收到未知发送者的消息会收到配对码:
# 列出待配对请求
openclaw pairing list whatsapp
# 批准配对
openclaw pairing approve whatsapp <code>
6.3 Discord 配置
步骤 1:创建 Discord Bot
- 访问 https://discord.com/developers/applications
- 创建新应用 → Bot → 添加 Bot
- 复制 Bot Token
- 启用 Message Content Intent
步骤 2:配置
{
channels: {
discord: {
enabled: true,
token: "MTIzNDU2Nzg5MDEyMzQ1Njc4.XXXXX.XXXXX",
dm: {
enabled: true,
policy: "pairing", // 配对模式
allowFrom: ["1234567890"], // 白名单
groupEnabled: false
},
guilds: {
"123456789012345678": { // 服务器 ID
channels: {
"general": {
allow: true,
requireMention: true
},
"help": {
allow: true,
requireMention: false
}
}
}
},
historyLimit: 20, // 历史消息数
textChunkLimit: 2000, // 文本分块
maxLinesPerMessage: 17, // 最大行数
allowBots: false // 是否允许 Bot 消息
}
}
}
步骤 3:邀请 Bot 到服务器
在 Discord Developer Portal → OAuth2 → URL Generator 生成邀请链接。
6.4 多 Channel 完整配置示例
{
gateway: {
port: 18789,
auth: {
token: "your-gateway-token"
}
},
agents: {
defaults: {
workspace: "~/.openclaw/workspace",
model: {
primary: "anthropic/claude-opus-4-5",
fallbacks: ["anthropic/claude-sonnet-4-5"]
},
sandbox: {
mode: "non-main", // 非主会话使用沙箱
scope: "session"
}
},
list: [
{
id: "main",
identity: {
name: "Assistant",
emoji: "🦞"
}
}
]
},
channels: {
telegram: {
enabled: true,
botToken: "123456:ABC-xxx",
dmPolicy: "pairing",
groups: {
"*": { requireMention: true }
}
},
whatsapp: {
dmPolicy: "pairing",
allowFrom: ["+15551234567"],
groups": { requireMention: true }
: {
"* }
},
discord: {
enabled: true,
token: "MTIzNDU2Nzg5MTEyMzQ1Njc4.XXXXX.XXXXX",
dm: {
policy: "pairing"
}
}
},
messages: {
responsePrefix: "🦞",
groupChat: {
mentionPatterns: ["@assistant", "@openclaw"]
}
},
env: {
ANTHROPIC_API_KEY: "sk-ant-api03-xxx"
},
logging: {
level: "info",
file: "/tmp/openclaw/openclaw.log"
}
}
七、启动和管理
7.1 手动启动
# 前台启动 (调试)
openclaw gateway --port 18789 --verbose
# 后台启动
openclaw gateway --port 18789 &
# 指定配置文件
openclaw gateway --config /path/to/openclaw.json
7.2 后台服务管理
如果安装了 systemd 服务:
# 查看服务状态
openclaw gateway status
# 启动服务
openclaw gateway start
# 停止服务
openclaw gateway stop
# 重启服务
openclaw gateway restart
# 查看日志
openclaw logs
# 实时日志
openclaw logs --follow
7.3 开机自启
# 安装开机自启
sudo systemctl enable openclaw-gateway
# 禁用开机自启
sudo systemctl disable openclaw-gateway
八、常用命令
8.1 Gateway 管理
# 查看状态
openclaw status
# 健康检查
openclaw health
# 深度健康检查
openclaw health --deep
# 配置验证
openclaw doctor
8.2 Channel 管理
# 查看已配置的 Channel
openclaw channels list
# 登录 Channel (WhatsApp 扫码)
openclaw channels login
# 退出登录
openclaw channels logout
# 重新登录
openclaw channels login --account <accountId>
8.3 配对管理
# 列出待配对请求
openclaw pairing list
# 批准配对
openclaw pairing approve <channel> <code>
# 拒绝配对
openclaw pairing reject <channel> <code>
# 清除所有待配对请求
openclaw pairing clear
8.4 消息发送
# 发送测试消息
openclaw message send --target +15551234567 --message "Hello from OpenClaw"
# Telegram
openclaw message send --target tg:123456789 --message "Hello"
# Discord
openclaw message send --target channel:123456789 --message "Hello"
8.5 模型管理
# 查看模型列表
openclaw models list
# 查看当前模型状态
openclaw models status
# 设置默认模型
openclaw models set anthropic/claude-opus-4-5
# 测试模型连接
openclaw chat --model anthropic/claude-opus-4-5 "Hello"
8.6 配置管理
# 查看当前配置
openclaw config get
# 编辑配置 (交互式)
openclaw config edit
# 设置配置项
openclaw config set channels.telegram.botToken "xxx"
# 验证配置
openclaw doctor
九、常见问题排查
9.1 Gateway 无法启动
# 检查端口是否被占用
lsof -i :18789
# 查看详细错误
openclaw doctor
# 检查日志
openclaw logs --follow
9.2 模型认证失败
# 检查 API Key
echo $ANTHROPIC_API_KEY
# 测试模型连接
openclaw models status
# 重新认证
openclaw onboard --auth-choice anthropic-api-key
9.3 Channel 连接问题
# WhatsApp 重新登录
openclaw channels logout
openclaw channels login
# Telegram 检查网络
curl -I https://api.telegram.org
# Discord 检查 Token
openclaw channels list
9.4 权限问题
# 确保用户有权限访问配置目录
chmod -R 700 ~/.openclaw/
# 确保日志目录存在
mkdir -p /tmp/openclaw
9.5 性能优化
# 检查资源使用
openclaw status
# 查看并发限制
openclaw health | grep concurrent
# 调整并发数 (配置文件)
{
agents: {
defaults: {
maxConcurrent: 5
}
}
}
十、安全建议
10.1 保护 API Key
# 使用环境变量而非配置文件
export ANTHROPIC_API_KEY="sk-ant-xxx"
# 或使用密钥管理服务
10.2 限制访问来源
{
channels: {
whatsapp: {
dmPolicy: "allowlist",
allowFrom: ["+15551234567", "+15559876543"]
},
telegram: {
dmPolicy: "allowlist",
allowFrom: ["tg:123456789"]
}
}
}
10.3 群组控制
{
channels: {
telegram: {
groups: {
// 只允许特定群组
"-1001234567890": {
requireMention: true
}
}
}
}
}
10.4 审计日志
{
logging: {
level: "info",
file: "/tmp/openclaw/openclaw.log",
redactSensitive: "tools"
}
}
十一、更新和升级
11.1 更新 OpenClaw
# 通过 npm 更新
npm update -g openclaw@latest
# 通过安装脚本更新
curl -fsSL https://openclaw.ai/install.sh | bash
11.2 重启服务
# systemd 服务
openclaw gateway restart
# 手动启动
# 先停止旧进程,再启动新进程
pkill -f openclaw
openclaw gateway --port 18789 &
11.3 回滚版本
# 查看历史版本
npm list -g openclaw
# 安装特定版本
npm install -g openclaw@<version>
十二、Docker 部署 (可选)
12.1 使用 Docker Compose
version: '3.8'
services:
openclaw:
image: ghcr.io/openclaw/openclaw:latest
container_name: openclaw
restart: unless-stopped
ports18789:187:
- "89"
volumes:
- ~/.openclaw:/root/.openclaw
- ./workspace:/root/.openclaw/workspace
environment:
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
- TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN}
- VENICE_API_KEY=${VENICE_API_KEY}
command: gateway --port 18789
12.2 启动 Docker
# 创建 .env 文件
echo "ANTHROPIC_API_KEY=sk-ant-xxx" > .env
echo "TELEGRAM_BOT_TOKEN=xxx" >> .env
# 启动
docker-compose up -d
# 查看日志
docker-compose logs -f
十三、参考链接
- 官方文档: https://docs.openclaw.ai
- GitHub: https://github.com/openclaw/openclaw
- 社区: https://discord.com/invite/clawd
- 插件市场: https://clawhub.com
💡 提示: 生产环境建议使用独立的手机号、配置白名单、定期备份配置和凭证文件。
文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/12366
