一个跨平台(macOS / Windows / Linux)的镜像管理 CLI,支持:
- 按工具选择镜像(不是全量强制切换)
- 对候选镜像测速,自动选择最快
- 一键
apply切换 - 一键
restore回滚到上次备份 - 可通过
refresh拉取远程最新镜像目录(catalog) verify批量探测并写入报告 / 健康历史prune按连续失败次数禁用劣质镜像(不删 catalog)
npmpnpmyarnbunpipuvgocargorustupgradlenugetgemcomposerhomebrew(当前管理HOMEBREW_BOTTLE_DOMAIN)mavendocker
镜像源定义在
mirrors.catalog.json,你可以自行增减候选项。
| 读者 | 文件 |
|---|---|
| 人类(详细教程) | docs/GUIDE.zh-CN.md |
| AI 助手(操作手册) | AGENTS.md |
| 镜像来源维护 | MIRROR_SOURCES.md |
cd /Users/andrewwang/Code/Mirror3
python3 mirror3.py list-toolspython3 mirror3.py status --tools npm,pnpm,pip,uvpython3 mirror3.py speedtest --tools npm,pip,uv --top 3 --timeout 4Rust/Bun 示例:
python3 mirror3.py speedtest --tools bun,cargo,rustup --top 2python3 mirror3.py apply --tools npm,pip,uv全工具一键(按测速自动选最快):
python3 mirror3.py applypython3 mirror3.py apply --tools npm,pip,uv --prefer npm=npmmirror,pip=tunapython3 mirror3.py apply --tools npm,pip --dry-runpython3 mirror3.py restore --tools npm,pip,uvpython3 mirror3.py list-snapshotspython3 mirror3.py refresh --source-url "https://example.com/mirrors.catalog.json"
refresh用于“定期获取最新 mirror”。你可以托管一份团队维护的 catalog JSON(例如 GitHub Raw URL),然后定时同步。
python3 mirror3.py schedule带远程 catalog 自动刷新:
python3 mirror3.py schedule --source-url "https://example.com/mirrors.catalog.json"模板文件:
templates/macos/com.mirror3.daily.plisttemplates/windows/mirror3-daily.xml
探测全部候选并更新健康历史(默认写入 .mirror3/health.json):
python3 mirror3.py verify --markdown连续 3 次 verify 都失败的镜像会被标记禁用(写入 .mirror3/disabled.json,不修改 catalog):
python3 mirror3.py prune --streak 3查看 / 恢复禁用项:
python3 mirror3.py list-disabled
python3 mirror3.py prune --enable npm=npmjs
python3 mirror3.py prune --clear推荐日常链路:
python3 mirror3.py verify --markdown && python3 mirror3.py prune --streak 3 && python3 mirror3.py apply --tools npm,pip,uv报告输出目录:.mirror3/reports/verify-<timestamp>.json(以及可选 .md)。
- 所有修改前都会自动备份到
.mirror3/backups/<timestamp>/ restore默认使用LATEST快照--tools允许你只作用在需要的工具上- 采用纯 Python 标准库实现,无第三方依赖
- 你的系统若设置了代理(如 Clash),测速结果会受当前代理策略影响
- 对于
cargo(sparse+https://...)和go(...,direct)已做测速兼容处理 speedtest/apply会跳过prune禁用的镜像;list-mirrors会标注(disabled)- 镜像来源维护参考:
MIRROR_SOURCES.md