编程 mise 日常命令改走 mise-versions:没配 GitHub token 也不用撞 60 次/小时限流

2026-10-15 21:03:21

mise 日常命令改走 mise-versions:没配 GitHub token 也不用撞 60 次/小时限流

项目信息:mise 仓库 github.com/jdx/mise,release notes 见 github.com/jdx/mise/releases,时间点在 2026-10 中旬。

v2026.10.11:日常命令不再调用 api.github.com

mise install、mise exec、shims、mise outdated、mise lock、mise self-update 以及 attestation 检查,现在从 mise-versions 读取 GitHub release 数据、tag 与 attestation。以前这些命令会去打 api.github.com,没配 GitHub token 的用户共用那 60 次/小时的匿名配额,做几次版本解析就容易撞限流。改完之后,这条路径不再经过 GitHub API。

mise-versions 接管了哪些数据

当 use_versions_host 开启(默认值)时,mise-versions 成为公共 GitHub 元数据的唯一来源,覆盖范围包括:

  • release 列表与 latest
  • git tag,包括 aqua 的 github_tag 包、ubi、go 这几条后端
  • artifact attestation,包括 aqua 的 predicate_type 过滤
  • 校验和不匹配提示里显示的 digest

也就是说,走这几个后端的版本解析与校验流程,拿到的都是 mise-versions 的数据。

请求失败时的行为变化

mise-versions 请求失败时,mise 直接报错,并在错误信息里指明 use_versions_host = false 这条出路。它不会静默回退去访问 api.github.com——回退会让限流问题重新出现,也会让数据来源变得不明确。看到这个提示时,要么排查 mise-versions 的可达性,要么显式关掉 use_versions_host。

仍然直连 GitHub 的情况

以下场景不走 mise-versions:

  • mise-versions 未列出的仓库,且你配了 token(对应私有仓库场景)
  • paranoid 模式下的 attestation 检查
  • 显式设置 use_versions_host = false
  • 配置了 GitHub url_replacements
  • 使用自定义 api_url

换句话说,公共仓库的常规操作默认走 mise-versions;私有仓库、paranoid 校验和自定义地址这几类仍然需要直连 GitHub。

同批版本的其他变更

v2026.10.11 同时加了两个命令:mise bootstrap --upgrade 和 mise env --paths。前者给 bootstrap 流程补上升级入口,后者用于输出路径信息。同一版本还修掉了远程 task 文件的一处信任缺口。

v2026.10.9 修的是一个信任绕过:不可信的 path: 工具版本能把某个目录塞进 PATH。用 path: 指向来源不可控的目录时,这个漏洞会直接把该目录暴露到 PATH 中,属于需要尽快升级的修复。

v2026.10.10 起,task 可以用 skip_if 自我跳过;bootstrap 增加了 Snap、Fedora COPR 支持,以及 --adopt 的分支选择。

仓库地址:github.com/jdx/mise。

复制全文 生成海报 mise 开发工具 GitHub Shell

推荐文章

程序员茄子在线接单