Skip to content

GitHub 仓库监控

GitHub 的邮件通知信噪比很低,重要的 Issue 和 Release 容易淹没在大量通知中。通过 Moltbot 的定时任务和 GitHub MCP 工具,你可以精确监控特定仓库的关键活动,只在有实质更新时才收到通知。

前置条件

  • Moltbot 已部署并运行
  • Telegram Bot 已配置
  • 定时任务(Cron)已启用:参考 定时任务文档
  • GitHub MCP 工具已配置:需要有效的 GitHub Token,具备读取目标仓库的权限

配置步骤

第一步:确定监控目标

明确你要监控哪些仓库以及关心哪些类型的活动:

活动类型说明适用场景
Issue新建、关闭、评论跟踪 Bug 报告和功能请求
Pull Request新建、合并、Review关注代码变更
Release新版本发布依赖库更新
Star / Fork仓库热度变化开源项目运营

第二步:编写基础监控 Cron

yaml
cron:
  - name: repo-watcher
    schedule: "*/30 * * * *"
    channel: telegram
    prompt: |
      用 GitHub 工具检查以下仓库过去 30 分钟的活动:
      - steipete/moltbot
      - langchain-ai/langchain
      如果有新的 Issue、PR 或 Release,给我发一条消息。
      如果没有任何更新,不要发送。

关键细节:

  • "*/30 * * * *" 表示每 30 分钟执行一次
  • 最后一句「没有更新就不发」是核心——避免每半小时收到「无事发生」的消息
  • 监控间隔应与 prompt 中的时间窗口一致(30 分钟执行一次就检查过去 30 分钟)

第三步:优化通知格式

基础配置可用但信息密度不够。优化后的版本:

yaml
cron:
  - name: repo-watcher
    schedule: "*/30 * * * *"
    channel: telegram
    prompt: |
      检查以下 GitHub 仓库过去 30 分钟的活动:

      监控列表:
      - steipete/moltbot(关注 Issue、PR、Release)
      - langchain-ai/langchain(仅关注 Release)
      - anthropics/anthropic-sdk-python(仅关注 Release)

      输出格式:
      - 每个有更新的仓库单独一段
      - Issue/PR 显示标题、编号和链接
      - Release 显示版本号和主要变更摘要
      - 在开头用一句话总结更新数量

      如果所有仓库都没有更新,不要发送任何消息。

第四步:为不同仓库设置不同频率

活跃仓库和稳定仓库不需要相同的检查频率:

yaml
cron:
  - name: active-repo-watcher
    schedule: "*/15 * * * *"
    channel: telegram
    prompt: |
      检查 steipete/moltbot 过去 15 分钟的新 Issue 和 PR...
      如果没有更新,不要发送。

  - name: dependency-release-watcher
    schedule: "0 */6 * * *"
    channel: telegram
    prompt: |
      检查以下依赖库过去 6 小时有没有新 Release:
      - anthropics/anthropic-sdk-python
      - openai/openai-python
      - langchain-ai/langchain
      如果没有更新,不要发送。

进阶技巧

监控特定标签的 Issue

如果你只关心带有特定标签的 Issue(比如 bughelp-wanted),在 prompt 中明确指定:

yaml
prompt: |
  检查 steipete/moltbot 仓库:
  - 过去 1 小时内新建的标签为 "bug" 的 Issue
  - 过去 1 小时内被标记为 "help-wanted" 的 Issue
  只关注这些标签,忽略其他 Issue。
  没有匹配的 Issue 就不要发送。

结合记忆实现变更追踪

让 Moltbot 记住之前的状态,实现更智能的对比:

yaml
prompt: |
  检查 steipete/moltbot 仓库的当前状态:
  - 打开的 Issue 总数
  - 打开的 PR 总数
  - 最新的 Release 版本号

  与记忆中上次记录的状态对比。如果有变化:
  1. 报告具体变化(新增了哪些、关闭了哪些)
  2. 更新记忆中的状态记录

  如果没有变化,不要发送。

竞品监控

监控竞争对手或同类项目的动态:

yaml
cron:
  - name: competitor-watch
    schedule: "0 9 * * 1-5"
    channel: telegram
    prompt: |
      检查以下项目过去 24 小时的活动:
      - [竞品仓库列表]
      重点关注:新 Release、重大 Issue、路线图变更。
      如果有值得关注的动态,生成简要分析。
      没有重要更新就不发送。

自动分类和优先级

在 prompt 中加入优先级判断:

yaml
prompt: |
  ...
  对发现的更新按重要程度分类:
  - 🔴 紧急:安全漏洞、破坏性变更
  - 🟡 重要:新 Release、重大功能
  - 🟢 一般:普通 Issue 和 PR

  只推送 🔴 和 🟡 级别的更新。

常见问题

GitHub API 限流怎么办? GitHub API 有每小时 5000 次请求的限制(使用 Token)。每 30 分钟检查 2-3 个仓库远低于这个限制。但如果你监控大量仓库,建议降低频率或分组轮询。

如何监控私有仓库? 确保你的 GitHub Token 具有 repo 权限即可。配置方式与公开仓库相同。

历史通知会重复吗? 通过在 prompt 中指定「过去 N 分钟」的时间窗口并让它与 Cron 间隔一致,可以避免重复。如果需要更精确的去重,可结合记忆系统记录已通知的 Issue/PR 编号。


相关文档

本站为第三方教程站,与 Moltbot 官方无关