fastgithub-accelerate
Make DSH's GitHub traffic accelerate automatically through either a local FastGithub install or any custom HTTP(S) proxy you configure — no manual proxy config, no browser extension, no rebuild.
Once installed, web_fetch / web_search, git / curl, and Node-side fetch
all accelerate GitHub transparently, and a small badge in the composer shows the
live status and which acceleration source is active.

Why
- DSH rejects loopback-resolved hosts:
dsh-web-fetch-httppins public IPs and refusesWEB_BLOCKED_URLfor any host that resolves to a private/loopback address — unless the URL is routed through an installed proxy policy, where the pin is skipped and the proxy does the resolving. - Any accelerator that hands GitHub traffic to a faster path fixes this the moment it is wired into DSH's proxy policy.
This bundle wires an acceleration source into that policy — FastGithub when it is present, otherwise a custom proxy you configure.
How it works
- Host (
index.js) picks the active acceleration source (status.source):fastgithub— when FastGithub's DNS hijack is up, DSH traffic is routed through this plugin's loopback forward proxy (127.0.0.1:39467), whose DNS resolution lands on FastGithub's interceptors;custom-proxy— whenconfig.proxyUrlis set (and FastGithub is absent ormodesays so), DSH traffic is routed straight to that upstream HTTP(S) proxy (a gh-proxy / Cloudflare-Workers accelerator, corporate proxy, VPN node, ...). No local FastGithub, no MITM cert needed.
- It loads
@deepseek-ai/dsh-http-proxyfrom its canonical realpath (the same module instance the harness uses) and callsinstallProxyFromEnvironmentwith the active endpoint, so:web_fetch/web_searchtunnel through it — GitHub fetches that were previously blocked now work;git,curland other children inherithttp(s)_proxyenv;- undici's global dispatcher routes Node-side
fetch.
- It probes every 60 s (FastGithub hijack + configured proxy) and serves
GET /fastgithub/statusfor the badge. - Client (
client.js) renders a composer badge showing the active source (🚀 FastGithub 加速中/🚀 自定义代理加速中/ ⚠ no source). No browser request is ever rewritten — a browser speaks origin-form, which no forward proxy can serve.
A proxy exported at launch time always wins over the plugin's endpoint (the plugin never overrides a user's own proxy); the badge then reports the inherited policy.
Install
In the target DSH:
plugin_manager → action: install_bundle → target: <path-to>/fastgithub-accelerate
Or from a GitHub repo / npm once published:
dsh plugin --profile web add <owner>/<repo>
See INSTALL.md for prerequisites (FastGithub running, DNS hijack active, MITM root cert trusted) and verification steps.
Status
| Field | Meaning |
|---|---|
accelerating |
proxy installed and an acceleration source is active |
source |
fastgithub / custom-proxy / none |
policy |
proxied / none |
proxyUrl |
the configured custom proxy (when source is custom-proxy) |
fastgithub.dnsHijack |
github.com resolves to loopback |
fastgithub.interceptor443 |
FastGithub :443 interceptor is up |
module |
ok / unavailable (dsh-http-proxy import) |
port / endpoint |
the plugin's loopback proxy |
Config
The bundle exports a Config with two keys:
| Key | Default | Meaning |
|---|---|---|
mode |
auto |
auto | fastgithub | custom-proxy. auto uses FastGithub when its DNS hijack is up, else falls back to proxyUrl when set. |
proxyUrl |
(empty) | http://host:port of an upstream HTTP(S) proxy to accelerate through when FastGithub is absent — e.g. a gh-proxy accelerator, a corporate proxy, or a VPN node. |
Using a custom proxy (no FastGithub)
When the target machine has no FastGithub, configure a reachable upstream HTTP(S) proxy and it accelerates GitHub the same way:
# in the profile's cordis.patch.yml
- id: fastgithub-accelerate
config:
mode: auto # auto | fastgithub | custom-proxy
proxyUrl: http://<proxy-host>:<proxy-port>
mode: auto (recommended) uses FastGithub when its DNS hijack is up and falls
back to proxyUrl otherwise; mode: custom-proxy forces the custom proxy and
ignores FastGithub. Restart DSH after changing config in the profile.
After a restart, GET /fastgithub/status reports "source": "custom-proxy",
"proxyUrl": "<your proxy>" and "accelerating": true; web_fetch and git
then route GitHub traffic through it. No local FastGithub, no DNS hijack, no MITM
root cert required.
⚠️ The proxy must reliably reach GitHub and be trustworthy — with a public gh-proxy accelerator, watch its stability and certificate policy.
Requirements
- Either FastGithub running (
fastgithub.exe start/ FastGithub UI) with the FastGithub README setup (http.sslverify false, rootCN=FastGithubin the trusted store) — or a reachable custom proxy passed viaconfig.proxyUrl. - With neither, the plugin loads harmlessly but reports
source: "none"and does not accelerate.
No comments yet. Be the first to write one.