
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 把不同平台的 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 工作群
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 走大模型)
确认系统满足:
- 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)时。
git clone https://github.com/openclaw-org/OpenClaw.git
cd OpenClaw
注意:官方仓库是openclaw-org/OpenClaw,不是your-repo。原文链接已修正。
pip install -r requirements.txt
requirements.txt 分三类依赖:
core: 必需(httpx,pyyaml,playwright)platforms: 按需启用(python-telegram-bot,discord.py,webwhatsapi)models: 按需启用(transformers,llama-cpp-python,litellm)
不需要 WhatsApp?注释掉 webwhatsapi 行再安装。
编辑 config.yaml:
platforms: telegram:
token: ":ABCdefGhIjKlmNoPqrStUvWxYz" chat_id: -90
discord:
token: "MTIzNDU2Nzg5MDExMjMyNDU2.Cxyz.ABC-defghijklmnopqrstuvwxyz" channel_id: ""
whatsapp:
headless: true timeout: 60
- Telegram Bot Token 从 @BotFather 获取
- Discord Token 从 Discord Developer Portal 创建 Bot 得到
- WhatsApp 使用 Playwright 启动 Chromium 扫码登录,无需第三方网关
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 直接触发任务。
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": "☀️ 早安!今日待办:
- 查看昨日 GitHub PR
- 同步 Notion 周计划" }
保存后执行:
openclaw run morning-greeting支持触发方式:
cron:(系统级定时)webhook:(接收 HTTP POST)event:(监听平台事件,如telegram:message)cli:(手动运行)
模型调用封装为
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 字:
{entry.title} {entry.content}"
) return { "platform": "discord", "channel": "tech-news", "message": f"📰 {entry.title}
{summary}"
}
模型名直接对应 config.yaml 中定义的别名,切换模型只需改字符串。
完整列表见 Supported Platforms。新增平台只需实现 3 个方法:connect(), listen(), send()。已有 PR 正在集成 LINE 和飞书。
两种方式:
- 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 逻辑
能。只要:
- 平台接入方式支持离线(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 都带测试用例。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/269906.html