DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Scholar Lab — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

@junma11/dsh-scholar-lab

Scholar Lab

适用于 DSH 的 Google Scholar 搜索代理:提供结构化论文元数据、JCR 影响因子、完整摘要和 CSV 导出。可作为 profile bundle(npm)安装,也可作为动态 Cordis 插件安装。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add @junma11/dsh-scholar-lab@0.1.4
README兼容性版本

兼容性与来源证明

Scholar Lab 以 @junma11/dsh-scholar-lab 发布,当前版本为 0.1.4。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
npm
Registry 更新时间
2026/9/20

版本

0.1.4stable
2026/8/15
0.1.3stable
2026/8/15
0.1.2stable
2026/8/15
查看其余 1 个版本收起版本
0.1.1stable
2026/8/15

相关插件

正在加载相关插件…

最新版
0.1.4
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
1.5 MB
文件数
9
Surface
web
许可证
MIT
发布源
npm
GitHub
★ 0
周下载
38
最近提交
2026/8/15
查看源码 ↗项目主页 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 search-research 分类下经过校验的插件。

Weknora@wxg-prc-cpg/dsh-weknora适用于 DeepSeek Harness (dsh) 的 WeKnora 知识检索工具:通过自有知识库进行语义搜索、文档阅读以及 RAG/代理回答。Anysearch Dsh@anysearch/anysearch-dsh适用于 DeepSeek Harness 的 AnySearch 网络搜索和获取提供程序及高级工具Research Reportdsh-research-report适用于 DeepSeek Harness 的可验证研究报告引擎:基于内容寻址的证据账本(声明↔快照绑定,可检测篡改),以及带版本的封存报告,其中每项声明都带有验证结论,清单哈希用于封存目录Industry Researchdsh-industry-research适用于 DeepSeek Harness 的行业与公司研究领域包:方法论技能、行业链结构模型(industry_map)、通过 ctx.web 进行的公开来源政策/新闻跟踪(industry_track)、公司扫描卡片(company_scan)以及可审计的研究

README

dsh-scholar-lab

Google Scholar search agent for DeepSeek Harness (DSH) — publishable as an npm profile bundle (one-command install into any DSH profile) or usable as a dynamic Cordis plugin (no install, per-session).

Search Google Scholar for academic papers and get structured metadata — title, full journal name (when resolvable), JCR impact factor + quartile, authors, year, cited-by count, abstract-excerpt snippet, PDF link, versions — plus full abstracts from publisher pages and CSV export of any result set.

Feature comparison

CapabilityThis plugin (Scholar Lab for DSH)Google Scholar Labs
AccessNo login needed, works from any session/hostLogin required (no anonymous API; also no CORS from third-party pages)
Search sourceSame underlying Scholar index (classic endpoint)Same index, but an AI "research mode" on top
Structured metadata (title, authors, journal, year, citations)✅ Full structured JSON per paper✅ (the "familiar Scholar features") but as web UI, not structured data
Full journal names✅ Resolved from bundled JCR databaseShows venue as Scholar renders it
JCR impact factor + quartile✅ JCR 2025 (June 2026 release), 22.6k journals❌ Scholar doesn't show IFs
Full abstract + DOI, volume/issue/pages, publisher✅ viascholar_abstract (publisher meta tags)Labs gives summaries, not structured bibliographic records
CSV export (all loaded papers, 22 columns)✅ One click → downloads to your laptop❌ No bulk/structured export
Pagination / "load more"✅ Up to 100 papers per searchPage-based browsing, no export
Use from chat / automation✅ Model toolsscholar_search / scholar_abstract — results feed the agent❌ Browser UI only

In short

  • Scholar Labs wins on: understanding research questions — AI-generated overviews, per-paper helpfulness notes, and follow-up Q&A. It's a reading/exploration assistant.
  • This plugin wins on: structured, machine-usable data — clean metadata (title/authors/journal/year/citations), full journal names + JCR 2025 impact factors & quartiles (which Scholar never shows), full abstracts + DOIs, bulk CSV export to your laptop, pagination up to 100 papers, and deep integration with the chat agent (search results feed directly into what the assistant can reason about). No login, works everywhere.

They're complementary: use Labs when you want an AI conversation about a research area; use this plugin when you want a reproducible list of papers with bibliometrics you can export and cite-check. The panel even links to your logged-in Labs page, so both are one click apart.

Install (profile bundle — the community path)

dsh plugin --profile web add @junma11/dsh-scholar-lab
dsh web

The dsh plugin command forwards to pnpm inside the profile; any installed package declaring dsh.bundle automatically joins the profile's bundle layer stack (dsh.profile.bundles) and its cordis.patch.yml composes into the app config. Remove with:

dsh plugin --profile web remove @junma11/dsh-scholar-lab

Requires @deepseek-ai/dsh ≥ 0.1.0 and the base profile's shell service (default web profile; fetches go through curl).

What you get

SurfaceDescription
scholar_search toolChat-side search:query, max_results (1–20), start, year ("2020" or "2018-2023"), lang, export_csv (writes scholar-lab/scholar-export-*.csv into the workspace via the fs service)
scholar_abstract toolFull abstract + HighWirecitation_* metadata from a result/publisher URL
Search panel (UI)Run-card panel with search box, pagination ("Load more papers", deduped, ≤100), andDownload CSV (browser-side, nothing written to the host)
Result cardsscholar_search / scholar_abstract result views with JCR IF badges

Per-paper fields: title, authors[], authors_raw, venue, journal_full, impact_factor, jif_quartile, publisher, year, cited_by, snippet, link, pdf, versions, cluster_id, cites_id, result_id.

Package layout

FileContents
lib/host.jsPackaged host half:scholar_search / scholar_abstract tools (ctx.tools.register + defineTool from @deepseek-ai/dsh-tools), the /scholar-lab/search + /scholar-lab/export webServer routes, CSV writer
lib/client.jsPackaged client half: browser bundle in the web-shell module-table format (window.__ModuleLoader__.load), search panel + tool result cards (talks to the host over the HTTP routes)
data/journal-impact-factors.jsonJCR 2025 database (full names, IFs, quartiles) — 22,643 journals, 1.5 MB, read from the package viaimport.meta.url
cordis.patch.ymlBundle patch layer: inserts thescholar-lab host row (the browser row comes from the package's dsh.client manifest)
dynamic/plugin.host.jsDynamic Cordis plugin form (host half) — the zero-install variant; uses harness.* and host.call, no npm needed (see below)
dynamic/plugin.client.jsDynamic Cordis plugin form (client half) — host.call('scholar-search' / 'scholar-export') bridge

Develop & verify locally (before publishing)

# 1. Syntax / structure checks (dynamic halves are `return { … }` bodies —
#    wrap them in a function for node --check)
node --check lib/host.js
node --check lib/client.js
node -e "new Function('return async () => {' + require('fs').readFileSync('dynamic/plugin.host.js', 'utf8') + '}')"
node -e "new Function('return async () => {' + require('fs').readFileSync('dynamic/plugin.client.js', 'utf8') + '}')"

# 2. Pack and install into a throwaway profile (or your web profile)
pnpm pack
dsh plugin --profile web add ./junma11-dsh-scholar-lab-0.1.0.tgz

# 3. Confirm the layers compose without booting
dsh --profile web --dump-config | grep -A3 scholar-lab

# 4. Boot and test
dsh web

Publish to npm

# fill in package.json: name (real scope), repository, homepage, license holder
npm login
npm publish        # scoped packages publish private by default — `publishConfig.access: "public"` is already set

Version semver; tag releases; attach the packed tarball to GitHub releases for air-gapped installs (dsh plugin --profile web add <tarball-url>).

Notes

The packaged API was mapped from the in-box bundles (@deepseek-ai/dsh-base, @deepseek-ai/dsh-web-app, @deepseek-ai/dsh-tool-web, @deepseek-ai/dsh-client-ui-cordis). Two points should be confirmed against the running app before publishing a public release:

  1. Browser → host bridge. The client bundle talks to the host over the plain same-origin HTTP routes the host half registers (/scholar-lab/search and /scholar-lab/export, same-origin enforced on POST) — the same pattern dshmarket uses. ctx.remote.* typert namespaces are first-party only and must not be used by community client bundles. If you rename the routes, change lib/host.js and the callHost calls in lib/client.js together.
  2. Slot keys. The client injects into tool.view.cordis (panel) and tool.call.toolview (result cards, keyed by tool name). If the packaged slot names differ from the dynamic runner's, adjust the slots.inject(...) calls in lib/client.js.

If a seam turns out different, fix the one file and bump a patch version — nothing else in the package changes.

Data & legal notes

  • The journal database is from hitfyd/ShowJCR v2026-1.2.
  • Scholar's ToS / rate limits: results and abstracts are cached in memory (search 10 min, abstract 30 min); a CAPTCHA/"unusual traffic" response is returned as a clear error. Document this behavior for your users.

License

MIT — covers your code in lib/ and this repo's files. The bundled JCR data is third-party (see above).

Zero-install alternative: dynamic Cordis plugin

No npm and no local files needed — the dynamic form is versioned in this repository (dynamic/plugin.host.js / dynamic/plugin.client.js, kept in sync with the packaged lib/). Create it in any session by pasting this into chat:

Create a Cordis plugin with kind: "new", idPrefix: "schlr", name "Google Scholar Lab", purpose "Search Google Scholar for papers with full journal names, JCR impact factors, and CSV export of paper metadata". Use curl to fetch the content of https://raw.githubusercontent.com/medfm-flare/dsh-scholar-lab/main/dynamic/plugin.host.js and use it as code.host; do the same with https://raw.githubusercontent.com/medfm-flare/dsh-scholar-lab/main/dynamic/plugin.client.js for code.client. If the network is unavailable, read both files from the installed package's dynamic/ folder instead.

Optional — JCR impact factors (the plugin degrades gracefully without them): fetch https://raw.githubusercontent.com/medfm-flare/dsh-scholar-lab/main/data/journal-impact-factors.json into the working directory as journal-impact-factors.json.

Dynamic plugins are per-session and in-memory — they disappear when the process restarts.