67776b00929675db00cdbe4389e0df799874b364
LinuxAwesomeBot
轻量级 OneBot 11 Python 机器人:查看 Linux 功耗/CPU/内存/温度/网络,并在 CPU 高负载时主动提醒并列出高负载进程。
基于 aiohttp + psutil,机器人作为反向 WebSocket 服务端运行,NapCat / Lagrange / go-cqhttp 等 OneBot 实现端主动连入。
安装
使用 uv 管理依赖(首次运行会自动创建虚拟环境并安装依赖):
uv sync
配置
cp config.example.toml config.toml
# 编辑 config.toml:端口、access_token、告警群号/好友号、CPU 阈值
启动机器人
uv run linuxawesomebot
也可以 uv run python bot.py,效果相同。
测试
uv run pytest
OneBot 实现端配置(以 NapCat 为例)
在 NapCat 的 onebot11 网络配置中添加反向 WebSocket:
{
"ws": {
"enable": true,
"url": "ws://127.0.0.1:8765/ws",
"token": ""
}
}
token 需与 config.toml 的 access_token 一致(都留空也可)。
聊天命令
群聊需 @机器人 或使用 /、! 前缀;私聊直接发。
| 命令 | 说明 |
|---|---|
/status 或 状态 |
总览:功耗、CPU、负载、内存、最高温度、网速、运行时间 |
/power 或 功耗 |
功耗详情(电池功率 / Intel RAPL 各域瓦数) |
/top 或 进程 |
CPU 占用 TOP10 进程 |
/temp 或 温度 |
各传感器温度 |
/net 或 网络 |
网络上下行速率 |
/help 或 帮助 |
命令帮助 |
高负载告警
后台每 10 秒采样,CPU 连续 2 次超过阈值(默认 85%)即向配置的群/好友推送告警,
消息包含当前 CPU%、负载和 TOP5 高负载进程(PID/名称/CPU/内存)。同一轮高负载期间
冷却 10 分钟不重复告警;回落到阈值以下会发送恢复通知。以上均可在 config.toml 的 [alert] 中调整。
功耗说明
- 笔记本:读取
/sys/class/power_supply/BAT*/power_now - Intel CPU:读取 RAPL
/sys/class/powercap/intel-rapl:*/energy_uj,两次采样差分计算瓦数 - AMD CPU / 多数虚拟机 / 云主机:无硬件计数器,
/power会提示不支持(属正常)
平台兼容性
| 功能 | Linux | Windows |
|---|---|---|
| CPU/内存/进程/磁盘/网络 | 完整支持 | 完整支持 |
| 负载 (load average) | 内核提供 | psutil 模拟值 |
| 功耗 (瓦数) | RAPL / 电池功率 | 不可测,笔记本显示电池电量与充放电状态 |
| 温度 | lm-sensors / sysfs | WMI 热区(部分主板支持,可能需管理员权限) |
机器人本体(OneBot 反向 WS、命令、告警)在两个平台行为一致。
本地测试(Windows 也可)
systemd 部署(Linux)
# /etc/systemd/system/linuxawesomebot.service
[Unit]
Description=LinuxAwesomeBot
After=network.target
[Service]
WorkingDirectory=/opt/LinuxAwesomeBot
ExecStart=/usr/local/bin/uv run linuxawesomebot
Restart=always
[Install]
WantedBy=multi-user.target
systemctl enable --now linuxawesomebot
Description
OneBot 11 Linux monitoring bot: power/CPU/temp/network + high-load alerts
514 KiB
0 Stars
1 Watchers
0 Forks
Languages
Python
100%