Sno Station
Sno Station은 AI 에이전트를 하나의 팀으로 묶는 오픈소스 워크스테이션으로, 로컬 머신에서 에이전트 협업을 가능하게 함
Zotero PDF 리더에 AI 채팅 및 연구 도구를 추가
Add AI chat and research tools to the Zotero PDF reader
AI가 요약 · README에서
플러그인TypeScript · CSSGitHub @meghendra6직접 설치운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Paper Pilot turns the Zotero 7-10 PDF reader into an AI-assisted paper workbench.
Paper Pilot is an AI reading workbench for the Zotero 7-10 PDF reader. It adds a paper-scoped chat pane, structured paper tools, agent-led verified research discovery, and local CLI-based AI execution directly inside Zotero.README 전문 보기 ↗Paper Pilot turns the Zotero 7-10 PDF reader into an AI-assisted paper workbench.
Paper Pilot is an AI reading workbench for the Zotero 7-10 PDF reader. It adds a paper-scoped chat pane, structured paper tools, agent-led verified research discovery, and local CLI-based AI execution directly inside Zotero.
A project's Open Studio window (Research Studio) adds local original-format documents, a DOCX
editor, Markdown/source editing, data tables and executable notebooks. The project
assistant captures selected file revisions and presents changes for individual
review. It offers Codex/Claude CLIs and a loopback model endpoint;
network inference is explicit and API keys stay in the open window. Notebook
execution requires a Python environment with jupyter-client and ipykernel
(and IRkernel for R), configured in Paper Pilot settings. Code runs with your
local account permissions only when you choose Run.
These capabilities are implemented in source. Verification remains specific to the build, provider and format; browser checks do not replace native Zotero or Word round trips. See the full scope and verification contract and runtime checklist.
Local compilation uses installed Tectonic (.tex), Typst (.typ), or MyST plus Typst (Markdown). Configure executable paths in settings. Missing packages/templates may require downloads. Local project bundles include document versions, conversations and historical research snapshots; restore into a new project and explicitly reconnect Zotero sources. Zotero attachment bytes and runtime environments are separate. DOCX supports Word citation fields with explicit CSL refresh; Word uses its own formatting engine when refreshing. Cloud collaboration and synchronization are deferred.
Studio also provides Word footnotes/endnotes, contents/caption fields, editable AI proposals, notebook output provenance, and a project links view. Supported literal paths are repaired atomically on rename; dynamic code paths are not inferred. Output inspection flags changes to the recorded cell/output or captured inputs. Zotero reference snapshots can open currently verified supporting passages through Research Workspace.
Open a DOCX (or a saved journal template), choose Assistant → Draft paper, select source files, and enter the topic, article type and journal requirements before sending. The connected provider proposes a manuscript for review; applying it appends styled title/section/body paragraphs and saves a new version. Existing content is preserved. Missing evidence and citations remain explicit placeholders; use References for live citation fields. See academic drafting. Manuscripts default to academic English, independently of the request/source language; assistant explanations follow your language. Explicit requests can select another manuscript language.
New document groups formats by purpose and offers Blank, built-in or saved templates with a filename preview. The assistant keeps provider/model controls visible, resumes conversations from History, and shows removable context-file chips above the composer.
Use Focus chat to temporarily hide supporting panels. Draft the next question while a response runs, inspect/remove attached selection context, choose short/default/detailed answers, and open / Actions for Explain, Summarize, Translate and Critique. Search current or saved conversations for the current paper; jumping to a result can reveal messages outside the visible history window.
A submitted question keeps its exact PDF source and execution settings. Retry adds an attempt to that question; More offers editing in a separate conversation, branching from an answer, pinning context, a previewed Zotero note, and a comparison question for a chosen project. PDF citation buttons use local quote matching and recheck the source before navigation. A matched location is not a guarantee that the claim is true.
Project inboxes can retain discovery candidates before a PDF is available. Link the intended existing item/PDF explicitly, then manage screening, reading progress and understanding separately. Saved project members can be used without repeating the library selection.
Drafts are memory-only. Full/prompts-only/off history rules also apply to new chat metadata; assistant-derived summaries and pins are excluded from prompts-only continuity. PaperPilot's history setting does not erase external CLI history. Provider availability depends on the installed CLI and account; failures are reported instead of silently using another provider. See the architecture, evaluation, and runtime checklist.
Research Workspace is built into Paper Pilot and uses the same selected local engine, paper extraction, and run lifecycle. A persistent modeless project window stays available with zero, one, or multiple selected items and provides screening, claim–evidence ledgers, comparisons, audits, mastery, citation workflows, citation/reference health, contradiction/gap review, scoped export, a local Living Review change inbox, and five editable Research project templates. Template presets only highlight recommended capabilities; they never start analysis or hide other capabilities, and exports retain the immutable template snapshot plus current assumptions. Citation & Reference Health derives a local checklist from current saved citation, methodology, and reproducibility artifacts, local Zotero correction/retraction metadata signals, and an optional bounded draft excerpt; it never produces an aggregate truth score. Living Review checks Zotero attachment and annotation metadata without reading their text or calling a model or network service. Safe Zotero collection/tag sync offers a complete preview and preview-bound approval token for one-way additions to existing collections and existing tags, writes a separate revisioned receipt before the transaction, fails closed without Zotero transaction support, and can undo only receipt-owned additions. It never creates or deletes Zotero items, collections, or tags and never writes bibliographic fields, PDFs, notes, attachments, or annotations. Open it from Tools → Open Research Workspace…, the library item context menu, or the Research Workspace button in the Workbench. Leaving a project or closing the window while an analysis runs asks before cancelling it. A partial run reports its failed papers and offers Resume, and archived projects can be opened and restored. Install only the Paper Pilot XPI; there is no companion add-on or Research Monitor.
Use Delete project… on an active or archived project card, or in Settings, to permanently remove the project and its Studio documents, versions, conversations, artifacts, managed exports, and owned runtime/temporary files. Paper Pilot waits for in-flight work and confirmed process shutdown before removing files; cancelling a dirty Studio window stops deletion. Failed cleanup remains retryable from the project list. Original Zotero items/attachments, separately saved files, and shared caches remain. Older flat exports or temporary workspaces without project ownership records cannot be safely attributed and are preserved.
Studio screenshots show the assistant and New document dialog in Chrome with synthetic project data (2026-10-24). Native Zotero visual and keyboard checks remain separate. Use the capture guide when adding or refreshing screenshots.
Paper Pilot is under active development.
What is already in place:
What is still required before calling it fully production-ready:
See docs/manual-qa.md for the current runtime checklist.
From PDF selections or annotations, the plugin can seed AI workflows such as:
Select a word or short phrase in a PDF and click Naver Dictionary. A separate, modeless Zotero dictionary window shows the matching headword, pronunciation symbols, up to three meanings, and the dictionary source. Inflected words can show their dictionary headword. Keep reading the PDF while the window is open; another lookup updates the same window. Close with Esc or Close dictionary. More on Naver opens the source only when clicked. This online lookup sends only the selected query, starts no AI run, and does not save results to Paper Pilot history. The button accepts up to 80 characters and 8 words. It uses Naver's internal search response, which may change; failures and missing matches are shown in place with a retry option for failures.
To explain a figure or table, click Explain figure or table (the dashed-frame chart icon) in the PDF reader toolbar, then drag a box around the figure. Paper Pilot switches Zotero to its Select Area tool for that one selection. When you release the mouse, a separate, modeless Paper Pilot window opens beside the PDF and explains the area: what it shows, how to read it, key points, its role in the paper, and caveats. Each key point is labeled Visible (read from the image), Paper (stated in the paper), or Inference. The reader then returns to its previous tool. While the mode is on, a short notice over the PDF says what to do. Click the button again or press Esc to cancel; the mode also ends by itself after two minutes, and the notice says so. To explain an existing area annotation, click Explain on its card in the left sidebar, or right-click it and choose Explain figure or table. The run uses the paper's engine in read-only analysis mode. Codex CLI receives the image as an attachment; Claude Code opens a copy in its workspace. When Zotero has no cached image of the area, the explanation uses only the caption and page text and says so. Stop or closing the window ends the run. Results stay in memory for the current Zotero session and are not saved to history or notes. The area annotation stays in Zotero; delete it as usual if you do not need it.
The reader pane includes structured paper workflows for the active paper:
These workflows are designed to produce compact, reader-pane-safe outputs rather than long generic chat responses.
Choose Find verified prior work and optionally describe a research concern. Discovery needs Codex CLI with Allow web search when needed turned on; with any other setup, the entry points stay disabled and show the reason. The active agent infers the relevant fields, adjacent fields, leading venues, and query families; the user never has to maintain a conference list. Results are separated into:
Paper Pilot searches standardized scholarly sources, stages reproducible discovery artifacts for the local agent, and live-checks qualifying official evidence. The venue model is open-world: ACL, EMNLP, CVPR, NeurIPS, ICLR, ISCA, MICRO, HPCA, ASPLOS, USENIX venues, and relevant venues in other fields are judged from evidence rather than selected from a fixed allowlist. You can open official evidence or public reviews, request a review insight, add a paper to a collection with its evidence metadata, and save the complete three-lane result to a Zotero note.
Critical Read guides the reader through seven ordered steps: scan the abstract/figures/tables, identify the research question, investigate prior work, evaluate methodology, form an independent results-based conclusion, compare it with the authors' conclusion, and test alternative explanations. Reader input is required before agent analysis at the independent-judgment steps. Revising an earlier step invalidates dependent later work, and the final report keeps reader observations, paper claims, agent inference, and external discovery evidence visibly separate.
The plugin includes an auto-highlight path for extracting high-confidence passages from the active paper and surfacing key passages back in the reader workflow.
The reader pane includes a Paper Mastery workflow that drives a multi-round Socratic comprehension check on the active paper:
Mastery prompts request strict JSON for questions and evaluations. Reader answers and prior rounds are serialized as untrusted JSON source data. The parser validates fields and bounds, handles strings/escapes, and can recover a fenced JSON response.
When you ask a question in Codex CLI or Claude Code mode, Paper Pilot writes a per-paper workspace so the CLI can inspect local paper context before answering.
Artifacts written for every engine:
paper.mdpaper.jsonpaper.txtselection.jsonconversation-context.md (chat runs)metadata.jsonannotations.jsonAll engines additionally write CONTEXT_INDEX.md (a reading-order file map). Discovery runs stage discovery-request.json, discovery-plan.json, discovery-candidates.json, and discovery-evidence.json; Codex CLI also creates a figures/ directory.
paper.md is the structured Markdown view, paper.json carries structured PDF elements plus extraction metadata, and paper.txt remains as the compatibility/plain-text fallback. When Java is unavailable, Paper Pilot records the fallback in metadata.json.
This keeps the selected CLI grounded in the current paper, selection context, and recent conversation history.
When Java 11+ is available, paper.md and paper.json come from the bundled OpenDataLoader runtime. If structured extraction is unavailable, Paper Pilot falls back to Zotero attachmentText and records that in metadata.json.
| Area | Current support |
|---|---|
| Reader chat | Paper-scoped AI chat inside Zotero Reader |
| Engines | Codex CLI and Claude Code |
| Paper workbench | Research brief, compare, contributions, limitations, follow-ups |
| Discovery | Agent-inferred fields/venues, official publication verification, three evidence lanes, public review insight |
| Critical reading | Seven reader-first steps, dependency invalidation, source-aware final report |
| Persistence | Save latest output to note, save workbench artifacts for collections |
| Context grounding | Workspace artifacts, OpenDataLoader-backed structured PDF context, retrieval context, recent-turn continuity |
| Highlighting | Auto-highlight workflow for key passages |
| Comprehension | Paper Mastery multi-round comprehension check with Markdown learning report |
| Mode | Best for | Current strengths |
|---|---|---|
Codex CLI | workspace-aware paper analysis | local workspace artifacts, resumable runs, model/sandbox/approval controls, optional web search |
Claude Code | workspace-aware paper Q&A | local workspace artifacts, model/effort/permission controls, paper-scoped continuity |
Codex mode is the more workspace-oriented path. The current codebase includes support for:
gpt-6-astra default, plus gpt-6-sol, gpt-6-luna, gpt-5.6-sol, gpt-5.6-terra, and gpt-5.6-luna), with a reasoning effort picker next to the model picker that lists only the levels the chosen model supports (up to max/ultra where supported)Claude Code mode uses the local claude CLI in print mode with the same paper workspace artifacts used by the reader chat and workbench flows. The current codebase includes support for:
sonnet default, plus opus, haiku, and fable), which the installed CLI resolves to the model available for each alias, plus pinned ids claude-opus-5-5, claude-sonnet-5-5, claude-haiku-5-5, claude-fable-5-1, claude-opus-5, and claude-sonnet-5claude-opus-5-5[1m] or a Bedrock/Vertex model id) is passed to the CLI unchanged; hand-typed names such as Opus 5.5 or claude-opus-5.5 are normalized to claude-opus-5-5, keeping a context suffix such as [1m]low, medium, high, xhigh, or max), set in settings or next to the model picker. Saving the model and effort in the engine popover closes the popover. The empty choice keeps the CLI default: settings call it Claude Code default, and the picker calls it default effort. The level is passed as --effort only when the installed CLI's --help lists that flagSeveral reader-pane workflows expect structured outputs instead of free-form chat.
Current prompt surfaces include:
Across these surfaces, Paper Pilot prompts the model to prefer full current-paper workspace content when available. Metadata and abstracts are orientation or fallback context; if an answer depends on abstract-only context, the output should say so when that limitation affects confidence. Prompts also ask models to keep paper claims, reader-relevant interpretation, and outside/web findings separate, with section, page, figure, or table support when available.
See docs/prompt-contracts.md for the exact output-shape intent and guardrails.
Reader and Research Workspace AI require an authenticated local CLI. Studio editing works without one; Studio AI can instead use a compatible loopback model. Java enables structured extraction; attachment text remains the fallback.
Install dependencies:
npm install
Run tests:
npm test
Build the add-on:
npm run build
OpenDataLoader packaging note:
npm run build copies the OpenDataLoader JAR into addon/chrome/content/vendor/opendataloader/ before the xpi is packednpm start, npm run build, and npm run release vendor the OpenDataLoader runtime JAR into the add-on automatically via scripts/prepare-opendataloader.mjs.
Local CLI runs require a Unix environment with /bin/zsh and standard process tools.
Native Windows runs are not supported. Use bash scripts/doctor.sh . to check the
login-shell CLI paths, versions, and available authentication status; pass your
Zotero profile directory as a second argument to compare its extraction runtime
with the bundle.
Research Workspace artifacts record the admitted CLI model, reasoning level, and
response language. Source changes invalidate results, and resumed units require
matching source, context projection, and execution settings. Codex's allowed-model
preference restricts both the picker and the effective model; an obsolete-only list
falls back to the current catalog.
Release publishing is tag-driven. Keep the package version and the tag aligned:
package.json and package-lock.json to the release version on main.main.git tag "v<version>" && git push origin "v<version>".scripts/check-release-tag-version.mjs before publishing. It fails fast if the ref name does not exactly match v${package.json.version}.If you use workflow_dispatch, run it from the matching release tag ref. Branch refs are rejected by the same guard.
A successful build generates the Zotero add-on package in build/.
Typical outputs include:
build/paper-pilot.xpibuild/update.jsonbuild/update-beta.jsonnpm run build..xpi through Zotero's add-on installation flow.paper.md, paper.json, and paper.txt were written together.metadata.json and confirm extractionMethod is opendataloader-pdf when Java is available, or zotero-attachment-text when fallback was used.After installing the .xpi, this is the fastest way to validate the plugin:
The preferences UI currently exposes settings across these areas:
Important current details:
attachmentText if Java/runtime extraction is unavailableaddon/ Zotero add-on manifest, locales, preferences UI, static assets
src/ TypeScript source for reader UI, engine integrations, context, tools, and workflows
test/ Node-based regression tests for prompt builders, parsing, storage, and workflow logic
docs/ Manual QA checklist, prompt contracts, and supporting product notes
scripts/ Build/release CLI, OpenDataLoader preparation, release-tag guard, and environment doctor
build/ Generated add-on artifacts
Key source areas:
src/modules/readerPane.ts — main reader pane UI and workflow wiringsrc/modules/codex/ — Codex CLI execution, status, parsing, and command buildingsrc/modules/claude/ — Claude Code execution flowsrc/modules/context/ — paper context retrieval and workspace artifact generationsrc/modules/researchWorkspace/ — project intake, evidence, multi-paper analysis and persistencesrc/modules/studio/ — project documents, assistant, notebooks, compilers, references and bundlessrc/modules/autoHighlight/ — highlight extraction workflowsrc/modules/paperTools.ts — structured contribution/limitation/follow-up promptssrc/modules/researchBrief.ts — compact per-paper brief generationsrc/modules/discovery/ — agent-led search planning, provider retrieval, evidence verification, parsing, and rankingsrc/modules/relatedRecommendations.ts — verified-discovery workflow and Zotero collection integrationsrc/modules/criticalRead/ — seven-step reader-first analysis and report workflowsrc/modules/paperCompare.ts — bounded multi-paper comparison flowThe repository currently includes automated checks for core logic such as:
paper.md / paper.jsonCore commands used during local verification:
npm test
npm run build
Manual runtime verification is still required in Zotero itself. Use docs/manual-qa.md.
docs/manual-qa.md; the Research Workspace project window and broader compatibility and cross-engine matrix remain manual QA.Near-term priorities that are already reflected by the current repo state:
docs/manual-qa.mddocs/images/Contributions are welcome.
For setup, workflow expectations, and documentation guidance, see CONTRIBUTING.md.
This project is licensed under AGPL-3.0-or-later.