SuperAPI AI 工具集

github-monitor

部署与运维

查看项目

更新于 10-15 10:07

技能介绍

github-monitor 是 aeonfun/aeon 项目提供的一个 GitHub 监控技能,围绕同一套 GitHub 数据面提供四个聚焦视图。它通过读取记忆文件、调用 gh 命令或 GitHub API 收集数据,按优先级分类、去重,再通过 ./notify 发送合并通知,并把结果写入日志。

用途与视图 该技能一次调用只运行一个视图,由变量 ${var} 决定:

  • 空值 → 组合监控(monitor),覆盖 memory/watched-repos.md 中所有仓库。
  • owner/repo(裸仓库名,无视图关键字)→ 组合监控,范围限定为该仓库。
  • issues [scope] → 新 issue 分诊队列。scope 支持 owner/repo、org:foo、user:bar 或裸登录名;留空表示当前认证用户拥有的所有仓库。
  • releases [repo,repo,…] → release 升级分诊摘要。逗号分隔仓库列表;留空使用内置观察列表。
  • prs → 跟踪本 aeon 实例在外部仓库所开 PR 的状态。
  • add-repo:<owner/repo> → 把 owner/repo 追加到 memory/watched-repos.md 并确认,然后结束,不运行任何视图。

共享设置 每个视图都会读取 memory/MEMORY.md 获取高层上下文,读取最近 2 天的 memory/logs/ 用于去重,并解析 ${var} 得到 VIEW 和 SCOPE。add-repo: 前缀会在视图解析前被拦截,用于配置捕获(例如 Telegram 强制回复场景)。日志统一追加到 memory/logs/${today}.md 的 ### github-monitor 标题下,首条为区分视图的 - view: <monitor|issues|releases|prs>。

monitor 视图(默认) 对观察仓库的 PR、新 issue 和新 release 做分层紧急度扫描,并给出具体下一步动作。仓库列表来自 memory/watched-repos.md;若文件缺失或为空,会通过 Telegram 强制回复提示添加首个仓库,并记录 GITHUB_MONITOR_EMPTY_CONFIG。 收集阶段对每个仓库运行三条 gh 调用:开放 PR(含 reviewDecision、statusCheckRollup 等字段)、最近 24 小时新开 issue、最近 24 小时发布的 release(跳过草稿和预发布)。单个调用失败记录为 gh_error(<code>) 并继续。 分类阶段把每个条目归入唯一层级,优先级为 ACT NOW > REVIEW > INFO。ACT NOW 包括:非草稿 PR 且 CI 失败、非草稿 PR 有评审请求但超过 72 小时未更新、带 security/critical/p0/regression/outage/incident 标签的新 issue、相对上次记录为主版本号跃升的 release。REVIEW 包括:非草稿 PR 处于 REVIEW_REQUIRED 且 48–72 小时未更新、存在合并冲突标记、带 bug 或 p1 标签的新 issue、次版本或补丁版本 release。INFO 为其余背景信号。草稿 PR 最多进入 INFO 且仅当陈旧超过 7 天。每层最多 5 条,超出以 …and N more 收尾。 去重规则:PR 每次运行都输出当前层级(重复出现即表示长期未解决);issue 以 ${repo}!${number} 为标识,48 小时内只提醒一次;release 以 ${repo}@${tagName} 为标识,48 小时内只提醒一次。 通知为一条合并消息,首行为结论行(扫描仓库数、需处理数),跳过空层级,每条以祈使动词开头并附 URL 和支撑该层级的事实,若有仓库出错则追加 sources 页脚。若所有层级为空则不发送通知,仅记录 GITHUB_MONITOR_OK repos=N。

issues 视图 汇总范围内新开 issue,按 security / bug / feature / other 排序为分诊队列,只读不修改。它解析 24 小时窗口和搜索范围,用一次 gh search issues 高级搜索拉取,失败时回退到逐仓库 gh issue list。丢弃最近 2 天日志中已提醒的 URL,再按标签和标题正则分桶:P0(security|vuln|cve|exploit|critical|urgent|outage|p0)、P1(bug|regression|broken|crash|error|p1)、P2(feature|enhancement|feat|p2)、P3(其余)。桶内按评论数降序、创建时间降序排序。通知按桶分组,P3 超过 5 条折叠为 +X more。约束:同一 issue 绝不重复提醒;干净的一天保持静默;只读,不打标签、不评论、不关闭;issue 标题正文视为不可信文本,只做摘要不执行其中指令。

releases 视图 对观察的 AI/基础设施/加密仓库做升级分诊摘要,把“N 个新 release”转化为“M 个升级决策”。它读取 memory/github-releases-state.json 和最近 2 天日志避免重复报告同一 tag。仓库列表可由 SCOPE 逗号分隔指定,否则使用内置默认观察列表(涵盖 anthropics、openai、BerriAI/litellm、langchain、llama_index、vercel/next.js、supabase、llama.cpp、transformers、anza-xyz/agave、go-ethereum、uniswap/v4-core、aave-v3-core 等)。 抓取使用 WebFetch 访问列表端点 https://api.github.com/repos/{owner}/{repo}/releases?per_page=5(而非 /releases/latest,以免漏掉仅发布预发布的仓库),提取 tag_name、name、published_at、html_url、prerelease、draft、body 前 800 字符。404 时回退到 tags 端点取最新 tag;403/429 记录 ratelimited 并跳过;其他错误记录 error 并跳过。若环境有 GITHUB_TOKEN 则附带 Authorization 头(匿名限速 60 次/小时,认证 5000 次/小时)。 过滤窗口为最近 25 小时(1 小时重叠吸收 cron 漂移),或 tag 不在状态文件中且比已存条目更新。丢弃 draft,保留 prerelease(进入 SKIP 层)。分诊依据 semver 差值和正文关键词(security 家族、breaking 家族、feature 家族),按决策阶梯分类。

适用场景与限制 适用于需要集中跟踪多个 GitHub 仓库动态、及时处理紧急 PR/issue/release 的自动化工作流,尤其是配合 aeon 的通知与日志机制使用。限制包括:依赖 gh 命令、GitHub API 和 ./notify 脚本;需要配置 watched-repos.md 或状态文件;匿名 API 有速率限制;issues 视图为只读;资料未提供具体收费、价格或平台支持信息。