校园网学术通道加速(dsh-scholar-access):让 DSH 走 CERNET 通道,不必常驻 scholartools

前言

在高校校园网里用 DeepSeek Harness(DSH)装插件、拉 GitHub、访问 Hugging Face 或 npm / PyPI 时,国际站点往往受出口或 DNS 影响,agent 里的 fetch 和派生的 git、npm、pip 子进程都会卡住。常见做法是单独运行 scholartools 或专用浏览器:改系统 DNS、把通道根证书写进整机证书库,且客户端要一直开着。下面介绍社区插件 dsh-scholar-access(维护者 blankwy,分类:联网工具),它把通道侧的 DoH 解析与证书信任收进 DSH 进程内部,只对 DSH 及其子进程生效,无需改系统 DNS、也不向 Windows 系统证书库写入根证书。

这是什么

dsh-scholar-access 是 DeepSeek Harness 的 bundle 插件,利用 CERNET 国际学术资源访问通道(README 中通过 scholar.edu.cn 相关 DoH 与反向代理描述)为 DSH 自身的国际流量选路:白名单域名经 DoH(默认 https://doh.scholar.work/dns-query)解析到通道地址段,TLS 端到端连到通道反向代理;本地只起 TCP 隧道代理(CONNECT),插件不本地签发证书、不做中间人解密。

与 scholartools 整机方案对比:名字解析与加密信任限定在 DSH 内;默认不信任通道根证书,需用户在设置页确认指纹匹配后再点「信任证书」;可一键注销并删除 $DSH_HOME/scholar-access/ 下的 PEM。

核心功能

经 README 核实,插件主要提供以下能力:

  1. 进程内 DoH:命中通道段的域名才接管,其余域名原样直连。
  2. 证书 pin 与显式信任:先不校验握手,将链上根指纹与内置 pin 比对;匹配后再信任,信任范围仅在与通道地址通信时并入 Node ca 列表,子进程通过 SSL_CERT_FILE 等环境变量指向本地 PEM。
  3. 三类出口接管:① 宿主 globalThis.fetch(插件调用、模型请求、插件市场索引、web 工具);② 本地转发代理;③ 为 agent 子进程注入 HTTPS_PROXY / HTTP_PROXY 及 CA 相关变量(关闭时恢复原值)。
  4. 设置页集中管理:总开关、DoH 健康、接管模式(auto / always)、可访问性测试、系统证书库扫描(可配合 scholartools 已装根证书时的 Disallowed 开关,需管理员权限)。
  5. Agent 工具:scholar_access_test、scholar_access_status、scholar_resolve。
  6. 接管统计:按域名记录走通道、直连与失败次数。

不覆盖:直接 net.Socket()、自带 DNS 的程序、开启前已建长连接、通道白名单外域名(设计为直连)。

安装与启用

插件以当前 DSH 进程权限运行;安装前请自行查看 GitHub 仓库 源码与 MIT 许可证。要求 Node >=20,DSH >=0.2.0(见 package.json)。

从 GitHub 安装

在 DSH 中让 agent 执行:

plugin_manager { action: "install_bundle", target: "github:blankwy/dsh-scholar-access" }

装完后 必须重启一次 DSH;安装阶段若返回 application: "restart-required" 属正常,bundle patch 在启动时组合。

装前自检(可不启动 DSH)

在插件目录执行:

node scripts/verify.mjs                 # github.com / huggingface.co / registry.npmjs.org
node scripts/verify.mjs pypi.org arxiv.org

依次做 DoH 解析、连通道地址、用内置 pin 校验证书;全部通过时退出码为 0。

首次使用

  1. 打开 设置 → 插件 → 已安装 → 校园网学术通道加速。
  2. 可选:点「检查系统证书库」查看 scholartools 是否已装本机级根证书。
  3. 点「测试可访问性」(此步不校验证书,应显示根指纹与内置 pin「指纹匹配」)。
  4. 确认后点「信任证书」,通道生效。
  5. 关闭:点「注销证书」或关右上角总开关。

典型用法

设置页与配置项

页面开关会覆盖并持久化;证书信任存在 state.json,不是普通配置键。可调项包括:

键 默认 说明
enabled true 总开关初值
dohEndpoint https://doh.scholar.work/dns-query DoH 地址
mode auto auto 只接管已知国际站点;always 全量先经 DoH
patchHostFetch true 是否接管宿主 fetch
startProxy true 是否启动本地转发代理
proxyPort 0 0 为自动分配
injectEnv true 是否注入子进程环境变量
extraHosts [] 额外强制走通道的域名

Agent 与子进程

开启后,新开终端里 agent 派生的子进程可继承代理与 CA 环境变量,例如:

git ls-remote --heads https://github.com/nodejs/node
npm view react version

用工具查状态或单域名解析:

  • scholar_access_status:开关、DoH、代理、注入变量、指纹、接管统计。
  • scholar_resolve:单域名 DoH,是否落入通道段。
  • scholar_access_test:批量可达性,可传 targets。

README 说明:插件不注入 NODE_USE_ENV_PROXY,避免宿主内通道请求绕回本地代理;需要代理的 Node 脚本可自行设置该变量(并已可配合 NODE_EXTRA_CA_CERTS)。

适用场景与注意

适合:已开通该 CERNET 学术通道的校园网内,希望 DSH 单独走 GitHub、Hugging Face、npm、PyPI 等,而不常驻 scholartools、不改整机 DNS 与证书库的用户。

务必知晓:

  • 仅在通道已开通的校园网内有效;白名单由运营方维护,名单外域名直连,受校园网出口限制时仍可能失败。
  • 通道反向代理对经通道的 HTTPS 做 TLS 终止,具备内容审计与改写能力(通道公开设计);插件通过默认不信任、pin 校验、作用范围限定与一键注销收窄暴露面,使用前请确认学校政策与合规要求。
  • 数据目录默认 $DSH_HOME/scholar-access/(Windows 上多为 C:\Users\<你>\.dsh\scholar-access\),含 state.json 与信任期间的 PEM。卸载:plugin_manager { action: "remove_bundle", target: "dsh-scholar-access" },删该目录并重启;若曾信任证书,建议先「注销证书」。

排错摘要:测试 channel:false 时查是否在校内网、dohHealth.ok 与 scholar_resolve;子进程不走通道时看 scholar_access_status 的 env.injected 并新开终端;指纹不匹配时不要直接信任,需随通道换证更新仓库内 pin(lib/scholar-ca.js)。

DeepSeek Harness 生态以「一切皆插件」为方向;社区目录 SkillHub 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-scholar-access 把校园网学术通道的 DoH 与可撤销证书信任放进 DSH 进程,覆盖宿主 fetch 与常见 CLI 子进程,适合在开通 CERNET 通道的环境里本地开发智能体而不绑死 scholartools。详情与 issue 见 GitHub:blankwy/dsh-scholar-access,目录入口见 SkillHub。

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

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

Xiaoye