OpenClaw开源AI自动化框架:支持本地部署、多模型调度与30+应用集成

《龙虾新手指南》专栏文章:OpenClaw——让AI自动化真正落地
为什么选择OpenClaw?
OpenClaw 是一个国产开源 AI 自动化框架,目标很实在:在本地跑起来、能干活、不挑环境。
它不是玩具项目。所有功能都经过真实场景验证,支持离线运行,跨平台任务编排,原生兼容 WhatsApp、Telegram、Discord、Slack、GitHub、RSS 等 30+ 应用。模型层不绑定厂商——Claude、GPT-3.5/4、本地 LLM(如 Llama 3、Phi-3、Qwen2)都能按需调度,配置文件里切一下就行。
本地化部署的真实好处
- 数据不出设备:聊天记录、文档、截图、日志全留在你自己的机器上,不上传、不中转、不缓存。
- 断网照常工作:没有网络?没关系。本地模型 + 本地消息队列 + 本地规则引擎,整个流水线照跑。
- 硬件说了算:CPU、GPU、Apple Silicon 都能压榨。模型量化、KV Cache 优化、批处理调度都开箱即用,不用改代码。
OpenClaw 的核心功能
1. 跨平台任务编排
OpenClaw 把不同平台的 API 封装成统一的动作接口。你写一次逻辑,就能在多个平台复用。
支持的平台包括:
- 即时通讯:WhatsApp(通过 WWebJS)、Telegram(Bot API)、Discord(Gateway)
- 社交媒体:Twitter/X(v2 API)、Reddit(PRAW)、Mastodon(ActivityPub)
- 协作工具:Slack(Events API)、Microsoft Teams(Graph API)、Trello(REST)
- 开发与信息流:GitHub(Webhooks)、RSS(Feedparser)、Notion(API)
典型用法:
- 在 Telegram 群里监听关键词,自动转发到 Slack 频道并 @ 相关成员
- 监控 GitHub PR 评论,用本地小模型做代码风格初筛,只把高风险评论推给 Reviewer
- 每天早 8 点从 RSS 抓取技术博客摘要,用 Qwen2-1.5B 生成中文简报,发到 WhatsApp 工作群
2. 模型调度机制
OpenClaw 不预设“哪个模型最好”,而是提供一致的调用契约:
# 所有模型都遵循这个签名
def infer(prompt: str, **kwargs) -> str:
...实际支持:
- 远程模型:Claude(Anthropic API)、GPT(OpenAI / Azure / Ollama 兼容端点)、Gemini(Google AI SDK)
- 本地模型:Transformers(
pipeline或generate)、llama.cpp(GGUF)、Ollama(ollama run)、vLLM(HTTP API) - 轻量模型:Sentence Transformers(嵌入)、FastChat(多轮对话管理)、LiteLLM(统一路由层)
调度策略可配:
- 按任务类型分发(例如:
/summarize→ 本地 Qwen2;/code-review→ 远程 Claude-3.5) - 按负载降级(远程超时 → 自动 fallback 到本地 Phi-3)
- 按 token 成本路由(短 prompt 走小模型,长 context 走大模型)
安装与配置指南
1. 环境准备
确认系统满足:
- OS:Linux(推荐 Ubuntu 22.04+)、macOS(13+)、Windows(WSL2 或原生 Python 3.9+)
- Python:3.9–3.12(避免 3.13,部分依赖尚未适配)
- 基础工具:
git、curl、make(Linux/macOS),或build-tools(Windows)
⚠️ Windows 用户优先用 WSL2。原生 Windows 支持有限,尤其涉及 Chromium 自动化(WhatsApp)时。
2. 克隆仓库
git clone https://github.com/openclaw-org/OpenClaw.git
cd OpenClaw注意:官方仓库是openclaw-org/OpenClaw,不是your-repo。原文链接已修正。
3. 安装依赖
pip install -r requirements.txtrequirements.txt 分三类依赖:
core: 必需(httpx,pyyaml,playwright)platforms: 按需启用(python-telegram-bot,discord.py,webwhatsapi)models: 按需启用(transformers,llama-cpp-python,litellm)
不需要 WhatsApp?注释掉 webwhatsapi 行再安装。
4. 配置平台凭证
编辑 config.yaml:
platforms:
telegram:
token: "789123456:ABCdefGhIjKlmNoPqrStUvWxYz"
chat_id: -1001234567890
discord:
token: "MTIzNDU2Nzg5MDExMjMyNDU2.Cxyz.ABC-defghijklmnopqrstuvwxyz"
channel_id: "123456789012345678"
whatsapp:
headless: true
timeout: 60- Telegram Bot Token 从 @BotFather 获取
- Discord Token 从 Discord Developer Portal 创建 Bot 得到
- WhatsApp 使用 Playwright 启动 Chromium 扫码登录,无需第三方网关
5. 启动服务
python main.py启动后你会看到:
[INFO] Loaded 3 platforms: telegram, discord, whatsapp
[INFO] Model router ready: claude-3-haiku (remote), qwen2-1.5b (local)
[INFO] HTTP server listening on http://127.0.0.1:8000
[INFO] WebSocket gateway active服务默认提供 REST API 和 WebSocket 接口,也支持 CLI 直接触发任务。
使用指南
1. 写一个任务
OpenClaw 的任务是纯 Python 函数,用 @task 装饰器注册:
# tasks/greet.py
from openclaw import task
@task(name="morning-greeting", trigger="cron:0 8 * * *")
def send_morning_greeting():
return {
"platform": "telegram",
"message": "☀️ 早安!今日待办:\n1. 查看昨日 GitHub PR\n2. 同步 Notion 周计划"
}保存后执行:
openclaw run morning-greeting支持触发方式:
cron:(系统级定时)webhook:(接收 HTTP POST)event:(监听平台事件,如telegram:message)cli:(手动运行)
2. 调用模型做决策
模型调用封装为 openclaw.llm.infer(),屏蔽底层差异:
# tasks/summarize_rss.py
from openclaw import task, llm
@task(name="rss-summary")
def summarize_latest_post():
# 从 RSS 抓最新条目(内置 feedparser)
entry = get_latest_rss_entry("https://example.com/feed.xml")
# 用本地模型生成摘要
summary = llm.infer(
model="qwen2-1.5b",
prompt=f"用中文总结以下技术文章,限 100 字:\n{entry.title}\n{entry.content}"
)
return {
"platform": "discord",
"channel": "tech-news",
"message": f"📰 {entry.title}\n{summary}"
}模型名直接对应 config.yaml 中定义的别名,切换模型只需改字符串。
常见问题
1. OpenClaw 支持哪些平台?
完整列表见 Supported Platforms。新增平台只需实现 3 个方法:connect(), listen(), send()。已有 PR 正在集成 LINE 和飞书。
2. 怎么加自己的模型?
两种方式:
- HTTP 模型:在
config.yaml加 endpoint,OpenClaw 自动适配 OpenAI 兼容格式 - Python 模型:写一个模块,暴露
infer(prompt, **kwargs)函数,放进models/目录,重启服务即可识别
示例:models/my-rag.py
def infer(prompt: str, **kwargs) -> str:
return rag_query(prompt) # 你的 RAG 逻辑3. 离线能跑吗?
能。只要:
- 平台接入方式支持离线(Telegram Bot、Discord Gateway、RSS 都行;WhatsApp 需扫码但后续可离线收消息)
- 模型是本地加载(
transformers,llama.cpp,Ollama) - 关闭所有远程依赖(注释
litellm,openai,anthropic相关行)
实测 M2 Mac Mini(16GB)可同时跑 Qwen2-1.5B + Telegram + RSS,内存占用 < 4GB。
下一步学习建议
- 动手改一个现有任务:把
examples/echo.py改成监听 GitHub Issue 新建事件,自动用本地模型写回复草稿 - 试跑本地模型:用
llama.cpp转换 Qwen2-0.5B GGUF,填进config.yaml,对比响应速度和质量 - 看日志定位问题:OpenClaw 默认输出结构化 JSON 日志到
logs/,用jq或tail -f logs/app.log | jq '.'实时观察动作流
遇到卡点?先查 logs/error.log,再搜 GitHub Issues。社区不灌水,PR 都带测试用例。