mrc-monitor

🍕 MRC 食堂智能取餐监控助手

基于 Firebase Firestore 的 MRC 食堂订单实时监控系统,支持多 Token 并行监控,自动推送取餐通知,解决排队等待痛点。

收藏
2.5k
安装
573
版本
v1.0.0
CLS 安全性认证2026-05-02
点击查看完整报告 >

使用说明

核心用法

MRC Canteen Monitor 是一款专为 MRC 食堂设计的订单状态监控工具。用户只需通过简单的自然语言命令(如 "mrc 73"、"token 97" 或 "monitor 42")即可启动监控服务。系统会自动提取消息中的所有数字 token,在后台启动 Python 监控脚本,通过轮询 Firebase Firestore 数据库(每 15 秒一次)实时跟踪订单状态。当订单状态变为 "Ready" 时,系统会立即通过 Telegram 或 Discord 发送 "🍕 Order X is ready!" 的通知。支持同时监控多个 token,且每个 token 独立通知。对于 "check" 命令,系统仅执行一次性查询而不启动后台进程。

显著优点

该技能在功能设计上展现了良好的工程实践。首先,支持多 token 并行监控,用户可一次性监控多个订单,系统会为每个 token 维护独立的监听状态。其次,采用后台进程(subprocess.Popen)运行监控逻辑,确保 Agent 能够立即响应用户而不阻塞。监控脚本具备完善的错误处理机制,包括网络超时重试(最多 5 次)、HTTP 错误处理(含 429 限流)、以及信号终止处理(SIGTERM、SIGINT),确保在各种异常情况下都能优雅退出。此外,脚本设有执行上限保护(MAX_CHECKS = 720,约 3 小时),防止无限期占用资源,并自动生成详细日志便于排查问题。

潜在缺点与局限性

尽管功能实用,但该技能存在明显的安全与架构局限。最核心的问题是第 16 行硬编码了 Firebase API Key(AIzaSyCUhOLuVBtHhhFglEYTDyp7GIIs5W2VA-Q),这构成了敏感信息泄露风险,虽然该密钥仅为只读权限且仅访问公开订单数据,但仍不符合安全最佳实践。其次,采用轮询(Polling)模式而非实时推送(Webhook),每 15 秒查询一次会造成一定的网络开销和延迟。此外,该技能与特定 Firebase 项目(kanteen-mrc-blr-24cfa)深度耦合,仅适用于 MRC 食堂系统,通用性受限。SKILL.md 文档也未明确声明所需的网络访问和子进程执行权限。

适合的目标群体

该技能主要面向 MRC( likely a specific institution )食堂的用餐人员,特别是那些需要同时监控多个订单(如为同事或朋友代取餐)的用户。对于希望在订单准备好后立即收到通知、避免在食堂窗口长时间排队等待的人群尤为实用。由于安全等级为 C 级且来源为 T3 级个人开发者,建议仅在个人日常使用场景中部署,不建议用于生产环境或对数据安全要求极高的企业场景。

使用风险

使用该技能需注意以下风险:首先,硬编码 API Key 虽为只读权限,但仍存在被滥用的理论可能,建议仅在可信网络环境中使用。其次,技能依赖外部 Firebase 服务的可用性,若 Firebase 服务异常或网络不稳定,监控将失效。后台脚本会持续运行最多 3 小时或 720 次轮询,期间会定期向外发送网络请求,用户需注意网络流量消耗。此外,技能通过 subprocess 调用 openclaw CLI 发送通知,这要求执行环境具备相应的 CLI 工具和权限。日志文件保存在本地 skills/mrc-monitor/logs/ 目录,需定期检查以防止磁盘空间占用。

安全解读

核心用法

mrc-monitor 是一款面向 MRC 食堂(印度理工学院马德拉斯分校)的智能订单监控技能。用户只需发送类似 "mrc 73" 或 "token 97 42" 的指令,系统即可自动提取 Token 编号,启动后台守护进程持续轮询 Firebase Firestore 数据库,实时追踪订单状态变化。

该技能支持多 Token 并行监控,每个 Token 独立通知,当订单状态变为 "Ready" 时立即通过 Telegram/Discord 推送 "🍕 Order X is ready!" 消息。监控进程采用 15 秒轮询间隔,自动退出机制确保资源高效释放,无需用户手动干预。

显著优点

  • 零配置即用:无需注册或登录,直接通过自然语言指令触发
  • 多 Token 并发:单次指令可同时监控多个订单,适合团体订餐场景
  • 即时响应:后台守护进程异步运行,主线程秒级返回确认消息
  • 智能容错:内置 5 次网络超时重试、5 次连续失败自动终止等机制
  • 全链路日志:每次监控会话生成独立日志文件,便于问题排查

潜在缺点与局限性

  • 硬编码凭证:安全认证报告指出代码中硬编码 Firebase API Key(第 15 行),存在密钥泄露风险
  • 轮询效率:15 秒固定间隔轮询而非 WebSocket 推送,API 调用次数较高(理论最大 720 次/3 小时)
  • 平台依赖:通知发送依赖 openclaw CLI 工具,耦合度较高
  • 无依赖管理:缺少 requirements.txt,依赖审计困难

适合人群

  • MRC 食堂常客,尤其是高峰时段需排队等待的学生和教职工
  • 需要同时追踪多份订单的团体订餐组织者
  • 偏好即时通知而非反复手动查询 App 的用户

常规风险

| 风险项 | 等级 | 说明 |
|--------|------|------|
| 硬编码 API Key | 🔴 High | 密钥泄露可能导致数据库未授权访问 |
| Subprocess 命令执行 | 🟠 Medium | `openclaw message send` 调用存在注入风险,虽参数相对固定 |
| 外部 API 轮询 | 🟡 Low | 周期性调用 Firebase,硬编码 key 与 URL 参数传递 |
| 来源可信度 | ⚠️ | T3 级别个人开发者项目,GitHub 仓库信息受限 |

使用建议

建议部署前优先修复硬编码凭证问题,将 FIREBASE_API_KEY 迁移至环境变量;生产环境可考虑替换轮询为 Firebase 实时数据库推送机制以降低 API 消耗。

mrc-monitor 内容

scripts文件夹
手动下载zip · 4.2 kB
monitor.pytext/plain
请选择文件