Academic Harness
A research workbench for DeepSeek Harness — literature and web discovery, verbatim paper memory, a writing oracle for LaTeX, systematic-review, meta-analysis, and reproducible-analysis ledgers, 768 scientific skills, and local self-improvement, all inside the DSH web UI.
Academic Harness is a DSH profile: it installs as a plugin, adds a preset with a research persona and academic tools, and keeps the general-purpose tools available on every preset.
Architecture overview
Why Academic Harness
| Principle | What it means in practice |
|---|
| Evidence, not citation-shaped guesses | PaperMemory stores papers as content-addressed Markdown and anchors claims to exact quote spans. quote_check and trace verify a quotation before it becomes a citation; an empty cite means do not invent one. Read more |
| A writing oracle with a gate | The vendored ah_* engine inventories every number, citation, unit, and claim in a LaTeX tree. A turn closes only when it introduced no open blocker or major. Read more |
| Auditable research ledgers | Systematic reviews and hypothesis tournaments live in append-only logs under the workspace, so a resumed session sees the same protocol, screening decisions, and ratings. Reviews · Tournaments |
| Discovery across the real literature | OpenAlex, Semantic Scholar, PubMed/Europe PMC, arXiv, Crossref, DOAJ, publisher Crossref deposits, bioRxiv/medRxiv, INSPIRE, and keyed ADS/Scopus/Web of Science through one literature_search entry point, plus journal_search, paper_get, paper_context, paper_resolve, openalex_citations, database_catalog, domain_search, Consensus, Parallel, Firecrawl, Scite, CORE, Elicit, and FutureHouse. Read more |
| A lab notebook that survives context loss | A JSONL notebook shared across the delegation tree, a schema-validated scientific_result card, and deletion-only reply folding at five levels. Read more |
| One question, one bounded investigation | deep_research reads the request, sweeps the literature and a web lane, finds where the sources disagree, drafts, lets four critics attack the draft, and refuses to ship a report that cites a source it cannot support. Five syndicated copies of one release count as one voice. `effort=low |
| Local-first by design | Workspace search (zvec-grep), PaperMemory, TextFold, ledgers, and the RSI store stay on disk. No key is required to boot. Read more |
Install
Requires DeepSeek Harness 0.2.1–0.2.x (>=0.2.1-rc.5 <0.3.0, the range in package.json) and Linux (the only platform tested so far; see Requirements).
npm install -g @deepseek-ai/dsh
Then either:
A — from the DSH Web UI (recommended): open Plugins → Add plugin, paste github:raktim-mondol/academic-harness, click Install, and start a new chat.
B — a dedicated CLI profile:
dsh plugin --profile academic-harness add github:raktim-mondol/academic-harness
dsh --profile academic-harness
Confirm the preset selector at the top of the message box reads Academic Harness. The academic tools are preset-only; a session left on Standard/PTC will fail with tools[name] is not a function.
Full instructions, troubleshooting, and the "one DSH surface at a time" rule are in Install and run.
What is inside
Capability map
| Surface | Highlights | Guide |
|---|
| Search and discovery | literature_search router, journal_search (OpenAlex/DOAJ/Crossref metrics plus optional CiteScore/JIF), paper_get (merged metadata + BibTeX), paper_context (focused sections/snippets), database_catalog, domain_search (bioRxiv/medRxiv, INSPIRE, ACL, ADS, Scopus, Web of Science, Wikidata), OpenAlex, Semantic Scholar, PubMed, arXiv, Crossref, DOAJ, publisher Crossref deposits, Consensus, Parallel, Firecrawl, Scite, Tavily, Exa, Perplexity, Jina, CORE, Elicit, FutureHouse | Search |
| Papers and evidence | paper_get, paper_download, paper_context, paper_fold, pdf_to_markdown, deep_review (multi-pass manuscript critique with anchored comments and reference verification, powered by open-deepreview), PaperMemory's 14 tools, reference_library (the native reference manager: BibTeX, BibLaTeX, RIS, and CSL-JSON in and out; imports Scopus and Web of Science RIS exports), integrity_check, Paper2Agent | Papers |
| Writing and citation | ah_* writing oracle and gate, citation (including DOI/arXiv/INSPIRE/title → BibTeX), manuscript_citations, reporting_check (CONSORT/STROBE/PRISMA/ARRIVE/TRIPOD+AI/CARE/STARD), LaTeX, Supervisor-Skills paper lifecycle, scientific-figure-making, diagram-design, image_generate, mermaid_render (Pele) | Writing |
| Submission and communication | submission_pack journal checklist and hashed bundle (never submits); journal_search match advisory venue fit with due-diligence signals; latexdiff/Markdown/DOCX revision artifacts and response-letter skeleton; numerical-reporting candidates; posters and slides with a vision-QA checklist; CRediT/ICMJE ledger |
Search tools
| Tool | What it does |
|---|
literature_search | One-shot multi-source router with RRF fusion and cross-provider dedupe |
journal_search | Venue discovery and metrics across OpenAlex, DOAJ, and Crossref; optional CiteScore/SJR/SNIP and JCR JIF/JCI |
paper_get | Merge one paper across OpenAlex, S2, Crossref, Europe PMC, and arXiv; OA URL and canonical BibTeX |
paper_context | Focus-ranked sections/snippets from S2, arXiv HTML, PMC BioC/PubTator3, optional publisher TDM, and OA PDF |
paper_resolve | Convert DOI/PMID/PMCID/arXiv/OpenAlex/S2 and source-specific INSPIRE/ACL/bibcode/Scopus/WoS/Wikidata identifiers |
openalex_search | OpenAlex works, authors, sources, and topics with filters, facets, and source metrics |
openalex_citations | Forward, backward, or both citation trails with an OpenCitations fallback |
s2_search | Semantic Scholar relevance, bulk, and paper-scoped snippet search |
pubmed_search | Europe PMC by default; NCBI E-utilities on request; preprint filter |
arxiv_search | Fielded arXiv queries, serialized to one request every 3 seconds |
crossref_lookup | Canonical DOI metadata; polite pool via CROSSREF_MAILTO |
domain_search | Source-specific bioRxiv/ACL/INSPIRE/ADS/Scopus/WoS/Wikidata actions |
database_catalog | Source/key/capability catalog; reports key fields only as configured/not set |
Free sources need no key. ADS, Scopus, Web of Science, Springer, IEEE, and publisher TDM tiers use their own keys and are implemented but intentionally not live-tested here. Web and AI-native discovery remains available through consensus_search, parallel_search/parallel_extract, brave_search, tavily_search, exa_search, perplexity_search, jina_read, core_search, elicit_search, and futurehouse_agent, plus the Parallel, Firecrawl, and Scite MCP connectors. See Search for routing and Configuration for the key fields.
The complete tool list, with scope and links, is the tool index. The architecture guide explains which tools are available on every preset and which are preset-only.
How a request works
Request lifecycle
Discovery finds candidate papers, paper_resolve collapses their identifiers, paper_get produces one merged metadata/BibTeX record, and integrity_check reports retraction status. A downloaded PDF is stored as content-addressed Markdown in PaperMemory, and a quotation must pass quote_check or trace before the agent treats it as evidence. The notebook records the work; scientific_result records the final finding.
Deep review
Deep review
deep_review runs a full Deep-Review-style critique of one manuscript with the vendored
open-deepreview engine. The paper is segmented
and every segment is reviewed with the whole manuscript in context; comments are anchored to a page
or a quotation, and a scholar-peer pass adds strengths and weaknesses, a claim-evidence map, a
nine-item reproducibility checklist and questions for the authors. estimate prices a run before it
starts, review runs on the session model (no separate key or endpoint), show reads a stored
review back, and status marks it stale after the manuscript changes. Every pass is kept as a
numbered round, so reviewing again after a revision does not erase the first, and compare diffs
two rounds — findings closed, opened, or moved in severity, plus claim, checklist, and citation
transitions. validity reads a stored round against a deterministic count of the manuscript itself
and answers four advisory questions: whether a claimed gain has a removal arm behind it rather than
only generic training controls, whether a stated before-and-after change sits in the evaluation
harness rather than the model, how wide the results grid actually is, and whether a quality or
feasibility counter-metric is reported beside a speed or memory gain. Each answers clear,
flagged, or not_checked — a flag names an absence in the text, not a flaw in the work, and
not_checked is not a pass — with at most one critic model call on the session route and none with
critic: false. score adds four advisory dimension readings — soundness, originality, clarity and
significance — on a declared scale, each citing stored comment ids; it is one bounded model call,
never an acceptance decision or a gate. Rounds record whether the reviewer was held_out or
in_distribution, and Phase 0 can correlate stored scores with real decisions. Artifacts stay in
.dsh/deep-review/<key>/, and provenance_audit indexes the
claims stored there; it does not read extra_checks.json yet.
Read more
Deep research
Deep research
deep_research runs the investigation a literature question actually asks for, and keeps the
state a chat cannot. The request is frozen verbatim and re-read by every step, so a long run
cannot quietly drift onto a different question. It sweeps the literature through the existing
literature_search router and a web lane (Parallel, Exa, Tavily, Brave) for guidance documents,
registers, and reporting; finds where the sources contradict each other; picks the loci where
reading deeply would change the answer; drafts from three angles; then has four critics attack the
draft and repairs it with capped hunks — after synthesis the report cannot be regenerated, only
patched.
Two things it counts that a plain agent gets wrong. Voice, not copies: an independence
clustering pass groups DOI, exact and near titles, and identical bodies across hosts, so five
reprints of one press release argue with the weight of one source (distinct DOIs are never
merged). Verified, not plausible: every citation is checked against stored text in
PaperMemory, a quote nothing read is reported not_checked rather than passed, and an
unacknowledged retraction blocks the ship. Fetched pages arrive inside an
<untrusted-source> fence, so a page that tries to instruct the agent is read as content.
Scale is one knob — effort=low|medium|high — and it is inferred from the request when not given
("quickly" is low, "comprehensive systematic review" is high). A request that points both ways
returns needs_input with a question and creates nothing: no run, no model call. Runs are
resumable and budget-capped, so a crash continues at the step that died instead of restarting.
The pipeline shape — step-per-phase, the frozen canonical query, patch-only repair, the ship
gate, independence clustering, and untrusted-source fencing — is adapted from
hyperresearch (MIT); no upstream code is
vendored, and NOTICE records the attribution.
Read more
Documentation
Requirements and scope
- Tested on Linux only. The plugin, its runtime installs (PaperMemory, zvec-grep, TextFold), and the end-to-end browser tests have been run on Linux (Python 3.13, Node 24). macOS and Windows have not been tested and may not work; Python is needed for PaperMemory,
power_analysis, the sci_inspect helpers, and the managed Modal SDK.
- DSH 0.2.1–0.2.x. The plugin's bundle patches the web-app layer, so the profile must include
@deepseek-ai/dsh-web-app; the standard web profile does.
- A preset check matters. The research persona, search connectors, PaperMemory, zvec-grep, paper tools, citation/review/tournament tools, and the
subagent_pro/subagent_vision routes are scoped to the Academic Harness preset. Both routes inherit the session model unless you configure a provider/model. Only the general-purpose tools (notebook, fold_text, scientific_result, sci_inspect, images, LaTeX, PDF, Mermaid, compute, templates) are on every preset.
- Keys are optional. No credential is needed to install or start; each connector stays disabled until its key is present. Some runtimes install in the background on first use — see Architecture.
- One DSH surface at a time.
dsh-web, dsh-tui, dsh-martty, and academic-harness share $DSH_HOME, port 3080, and the zvec-grep daemon. Stop the previous one before starting another; see Install.
Development
npm install # once, for the Settings page build
npm run build # after any client/ change
npm run docs:diagrams # regenerate the SVG figures from docs/diagrams/*.mmd
Server-side code is plain ESM JS with no build step. Tests are plain Node scripts; see Development for the full suite and the paper_fold live test.
License
MIT — see LICENSE. Scientific skills are vendored or adapted from several open-source catalogues; NOTICE records exactly what was copied, renamed, or adapted from each. The Supervisor-Skills bundle is mixed-license: six skills are CC BY 4.0, five are CC BY-NC-SA 4.0 (non-commercial, share-alike), and drawio-reconstruction is MIT; those terms apply to those skill files, not to the plugin as a whole.