SuperAPI AI 工具集

dependency-update-bot

编程与开发

查看项目

更新于 10-16 03:30

技能介绍

用途

Dependency Update Bot 用于自动化依赖升级流程。它会扫描项目中过时的软件包,运行安全审计,抓取变更日志,总结破坏性变更,并按风险分组打开 PR。其核心规则是:只更新包管理器 outdated 命令实际报告的软件包,绝不猜测或编造版本号;若无法抓取变更日志,注明缺失而非虚构内容。

主要能力

  • 支持 npm、pip、Cargo、Go modules、Ruby(Bundler)五类包管理器,自动检测并可在多包管理器场景下让用户选择扫描范围。
  • 通过各包管理器的 outdated 命令识别过时软件包,并统计数量。
  • 按版本号变化将更新分为 major、minor、patch 三级,输出分组统计。
  • 运行 CVE 安全审计:npm 使用 npm audit,pip 使用 pip-audit,Cargo 使用 cargo audit。若 patch 或 minor 更新中存在 Critical 或 High CVE,会自动提升为 major 优先级,单独开 PR 并在 PR 描述中写入 CVE 详情。
  • 按顺序尝试抓取变更日志:GitHub Releases API、npm registry README、PyPI description,命中即停;无内容则标注“No changelog found”。
  • 使用 Gemini(gemini-2.0-flash)按风险分组生成 Markdown 格式的 PR 描述,要求只列出新旧版本之间的变化、用 bullet point、破坏性变更加 BREAKING 前缀、CVE 修复加 SECURITY 前缀并包含 CVE ID,每个包 3 至 5 条要点封顶。
  • 按风险分组创建 PR:每组一个 PR,major 更新每个包单独一个 PR 以便逐个审查;分支命名形如 deps/{RISK}-updates-YYYYMMDD。
  • 具备诊断模式:某个包安装失败时不终止整个流程,而是识别错误类型(peer 依赖冲突、ERESOLVE、版本不存在、Python 版本不兼容、cargo E0463 等)并给出原因与建议修复方案,继续处理成功的包。

使用方式

  1. 环境检查:确认 GEMINI_API_KEY 已设置(缺失则停止并提示在 aistudio.google.com 获取后写入 .env),确认 GitHub CLI 已认证(未认证则停止并提示运行 gh auth login)。GITHUB_TOKEN 未设置时变更日志抓取速率限制为每小时 60 次。
  2. 检测包管理器并确认扫描范围,随后检测过时软件包。若全部为空,输出“All packages are up to date.”并停止。
  3. 按版本变化分级并报告 breakdown,然后执行安全审计并报告发现。
  4. 抓取变更日志,调用 Gemini 生成 PR 描述。
  5. 创建分支、更新依赖文件(npm 使用 --save-exact,pip 改写 requirements.txt,Cargo 使用 cargo update,Go 使用 go get 与 go mod tidy,Ruby 使用 bundle update)、提交并创建 PR,附加 dependencies 标签;major 更新加 breaking-change 标签,CVE 修复加 security 标签。每个 PR 后切回 main。
  6. 输出汇总,包含安全发现、按风险级别列出的包与 PR 编号、无变更日志的包、安装失败项,并提示 major 更新 PR 需逐个审查后再合并。

适用场景

适合需要定期批量升级依赖、同时关注安全漏洞的软件项目;适合希望将过时依赖扫描、CVE 审计、变更日志总结和 PR 创建串成一条自动化流程的开发者或团队。

限制

  • 必须配置 GEMINI_API_KEY,否则停止执行;GitHub CLI 必须已完成认证。
  • 仅更新包管理器 outdated 命令实际报告的软件包,不猜测或编造版本号。
  • 变更日志抓取在未设置 GITHUB_TOKEN 时速率受限(每小时 60 次);抓取不到时标注缺失。
  • Cargo 依赖 cargo-outdated、cargo-audit,pip 依赖 pip-audit,未安装时技能会提示相应安装命令,功能可能受限。
  • 其他收费、价格、平台等信息暂未提供。