amphilagus / dsh-literature

목록에 있음

Out-of-tree DSH bundle for scientific literature search and tracking, with a 文献跟踪助理 agent preset.

main도구 소스 보기

설치

npx -y @deepseek-ai/dsh plugin --profile web add github:amphilagus/dsh-literature

이 설치 명령은 GitHub 저장소 주소에서 생성된 확인되지 않은 시작점입니다.

README

유지 관리자가 작성한 문서 스냅샷입니다.

GitHub에서 보기 ↗
커밋 6762e27동기화 2026. 8. 18.

@amphilagus/dsh-literature

DeepSeek Harness 的文献检索与定向跟踪插件,配套 agent preset 文献跟踪助理。标准编码 Agent 默认不加载本工具集,只有选中该 preset 的会话才会启用。

能力范围:

  • 检索:Crossref 远程搜索;本地查询只打已筛查入藏的全局新库。DOI 详情先查新库,未入藏再走 Crossref。
  • 跟踪:按研究主题(可选 ISSN 白名单)或研究者(必须 ORCID)定期检索 Crossref 与 arXiv,人工分级后写入全局新库。
  • 辅助:SCI 期刊目录(刊名、ISSN、影响因子、中科院分区)、跨会话研究者档案、会话本地的到期提醒。

不做全文抓取或翻译。提醒只在当前会话进程存活时触发;关闭期间不响,重开后补发逾期任务。

用法

文献跟踪助理 会话里直接说需求即可;agent 按下面三条路径选技能。

  1. 搜索某主题最近的文章
    加载 literature-surveyliterature_search 带主题关键词和 recentDays(近一周=7,近一月=30)。筛完用 tracking_curate 写入全局新库。不建跟踪方案、不排班。

  2. 搜索某研究者
    加载 literature-survey。已有 ORCID 则 literature_searchorcid;只有姓名时先 researcher_profile_disambiguate,确认身份后再搜。同样可按 recentDays 限制窗口。筛完入全局新库。不建方案、不排班。

  3. 对研究者或主题持续跟踪,定时自动汇报
    加载 literature-tracking-setup:确认 topic / person →(person 先消歧建档)→ 主题可配 ISSN 白名单 → tracking_plan_addschedule_create
    到期后加载 literature-tracking-search:双源检索 → 人工分级 → 入全局新库 → tracking_log_complete 后汇报。默认周期提醒会自己反复触发。提醒只在本会话进程存活时响;关掉期间不触发,重开后补发逾期任务。

两件东西,分别安装

产物是什么装到哪
插件 @amphilagus/dsh-literaturehost 平面 bundle:默认 enabled: false,不给任何会话注册工具目标 profile(例如 web)的 dsh.profile.bundles
preset preset/agent 平面组合:人设 + 把文献插件以 enabled: true 挂上 + 挂上 schedule~/.dsh/.agent-presets/literature-tracking-assistant

只装插件、不装 preset:工具全部关闭,picker 里也没有「文献跟踪助理」。只装 preset、不装插件:preset 里的 @amphilagus/dsh-literature 行解析失败,会话起不来。

技能不用单独放置。 literature-surveyliterature-tracking-setupliterature-tracking-search 是插件在 enabled: true 时用 ctx.skills.register 注册的运行时技能,不是 ~/.dsh/skills 里的文件。不要把它们拷进 skills 目录。选中本 preset 后,agent 用自带的 skill 工具加载即可。

部署

下面默认 profile 名为 web,DSH home 为 ~/.dsh(若设了 DSH_HOME 则换成那个目录)。web profile 关了 HMR,每一步装完都要重启 dsh --profile web 才生效。

1. 安装文献插件

先构建,再链进 profile:

cd dsh-literature
pnpm install
pnpm run build
./scripts/install-profile.sh web

或:

dsh plugin --profile web add "link:/绝对路径/dsh-literature"

这会把包写进 profile 的 package.json,并因本仓库声明了 dsh.bundle.patch 而加入 dsh.profile.bundles。host 上的那一行是空壳(enabled: false),标准 / PM / 浏览器等 preset 仍然没有文献工具。

2. 安装 schedule 包(仍须在 profile 的 node_modules 里)

@deepseek-ai/dsh-schedule 不在默认 web 组合里。文献 bundle 会插入一行 disabled: true 的 schedule(Loader 不 apply,标准模式没有 schedule_*)。preset 里再写一行不带 disabled 的 schedule,只有文献跟踪助理会真正挂上工具。

包本身还是要装进 profile 的 node_modulesdisabled 不会替你装依赖),否则 preset 那一行解析失败:

dsh plugin --profile web add "link:/绝对路径/deepseek-harness/packages/schedule/schedule"

或:

dsh plugin --profile web add @deepseek-ai/dsh-schedule

不要在 profile 的 cordis.patch.yml 里再单独 insert 一行 schedule。host 上的那一行已经由本仓库的 cordis.patch.yml 插入。

3. 放置 preset

目录名就是 preset id,必须是 literature-tracking-assistant

mkdir -p ~/.dsh/.agent-presets
cp -R preset ~/.dsh/.agent-presets/literature-tracking-assistant

应得到:

~/.dsh/.agent-presets/literature-tracking-assistant/preset.yml
~/.dsh/.agent-presets/literature-tracking-assistant/agent.cordis.yml

preset.yml 只是 picker 上的显示名「文献跟踪助理」。改人设、mailto、是否挂 schedule,编辑的是 拷过去之后agent.cordis.yml,不是仓库里的源文件(除非你改完再重新拷)。

Web UI 的 agent-preset picker 应出现「文献跟踪助理」。已有会话不能中途换 preset,开一个新会话再选。

4. 重启并验收

dsh --profile web
  1. 新建会话,选「文献跟踪助理」。
  2. 应能看到 literature_search / literature_get / literature_db / tracking_* / researcher_profile_* / schedule_create / schedule_list / schedule_delete
  3. literature_dbaction: journals 按刊名、ISSN 或学科(如「物理」)能返回目录里的刊。
  4. skill 列表里应有 literature-surveyliterature-tracking-setupliterature-tracking-search
  5. 另开一个标准模式会话:上述文献工具和 schedule 工具都不应出现。

数据落在哪

首次在文献跟踪助理会话里启用插件后:

$DSH_HOME/data/literature/literature.db      # 搜索缓存 + 全局新库 + 跟踪方案 / 档案 / 搜索记录
$DSH_HOME/data/literature/sci_journals.db    # 从本仓库 data/sci_journals.db 拷出的 SCI 目录

同一文件里两张文献表职责不同:papers 是远程搜索的过渡缓存(上限 2000 行,按 updated_at 淘汰),agent 本地查的是 library_papers(全局新库,主题和研究者筛完都进这里)。literature_db 的 import / search / get / delete 打新库;stats 同时报 libraryCountcacheCount

sandboxPolicy.grant 的 DSH 会把这个目录登记为额外可写根,bash/fs 才能碰 backup 和 export。没有 grant 的旧版 DSH 插件仍能加载,只是 shell 可能写不进去;文献工具本身不走 sandbox。

常用配置

文献插件配置写在 preset 那次重新挂载 上(host 空壳的 enabled: false 行改 mailto 不会传到本 agent)。编辑:

~/.dsh/.agent-presets/literature-tracking-assistant/agent.cordis.yml

- id: literature-search
  name: '@amphilagus/dsh-literature'
  config:
    enabled: true
    mailto: you@example.com    # Crossref polite pool,建议填
    # dbPath: ~/custom/literature.db
    # cacheRemote: true
默认含义
enabledhost 上 false;本 preset 必须 true主开关
mailtoCrossref 礼貌池邮箱
dbPath$DSH_HOME/data/literature/literature.dbSQLite 路径(缓存 + 新库 + 方案)
cacheRemotetrue是否把远程命中写入搜索缓存(不是新库)
sciJournalsPath包内 data/sci_journals.dbSCI 目录路径

改完 preset 文件后新开的会话才会用新组合;已在跑的会话保持启动时那一版。

跟踪流程

第 3 种用法的工具顺序:

  1. literature-tracking-setup:定方向 → person 先消歧建档 → literature_db journals 挑 ISSN → tracking_plan_add。若返回 possible_duplicate,把该 kind 的现有名单给用户确认后再带 confirm=true 调一次 → schedule_create(默认 every)。
  2. 提醒到期(或手动要求跑一次)时 literature-tracking-searchtracking_search → 人工分级 → tracking_curateplan 只是来源备注)→ tracking_log_completestatus=done 才算完成)。默认 every 会自己反复触发,不要schedule_create

schedule_create 的周期是 every_seconds(最小 300 秒),不是日历「每周一 9 点」。prompt 里写明要执行的方向名和技能名。删除方案只删搜索记录与排班,全局新库和研究者档案保留。

开发

pnpm install
bash scripts/link-dsh.sh   # 把 DSH checkout 里的 @deepseek-ai/* 链到本包
pnpm run typecheck
pnpm run test
pnpm run build

测试不访问网络。Crossref / arXiv 在单测里用 stub。

License

MIT

프로젝트 파일 및 신호

표시된 항목은 디렉터리 스냅샷에서 감지된 공개 저장소 신호입니다.

테스트감지됨

저장소 정보

언어
TypeScript
라이선스
MIT
마지막 업데이트
2026. 8. 18. AM 4:23

신중하게 설치하기

소스 코드, 권한, 수명 주기 스크립트, 의존성 및 네트워크 접근을 검토하고 신뢰하지 않는 플러그인은 격리 환경에서 테스트하세요.