📦 Bot Status API — 状态监控API
v1.0.1零依赖 Node.js 服务,一键暴露 OpenClaw 智能体运行健康、服务连通、定时任务、技能列表与系统指标,支持 HTTP/CLI/文件检测,快速接入监控面板。
详细分析 ▾
运行时依赖
版本
Initial public release
安装命令
点击复制技能文档
# 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.js、collectors/ 与 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 | url、healthPath、method、headers、body | | command | 执行 shell 命令,检查退出码 0 | command、timeout | | 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 内置模块(http、fs、child_process) - 非阻塞 — 所有 shell 命令均采用异步 exec,绝不使用 execSync - 后台刷新 — 缓存按间隔刷新,请求始终瞬时(约 10ms)从缓存返回 - 配置驱动 — 一切皆在 config.json`,无硬编码值