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 目錄頁。

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

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

小夜