dsh-github-connectivity:逐层诊断 GitHub 连通性并给出可撤销修复

前言

在 DeepSeek Harness(DSH)里装插件、拉仓库、走 API,都依赖本机到 GitHub 各域名的连通性。实际环境里常见问题不是「完全没网」,而是 DNS 解析到的 IP 被丢包、TLS 握手被重置、或只有部分子域名可用——报错信息往往只写 timeout 或 connection reset,很难一眼判断该改 hosts、开代理还是改 SSH。

下面介绍的 dsh-github-connectivity(维护者 Yunbuqingluan)是面向 DSH 的 GitHub 连接诊断插件:对多个 GitHub 端点做 DNS → TCP → TLS 逐层探测,给出命名结论,并在面板或文档中提供可复制、可验证、可撤销的修复步骤。它不充当翻墙通道,也不未经确认修改系统配置。

这是什么

插件仓库:Yunbuqingluan/dsh-github-connectivity,当前 package 版本 1.2.1,许可证 MIT,运行环境要求 Node >= 22。社区目录页:skillhub.cn 插件页。

一句话定位:本机到 GitHub 各服务的连通性「医生」——判定卡在哪一层,并给出可执行的修复命令与一键应用/撤销(hosts 改前备份,撤销可完整还原)。

核心功能

探测范围

插件会探测 5 个端点:

  • github.com
  • api.github.com
  • codeload.github.com
  • raw.githubusercontent.com
  • objects.githubusercontent.com

除主解析结果外,还会做备用 IP 探测:优先复用本次已验证可达的其他 GitHub 边缘 IP,再用 github.com 的 SNI 握手,用于判断「换 IP 是否就能通」。

本机现状读取

探测时会一并读取本机常见影响因素,例如 git 代理、代理相关环境变量、本机常见代理端口(如 7890、7897、10808 等)、以及 ~/.ssh/config 是否已配置走 443。

结论与处置(判定表)

README 中的判定含义与典型处置如下(结论字符串以插件输出为准):

结论 含义 典型处置
healthy 主站 TLS 正常 无需处理
ip-blocked 解析到的 IP 被丢包,但别的边缘 IP 可用 hosts 指定可用 IP
tls-reset TCP 通、TLS 握手被重置 可用 IP 或代理
main-unreachable 主站 IP 无响应,备用 IP 也没通 代理 / 镜像 / 稍后重试
proxy-available 全断,但本机有代理在跑 让 git 走该代理
partial 只有部分域名可用 按提示逐项修

针对每种情况,插件会给出带验证与撤销说明的命令;设置页面板上每项修复支持「应用 / 撤销」——git 代理与 SSH 443 可直接生效;修改 hosts 会触发一次 UAC 提权,改前自动备份原文件。

明确不做的事

  • 不提供任何翻墙通道,也不代管浏览器;网页登录打不开时,文档说明只有系统级代理或 hosts 指定 IP 等系统级手段才可能解决。
  • 不探测私有仓库,不上传数据;请求从本机直发 GitHub。
  • 每项改动需用户点「应用」→「确认」;hosts 提权由系统 UAC 把关,取消则不写入。

三个入口

入口 位置
设置页 设置 → GitHub 连接
斜杠命令 输入框输入 /github
智能体工具 github_connectivity;描述 GitHub 打不开等问题时可被调用

探测默认带限流(并发上限 + 60 秒缓存),避免连续猛探把连接打到超时;设置页「重新检测」会绕过缓存。无需额外配置文件。

安装与启用

仓库根目录即为插件包,无构建步骤;装完后刷新 DSH 页面即可。若你正连不上 GitHub,用 git 地址安装时首次拉取也会走 GitHub——可先按 README「一次性的手工恢复」写入 hosts 再安装(见下文注意)。

图形界面(推荐)

在 DSH Desktop 或 dsh web 的 设置 → 插件 中粘贴任一地址:

https://github.com/Yunbuqingluan/dsh-github-connectivity

或简写:

github:Yunbuqingluan/dsh-github-connectivity

命令行

GitHub 简写(将 desktop 换成实际 profile,dsh web 默认为 web):

dsh plugin --profile desktop add github:Yunbuqingluan/dsh-github-connectivity

完整 HTTPS 地址:

dsh plugin --profile desktop add https://github.com/Yunbuqingluan/dsh-github-connectivity

锁定到指定提交(PowerShell 中须给整段加引号,否则 # 之后会被当注释):

dsh plugin --profile desktop add "github:Yunbuqingluan/dsh-github-connectivity#a1b2c3d"

本地目录(调试或离线,示例为 Windows 路径):

git clone https://github.com/Yunbuqingluan/dsh-github-connectivity
dsh plugin --profile desktop add "link:D:\path\to\dsh-github-connectivity"

link: 表示软链语义,改源码后重启即生效;也接受 file: 或直接绝对路径(会记成 link:)。

典型用法

  1. 打开 设置 → GitHub 连接,或输入 /github,或在对话中说明 GitHub 无法访问以触发 github_connectivity。
  2. 查看各端点探测结果与判定结论(如 ip-blocked、tls-reset 等)。
  3. 按面板或说明中的建议选择修复项,点「应用」并在确认后执行;需要时用「撤销」还原(含 hosts 备份还原)。
  4. 使用每条修复附带的验证步骤确认 git clone、API 或 raw 等是否恢复。

装插件前若已用手工 hosts 救急,装好以后同一套操作也可在面板上完成,撤销即可去掉临时 hosts 行。

适用场景与注意

适合谁: 在本机开发、使用 DSH 插件生态或 git 与 GitHub API 时,需要区分「DNS / IP / TLS / 代理」哪一层出问题,并希望得到可复制命令与可撤销改动的开发者。

权限与安全: 插件以当前 DSH 进程权限运行;hosts 修改会提权。安装前建议浏览仓库源码与 MIT 许可证,确认改动范围符合你的环境策略。

一次性手工恢复(仅当连插件都装不上时): README 提供管理员 PowerShell 示例——清理旧 github.com hosts 行、写入多个备用 IP、ipconfig /flushdns。多个 IP 用于失效切换;装好插件后可用面板「撤销」还原。示例 IP 以 README 为准:

$h = "$env:SystemRoot\System32\drivers\etc\hosts"
(Get-Content $h) | Where-Object { $_ -notmatch '^\s*[0-9a-f.:]+\s+github\.com(\s|$)' } | Set-Content $h -Encoding ascii
'140.82.112.3','140.82.112.4','140.82.113.3' | ForEach-Object { Add-Content $h -Value "$_ github.com" -Encoding ascii }
ipconfig /flushdns

DSH 生态强调「一切皆插件」;社区目录站点与 DeepSeek / 幻方无官方从属关系,本文仅介绍社区维护的连通性诊断插件。

结尾

dsh-github-connectivity 把「GitHub 打不开」从模糊超时变成分层结论和可撤销修复,适合作为 DSH 环境下的连通性排查入口。更多信息见 GitHub 仓库 README 与 SkillHub 目录页。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye