前言¶
在高校校园网里用 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 核实,插件主要提供以下能力:
- 进程内 DoH:命中通道段的域名才接管,其余域名原样直连。
- 证书 pin 与显式信任:先不校验握手,将链上根指纹与内置 pin 比对;匹配后再信任,信任范围仅在与通道地址通信时并入 Node
ca列表,子进程通过SSL_CERT_FILE等环境变量指向本地 PEM。 - 三类出口接管:① 宿主
globalThis.fetch(插件调用、模型请求、插件市场索引、web 工具);② 本地转发代理;③ 为 agent 子进程注入HTTPS_PROXY/HTTP_PROXY及 CA 相关变量(关闭时恢复原值)。 - 设置页集中管理:总开关、DoH 健康、接管模式(
auto/always)、可访问性测试、系统证书库扫描(可配合 scholartools 已装根证书时的 Disallowed 开关,需管理员权限)。 - Agent 工具:
scholar_access_test、scholar_access_status、scholar_resolve。 - 接管统计:按域名记录走通道、直连与失败次数。
不覆盖:直接 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。
首次使用¶
- 打开 设置 → 插件 → 已安装 → 校园网学术通道加速。
- 可选:点「检查系统证书库」查看 scholartools 是否已装本机级根证书。
- 点「测试可访问性」(此步不校验证书,应显示根指纹与内置 pin「指纹匹配」)。
- 确认后点「信任证书」,通道生效。
- 关闭:点「注销证书」或关右上角总开关。
典型用法¶
设置页与配置项¶
页面开关会覆盖并持久化;证书信任存在 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。