前言¶
在 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,建议顺序如下:
- 选择界面语言:
zh-CN(默认)、zh-TW或en-US。 - 按机构文档填写
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
- 选择默认域名组,按需添加自定义域名。
- 若需重命名:先在浏览器中将文件保存到自己选定的本地文件夹,在插件中填入该文件夹绝对路径,再开启 PDF 重命名(不修改浏览器下载位置,不支持网络共享路径或子文件夹递归)。
- 等待设置保存成功(约最后一次修改 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