Install
openclaw skills install @youbuwei/github-acceleratorUse when GitHub access fails: fallback mirrors for git.
openclaw skills install @youbuwei/github-acceleratorGitHub 访问不畅时的降级加速技能:直连优先 → 镜像兑底 → 用前探测。覆盖网页内容获取、仓库克隆、raw/Release 文件下载三类场景,核心逻辑封装在自包含脚本 scripts/gh_accel.sh(仅依赖 bash + curl + git)。
# 第一步永远是探测:直连与镜像的实时状态(每台机器网络不同)
scripts/gh_accel.sh check
预期输出(节选):
== 直连探测 ==
✓ api.github.com/zen (200)
✗ github.com/ (000)
== 下载镜像(拉测试文件验内容)==
✓ ghfast.top
✓ gh-proxy.com
== clone 镜像(ls-remote 探测公开仓库)==
✓ https://gh-proxy.com/https://github.com
# 下载文件(自动降级) # 克隆仓库(自动降级)
scripts/gh_accel.sh dl <url> scripts/gh_accel.sh clone OWNER/REPO
✓=可用,✗=不可达。按 check 结果决定走直连还是镜像。
git clone https://github.com/... 卡住或失败api.github.com 完全不可达的网络(整站级封锁,镜像梯次也救不了 API 通道)——此时 gh CLI 功能全部失效,只能靠镜像脚本set-url 回官方(见 6.5)check 结果为准| 用户提到 | Agent 动作 |
|---|---|
| "GitHub 打不开 / 超时 / 网页 404" | 跑 check,内容需求改走 §4.1(gh api) |
| "clone 不下来 / git clone 卡住" | gh_accel.sh clone OWNER/REPO |
| "release 下载失败 / raw 拉不到 / 下载太慢" | gh_accel.sh dl <url> |
| "换个镜像 / 加速 GitHub" | check 探测后按结果更新梯次(§10) |
| "push 失败 / 认证失败" | 检查 remote 是否还指向镜像(§6.5) |
| 大批量 clone / CI 拉依赖 | 先 check,把存活镜像写入流水线 |
1. 探测 scripts/gh_accel.sh check → 确认直连/镜像存活状态
2. 执行 dl / clone / gh api 按需选择 → 直连失败自动降级,无需干预
3. 验证 文件比对大小或 sha256;clone 后 remote get-url 确认指向
4. 收尾 经镜像 clone 的仓库 push 前 set-url 回官方源
| 通道 | 状态 |
|---|---|
| api.github.com(gh CLI 全部操作) | ✅ 直连稳定 |
| git clone/push(HTTPS) | ✅ 直连可用,偶发失败重试即可 |
| raw / objects / codeload / gist CDN | ⚠️ 可用但偶发超时,失败即降级 |
| github.com 网页 | ❌ 间歇超时;DNS 固定解析 20.205.243.166 且该 IP 不通,改 hosts 无效 |
要内容不要页面——README/源文件一律用 gh api 直连取:
gh api repos/OWNER/REPO/readme --jq .content | base64 -d # README
gh api repos/OWNER/REPO/contents/PATH/TO/FILE --jq .content | base64 -d # 单文件(>1MB 见 6.7)
gh api repos/OWNER/REPO/contents/DIR --jq '.[].name' # 列目录
确需看渲染页面 → 用户本机浏览器打开(用户端网络不同);浏览型镜像(bgithub.xyz / kkgithub.com)实测 clone 404、超时,仅最后手段。
直连失败时自动降级:gitclone.com → gh-proxy.com。
scripts/gh_accel.sh clone OWNER/REPO [dir]
scripts/gh_accel.sh clone --no-direct OWNER/REPO [dir] # 跳过直连,测镜像链
预期输出(降级场景):
→ 直连: https://github.com/hunshcn/gh-proxy
✗ 直连失败,降级镜像…
→ 镜像: https://gitclone.com/github.com/hunshcn/gh-proxy
✗ 失败
→ 镜像: https://gh-proxy.com/https://github.com/hunshcn/gh-proxy
✅ 经镜像 clone 成功 -> gh-proxy
⚠️ remote 指向镜像,push 前执行:
git -C gh-proxy remote set-url origin https://github.com/hunshcn/gh-proxy.git
直连失败时自动加前缀降级:ghfast.top → gh-proxy.com。
scripts/gh_accel.sh dl <github-url>
scripts/gh_accel.sh dl --no-direct <github-url> # 跳过直连
gh release download --repo OWNER/REPO # release 资产优先走 API 直连
下载后验证完整性(镜像可能截断/限流):ls -l 比对文件大小,或与官方 release 页 sha256 对比。
| 用途 | 梯次(脚本按序自动尝试) | 实测 |
|---|---|---|
| 文件下载 | ghfast.top → gh-proxy.com | ✅ 4-5s 稳 / ⚠️ 波动 |
| 仓库克隆 | gitclone.com → gh-proxy.com 前缀 | ⚠️ 冷缓存 502 / ✅ ls-remote 实测 |
已死勿用:ghp.ci、ghgo.xyz、ghproxy.com、hub.fastgit.org;疑似限流:ghproxy.net(2.3MB 文件只给 0.56MB)。
自建/私有代理:经 §5.1 本地配置注入,自动排在梯次最前(已配置的机器上 check 输出带 [本地] 标记)。
scripts/gh_accel.sh check # 探测直连 + 下载镜像 + clone 镜像
scripts/gh_accel.sh dl <github-url> # 下载,直连→镜像自动降级
scripts/gh_accel.sh dl --no-direct <url> # 强制走镜像链
scripts/gh_accel.sh clone <owner/repo> [dir] # 克隆,直连→镜像自动降级
scripts/gh_accel.sh clone --no-direct o/r [dir]
公共梯次硬编码于脚本顶部 DL_PROXIES / CLONE_PROXIES 数组;个人自建代理不走硬编码,用 §5.1 配置文件注入。
自建代理不写进脚本,写入机器本地配置文件即可自动生效,并优先于公共镜像:
~/.config/gh-accelerator/proxies.conf(环境变量 GH_ACCEL_CONFIG 可覆盖;首次运行脚本会自动生成注释模板)# 注释,裸域名自动补 https://DOWNLOAD_PROXY=https://your-proxy.example.com
CLONE_PROXY=https://your-proxy.example.com/https://github.com
Agent 行为约定:用户提到"我有自己的加速域名 / 自建代理"时,Agent 应把地址写入上述配置文件(DOWNLOAD_PROXY / CLONE_PROXY 各一行),随后跑 scripts/gh_accel.sh check 验证,并确认输出带 [本地] 标记。该文件属机器本地隐私,禁止提交到任何仓库或发布物。
check 某站显示 000✗ xxx (000)check;连续多次失败则从脚本梯次数组中移除该站dl 直连失败但镜像成功✗ 直连失败 (http=000) 后紧接 ✅ 经 ghfast.top 下载成功dl 全部通道失败❌ 全部通道失败check 确认各站状态 → 按 §10 找新镜像 → 更新 DL_PROXIESThe requested URL returned error: 502gh-proxy.com 前缀重试push 报 403/401 或要求输密码git remote set-url origin https://github.com/OWNER/REPO.git 后重试gh api 报 401 / Not logged ingh: To get started with GitHub CLI, please run: gh auth logingh auth login(headless 机器用设备码流程,见 github-auth skill)git push 报 Failed to connect to github.com port 443,重试 3 次均失败POST repos/O/R/git/blobs 传每个改动文件(base64)→ ②POST git/trees(带 base_tree)→ ③POST git/commits(parent 指当前远端 HEAD)→ ④PATCH git/refs/heads/main 挪指针。实测全程 ~15s,与 git push 结果等价gh api repos/O/R --jq .pushed_at 感知通道状态git config url.insteadOf 持久改写——所有仓库静默改道镜像,push 凭据与审计全部混乱;用单命令前缀Q1:为什么不把镜像写进 git 全局配置一劳永逸? 见反模式第一条。镜像会死、只读、且不适合私有仓库,持久改写把临时故障放大成全局事故。
Q2:Mac/其他机器能用吗?
脚本是纯 bash+curl+git,可直接用;但网络基线不同,必须先跑 check 重新探测,不要套用本文结论。
Q3:镜像站会记录我的下载内容吗? 会经过它们的服务器。公开仓库无所谓;私有仓库/含敏感信息的资源只走官方或自有代理。
Q4:多久重测一次镜像?
发现下载变慢/失败时跑 check 即可;无人值守环境建议 cron 每周跑一次并对比历史。
Q5:直连明明有时能通,为什么还配镜像? 间歇性超时下,重试等待成本远高于镜像降级(实测直连失败率约 80%)。脚本策略:直连快速失败 → 立即降级,总体延迟最低。
Q6:会影响日常 git push 吗?
不会。push 走直连官方源(api/git 通道稳定),镜像只用于读操作。
Q7:check 里 raw 直连时好时坏正常吗? 正常。CDN 域名偶发超时(实测如此),所以脚本设计为失败即降级,不依赖单次探测的结论。
check 至少一条下载镜像 ✓dl 下载的文件大小/sha256 与官方 release 一致clone 后 git remote get-url origin 确认指向符合预期(官方=直连成功;镜像=已提示 set-url)set-url 已执行ghproxy.link(gh-proxy 官方域名发布页)+ 近期「github 加速」文章dl --no-direct <真实大文件> + sha256 对比官方DL_PROXIES / CLONE_PROXIES