📦 Bot Status API — 状态监控API

v1.0.1

零依赖 Node.js 服务,一键暴露 OpenClaw 智能体运行健康、服务连通、定时任务、技能列表与系统指标,支持 HTTP/CLI/文件检测,快速接入监控面板。

0· 2.0k·7 当前·7 累计
by @suspect80·MIT-0
下载技能包
License
MIT-0
最后更新
2026/4/9
0
安全扫描
VirusTotal
可疑
查看报告
OpenClaw
安全
medium confidence
该技能内部逻辑与其声明的用途(本地 OpenClaw 状态/健康 API)一致,但会基于配置读取大量本地文件并执行 shell 命令,部署前请审查配置并以最小权限运行。
评估建议
此技能适用于本地监控,但会读取 OpenClaw 本地文件并执行你在配置中指定的 shell 命令,使用前请审查并做好加固。...
详细分析 ▾
用途与能力
代码实现状态 API,收集机器人核心生命体征、服务检查(HTTP/命令/文件)、通过配置命令获取邮件未读数、定时任务、Docker/Portainer 容器、开发服务器进程、已安装技能及 /proc 系统指标,均与描述相符。
指令范围
指令与代码有意读取 OpenClaw 文件(heartbeat-state.json、cron/jobs.json、auth-profiles.json)、扫描技能目录并执行配置中指定的 shell 命令进行服务/邮件检查,符合监控用途,但会读取潜在敏感本地文件并运行任意命令。
安装机制
无安装规范(仅提供安装说明)。源文件由用户手动复制/运行,安装过程中不会从外部 URL 获取任何内容。
凭证需求
技能未声明必需的环境变量或凭证,与包内容一致。但 server.js 设置 NODE_TLS_REJECT_UNAUTHORIZED=0(全局禁用 TLS 验证),收集器读取代理文件(auth-profiles.json)及配置中的任意路径。这些行为可由 Portainer/自签名场景解释,但扩大了数据与网络信任面。
持久化与权限
always 为 false,技能不会尝试修改其他技能或系统级代理配置。它是用户运行的独立服务(systemd 指令可选)。
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv1.0.12026/2/5

Initial public release

可疑

安装命令

点击复制
官方npx clawhub@latest install bot-status-api
镜像加速npx clawhub@latest install bot-status-api --registry https://cn.longxiaskill.com

技能文档

# Bot Status API 一个可配置的 HTTP 服务,将 OpenClaw bot 的运行状态以 JSON 形式暴露出来,专为仪表盘集成、监控与透明化而设计。 ## 它能提供什么 - Bot 核心: 在线状态、模型、上下文使用量、运行时长、心跳时间 - Services: 对任意 HTTP 端点、CLI 工具或文件路径进行健康检查 - Email: 任意邮箱提供商的未读计数(himalaya、gog 等) - Cron Jobs: 直接读取 OpenClaw 的 cron/jobs.json - Docker: 通过 Portainer API 检查容器健康 - Dev Servers: 通过进程 grep 自动检测运行的开发服务器 - Skills: 列出已安装与可用的 OpenClaw skills - System: 来自 /proc 的 CPU、内存、磁盘指标 ## 部署步骤 ### 1. 复制服务文件 将 server.jscollectors/package.json 复制到目标目录。 ### 2. 创建 config.json 将 config.example.json 复制为 config.json 并按需修改: ``json { "port": 3200, "name": "MyBot", "workspace": "/path/to/.openclaw/workspace", "openclawHome": "/path/to/.openclaw", "cache": { "ttlMs": 10000 }, "model": "claude-sonnet-4-20250514", "skillDirs": ["/path/to/openclaw/skills"], "services": [ { "name": "myservice", "type": "http", "url": "http://...", "healthPath": "/health" } ] } ` ### 服务检查类型 | 类型 | 说明 | 配置项 | |------|------|--------| | http | 请求 URL,检查 HTTP 200 | urlhealthPathmethodheadersbody | | command | 执行 shell 命令,检查退出码 0 | commandtimeout | | file-exists | 检查路径是否存在 | path | ### 3. 运行 `bash node server.js ` ### 4. 持久化(systemd 用户服务) `ini # ~/.config/systemd/user/bot-status.service [Unit] Description=Bot Status API After=network.target [Service] Type=simple WorkingDirectory=/path/to/bot-status ExecStart=/usr/bin/node server.js Restart=always RestartSec=5 Environment=PORT=3200 Environment=HOME=/home/youruser Environment=PATH=/usr/local/bin:/usr/bin:/bin [Install] WantedBy=default.target ` `bash systemctl --user daemon-reload systemctl --user enable --now bot-status loginctl enable-linger $USER # survive logout ` ### 5. 来自 OpenClaw 的 Context/Vitals Bot 应定期向工作区的 heartbeat-state.json 写入 vitals: `json { "vitals": { "contextPercent": 62, "contextUsed": 124000, "contextMax": 200000, "model": "claude-opus-4-5", "updatedAt": 1770304500000 } } ` 将以上内容加入 HEARTBEAT.md,使 bot 在每个心跳周期更新它。 ## 端点 | 端点 | 说明 | |------|------| | GET /status | 完整状态 JSON(缓存) | | GET /health | 简单的 {"status":"ok"} | ## 架构 - 零依赖 — 仅使用 Node.js 内置模块(httpfschild_process) - 非阻塞 — 所有 shell 命令均采用异步 exec,绝不使用 execSync - 后台刷新 — 缓存按间隔刷新,请求始终瞬时(约 10ms)从缓存返回 - 配置驱动 — 一切皆在 config.json`,无硬编码值

数据来源ClawHub ↗ · 中文优化:龙虾技能库