剥壳小龙虾!
📚 目录
📖 项目简介
OpenClaw 是一个运行在您自己设备上的个人 AI 助手网关系统。它可以让您通过日常使用的聊天应用(WhatsApp、Telegram、Slack、Discord、Google Chat、Signal、iMessage、BlueBubbles、IRC、Microsoft Teams、Matrix 等)与 AI 助手进行交互。
🎯 适用对象
- 🧑💻 希望拥有私人 AI 助手的开发者
- 🔐 重视数据隐私和本地控制的用户
- 🌟 需要多渠道统一 AI 接入的团队
🌈 核心优势
- 🏠 本地部署: 完全运行在您的硬件上,您拥有完全控制权
- 🔗 多渠道支持: 单一网关同时服务于多个消息平台
- 🤖 智能体原生: 专为 AI 编码智能体设计,支持工具使用、会话管理和多智能体路由
- 🔓 开源免费: MIT 许可证,社区驱动
📋 系统要求
- Node.js: 版本 ≥ 22
- 模型提供商 API 密钥: 支持 OpenAI、Anthropic、Gemini、OpenRouter 等
- ⏱️ 安装时间: 约 5 分钟
💡 推荐: 为获得最佳体验和更低的提示注入风险,请使用您可用的最强大的最新一代模型。
✨ 核心特性
🌐 多渠道消息接入
OpenClaw 支持以下消息平台:
| 平台 | 状态 | 说明 |
|---|---|---|
| ✅ 支持 | 通过 Baileys | |
| ✈️ Telegram | ✅ 支持 | 通过 grammY |
| 💬 Slack | ✅ 支持 | 通过 Bolt |
| 🎮 Discord | ✅ 支持 | 通过 discord.js |
| 💼 Google Chat | ✅ 支持 | Chat API |
| 🔔 Signal | ✅ 支持 | signal-cli |
| 💙 iMessage | ✅ 支持 | BlueBubbles (推荐) / 传统 imsg |
| 🖥️ IRC | ✅ 支持 | - |
| 👥 Microsoft Teams | ✅ 支持 | - |
| 🔷 Matrix | ✅ 支持 | - |
| 🐦 其他平台 | ✅ 支持 | Feishu, LINE, Mattermost, Nextcloud Talk, Nostr, Synology Chat, Tlon, Twitch, Zalo 等 |
🛠️ 强大的工具生态
- 🌍 浏览器控制: 专用的 OpenClaw Chrome/Chromium,支持快照、操作、上传和配置文件
- 🎨 实时画布: 智能体驱动的可视化工作区,支持 A2UI
- 📱 节点功能: 相机拍照/录像、屏幕录制、位置获取、通知
- ⏰ 定时任务与唤醒: 支持 Cron 作业、Webhook 和 Gmail Pub/Sub
- 🔌 技能平台: 内置、托管和工作区技能,支持安装门控和 UI
🎤 语音与多模态
- 🗣️ 语音唤醒: macOS/iOS 上的唤醒词检测
- 💬 对话模式: Android 上的持续语音交互
- 🎙️ TTS 支持: ElevenLabs、OpenAI 和系统 TTS 回退
📱 配套应用
- 🍎 macOS 应用: 菜单栏控制面板,语音唤醒/推送通话,WebChat,调试工具
- 📲 iOS 节点: 画布、语音唤醒、对话模式、相机、屏幕录制
- 🤖 Android 节点: 连接选项卡、聊天会话、语音选项卡、画布、相机/屏幕录制
🏗️ 工作原理
系统架构图
1 | graph TB |
数据流程
1 | sequenceDiagram |
🔧 架构详解
核心组件
1. 🌐 Gateway (网关)
Gateway 是 OpenClaw 的核心控制平面,负责:
- 🔌 连接管理: 维护所有消息平台的长连接
- 🛣️ 消息路由: 根据规则将消息路由到相应的智能体
- 🔐 认证授权: 处理用户身份验证和权限控制
- 📊 会话管理: 跟踪和管理所有活动会话
- 🎯 事件分发: 向订阅的客户端分发事件
技术实现:
1 | // Gateway 启动示例 |
2. 🤖 Pi Agent 集成
OpenClaw 使用 Pi SDK 嵌入 AI 编码智能体:
核心包依赖:
1 | { |
功能特性:
- ✅ 完全控制会话生命周期和事件处理
- ✅ 自定义工具注入(消息、沙箱、特定渠道操作)
- ✅ 按渠道/上下文自定义系统提示
- ✅ 支持分支和压缩的会话持久化
- ✅ 多账户认证配置文件轮换与故障转移
- ✅ 与提供商无关的模型切换
3. 📁 工作区系统
工作区是智能体的”家”,是所有文件工具和工作区上下文的工作目录。
默认位置: ~/.openclaw/workspace
核心文件:
| 文件 | 用途 | 加载时机 |
|---|---|---|
AGENTS.md |
智能体操作指南和内存使用方式 | 每次会话启动 |
SOUL.md |
角色、语气和边界设定 | 每次会话启动 |
USER.md |
用户信息和沟通方式 | 每次会话启动 |
IDENTITY.md |
智能体名称、风格和表情符号 | 引导仪��时创建/更新 |
TOOLS.md |
本地工具和约定说明 | 仅作指导,不控制工具可用性 |
HEARTBEAT.md |
可选的心跳运行检查清单 | 心跳任务 |
BOOT.md |
可选的启动检查清单 | 网关重启时(启用内部钩子) |
BOOTSTRAP.md |
一次性首次运行仪式 | 仅全新工作区创建 |
目录结构示例:
1 | ~/.openclaw/workspace/ |
4. 🛡️ 沙箱系统
OpenClaw 提供可选的 Docker 沙箱隔离,用于在隔离环境中执行不受信任的代码:
隔离模式:
off: 无沙箱,所有工具在主机上运行always: 始终使用沙箱non-main: 仅对非主会话(群组/频道)使用沙箱
配置示例:
1 | { |
5. 🔐 认证与授权
支持的认证模式:
| 模式 | 说明 | 适用场景 |
|---|---|---|
token |
共享令牌认证 | 默认模式,适合本地/远程访问 |
password |
密码认证 | Tailscale Funnel 或公网访问 |
trusted-proxy |
可信代理认证 | 反向代理后端 |
none |
无认证(仅 loopback) | 开发环境 |
配置示例:
1 | { |
工作流程详解
消息处理流程
1 | flowchart TD |
工具执行流程
1 | sequenceDiagram |
📦 安装部署
💻 本地命令行安装
系统要求
- 操作系统: macOS、Linux 或 Windows (通过 WSL2,强烈推荐)
- Node.js: 版本 ≥ 22
- 包管理器: npm、pnpm 或 bun
快速安装
1️⃣ 使用 npm 全局安装
1 | npm install -g openclaw@latest |
2️⃣ 运行入门向导
1 | openclaw onboard --install-daemon |
向导会引导您完成:
- ✅ Gateway 配置
- ✅ 工作区设置
- ✅ 消息渠道配置
- ✅ 技能安装
- ✅ 系统守护进程安装(launchd/systemd)
3️⃣ 启动 Gateway
1 | # 前台运行(带详细日志) |
4️⃣ 验证安装
1 | # 检查健康状态 |
从源码构建(开发模式)
1 | # 克隆仓库 |
💡 提示:
pnpm openclaw ...通过tsx直接运行 TypeScript。pnpm build生成dist/目录,用于通过 Node 或打包的openclaw二进制文件运行。
🐳 Docker 容器部署
OpenClaw 提供了完整的 Docker 部署方案,包括自动化安装脚本和手动配置两种方式。
方式一: 一键自动部署(推荐)
OpenClaw 提供了功能完整的自动化部署脚本 docker-setup.sh,会自动完成所有配置和启动流程。
1️⃣ 克隆仓库
1 | git clone https://github.com/openclaw/openclaw.git |
2️⃣ 运行部署脚本
1 | # 基础部署(不启用沙箱) |
3️⃣ 脚本会自动完成以下操作
✅ 环境检查: 验证 Docker 和 Docker Compose 安装
✅ 目录创建: 自动创建配置和工作区目录
✅ 令牌生成: 自动生成安全的 Gateway 认证令牌
✅ 镜像构建: 构建或拉取 OpenClaw Docker 镜像
✅ 权限设置: 自动修复容器内文件权限
✅ 交互式配置: 运行 onboard 向导设置智能体
✅ Gateway 启动: 自动启动 Gateway 服务
✅ 沙箱配置: (可选) 配置 Docker 沙箱隔离
4️⃣ 查看部署结果
脚本完成后会输出关键信息:
1 | Gateway running with host port mapping. |
高级配置选项
docker-setup.sh 支持多个环境变量进行自定义配置:
| 环境变量 | 默认值 | 说明 |
|---|---|---|
OPENCLAW_CONFIG_DIR |
~/.openclaw |
配置文件目录 |
OPENCLAW_WORKSPACE_DIR |
~/.openclaw/workspace |
工作区目录 |
OPENCLAW_GATEWAY_PORT |
18789 |
Gateway WebSocket 端口 |
OPENCLAW_BRIDGE_PORT |
18790 |
浏览器控制端口 |
OPENCLAW_GATEWAY_BIND |
lan |
绑定模式 (loopback/lan/tailnet) |
OPENCLAW_GATEWAY_TOKEN |
自动生成 | Gateway 认证令牌 |
OPENCLAW_IMAGE |
openclaw:local |
Docker 镜像名称 |
OPENCLAW_SANDBOX |
空(禁用) | 设为 1 启用沙箱 |
OPENCLAW_DOCKER_SOCKET |
/var/run/docker.sock |
Docker 套接字路径 |
OPENCLAW_HOME_VOLUME |
空 | 使用命名卷代替绑定挂载 |
OPENCLAW_EXTRA_MOUNTS |
空 | 额外的挂载点(逗号分隔) |
OPENCLAW_DOCKER_APT_PACKAGES |
空 | 构建时安装的额外 APT 包 |
自定义配置示例:
1 | # 使用自定义配置目录和端口 |
方式二: 手动 Docker Compose 部署
如果您希望完全手动控制部署流程,可以参考以下步骤。
1️⃣ 准备目录结构
1 | # 创建必要的目录 |
2️⃣ 生成 Gateway 令牌
1 | # 使用 OpenSSL 生成随机令牌 |
3️⃣ 创建环境变量文件
1 | cat > .env << EOF |
4️⃣ 使用项目的 docker-compose.yml
OpenClaw 项目已包含完整的 docker-compose.yml,直接使用:
1 | # 构建镜像 |
5️⃣ 运行初始化配置
1 | # 运行 onboarding 向导 |
启用沙箱隔离
沙箱隔离为非主会话(群组/频道)提供 Docker 容器级别的安全隔离。
启用步骤:
1 | # 1. 设置环境变量 |
验证沙箱状态:
1 | # 检查沙箱配置 |
Docker 命名卷部署
使用 Docker 命名卷代替绑定挂载,便于数据迁移和备份。
1 | # 使用命名卷部署 |
备份和恢复:
1 | # 备份命名卷 |
常用 Docker Compose 命令
1 | # 启动服务 |
配置消息平台
WhatsApp (扫码登录):
1 | docker compose run --rm openclaw-cli channels login |
Telegram (Bot Token):
1 | # 方式一: 通过命令添加 |
Discord (Bot Token):
1 | docker compose run --rm openclaw-cli channels add --channel discord --token "your-discord-bot-token" |
Slack (Bot + App Token):
1 | # 在 .env 文件中添加 |
健康检查和监控
1 | # 检查 Gateway 健康状态 |
故障排查
权限问题:
1 | # 修复配置目录权限 |
重置配置:
1 | # 备份当前配置 |
沙箱问题:
1 | # 检查 Docker socket 访问 |
网络问题:
1 | # 检查端口监听 |
更新和维护
更新到最新版本:
1 | # 1. 拉取最新代码 |
使用预构建镜像:
1 | # 切换到官方镜像 |
定期备份:
1 |
|
设置定时备份:
1 | # 添加到 crontab |
生产环境优化
1. 使用反向代理:
1 | # Nginx 配置示例 |
2. 资源限制:
1 | # docker-compose.override.yml |
3. 日志管理:
1 | # 配置日志轮转 |
4. 监控告警:
1 | # 健康检查脚本 |
安全加固
1. 限制网络访问:
1 | # 仅绑定到 loopback |
2. 启用 TLS/SSL:
1 | # 使用 Let's Encrypt |
3. 定期更新:
1 | # 自动更新脚本 |
多环境部署
开发/测试/生产分离:
1 | # 开发环境 |
☁️ 云端 VPS 部署
支持的云平台
| 平台 | 成本 | 推荐配置 | 一键部署 |
|---|---|---|---|
| Railway | 按使用付费 | 2GB RAM | ✅ 支持 |
| Northflank | 按使用付费 | 2GB RAM | ✅ 支持 |
| Oracle Cloud | 永久免费层 | ARM, 1GB RAM | ❌ 需手动 |
| Fly.io | 按使用付费 | Shared CPU | ❌ 需手动 |
| Hetzner | €4.15/月 | 2GB RAM | ❌ 需手动 |
| GCP | 免费试用 $300 | e2-micro | ❌ 需手动 |
Railway 一键部署
Railway 提供最简单的部署方式:
1️⃣ 点击部署按钮
2️⃣ 配置环境变量
在 Railway 控制台中设置:
1 | OPENCLAW_GATEWAY_TOKEN=<生成一个随机令牌> |
3️⃣ 连接到已部署的 Gateway
1 | # 使用 Railway 提供的公共 URL |
Oracle Cloud 免费层部署
Oracle Cloud 提供永久免费的 ARM 实例:
规格:
- CPU: 4核 Ampere A1
- 内存: 24GB RAM
- 存储: 200GB
- 流量: 10TB/月
部署步骤:
1 | # 1. 创建实例后,SSH 连接 |
GCP Compute Engine 部署
创建实例:
1 | # 使用 gcloud CLI 创建实例 |
SSH 连接并部署:
1 | # SSH 连接 |
通过 SSH 隧道安全访问
对于所有 VPS 部署,推荐保持 Gateway 绑定在 loopback,通过 SSH 隧道访问:
1 | # 本地机器建立 SSH 隧道 |
或配置 ~/.ssh/config:
1 | Host openclaw-vps |
然后简单地运行:
1 | ssh -N openclaw-vps & |
⚙️ 配置说明
配置文件位置
- 主配置:
~/.openclaw/openclaw.json - 环境变量:
~/.openclaw/.env或.env - 凭证:
~/.openclaw/credentials/ - 会话:
~/.openclaw/agents/<agentId>/sessions/ - 工作区:
~/.openclaw/workspace
最小配置示例
1 | { |
完整配置示例
1 | { |
环境变量优先级
配置加载顺序(优先级从高到低):
- 进程环境变量
./.env(项目根目录)~/.openclaw/.envopenclaw.json中的env块
配置验证
1 | # 验证配置文件语法 |
🚀 快速开始
基础使用
1️⃣ 通过消息平台发送消息
在 WhatsApp/Telegram/Discord 中直接给机器人发送消息:
1 | 你好! 帮我写一个 Python 脚本来处理 CSV 文件 |
2️⃣ 使用 CLI 命令
1 | # 发送消息 |
3️⃣ 查看会话状态
1 | # 查看所有会话 |
聊天命令
在消息平台中可以使用的命令:
| 命令 | 说明 |
|---|---|
/status |
显示会话状态(模型、令牌、成本) |
/new 或 /reset |
重置当前会话 |
/compact |
压缩会话上下文(生成摘要) |
/think <level> |
设置思考级别: off/minimal/low/medium/high/xhigh |
/verbose on|off |
开启/关闭详细模式 |
/usage off|tokens|full |
设置使用情况显示 |
/tts on|off|always |
开启/关闭文本转语音 |
/restart |
重启网关(仅所有者,群组中) |
/activation mention|always |
群组激活模式切换 |
群组使用
在群组中提及机器人:
1 | @openclaw 帮我总结今天的讨论要点 |
配置群组行为:
1 | { |
工具使用示例
文件操作:
1 | # 读取文件 |
代码执行:
1 | # 运行 Python 脚本 |
浏览器控制:
1 | # 打开网页并截图 |
节点功能
macOS/iOS 节点命令:
1 | # 拍照 |
查看可用节点:
1 | # 列出所有节点 |
🔒 安全性
默认安全策略
OpenClaw 连接到真实的消息平台,需要将入站 DM 视为不受信任的输入。
DM 配对模式(默认)
在 Telegram/WhatsApp/Signal/iMessage/Microsoft Teams/Discord/Slack 上:
- 默认策略:
dmPolicy="pairing" - 未知发送者会收到配对码,机器人不会处理其消息
- 批准命令:
openclaw pairing approve <channel> <code> - 批准后,发送者会被添加到本地允许列表
公开 DM 模式
要允许公开入站 DM,需要显式选择:
1 | { |
沙箱隔离
推荐配置:
1 | { |
网络安全
绑定模式:
| 模式 | 绑定地址 | 适用场景 |
|---|---|---|
loopback |
127.0.0.1 | 本地访问(默认,最安全) |
lan |
0.0.0.0 | 局域网访问(需要认证) |
tailnet |
Tailscale IP | Tailscale 网络访问 |
auto |
自动检测 | 根据环境自动选择 |
认证要求:
bind=loopback: 可选认证bind=lan/tailnet: 必须配置认证(token 或 password)
Tailscale 安全访问
1 | { |
安全检查清单
运行安全诊断:
1 | openclaw doctor |
Doctor 会检查:
- ✅ 危险的 DM 策略配置
- ✅ 缺失的 Gateway 认证
- ✅ 不安全的绑定���式
- ✅ 沙箱配置问题
- ✅ 工具权限风险
数据隐私
- 本地存储: 所有会话和配置存储在
~/.openclaw/ - 凭证加密: 敏感凭证使用加密存储
- 日志脱敏: 可配置日志中的敏感信息脱敏
- 工作区隔离: 每个智能体可以有独立的工作区
备份建议:
1 | # 使用 Git 管理工作区(推荐私有仓库) |
🤝 贡献指南
欢迎社区贡献! 请查看 CONTRIBUTING.md 了解详细信息。
开发环境设置
1 | # 克隆仓库 |
提交规范
1 | # 功能: feat: 添加 XXX 支持 |
Pull Request 流程
- Fork 项目到您的 GitHub 账户
- 创建新的功能分支:
git checkout -b feature/amazing-feature - 提交您的更改:
git commit -m 'feat: add amazing feature' - 推送到分支:
git push origin feature/amazing-feature - 提交 Pull Request
社区
- Discord: https://discord.gg/clawd
- GitHub Discussions: https://github.com/openclaw/openclaw/discussions
- Twitter/X: @openclaw
📄 许可证
OpenClaw 基于 MIT 许可证 开源。
由 Peter Steinberger 和开源社区用 ❤️ 打造
为空间龙虾 AI 助手 Molty 🦞 而生
openclaw.ai · soul.md · steipete.me
AI/vibe 编码的 PR 欢迎! 🤖