dsh-academic-web-proxy:在 DSH 共享浏览器里做机构学术代理与 PDF 重命名

前言

在 DeepSeek Harness(DSH)里用智能体查文献、点下载,常见有两类摩擦:一是学校或机构的 EZProxy 类入口需要按模板改写 URL,登录和人机验证又必须人在真实浏览器里完成;二是浏览器默认文件名往往是平台随机串,本地整理还要再改一遍。若只靠通用 HTTP 工具直连 PDF,往往绕不开登录态,也拿不到页面上的书目元数据。

下面介绍社区插件 dsh-academic-web-proxy(维护者 Yokhong)。它在 DSH 既有共享浏览器中打开经模板处理的学术 URL,遇到登录或 CAPTCHA 时保留同一原标签页交由用户操作;v0.2.0 起还可选地、在本地指定文件夹内对符合条件的新 PDF 按元数据重命名。插件以 MIT 许可证发布,当前版本 0.2.0,GitHub 星标为 0(以仓库公开信息为准)。

这是什么

dsh-academic-web-proxy 为 DSH 提供独立的「学术网站代理」设置:配置登录或代理 URL 模板、默认与自定义域名列表后,在共享浏览器里访问匹配的学术站点;不代填密码、不自动过验证码。可选功能是在用户明确选择的本地下载目录中,通过文件系统轮询观察新 PDF,并在通过完整性及元数据匹配检查后重命名。设置界面支持简体中文、繁体中文与美式英语,与 DSH 全局界面语言独立。

核心功能

机构 URL 代理

  • 在 DSH Settings 中打开 Academic Web Proxy,填写 Login URL Scheme 或 Proxied URL Scheme(初始均为空;都为空时不做代理重定向)。
  • 域名采用精确主机名匹配(例如 example.org 不自动包含 www.example.org);自定义项只填主机名,不带协议、端口、路径或通配符。
  • 内置默认域名组含 47 个主机名,与自定义列表分别保存。
  • 模板占位符:%u 为编码后的完整原始 URL,%h 为主机名(HTTPS 中点转为连字符),%p 为路径、查询和片段。配置了登录模板时优先使用登录模板。
  • 含已代理页面与重定向循环检查;不做 HTTP 降级,不代理非标准端口或页面子请求。Desktop 侧栏桥接可用时,导航之后可做自动检测——这不是网络层拦截,原站可能已收到首次请求。

人工登录与验证

遇到登录或 CAPTCHA 时,插件尽可能展示同一个原标签页,由用户完成后继续;不填写密码、不重试验证码,也不新增自动恢复。部分浏览器或布局下需用户手动展开侧栏、选择原标签。

可选 PDF 重命名

默认关闭;下载文件夹默认为空。开启后只处理用户选定文件夹根目录内、观察到临时下载痕迹的新 PDF(先见 X.pdf.crdownload 或 X.pdf.part,临时文件消失且 X.pdf 稳定至少 2 秒,再通过 PDF 完整性与论文元数据匹配)。这是轮询启发式,不是浏览器原生「下载完成」事件。

可选字段及顺序固定,下划线连接,扩展名 .pdf:

顺序 字段 默认启用
1 title 是
2 author 否
3 year 是
4 venue 否
5 platform 是

默认组合为 title_year_platform.pdf。元数据来自页面 citation、Dublin Core、PRISM、ScholarlyArticle JSON-LD 等;用于重命名的元数据须在观察到临时下载开始前已采集。多种边界情况会保留原文件名(已有文件、未观察到临时文件、另存为文件名不一致、元数据歧义、加密或损坏 PDF、超过 64 MiB、子文件夹等),详见仓库内使用指南。

智能体工具

工具 用途
academic_proxy_status 查看代理、待人工处理页面和重命名状态(不返回模板或下载目录绝对路径)
academic_proxy_open 按当前配置在共享浏览器中打开学术 URL
academic_proxy_check 检查当前页是否需要登录或人机验证
academic_proxy_download 检查并点击可见的真实 PDF/下载控件;inspectOnly: true 仅列候选

clicked 只表示点击成功,metadataCaptured 只表示记录了元数据;均不等于文件已保存或已重命名。

安装与启用

运行要求:Node.js >=22.19、DSH >=0.2.0-rc.2 <0.3.0。现有浏览器适配目标为 dsh-builtin-browser 0.3.x;其他浏览器后端可用代理相关能力,但不保证自动检测、原标签展示或文件重命名。

从含 v0.2.0 的源码树构建并安装到指定 profile(将 your-profile 换成实际 profile 名,安装前核对 package.json 版本):

git clone https://github.com/Yokhong/dsh_academic_web_proxy.git
cd dsh_academic_web_proxy
npm ci --ignore-scripts
npm run check
npm test
mkdir dist
npm pack --pack-destination dist
dsh plugin --profile your-profile add ./dist/dsh-academic-web-proxy-0.2.0.tgz

仅在 npm 已提供 0.2.0 时,可使用:

dsh plugin --profile your-profile add dsh-academic-web-proxy@0.2.0

从 0.1 升级前请备份当前 profile 的插件设置(见仓库 docs/UPGRADING.md)。

插件与 DSH 以当前进程权限运行;安装前应自行审阅源码与 MIT 许可证。代理模板、下载目录等保存在 profile 运行时 plugins/dsh-academic-web-proxy/settings.json,插件不采集凭证、不导出 Cookie、不发送遥测。

首次设置

在 DSH Settings 打开 Academic Web Proxy,建议顺序如下:

  1. 选择界面语言:zh-CN(默认)、zh-TW 或 en-US。
  2. 按机构文档填写 Login URL Scheme 或 Proxied URL Scheme(以下为虚构示例,不能直接当作机构配置):
Login URL Scheme: https://login.example.edu/login?qurl=%u
Proxied URL Scheme: https://%h.proxy.example.edu/%p
  1. 选择默认域名组,按需添加自定义域名。
  2. 若需重命名:先在浏览器中将文件保存到自己选定的本地文件夹,在插件中填入该文件夹绝对路径,再开启 PDF 重命名(不修改浏览器下载位置,不支持网络共享路径或子文件夹递归)。
  3. 等待设置保存成功(约最后一次修改 600 ms 后保存),再在共享浏览器中打开摘要页并下载。

典型用法

智能体可先查状态,再打开链接并在需要时交给用户登录:

academic_proxy_status
academic_proxy_open(传入目标学术 URL)
academic_proxy_check

下载前可在论文页采集元数据并点击真实控件(多候选时需明确 selector):

academic_proxy_download
academic_proxy_download(inspectOnly: true)  # 仅列候选

完成后在浏览器下载界面与实际文件夹中核对文件名,不要为刷重命名状态反复触发下载。

适用场景与注意

适合:已在 DSH 中使用共享浏览器做文献检索、需要 EZProxy 类 URL 模板且接受人工登录/验证码;希望在本机单一下载目录内,对新下载的 PDF 按标题、年份、平台等规则命名(接受启发式与元数据匹配的局限)。

不适合或需降级预期:依赖非 dsh-builtin-browser 0.3.x 且需要完整自动检测与重命名;需要代理任意子请求或非标准端口;期望插件自动过 SSO/CAPTCHA 或保证每篇论文都能重命名。

DSH 生态强调「一切皆插件」;SkillHub 目录页 为社区站点,与 DeepSeek / 幻方无官方从属关系。功能边界、兼容性与验证范围见 GitHub 仓库内 docs/GUIDE.md、docs/COMPATIBILITY.md、docs/VALIDATION.md。

结尾

dsh-academic-web-proxy 把机构学术入口模板、共享浏览器内的人工登录流程,以及可选的本地 PDF 元数据重命名收进同一套 DSH 设置与工具,减少智能体在文献场景里「只会直连 URL、文件名不可读」的重复劳动。目录与源码:

  • 目录页:https://www.skillhub.cn/plugins/Yokhong/dsh_academic_web_proxy
  • GitHub:https://github.com/Yokhong/dsh_academic_web_proxy
羽毛球分组比赛记分
小程序二维码

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

Xiaoye