@jerry609/web
AAI-powered research workflow: paper discovery → LLM analysis → scholar tracking → Paper2Code → multi-agent studio
Install
agr install @jerry609/web --target claudeThis artifact does not publish files for Claude.
Document
{ "name": "web", "version": "0.1.0", "private": true, "scripts": { "dev": "next dev", "build": "next build", "start": "next start", "lint": "eslint", "test": "vitest run", "test:coverage": "vitest run --coverage", "test:e2e": "node ./scripts/run-playwright-e2e.mjs", "test:e2e:ui": "node ./scripts/run-playwright-e2e.mjs --ui", "test:e2e:headed": "node ./scripts/run-playwright-e2e.mjs --headed", "test:e2e:report": "npx playwright show-report" }, "dependencies": { "@ai-sdk/anthropic": "^2.0.56", "@ai-sdk/google": "^2.0.51", "@ai-sdk/openai": "^2.0.88", "@ai-sdk/react": "^2.0.118", "@modelcontextprotocol/sdk": "^1.25.1", "@monaco-editor/react": "^4.7.0", "@radix-ui/react-alert-dialog": "^1.1.15", "@radix-ui/react-avatar": "^1.1.11", "@radix-ui/react-checkbox": "^1.3.3", "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-dropdown-menu": "^2.1.16", "@radix-ui/react-label": "^2.1.8", "@radix-ui/react-popover": "^1.1.15", "@radix-ui/react-progress": "^1.1.8", "@radix-ui/react-scroll-area": "^1.2.10", "@radix-ui/react-select": "^2.2.6", "@radix-ui/react-separator": "^1.1.8", "@radix-ui/react-slot": "^1.2.4", "@radix-ui/react-switch": "^1.2.6", "@radix-ui/react-tabs": "^1.1.13", "@radix-ui/react-tooltip": "^1.2.8", "@xyflow/react": "^12.10.0", "ai": "^5.0.116", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cmdk": "^1.1.1", "framer-motion": "^12.23.26", "lightningcss": "^1.32.0", "lucide-react": "^0.562.0", "next": "16.1.0", "next-auth": "5.0.0-beta.30", "next-themes": "^0.4.6", "radix-ui": "^1.4.3", "react": "19.2.3", "react-dom": "19.2.3", "react-markdown": "^10.1.0", "react-resizable-panels": "^4.0.11", "recharts": "^3.6.0", "remark-gfm": "^4.0.1", "tailwind-merge": "^3.4.0", "undici": "^6.23.0", "xterm": "^5.3.0", "xterm-addon-fit": "^0.8.0", "zustand": "^5.0.9" }, "devDependencies": { "@playwright/test": "^1.58.2", "@tailwindcss/postcss": "^4", "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.2", "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", "@vitest/coverage-v8": "^2.1.4", "babel-plugin-react-compiler": "1.0.0", "eslint": "^9", "eslint-config-next": "16.1.0", "jsdom": "^28.1.0", "tailwindcss": "^4", "tw-animate-css": "^1.4.0", "typescript": "^5", "vitest": "^2.1.4" } }
Repository README
Describes jerry609/PaperBot as a whole, which may contain artifacts other than this one. Where this artifact had no useful description of its own, its summary was taken from here.
About
"Oh, God! My idea comes true." is an end-to-end research assistant that automates the paper discovery → analysis → reproduction pipeline. It combines multi-source search, LLM-powered evaluation, scholar tracking, and code generation into a unified workflow with Web, CLI, and API interfaces.
Backend Python + FastAPI (SSE streaming) · Frontend Next.js + Ink CLI · Sources arXiv / Semantic Scholar / OpenAlex / HuggingFace Daily Papers / papers.cool
Screenshots
Current dashboard layout focused on the active research question, the workflow console, and decision-critical alerts.

| Research Workspace | AgentSwarm Studio |
|---|---|
![]() | ![]() |
| LLM-as-Judge Radar | Email Push |
|---|---|
![]() | ![]() |

Features
Discovery & Analysis
- Multi-source search — Aggregate arXiv, Semantic Scholar, OpenAlex, HF Daily Papers, papers.cool with cross-query dedup and scoring
- DailyPaper — Automated daily report generation with SSE streaming, LLM enrichment (summary / trends / insight), and multi-channel push (Email / Slack / DingTalk / Telegram / Discord / WeCom / Feishu)
- LLM-as-Judge — 5-dimensional scoring (Relevance / Novelty / Rigor / Impact / Clarity) with multi-round calibration, automatic filtering of low-quality papers
- Deadline Radar — Conference deadline tracking with CCF ranking and research track matching
Knowledge Management
- Paper Library — Save, organize, and export papers (BibTeX / RIS / Markdown / CSL-JSON / Zotero sync)
- Structured Cards — LLM-extracted method / dataset / conclusion / limitations with DB caching
- Related Work — Draft generation from saved papers with [AuthorYear] citation format
- Memory System — Research memory with FTS5 + BM25 search, context engine for personalized recommendations
- MemoryBench Suite — Retrieval / context / isolation / injection / performance / ROI / effectiveness benchmarks for the memory and Paper2Code stack
Reproduction & Studio
- Paper2Code — Paper → code skeleton (Planning → Analysis → Generation → Verification) with self-healing debugging
- AgentSwarm — Multi-agent orchestration platform with Claude Code integration, Runbook file management, Diff/Snapshot, and sandbox execution (Docker / E2B)
- Scholar Tracking — Multi-agent monitoring with PIS influence scoring (citation velocity, trend momentum)
- Deep Review — Simulated peer review (screening → critique → decision)
Getting Started
Install
# Use python3 for macOS/Linux
python -m venv .venv && source .venv/bin/activate
pip install -e .
Configure
cp env.example .env
# Set at least one LLM key: OPENAI_API_KEY=sk-...
Multiple LLM backends supported via ModelRouter:
| Task Type | Route | Example Models |
|---|---|---|
| default / extraction / summary | default | gpt-4o-mini / MiniMax M2.1 |
| analysis / reasoning / judge | reasoning | DeepSeek R1 / GLM 4.7 |
| code | code | gpt-4o |
DailyPaper supports Email / Slack / DingTalk / Telegram / Discord / WeCom / Feishu push.
Web UI — Configure in the Topic Workflow settings panel (recommended).
Environment variables:
PAPERBOT_NOTIFY_ENABLED=true
PAPERBOT_NOTIFY_CHANNELS=email,slack
PAPERBOT_NOTIFY_SMTP_HOST=smtp.qq.com
PAPERBOT_NOTIFY_SMTP_PORT=587
PAPERBOT_NOTIFY_SMTP_USERNAME=your@qq.com
PAPERBOT_NOTIFY_SMTP_PASSWORD=your-auth-code
PAPERBOT_NOTIFY_EMAIL_FROM=your@qq.com
PAPERBOT_NOTIFY_EMAIL_TO=recipient@example.com
Run
# Database migration (first time)
alembic upgrade head
# API server
# Use python3 for macOS/Linux
python -m uvicorn src.paperbot.api.main:app --reload --port 8000
# Web dashboard (separate terminal)
cd web && npm install && npm run dev
# Background jobs (optional)
arq paperbot.infrastructure.queue.arq_worker.WorkerSettings
CLI Usage
# Daily paper with LLM + Judge + push
python -m paperbot.presentation.cli.main daily-paper \
-q "LLM reasoning" -q "code generation" \
--with-llm --with-judge --save --notify
# Topic search
python -m paperbot.presentation.cli.main topic-search \
-q "ICL compression" --source arxiv_api --source hf_daily
# Scholar tracking
python main.py track --summary
# Paper2Code
python main.py gen-code --title "..." --abstract "..." --output-dir ./output
# Deep review
python main.py review --title "..." --abstract "..."
Architecture

Editable source: Excalidraw · draw.io
Module Status
Full maturity matrix and progress: Roadmap #232
| Status | Modules |
|---|---|
| Production | Topic Search · DailyPaper · LLM-as-Judge · Push/Notify · Model Provider · Deadline Radar · Paper Library |
| Usable | Scholar Tracking · Deep Review · Paper2Code · Memory · Context Engine · Discovery · AgentSwarm · Harvest · Import/Sync |
| Planned | DB Modernization #231 · Obsidian Integration #159 |
MemoryBench Evaluation
Aligned with LongMemEval (ICLR 2025), LoCoMo (ACL 2024), Mem0, Letta. Full methodology:
evals/memory/README.md· Epic #283
| Metric | Target | Result | |
|---|---|---|---|
| Recall@5 | ≥ 0.80 | 0.873 | :white_check_mark: |
| MRR@10 | ≥ 0.65 | 0.731 | :white_check_mark: |
| nDCG@10 | ≥ 0.70 | 0.747 | :white_check_mark: |
| Hit@10 | — | 1.000 |
Breakdown by LoCoMo question type:
| Type | Recall@5 | MRR@10 |
|---|---|---|
| single-hop (24) | 0.931 | 0.770 |
| multi-hop (6) | 0.708 | 0.583 |
| temporal (2) | 1.000 | 0.417 |
| acronym (4) | 0.708 | 0.875 |
| Check | Result |
|---|---|
| Cross-user leak rate | 0 (zero tolerance) |
| Cross-scope leak rate | 0 (zero tolerance) |
| CRUD Update (old content gone) | PASS |
| CRUD Delete (soft-delete enforced) | PASS |
| CRUD Dedup (exact duplicate skipped) | PASS |
| Test | Result |
|---|---|
| Layer completeness (L0 profile → L3 paper) | 8/8 PASS |
| Graceful degradation (missing paper / empty user) | 3/3 PASS |
| Context precision (query → relevant memories) | 100% (3/3) |
| Token budget guard (300 token cap) | 215 tokens |
| TrackRouter accuracy (query → correct track) | 100% (5/5) |
| Metric | Target | Result |
|---|---|---|
| Pollution rate (missed malicious) | ≤ 2% | 0.0% (6/6 caught) |
| False positive rate (benign flagged) | — | 0.0% (0/6 flagged) |
Covers: instruction override, tag escape, special token injection, role hijack, Unicode bypass, privilege escalation.
# Run full MemoryBench suite (~6s, fully offline, no API keys needed)
PYTHONPATH=src pytest -q evals/memory/test_retrieval_bench.py \
evals/memory/test_scope_isolation.py \
evals/memory/test_context_extraction.py \
evals/memory/test_injection_robustness.py -s
Roadmap
Roadmap #232 — Living roadmap organized by functional area, with checkbox tracking and Epic links.
Active Epics:
| Epic | Area | Status |
|---|---|---|
| #197 | AgentSwarm Studio | Foundation |
| #231 | DB Infrastructure | Planning |
| #153 | Memory & Context | P0-P1 done |
| #154 | Agentic Research | Design done |
| #179 | Daily Push | Complete |
| #283 | MemoryBench | Complete |
| #159 | Obsidian CLI | Not started |
Contributing
- Pick an unchecked item from the Roadmap
- Check the linked Epic for detailed requirements
- Open a PR targeting
devbranch - Follow Conventional Commits format
# Run tests
pytest -q
# Format
python -m black . && python -m isort .
Documentation
| Doc | Description |
|---|---|
| Roadmap #232 | Living project roadmap |
docs/PLAN.md | Architecture assessment |
docs/PAPERSCOOL_WORKFLOW.md | Topic Workflow guide |
docs/p2c/ | Paper2Context design docs |
docs/benchmark/MEMORYBENCH_EPIC_283_COMPLETION.md | MemoryBench Epic completion report |
docs/benchmark/MEMORYBENCH_RUNTIME_REPORT_2026-03-07.md | Live ROI + 1M memory runtime report |
docs/search_eval.md | Retrieval benchmark guide |
docs/document_evidence_eval.md | Document evidence retrieval benchmark guide |
docs/context_engine_eval.md | Context extraction benchmark guide |
docs/memory_performance_eval.md | Memory performance benchmark guide |
docs/p2c/P2C_ROI_BENCHMARK.md | ROI benchmark guide |
docs/memory_effectiveness_eval.md | Multi-session memory effectiveness benchmark guide |
docs/memory_system.md | Memory system design |
docs/anchor_system.md | Anchor author system |
docs/AGENTIC_RESEARCH_EVOLUTION.md | Agentic Research evolution plan |
Acknowledgements
- Qc-TX — Crawler contributions
- BettaFish — Multi-agent collaboration reference
- OpenClaw — Memory architecture reference
License
MIT
Trustgrade A
- passBody integrity
Whether the stored document is plausibly the kind of file the artifact declares, rather than something fetched by mistake.
- warnType matchbest-effort: server code not analyzed
Whether the artifact is really the kind of thing its metadata claims it is.
- passFreshness
How long since the source repository was last pushed to.
- passPrompt injection
Scans the artifact's own text for instructions aimed at your agent rather than at you.
- passLicense
Whether the source repository declares an SPDX license permissive enough to redistribute.
How the grade is calculated
Each check contributes 0 points when it passes, 1 when it warns, and 2 when it fails. The total maps to a letter:
- Aevery check passed
- Bone warning
- Ctwo warnings
- Dprompt injection or body integrity failed, or three warnings
- Fone of those failed, and something else is wrong
These are automated hygiene checks, not a security audit, and not a dependency or vulnerability scan. A grade of A means nothing was flagged — not that the artifact is safe.
Versions
git-e192386ec9522026-08-06



