跳到主要内容
用 QQ 私聊打造全自动化运维助手 | 极客日志
Shell / Bash Node.js AI
用 QQ 私聊打造全自动化运维助手 利用腾讯云 Lighthouse 与 OpenClaw 结合 QQ 机器人实现服务器自动化运维。通过私聊指令完成 CPU 监控、进程管理、文件操作及日志分析,无需 SSH 客户端。方案涵盖 Bot 配置、权限沙箱、身份定义及定时任务调试细节,解决 QQ 沙箱模式主动消息推送限制,实现轻量级、高安全的移动端运维体验。
GopherDev 发布于 2026/3/15 更新于 2026/4/28 4 浏览把服务器'装进口袋'!用 QQ 私聊打造全自动化运维助手
前言:那些凌晨盯着屏幕的日子
每个用过云服务器的人大概都有过这样的经历:
半夜睡着了,突然手机震动,是监控告警——某个进程把 CPU 跑满了。于是一骨碌爬起来,掏出电脑,连 VPN,打开终端,SSH 进服务器,top 看进程,kill 掉目标,再确认一遍……等这套流程走完,已经凌晨两点多,睡意全无。
还有另一种场景:出门在外,手边只有手机,想查一下服务器内存还剩多少,却发现手机上的 SSH 客户端根本用不顺手。
这些体验共同指向同一个问题:传统的服务器运维太重了,随时随地响应的成本太高 。
直到我把 OpenClaw 接入了 QQ——在 QQ 里发一条私聊,服务器状态就回来了;再发一条,异常进程就被处理掉了。那一刻我意识到:运维这件事,可以比想象中轻得多。
这篇文章记录的,就是我用腾讯云 Lighthouse + OpenClaw,把一台云服务器变成"随叫随到的运维助手"的完整过程。
这套方案能做什么?
在展开操作步骤之前,先说说这套方案的能力边界,让你有个直观认知。
查询类(读):
发消息问"CPU 占用多少" → 得到结构化的 CPU 使用率报告
问"内存还剩多少" → 得到总量、已用、可用的详细分解
问"这台服务器配置怎么样" → 得到 CPU 型号、磁盘容量、运行时长等完整信息
问"帮我看一下某个文件的内容" → 直接读取并返回
操作类(写):
让它删除文件——它会先告诉你文件内容,要求二次确认,再执行
让它 kill 掉高占用进程——它会告知将要操作的 PID,执行后汇报结果
让它分析报错日志——它会逐条拆解原因,给出具体修复步骤
所有这些操作,全程不离开 QQ,不需要 SSH,不需要记任何命令 。
第一步:新建一个专属的运维 Bot
之前我已经在 QQ 开放平台创建了用于班级答疑的机器人。这次运维助手的使用场景完全不同,于是决定重新注册一个独立的 Bot ,避免两个场景的提示词、权限混在一起。
[图片:QQ 开放平台新增运维 bot 界面]
如图所示,QQ 开放平台的机器人列表里已经有旧机器人了,这次在旁边新增一个,命名为**'运维 bot'**。创建流程和之前完全一样:填写名称、上传头像、提交审核,几分钟内审核通过。
第二步:沙箱配置与权限设置
Bot 创建好之后,在开发管理后台完成沙箱配置。
[图片:机器人沙箱配置界面]
这一步有几个关键操作:
记录 AppSecret :AppSecret 只明文展示一次,一定在这里复制保存好
添加沙箱成员 :将自己的 QQ 号加入成员白名单,这样在沙箱模式下只有我能和 Bot 互动,不会被外人触发
这一步完成后,运维 Bot 就进入测试就绪状态。
第三步:在 Lighthouse 面板配置 QQ 通道与技能
进入腾讯云 Lighthouse 的应用管理面板,选中「运维 bot」并填入 AppID 和 AppSecret。
[图片:轻量云服务器配置 QQ-bot 面板]
这很能体现腾讯云 Lighthouse + OpenClaw 这套组合的价值:把原本需要几十条命令、几个小时才能搭起来的 AI 机器人框架,压缩成了一个可视化配置页面 。
在这个面板里,我做了以下配置:
模型 :选择模型,这里可以选择腾讯混元 TurboS,也可以选择其他模型
通道 :填入运维 bot 的 AppID(102877143),QQ 通道接入完成,状态显示「QQ 运行中」
技能 :安装了多个扩展技能:
tavily-search 1.0.0:联网搜索,让 AI 在分析报错时能查询最新文档
summarize 1.0.0:内容摘要,处理大段日志时自动提炼关键信息
agent-browser 0.2.0:浏览器能力,可以访问网页获取实时信息
第四步:用 Markdown 文件给 Bot 定制运维人格 OpenClaw 有一个很优雅的设计:用 Markdown 文件来定义 AI 的行为规范 ,干净、直观、版本可控。
我在服务器的 workspace 目录下修改了两个文件:
IDENTITY.md :定义 Bot 自我介绍时的说法——'我是运维小助手,负责这台腾讯云服务器的日常监控和管理,可以帮你查 CPU、内存、磁盘状态,也能直接执行操作。'
查询类:整理成人能读懂的格式,不要直接扔原始终端输出
操作类(kill 进程等):执行前先告知,执行后汇报
遇到错误日志:先分析根本原因,再给修复步骤
涉及危险操作(删文件、格式化等):必须二次确认后才执行
回复完全符合预期:'你好,我是运维小助手,负责这台腾讯云服务器的日常监控和管理。可以帮你查 CPU、内存、磁盘状态,也能直接执行操作——重启服务、清理日志、Kill 进程,发条消息就行。有什么需要帮忙的吗?'
实战一:自然语言查服务器状态
查 CPU 使用率 问"目前服务器的 CPU 占用情况是什么",回复是一份结构化报告:
**当前 CPU 占用:4.8%**用户进程:0% | 系统内核:4.8% | 空闲:95.2% | IO 等待:0%
系统负载很低,运行状态良好。
没有把 top 命令的原始输出直接扔过来,而是整理成了人能直接读懂的报告——这正是定制提示词的价值所在。
查内存占用
**当前内存占用:**总内存:1.9Gi | 已使用:853Mi(约 44.9%) | 可用:1.1GiSwap:8.0Gi(完全未使用)
系统运行状态良好,内存充足。
它甚至主动验证了 Swap 状态,并给出"充足"的判断——不只是罗列数字。
查整机配置 问"这台服务器配置怎么样",得到的是完整的硬件信息:
CPU:Intel Xeon Platinum 8255C(2.50GHz),2 核 内存:1.9 GiB 磁盘:50GB SSD ,已用 20GB,剩余 31GB(使用率 39%)系统已稳定运行 2 天 45 分钟 当前负载:极低(0.00, 0.03, 0.07)
它还主动补充了一句"配置定位是轻量级应用服务器,适合个人项目、开发测试或小型网站部署"——这是主动的上下文理解,而不是机械的数据输出。
实战二:文件操作与危险操作的双重保险
读取文件内容 在服务器上预先创建了测试文件 /root/test.txt,让 AI 读取:
AI 准确读取并返回了文件内容,还补充了语义理解:'这是一句打招呼的话,看起来是某个应用的欢迎语或测试文本。'——它不只是复制粘贴,还有主动理解。
删除操作:AI 强制要求二次确认
'这是一个不可恢复的操作,请确认是否要删除?回复「确认」或「是」后立即删除,回复其他内容则取消操作。'
确认后才真正执行,并提示"如需恢复,请从备份中还原。"
一个有安全意识的运维助手,远比无脑服从命令的机器人更有价值 ——尤其是当你在手机上容易发错消息的时候。
实战三:发现异常进程并一键处理 这个场景模拟了最常见的运维告警:某进程把 CPU 跑满了。
我在服务器后台跑了一个 Python 计算密集型任务模拟 CPU 飙高,然后在 QQ 里发"帮我查一下有没有占用 CPU 特别高的进程":
**⚠️ 发现异常进程!**PID:702032 | CPU:51.9% (持续飙高)| 内存:27.4%(551MB)命令:python3 -c import time; [x**2 for x in range(10**8)]
这是一个正在执行的 Python 计算循环,已运行约 12 秒,导致 CPU 负载上升到 0.61。
其他进程正常:openclaw-gateway 1.6%,腾讯云监控进程均在 1.1% 以下。
需要我终止这个高 CPU 进程吗?
它不但找到了问题,还通过分析命令内容推断出这是一个计算任务,并主动询问是否要处理。
'进程 PID 702032 已终止。CPU 负载已恢复正常,内存占用回到正常水平,系统运行平稳,无需进一步处理。'
从发现异常到处理完成,发了两条 QQ 消息 ,没有打开任何终端。
实战四:错误日志分析——粘贴报错,AI 给出完整解决方案 把一段真实的 Node.js 部署报错发给运维小助手:
error: invalid value for environment variable 'PORT' : 'abc' Error: Cannot find module '/root/app/server.js' npm ERR! code ENOENT npm ERR! path /root/app/package.json
AI 识别出了这段日志里的三个独立问题 并分别给出修复方案:
问题 1:PORT 环境变量无效 ——'abc' 应该是数字,修复:export PORT=3000
问题 2:缺少 server.js ——应用入口文件不存在,需要确认代码是否正确上传
问题 3:缺少 package.json ——项目配置文件不存在,检查部署目录完整性
三个问题逐条拆解,每个都给出了对应的修复步骤。排查这样一段报错,平时可能要搜索三四次,AI 直接帮你一次性拆解完。
探索:HEARTBEAT 定时巡检的完整踩坑过程 前四个场景都是"我问它答",我想更进一步——让 AI 定时主动汇报,完全不需要我触发 。这个探索过程比想象中复杂,但每一步都学到了东西,完整记录下来。
第一步:搞清楚为什么 crontab 不够 在 QQ 里告诉运维 bot'每天下午 15:06 自动检查服务器状态,然后发一条消息给我':
AI 先演示了一次完整的状态检查报告,然后开始讨论定时触发方案。随即提到了系统 crontab 的一个核心局限:
系统 crontab 只能在后台调用脚本,它不在 OpenClaw 的运行上下文里,所以脚本执行完了,结果也没有出口发到 QQ 。想让 AI 主动发 QQ 消息,必须在 OpenClaw 自己的上下文里触发。
这让我认识到一个关键区别:定时跑脚本 ≠ 定时让 AI 发送消息,两者之间差了整个 OpenClaw Agent 上下文。
第二步:理解 HEARTBEAT 机制 AI 解释了 OpenClaw 内置的 HEARTBEAT 心跳机制:
HEARTBEAT 由 OpenClaw 主系统每 30 分钟触发一次,每次触发时读取 HEARTBEAT.md 的任务描述,Agent 执行后把结果主动推送出去。因为是在 Agent 上下文里运行的,才能真正发 QQ 消息。如果没什么要汇报的,Agent 回复 HEARTBEAT_OK,这条消息会被系统静默丢弃,不打扰用户。
更新了 HEARTBEAT.md,写入每次触发都必须执行的巡检任务
在 openclaw.json 的 agents.defaults 里加入:"heartbeat": {"every": "3m", "target": "last"}
重启 Gateway
AI 同时创建了巡检脚本 /tmp/server_daily_check.sh 并手动测试,输出格式完全正确这仅仅是脚本输出内容,AI 回答了,并不是主动的输出 :
📊 服务器日报 - 2026-02-28 15:23【🖥 CPU 使用】使用率:4.8%【💾 内存使用】总内存:1963MB | 已用:819MB | 占用率:41.7%【💽 磁盘使用】使用率:39%【📋 CPU 占用 TOP 3】openclaw-gateway | 13.2% CPU /usr/bin/bash 4.1% CPU barad_agent 1.1% CPU
第三步:发现 no-target 问题 等了 3 分钟,QQ 没有收到任何消息。运行诊断命令:
clawdbot system heartbeat last
{ "status" : "skipped" , "reason" : "no-target" , "preview" : "**服务器巡检报告**\n时间:2026-02-28 20:35:33\n\n**CPU 使用率:** 0.0% ✓\n**内存使用率:** 42.1% ✓\n**磁盘空间:** 39% (31G 可用) ✓\n\n服务器运行状态正常,所有指标均在安全范围内。" }
preview 里有完整的巡检报告 ——说明 AI 确实执行了任务、生成了内容,但 reason: no-target 让它原地哑火了,没有发出去。
target: "last" 需要一个已建立的对话引用,但 qqbot 插件在这里找不到匹配的投递目标。
第四步:转向 OpenClaw 原生 cron 系统 偶然发现 ~/.openclaw/cron/ 目录里有个 jobs.json——OpenClaw 其实内置了独立的定时任务系统,和 HEARTBEAT 是两套机制。查看帮助:
参数相当完整:--cron 支持标准 cron 表达式,--channel 指定渠道,--to 可以直接写目标用户 ID,--announce 把结果发出去。于是从 qqbot 的会话记录里找到了我的 QQ openid,跑了一条精确配置的测试任务:
任务创建成功,delivery 里明确写了 channel: qqbot、to: A8FC...(我的 QQ openid),2 分钟后按时触发(cron list 显示 No cron jobs,说明已执行并自动删除)。但 QQ 还是没收到消息。
结论 经过 HEARTBEAT 和 cron 两种方式的完整验证:AI 生成报告没问题,触发机制没问题,卡在 QQ 的主动消息投递上 。
推测原因是 QQ 开放平台的沙箱模式限制 :Bot 在测试阶段只能被动回复用户消息,不能主动发起对话。这是平台侧的权限控制,正式上线审核通过后应该能跑通——但这只是推测,还需要进一步验证。
整个折腾过程把 OpenClaw 的定时任务体系摸了个遍,也弄清楚了 HEARTBEAT(感知触发)和 cron(精准定时)的分工逻辑,这本身就是收获。
如果你也在研究这个方向,或者已经跑通了 QQ 主动推送,欢迎在评论区告诉我是怎么做到的 ——是沙箱限制、还是另有配置方式,大家一起搞清楚,也许能给后来人少走几步弯路。
原理拆解:为什么 QQ 能控制服务器? 关键在于:OpenClaw 的进程本身就运行在这台 Lighthouse 服务器上,它对当前机器有完整的访问权限。消息流程:
QQ 消息 → QQ 开放平台(中转)→ OpenClaw 网关(port 18789,在你的服务器上) → AI 大脑(腾讯混元 LLM)→ bash 工具(在服务器本机执行命令) → 结果整理成自然语言 → 原路返回你的 QQ
这和"普通聊天 AI"的本质区别:OpenClaw 是一个真正的 Agent ——LLM 是大脑,bash 工具是手,它能说 + 做 ,而不只是给建议。
腾讯云 Lighthouse 在这套方案里非常关键——正是因为它提供了 OpenClaw 的一键部署模板,把原本复杂的环境配置、依赖安装压缩成了几分钟的操作。
总结 这次实践重新定义了我对"运维"的认知边界。以往运维 = SSH + 命令行 + 记大量参数;现在的可能性是:把 AI 部署在服务器上,把 IM 工具变成控制台 。
零门槛操作 :不需要记 Shell 命令,手机发消息就行
完全自主 :数据和服务都在自己的腾讯云服务器上,完全可控
安全内置 :危险操作二次确认、行为边界在提示词层面明确定义
可持续扩展 :安装不同技能就能扩展不同能力,今天是运维,明天是代码部署助手
如果你有一台腾讯云 Lighthouse,这套方案上手成本比想象中低得多。那台默默运行的服务器,真的可以开口说话了。
参考资料 相关免费在线工具 RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
随机西班牙地址生成器 随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Markdown转HTML 将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online