dsh-plugin-litsearch 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -8
- package/client/client.js +3406 -1620
- package/lib/host/paths.d.ts +3 -2
- package/lib/host/paths.js +3 -2
- package/lib/host/pdf/root.d.ts +11 -0
- package/lib/host/pdf/root.js +27 -0
- package/lib/host/pdf/store.d.ts +13 -5
- package/lib/host/pdf/store.js +62 -17
- package/lib/host/router.js +23 -11
- package/lib/host/tasks/filter.d.ts +3 -1
- package/lib/host/tasks/filter.js +45 -4
- package/lib/host/tasks/runner.js +1 -8
- package/lib/host/tasks/service.d.ts +12 -6
- package/lib/host/tasks/service.js +79 -23
- package/lib/host/tasks/stats.js +6 -4
- package/lib/host/tasks/store.d.ts +1 -1
- package/lib/host/tasks/store.js +1 -1
- package/lib/host/tools.js +19 -9
- package/lib/host/workspace.d.ts +20 -0
- package/lib/host/workspace.js +32 -0
- package/lib/index.d.ts +17 -8
- package/lib/index.js +33 -11
- package/lib/search/aggregate.js +1 -0
- package/lib/search/config.d.ts +17 -1
- package/lib/search/config.js +16 -1
- package/lib/search/identity.js +1 -0
- package/lib/search/providers/googlescholar.d.ts +12 -0
- package/lib/search/providers/googlescholar.js +154 -0
- package/lib/search/providers/index.js +2 -0
- package/lib/search/query-adapter.js +3 -0
- package/lib/search/rate-limit.js +2 -1
- package/lib/search/types.d.ts +17 -4
- package/lib/search/types.js +21 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -17,15 +17,15 @@
|
|
|
17
17
|
- **数据源语法提示**:检索式含字段标签或布尔语法时,提示 Semantic Scholar / PubTator 会按自然语言处理;数据源按钮悬浮可查看各自支持的语法,必要时用单源覆写保留查询意图。
|
|
18
18
|
- **独立论文页**:任意结果可打开独立论文 tab,集中展示完整摘要、标识符、筛读 / 分组 / 备注 / 标签 / 必读序号、PDF 与 HTML 全文预览,并可插入对话。
|
|
19
19
|
- **PubTator 实体**:有 PMID 的论文可查看 PubTator3 标注的基因、疾病、化学物等实体,按标准标识符去重并显示出现次数。
|
|
20
|
-
-
|
|
20
|
+
- **筛选与概览**:结果可按关键词、来源、年份、类型、语言、人工筛读状态、缺全文、全文获取状态等条件过滤并排序;结果页顶部常驻全任务口径的全文覆盖横幅,可一键筛出缺全文或跳到全文台账;「概览」页用彩色条形 / 堆叠图紧凑展示漏斗、指标、全文覆盖、年份分布(横轴为完整 4 位年份)、来源与检索式贡献及类型、语言、出处、作者分布,多指标用「条 + 数字列」紧凑表呈现;点任意条目(含年份柱、全文状态、筛读三态)即可反向筛选结果。
|
|
21
21
|
- **筛读工作流**:每篇论文可标记未读 / 已读 / 纳入 / 排除,写备注、打标签、加入必读顺序;任务内可建「研究分组」,按为什么读归类,并导出分层报告。
|
|
22
|
-
- **全文预览与下载**:在结果卡片里直接预览开放获取 PDF
|
|
22
|
+
- **全文预览与下载**:在结果卡片里直接预览开放获取 PDF,或下载到本地(默认落在当前会话工作目录下的 `dsh-litsearch/`);文件按「作者年份_标题_标识.pdf」命名,支持断点式 Range 读取。没有 PDF 但有 PMCID 时,用 Europe PMC 全文渲染可读 HTML。
|
|
23
23
|
- **全文台账**:「全文」页按全任务口径(与概览一致、不受结果页筛选影响)列出覆盖率;状态数字可点击切换清单,缺全文、有全文直链、已下载、需订阅、被出版商拒绝、获取失败等各自成表,可分页加载、多选批量下载 PDF / 存入 Zotero,并可把当前清单带进结果页(会清空其他筛选,保证篇数一致)。
|
|
24
24
|
- **Zotero 同步**:通过本机 Zotero 桌面端 connector 保存条目,可选同时附上 PDF;未连接 Zotero、同步失败、部分成功都会给出明确提示,并保留一条带当前条目范围的 RIS 导出入口。
|
|
25
25
|
- **批量操作**:结果页与全文页均可多选后批量下载 PDF、存入 Zotero;结果页还支持批量改筛读状态、归入或移出分组、按选中导出。
|
|
26
26
|
- **导出与对比**:按当前筛选或选中条目导出 CSV 台账、RIS、BibTeX、Markdown 报告;也可选一个旧任务做新增 / 共有 / 缺失对比,并把「新增」整批标记为纳入。
|
|
27
|
-
-
|
|
28
|
-
-
|
|
27
|
+
- **加入对话**:点击「加入对话」,把论文元数据与摘要写入当前会话草稿(不自动发送),模型可据此继续工作;勾选多篇后可一次插入,按序号编号。
|
|
28
|
+
- **任务加入对话**:任务页的「加入对话」把任务 id、标题与当前检索条件写入会话草稿(不自动发送),在新会话里也能明确续接同一任务的下一轮,而不是新建任务。
|
|
29
29
|
- **免费数据源**:全部无需付费或申请密钥;NCBI 与 Semantic Scholar 可选填 Key 提高额度。限流在本地按源串行排队:冷却期内排队等待而非报错,收到 429 会退避重试并自适应放大该源间隔,连续成功后回落;只有上游要求冷却过久才优雅跳过该源,此时任务不会变「部分完成」、面板也只给中性提示。单个源触发限流只影响该源。超时 / 临时网络故障会重试一次;Europe PMC 的 `resultType=core` 检索单独享有 25s 超时下限。
|
|
30
30
|
|
|
31
31
|
## 搜索任务与轮次
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
|
|
35
35
|
- 模型第一次检索会新建任务并用 `title` 自己命名;后续检索默认复用「当前任务」,在同一任务内开新一轮,任务 id 与 tab 都不变。模型也可以显式传 `taskId` 复用指定任务,或在用户明确要求时传 `newTask: true` 新建。
|
|
36
36
|
- **每个对话在右侧栏只开一个任务 tab。** 切换任务从任务列表(主页 / 任务页右上角)进行:点开另一个任务时,会原位替换当前任务 tab,而不是并排再开一个。切回某个对话时,面板里打开的那个任务就是该对话当前的任务。
|
|
37
|
-
- **建议不同的检索任务使用不同对话。**
|
|
37
|
+
- **建议不同的检索任务使用不同对话。** 一个对话跟进一个任务,上下文和任务一一对应,模型不用猜「现在在改哪个任务」;要在一个新对话里续接已有任务,点任务页的「加入对话」把任务 id 与当前条件写进草稿即可。
|
|
38
38
|
- 模型在执行检索或任务操作前,可先调用 `literature_task`(`action=current`)读取这个对话当前的任务:标题、id、状态、检索式、完整条件、轮次与筛读漏斗。没有任务时会明确返回「当前没有任务」,避免误建新任务。
|
|
39
39
|
- 每次执行记为一条 `SearchRound`:时间、检索条件快照、发起方(模型 / 面板)、原始与去重命中数、已加载篇数、结束状态。**只记元数据,不保存文献列表**;当前结果始终是最新一轮,已标过的已读 / 纳入 / 排除 / 备注按 paperId 跨轮保留。每任务最多保留最近 30 轮,落盘时自动裁剪。
|
|
40
40
|
- 轮次可通过任务页右上角历史图标(时间轴)查看,也可用 `literature_task rounds` 或 `GET /tasks/:id/rounds` 读取。
|
|
@@ -66,8 +66,8 @@ dsh plugin --profile <profile> add dsh-plugin-litsearch
|
|
|
66
66
|
| `requestTimeoutMs` | 单次上游请求超时(毫秒);Europe PMC 检索另有 25000 下限 | 20000 |
|
|
67
67
|
| `defaultSources` / `defaultSort` / `defaultLanguage` | 新任务默认勾选的数据源、排序与语言 | 全部 / 相关度 / 不限 |
|
|
68
68
|
| `autoOpenTaskTab` / `maxTaskTabs` | 模型发起检索后自动打开 / 聚焦任务 tab;每个对话只保留一个任务 tab,打开新任务会替换旧的。`maxTaskTabs` 为自动打开的兜底上限(按最近真实打开过的 tab 计数,30 分钟后释放名额) | 开 / 5 |
|
|
69
|
-
| `taskRetentionDays` / `taskRetentionCount` / `taskMaxPapers` |
|
|
70
|
-
| `pdfRoot` / `pdfMaxMb` / `autoDownloadPdf` | PDF 保存目录、单文件上限(MB
|
|
69
|
+
| `taskRetentionDays` / `taskRetentionCount` / `taskMaxPapers` | 未保留任务保留天数、保留条数、单任务结果上限(在任务列表中可标记「保留」跳过清理) | 90 / 120 / 1500 |
|
|
70
|
+
| `pdfRoot` / `pdfMaxMb` / `autoDownloadPdf` | PDF 保存目录、单文件上限(MB)、检索完成后自动下载;`pdfRoot` 留空时落在当前会话工作目录下的 `dsh-litsearch/` | 跟随工作目录 / 30 / 关 |
|
|
71
71
|
| `enableEpmcFulltext` | 没有 PDF 时用 Europe PMC JATS 全文兜底为可读 HTML | 开 |
|
|
72
72
|
| `zoteroEnabled` / `zoteroBaseUrl` | 启用 Zotero 同步及 connector 地址(只允许本机回环) | 开 / `http://127.0.0.1:23119` |
|
|
73
73
|
| `zoteroAttachPdf` / `zoteroTag` | 同步时附带 PDF、附加标签 | 开 / `dsh-litsearch` |
|
|
@@ -89,7 +89,7 @@ $DSH_HOME/storages/dsh-plugin-litsearch/
|
|
|
89
89
|
|
|
90
90
|
- `DSH_HOME` 由宿主注入,未设置时回落 `~/.dsh`;设置页「存储目录」展示当前实际生效的路径。
|
|
91
91
|
- 旧版本的数据写在 `~/.dsh/dsh-litsearch/`。首次启动时若新目录为空而旧目录有任务,会把任务、导出文件与缓存**复制**到新目录并重建索引,**旧目录原样保留作备份**;新目录已有任务时不再迁移,复制失败则暂时回退到旧目录读取,不会丢标注。
|
|
92
|
-
- **PDF 可读文件不在这里**:它由 `pdfRoot`
|
|
92
|
+
- **PDF 可读文件不在这里**:它由 `pdfRoot` 决定;未显式配置时落在当前会话工作目录下的 `dsh-litsearch/`(读不到工作目录时才回落到旧默认 `~/Downloads/dsh-litsearch`)。任务里记录的 `pdfFile` 是该目录下的绝对路径,升级不影响已下载的文件;只有内部去重缓存 `pdfs/` 随任务目录一起搬迁。
|
|
93
93
|
|
|
94
94
|
## Zotero 同步
|
|
95
95
|
|