前言¶
在 DeepSeek Harness(DSH)里做开发时,web_fetch、web_search 以及子进程里的 git、curl 经常要访问 GitHub。DSH 的 dsh-web-fetch-http 会对公网 IP 做 pin,若域名解析到私网或回环地址,会拒绝请求并返回 WEB_BLOCKED_URL——除非流量走已安装的代理策略,由代理侧完成解析,此时 pin 会被跳过。
本地 FastGithub、gh-proxy 或公司 HTTP(S) 代理都能把 GitHub 流量接到更快路径上,但要在 DSH 里逐项改环境变量或浏览器扩展,既麻烦又容易和 Harness 自带的代理逻辑打架。下面介绍社区插件 fastgithub-accelerate(维护者 zijinggong):把加速源写进 DSH 的代理策略,安装后 web_fetch / web_search、git / curl 以及 Node 侧 fetch 对 GitHub 的访问可透明加速,Composer 里还有小徽章显示当前加速源与状态。
这是什么¶
fastgithub-accelerate 是 DSH 的 bundle 插件(npm 包名 fastgithub-accelerate,当前资料中版本 0.3.0,MIT 许可证)。它不做浏览器层面的 URL 改写(浏览器走 origin-form,通用正向代理无法按同样方式服务),而是在 Host 侧选择活跃加速源,通过 Harness 共用的 @deepseek-ai/dsh-http-proxy 调用 installProxyFromEnvironment,把 DSH 出站 GitHub 相关流量接到:
- 本机 FastGithub(DNS 劫持生效时,经插件本地回环转发代理
127.0.0.1:39467),或 - 你在配置里指定的 自定义 HTTP(S) 上游代理(无需本地 FastGithub、无需 MITM 根证书)。
若启动 DSH 时已通过环境导出代理,该代理始终优先于插件 endpoint;插件不会覆盖用户自有代理,徽章会反映继承到的策略。
插件目录页:skillhub.cn/plugins/zijinggong/fastgithub-accelerate。源码与说明:github.com/zijinggong/fastgithub-accelerate。
核心功能¶
双路径加速源¶
Host(index.js)按 status.source 选择当前源:
fastgithub:FastGithub 的 DNS 劫持已生效时,DSH 流量经插件回环转发代理(默认端口 39467),DNS 解析落到 FastGithub 拦截器上。custom-proxy:在config.proxyUrl已设置且 FastGithub 不可用或mode指定走自定义代理时,流量直接指向上游 HTTP(S) 代理(gh-proxy、Cloudflare Workers 加速、公司代理、VPN 节点等)。
mode 默认为 auto:DNS 劫持在则优先 FastGithub,否则在配置了 proxyUrl 时回退到自定义代理。
注入 DSH 代理策略¶
插件从 Harness canonical realpath 加载 @deepseek-ai/dsh-http-proxy(与 Harness 同一模块实例),对活跃 endpoint 调用 installProxyFromEnvironment,因此:
web_fetch/web_search经隧道转发,原先因回环解析被挡的 GitHub 请求有机会恢复正常;git、curl等子进程继承http(s)_proxy环境变量;- undici 全局 dispatcher 路由 Node 侧
fetch。
探测与状态接口¶
约每 60 秒探测 FastGithub 劫持与配置的代理;提供 GET /fastgithub/status 供查询。Client(client.js)在 Composer 渲染状态徽章(例如 FastGithub 加速中、自定义代理加速中、或无可用源)。状态字段含义见 README 中的 Status 表,主要包括:
| 字段 | 含义 |
|---|---|
accelerating |
代理已安装且存在活跃加速源 |
source |
fastgithub / custom-proxy / none |
policy |
proxied / none |
proxyUrl |
自定义代理 URL(source 为 custom-proxy 时) |
fastgithub.dnsHijack |
github.com 是否解析到回环 |
fastgithub.interceptor443 |
FastGithub :443 拦截器是否就绪 |
module |
dsh-http-proxy 导入是否 ok |
port / endpoint |
插件回环代理地址 |
安装与启用¶
在目标 DSH 环境中,任选 README 给出的一种方式(勿自行拼接未在文档出现的 install 语法)。
本地 bundle 路径安装:
plugin_manager → action: install_bundle → target: <path-to>/fastgithub-accelerate
从 GitHub 仓库或 npm(发布后)安装:
dsh plugin --profile web add <owner>/<repo>
将 <owner>/<repo> 换为实际仓库,例如 zijinggong/fastgithub-accelerate。更完整的前置条件(FastGithub 运行、DNS 劫持、MITM 根证书信任)与验证步骤见仓库内 INSTALL.md。
典型用法¶
仅 FastGithub¶
在本机已按 FastGithub 文档完成安装与启动(如 fastgithub.exe start 或 UI 启动),并满足 README 要求:http.sslverify false、根证书 CN=FastGithub 已加入信任库。插件 mode 保持默认 auto 即可;DNS 劫持生效后,source 应为 fastgithub。
无 FastGithub,只用自定义代理¶
在 profile 的 cordis.patch.yml 中为该插件写入配置。修改后需重启 DSH。
# 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(推荐):FastGithub 劫持在则用之,否则用proxyUrl。mode: custom-proxy:强制走proxyUrl,忽略 FastGithub。
重启后访问 GET /fastgithub/status,应看到 "source": "custom-proxy"、"proxyUrl": "<your proxy>"、"accelerating": true;web_fetch 与 git 的 GitHub 流量经该代理,无需本地 FastGithub、DNS 劫持或 MITM 根证书。
配置项汇总:
| Key | 默认值 | 含义 |
|---|---|---|
mode |
auto |
auto | fastgithub | custom-proxy |
proxyUrl |
(空) | 上游 HTTP(S) 代理,形如 http://host:port |
适用场景与注意¶
适合谁: 经常在 DSH 里拉 GitHub 仓库、用 web_fetch 读 README 或 API,又已在本机跑 FastGithub,或有一台可信、能稳定访问 GitHub 的 HTTP(S) 代理的开发者。
前置条件(二选一):
- FastGithub 已运行且 DNS 劫持、443 拦截与证书信任按 FastGithub / INSTALL 文档就绪;或
- 配置了可达的
proxyUrl。
两者皆无则插件仍可加载,但 source 为 "none",不会加速。
安全与运维: 自定义代理必须能可靠访问 GitHub 且值得信任;使用公共 gh-proxy 时需关注稳定性与证书策略。README 对此有明确提醒。
权限与审阅: 插件在当前 DSH 进程权限下运行,会安装进程级代理策略并周期性探测网络。安装前请阅读 源码与 LICENSE,确认符合你的安全策略。DSH 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
fastgithub-accelerate 把 FastGithub 或自定义 HTTP(S) 代理接到 DSH 统一代理策略里,减少手工改代理和因回环解析导致的 GitHub 访问失败,并用 Composer 徽章和 /fastgithub/status 暴露当前加速源。需要细节时以仓库 README、INSTALL.md 为准。
- 目录页:https://www.skillhub.cn/plugins/zijinggong/fastgithub-accelerate
- GitHub:https://github.com/zijinggong/fastgithub-accelerate