上个月有人问我你本地部署了那么大一个模型除了在终端里陪聊能不能把它接进 QQ让群里的人 它自动回答问题我第一反应是写个简单脚本把模型 API 包一下就行。但真正做了才发现聊天只是最外层你要让 AI 能干点正事——比如查个天气、记个事项、按计划推送消息——那就得有一个能管理工具调用、维护对话状态、对接消息通道的框架。折腾了一圈最后稳定跑起来的是 OpenClaw 这套方案。这篇文章就把我整个 OpenClaw 部署集成 QQ 的过程、配置和踩坑记录下来给也想搭一个自动化 AI 助理的人做个参考。1. OpenClaw 是什么它解决的从来不只是聊天问题先说清楚一件事OpenClaw 不是另一个大模型前端而是一个 Agent 运行时。它管的是大模型之外的所有事——消息从哪里来、模型返回结果之后怎么办、哪些操作可以交给模型自动调用、多轮对话的上下文怎么存。你可以在本地跑一个 Ollama 模型做大脑OpenClaw 做躯干QQ 只是它对接的其中一个手脚。它的项目最早能追溯到 ROS2 机器人生态里社区里经常出现 rosclaw 这个写法其实是同一套核心在不同环境下的变体在 ROS2Humble配 Gazebo 仿真的时候它更多承担机器人控制和传感器信息处理后来因为这套机制天然适合接收事件→调用模型→执行动作的循环慢慢被用到了通用自动化助理上。如果你在 Windows 上用它的桌面伴生工具叫 Companion负责可视化地看日志、启停服务、检查 skill 状态好用程度取决于你把它当辅助还是当主力。核心价值有几点本地优先模型跑在本地私有对话和业务数据不出内网省 API 费用也符合不少公司的数据管控要求。消息渠道解耦QQ、飞书、企业微信、Telegram 这类只是 channel配置层切换不用改 agent 逻辑。技能可扩展通过 skill 机制让模型调用真实工具比如查数据库、访问 HTTP API、跑定时任务这是普通纯聊机器人做不到的。多后端兼容模型可以接 Ollama、vLLM 或者任何 OpenAI 兼容接口换模型不动主配置。所以如果你只是想搞一个能回话的 QQ 机器人用现成的 QQ 机器人 SDK 就够了但如果你想要的是自动答疑 定时巡检 根据关键词触发动作的助理OpenClaw 这类 Agent 框架才是工程量更小的路径。2. 部署方案选型Windows、Linux 还是安卓 TermuxOpenClaw 没有一键全家桶安装包可选的环境比较灵活但我建议你在动手前先按自己的场景定好路线。我整理了四种常见部署环境部署环境优点缺点适合场景Windows 原生安装快有 Companion 桌面端可看日志服务常驻容易受系统更新、睡眠影响生产不推荐本地调试、写 skill 阶段WSL2 / Linux稳定、占用低、好配 systemd 自启文件权限偶尔折腾人长期运行首选安卓 Termux便携旧手机变服务器性能受限内存和发热问题多轻量测试、小模型场景树莓派 / ARM 盒子低功耗、7x24 运行模型参数量要砍推理偏慢纯定时类自动化任务我最后选的是一台退役笔记本刷了 Ubuntu Server 22.04理由不复杂内存和 CPU 都够16G 内存能跑 14B 量化模型电费也低丢在角落里不用管。系统装好后连桌面都不需要OpenClaw 和 Ollama 都跑成 systemd 服务重启不误事。硬件上我的建议是内存 16G 起步32G 会比较舒服。大模型推理不吃显卡也能跑只是速度感人CPU 模式下 7B 模型大概每秒几个 token用于群聊问答完全够但别指望它秒回。如果你有 NVIDIA 显卡那体验会好很多显存 6G 跑 7B 量化模型、12G 跑 14B 都算及格线。3. 先用 Ollama 把大模型底座跑起来OpenClaw 本身不带走模型第一步永远是先把大模型服务起好。我这边用的 Ollama主要因为它管理模型方便、配置少、自带 OpenAI 兼容接口OpenClaw 可以少写很多适配代码。Linux 下安装就一行curl -fsSL https://ollama.com/install.sh | shWindows 直接下载安装包双击就行。装完把服务拉起来systemctl start ollama systemctl enable ollama # 开机自启然后拉模型。测试阶段我用的是 qwen2.5:14b理由很实在中文闲聊和指令跟随在开源模型里属于第一梯队14B 量化后在 16G 内存的机器上跑得动速度和效果平衡点比较舒服如果你的机器内存只有 8G老老实实换 7B 或者 3B。命令ollama pull qwen2.5:14b拉取模型的时间取决于网络6~20 分钟不等。拉完先手动聊一句确认模型本身没问题ollama run qwen2.5:14b 用一句话介绍你自己这里有个容易忽略的点Ollama 默认只监听 127.0.0.1OpenClaw 如果跑在同一台机器上没影响如果你打算让局域网内另一台机器跑 OpenClaw就得改监听地址。在 systemd service 文件里加一行环境变量EnvironmentOLLAMA_HOST0.0.0.0改完重启 ollama再用 curl 验证一下接口是否通curl http://localhost:11434/v1/models能返回模型列表就说明底座已经就绪。这个接口走的是 OpenAI 兼容协议OpenClaw 里我直接把 provider 配成 openai-compatiblebase_url 指到 http://localhost:11434/v1就不用依赖 Ollama 私有限定格式后面想换 vLLM 也方便。4. OpenClaw 安装与配置从拉源码到首次对话OpenClaw 的安装我走的是源码方式GitHub 上 clone 下来因为这样配合自己的 skill 开发比较顺畅如果你只想要稳定版本也可以直接下载官方编译好的 release 包。源码方式主要步骤git clone https://github.com/openclaw/core.git cd core python -m venv .venv source .venv/bin/activate pip install -r requirements.txt依赖装完后先别急着连 QQ先把 CLI 模式跑通。打开配置文件 config.yaml核心配置大概长这样agent: name: openclaw-assistant llm: provider: openai-compatible base_url: http://localhost:11434/v1 api_key: ollama model: qwen2.5:14b temperature: 0.7 max_tokens: 2048 system_prompt: 你是群里的自动化助理回答问题要简洁信息不确定时直接承认。 max_iterations: 8 channel: - type: cli skill_path: ./skills注意这里面的两个关键配置参数max_iterations表示 Agent 单次任务里最多调用多少次工具。如果你不给限制模型在某些问题上会陷入调工具→看结果→再调工具的死循环设成 8 既能完成复杂任务也避免失控。system_prompt决定机器人性格和边界。我实测下来QQ 群里消息嘈杂如果把 prompt 写成越详细越好会刷屏改成简洁、不确定就承认明显更舒服。启动命令openclaw start --config config.yamlCLI 模式启动后你会在终端里看到You:这样的提示符直接输入问题如果配置正确模型会通过 OpenClaw 返回结果。这里跑通的意义在于先把模型→Agent 循环链路验证掉后面接入 QQ 时如果出了问题你就能立刻判断是 OpenClaw 本身的问题还是 QQ 通道的问题不用两头排查。Windows 用户在这个阶段可以直接打开 Companion它会读取同一份配置文件把日志、当前活跃 skill、模型调用次数都显示在桌面上。我个人习惯是跑 Linux 服务器时仍然用 CLI 加 systemdCompanion 只作为调试辅助。5. 接入 QQ把机器人放进群聊CLI 跑通之后剩下的核心工作就是让 OpenClaw 能收发 QQ 消息。这里我走的是 QQ 开放平台的官方机器人能力先说明流程要点。第一步注册开发者并创建机器人应用。在 QQ 开放平台里申请开发者后新建一个应用类型选机器人创建完成后你会有 AppID、AppSecret、Token 这三样关键凭证。随后配置事件订阅机器人被 、收到私聊消息、群内消息等事件都要在这里勾选。这一步很多人漏掉群消息事件默认不开不在后台打开的话机器人收到群消息也不会触发。第二步拿到凭证后在 OpenClaw 通道配置里加上 QQchannel: - type: qq app_id: 替换成你的AppID app_secret: 替换成你的AppSecret token: 替换成你的Token protocol: websocket bot_name: 你的机器人昵称 reply_prefix: true这里多说一句 protocol 的选择。QQ 机器人开放平台支持 Webhook 回调模式和 WebSocket 长连接模式。如果你有公网服务器并且能处理签名校验Webhook 没问题但对于大多数个人部署者比如我WebSocket 模式省掉公网回调地址直接作为客户端连上 QQ 服务器接入成本低得多也天然避免了回调地址暴露的风险。我生产环境用的就是 WebSocket。第三步重启 OpenClaw看启动日志。如果你配置正确日志里会出现类似QQ channel online的输出同时机器人头像会变绿在线状态说明长连接已经建立成功。验证流程我强烈建议这么做先私聊机器人一句你好确认单聊链路通。再把它拉进一个测试群群里发机器人 你好确认群消息链路通。最后测一下带 skill 的任务机器人 明天上海天气怎么样如果按第六节配了天气技能它会返回真实天气数据。我实测的体会是私聊往往比群聊更快通因为群消息需要额外的 解析和事件订阅特别是事件订阅勾错的话群里怎么 都没反应。日志里如果出现event not subscribed之类的提示回到开放平台检查事件订阅表。6. Skill 机制让助理从会聊天到会干活OpenClaw 区别于普通聊天机器人的关键在 skill。它的本质很简单声明一个工具让大模型在对话中决定是否调用。我的第一个技能是查天气每天被群里问的次数最多。skill 的目录结构一般长这样skills/ └── weather/ ├── manifest.yaml └── run.pymanifest.yaml 负责告诉 OpenClaw 这个技能是干什么的、有什么参数name: weather description: 查询指定城市当前天气和未来几小时降雨情况输入参数为城市名。 parameters: type: object properties: city: type: string description: 城市中文名例如 上海 required: [city]run.py 里写实际执行逻辑我这里用的是简单 HTTP 请求调用公开天气接口比如 wttr.in 或心知天气 API返回格式化文本。注意一点返回值最好是纯文本别返回 JSON 对象OpenClaw 把它塞回给大模型时文本比结构化数据更容易被模型读懂和复用。配好之后放到 skill_path 目录重启 OpenClaw模型在遇到某地天气这类问题时会自动把城市名填进参数并调用 run.py。这个自动决策过程看起来有点魔法实际原理并不玄大模型看到你的 system prompt 和工具描述把用户消息映射到工具调用本质上就是 function calling 机制。定时类自动化也是 skill 的拿手好戏。比如每天早八点给群发一条每日新闻摘要写一个定时 skilltrigger: type: cron expression: 0 8 * * *触发器和模型调用是两个独立机制触发器到点先把任务放进执行队列OpenClaw 再驱动模型去生成内容。这点非常重要否则模型在没人说话的时间段根本不会想起工作。我配置 skill 的几个心得技能描述写具体。description 里越明确模型调用准确率越高。我之前写过获取天气信息这种泛泛的描述模型经常在非天气场景也尝试调用改成查询指定城市当前天气和未来几小时降雨情况后错误率明显下降。返回纯文本。避免让模型去解析你塞给它的 JSON能省掉一半的错误。参数越少越好。一个 skill 超过四五个参数模型填参就开始出错宁可拆成两个更小的 skill。给技能加超时限制。OpenClaw 里可以给每个 skill 配超时时间我一般设 10 秒。因为如果后端接口挂了skill 卡住不回结果OpenClaw 的 Agent 循环会等它等到天荒地老整条对话就卡死了。7. 踩坑合集部署与接入过程中最值得记录的 5 个问题整个流程跑下来固然顺利但中间我也踩了不少坑挑几个对你们最有参考价值的写在这里。问题一Ollama 服务跑着跑着系统 OOM现象是 OpenClaw 能通但回复到一半整个机器卡死SSH 都连不上。排查发现 Ollama 默认会缓存最近使用过的模型我在测试阶段一会儿拉 7B 一会儿拉 14B结果两颗模型同时在内存里16G 内存直接爆掉。解决方式在 Ollama 服务配置里限制并行加载数量EnvironmentOLLAMA_MAX_LOADED_MODELS1这样一次只在内存里保留一个模型换模型时自动卸载旧的内存占用立刻稳下来。问题二QQ 机器人进群后完全没反应这是我调试最久的一次。先看日志发现 WebSocket 已经连上了但群 消息不进 OpenClaw。排查链路是这样走的查 QQ 开放平台确认事件订阅里群 消息是否勾选——已勾选。查开发者后台的沙箱配置——当时机器人还在沙箱测试阶段沙箱里必须把测试群 QQ 号加入白名单否则机器人只在沙箱群内能收到消息。我之前没把测试群加进去自然没反应。最后在后台把群号加进沙箱白名单问题解决。如果你也遇到机器人上线了却不响应群消息按这个顺序查一遍是最快的WebSocket 连接状态 → 事件订阅 → 沙箱白名单 → 群内消息格式是否真的 到了机器人。问题三多轮对话经常失忆模型聊几句话就忘了前面说过什么。OpenClaw 默认有一个 context 窗口和滑动窗口策略测试阶段我把 max_tokens 调到 2048模型单次生成的输出虽然变长了但上下文缓存被压缩得很厉害。后来我把配置里的对话轮次上限从默认值降下来同时把 system_prompt 压缩得更短多轮记忆明显改善。在这类框架里上下文空间永远有限prompt 写得越精炼留给真实对话的空间就越多。问题四Agent 反复调用同一个 skill 导致刷屏有段时间群里问一句今天运气怎么样机器人会连发五条天气信息。因为模型在 tool call 失败后会自动重试加上我没有给 skill 设定同参数结果缓存。解决方式是双管齐下一是 skill 描述里写明如果已经查询过同一城市直接返回上次结果不要重复查询二是在 OpenClaw 全局配置里把 max_iterations 调低到 6。模型就会收敛一点不会死磕。问题五部署目录和启动账号权限问题这个比较基础但很恶心OpenClaw 如果用 root 用户启动它创建的日志、配置缓存文件都归 root一旦你切到普通用户去执行命令或修改配置就会出现各种奇怪的 permission denied。建议从一开始就新建一个普通用户专门跑 OpenClaw 和 Ollama整个目录挂给它所有。我后来重装了系统才彻底消停。我在整个部署过程中最深的体会是这类 Agent 框架的难点从来不在安装那几个依赖、写那一百行配置而在稳定运行之后对资源、上下文、工具调用的持续调优。OpenClaw 把大模型接入 IM 的工程量压缩了很多但真正让它像一个助理而不是玩具靠的是你花在 system prompt 和 skill 设计上的心思。如果你也想要一个能自动回答问题、定时干活、安静待在 QQ 群里的本地 AI这套组合值得一试。下一步我打算把现有的定时技能再扩展一下接一个内部知识库检索让它在群里能回答更具体的业务问题。