[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-79920":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":12,"contributorsCount":13,"subscribersCount":13,"size":13,"stars1d":13,"stars7d":12,"stars30d":14,"stars90d":13,"forks30d":13,"starsTrendScore":12,"compositeScore":15,"rankGlobal":8,"rankLanguage":8,"license":8,"archived":16,"fork":16,"defaultBranch":17,"hasWiki":18,"hasPages":16,"topics":19,"createdAt":8,"pushedAt":8,"updatedAt":20,"readmeContent":21,"aiSummary":22,"trendingCount":13,"starSnapshotCount":13,"syncStatus":23,"lastSyncTime":24,"discoverSource":25},79920,"arxiv-tracker-agent","gaoweijun5\u002Farxiv-tracker-agent","gaoweijun5",null,"Python",95,7,1,0,6,2.71,false,"main",true,[],"2026-06-12 02:03:55","# ArXiv Tracker Agent\n\n> **If you find this project helpful, please give it a ⭐ Star! Your support is my motivation to keep improving.**\n\nAI-powered arXiv paper tracking and recommendation system with an autonomous LangGraph ReAct agent.\n\nhttps:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F880cb912-5e25-4a0f-b684-710d7716dbaf\n\nEnglish | [中文](README_CN.md)\n\n## Features\n\n- **Autonomous Paper Agent** - ReAct agent that independently decides search strategy, analyzes papers, and saves the best ones\n- **Smart Paper Discovery** - Search arXiv based on your research interests with configurable date range\n- **AI Summarization** - Generate summaries, key findings, and Chinese translations via OpenAI-compatible or Anthropic API\n- **Semantic Recommendations** - Vector-based paper matching using DashScope embeddings\n- **Research Reports** - Generate a persistent Markdown research report after every manual or scheduled fetch\n- **Full-text Q&A** - Manually download a paper PDF, then ask questions with full PDF content as context\n- **Real-time Progress** - WebSocket-powered live updates during paper fetching\n- **Paper Management** - Bookmark, mark as read, filter, batch delete papers\n- **LangSmith Observability** - Full tracing of agent decisions and LLM calls\n\n## Quick Start\n\n### Prerequisites\n\n- Python 3.11+\n- Node.js 18+\n- [uv](https:\u002F\u002Fdocs.astral.sh\u002Fuv\u002Fgetting-started\u002Finstallation\u002F)\n\n### Local Setup\n\n```bash\ngit clone git@github.com:gaoweijun5\u002Farxiv-tracker-agent.git\ncd arxiv-tracker-agent\nmake setup\n```\n\nThis will create `.env`, install all dependencies, and create data directories.\n\n### Configuration\n\n```env\n# === LLM API ===\n# Provider: \"openai\" (OpenAI-compatible) or \"anthropic\"\nLLM_PROVIDER=openai\n\n# OpenAI-compatible API\nOPENAI_API_KEY=sk-your-api-key-here\nOPENAI_API_BASE=your-api-base-here\nLLM_MODEL=deepseek-v4-flash\n# Optional: use a separate tool-call-capable model for Fetch Papers agent\n# LLM_AGENT_MODEL=deepseek-v4-flash\n\n# Anthropic API \n# ANTHROPIC_API_KEY=sk-ant-your-key-here\n# ANTHROPIC_MODEL=claude-sonnet-4-20250514\n\n# === Embedding API ===\n# Any OpenAI-compatible embedding API works.\nEMBEDDING_API_KEY=sk-your-embedding-key\nEMBEDDING_API_BASE=https:\u002F\u002Fdashscope.aliyuncs.com\u002Fcompatible-mode\u002Fv1\nEMBEDDING_MODEL=text-embedding-v4\n\n# === Optional ===\nLANGSMITH_API_KEY=your-langsmith-key\nLANGSMITH_PROJECT=\n\n# === Advanced (defaults are fine) ===\n# DATABASE_URL=sqlite+aiosqlite:\u002F\u002F\u002F.\u002Fdata\u002Farxiv_tracker.db\n# CHROMA_PERSIST_DIR=.\u002Fdata\u002Fvectors\n# ARXIV_MAX_RESULTS=50\n# ARXIV_PAGE_SIZE=10\n# ARXIV_REQUEST_INTERVAL_SECONDS=3\n# ARXIV_MAX_RETRIES=2\n# ARXIV_RATE_LIMIT_BACKOFF_SECONDS=60\n# ARXIV_REQUEST_TIMEOUT_SECONDS=90\n# ARXIV_USER_AGENT=\"arxiv-tracker-agent\u002F0.1.0 (mailto:your-email@example.com)\"\n# DAILY_FETCH_HOUR=8\n# DAILY_FETCH_MINUTE=0\n```\n\n`ARXIV_USER_AGENT` should identify your app and include a contact email or project URL. The default crawler is conservative: arXiv API and PDF requests are serialized, spaced at least 3 seconds apart, search pages are capped at 10 records, and 403\u002F429 responses trigger a longer shared backoff.\n\n### Local Run\n\n```bash\nmake dev\n```\n\nThis starts both backend (http:\u002F\u002Flocalhost:8000) and frontend (http:\u002F\u002Flocalhost:3000) simultaneously. The project is intended to run locally through `make`; Docker is not required.\n\nOther commands:\n- `make backend` - Start backend only\n- `make frontend` - Start frontend only\n- `make clean` - Clean generated files\n\n## Usage\n\n### 1. Add Research Interests\n\nGo to **Interests** page and add your research topics with keywords and arXiv categories.\n\n### 2. Fetch Papers\n\nClick **Fetch Papers** on Dashboard or Settings page:\n- Select specific topics to search\n- Choose search period (1-30 days)\n- Set max results per topic\n- The autonomous agent will search, analyze, and save paper metadata automatically\n- PDFs are not downloaded during fetch; use the download button on a paper detail page when you need full-text Q&A\n- A research report is generated after each fetch and saved under **Reports**\n- Watch real-time progress via WebSocket\n\n### 3. Browse Papers\n\n**Papers** page shows all fetched papers in a table:\n- Filter by All \u002F Unread \u002F Bookmarked\n- Sort by Date or Score\n- Select multiple papers for batch delete\n- View AI-generated summaries\n- Click to read full details and ask questions\n\n### 4. Paper Q&A\n\nOn paper detail page, click **Chat** to open the Q&A sidebar:\n- Click the download button first if the paper is not marked **PDF Ready**\n- Ask questions about the paper\n- AI reads the full PDF and answers based on complete content\n- Conversation history is saved\n- Clear chat history with the trash icon\n\n## Troubleshooting\n\n**Fetch returns 0 papers or fails**\n\nThis is usually caused by arXiv API rate limiting (HTTP 429), not a system bug. arXiv limits the number of requests from the same IP. If you've been testing frequently, wait 10-30 minutes before trying again. The system serializes arXiv traffic, waits at least 3 seconds between requests, and backs off after 403\u002F429 responses.\n\n**Fetch fails with `'str' object has no attribute 'model_dump'`**\n\nThis usually means the OpenAI-compatible LLM endpoint failed during agent tool calling. Use a tool-call-capable chat model for the fetch agent, for example `LLM_AGENT_MODEL=deepseek-v4-flash`, instead of a reasoning-only model such as `deepseek-reasoner`. The backend also falls back to a sequential compatibility workflow when this provider-side tool-calling error is detected.\n\n## Architecture\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│                    Frontend (React)                          │\n│    Dashboard | Papers | Recommendations | Interests         │\n└─────────────────────────┬───────────────────────────────────┘\n                          │ HTTP + WebSocket\n                          ▼\n┌─────────────────────────────────────────────────────────────┐\n│                    Backend (FastAPI)                          │\n│    Papers API | Interests API | System API | WebSocket      │\n└─────────────────────────┬───────────────────────────────────┘\n                          │\n        ┌─────────────────┼─────────────────┐\n        ▼                 ▼                 ▼\n┌───────────────┐ ┌───────────────┐ ┌───────────────┐\n│  LangGraph    │ │   Services    │ │   Storage     │\n│               │ │               │ │               │\n│ - Paper Agent │ │ - arXiv API   │ │ - SQLite      │\n│ (ReAct)       │ │ - LLM API    │ │ - ChromaDB    │\n│               │ │ - RAG Q&A     │ │               │\n└───────────────┘ └───────────────┘ └───────────────┘\n                          │\n                          ▼\n                   ┌─────────────┐\n                   │  LangSmith  │\n                   │  (Tracing)  │\n                   └─────────────┘\n```\n\n### Paper Agent (ReAct)\n\nThe Paper Agent uses LangGraph's `create_react_agent` to autonomously discover, analyze, and save papers:\n\n```\nUser: \"Find papers matching my interests\"\n  │\n  ▼\n┌─────────────────────────────────────────────┐\n│            ReAct Loop (LLM-driven)           │\n│                                              │\n│  1. get_user_interests() → understand topics │\n│  2. get_user_feedback_summary() → learn prefs│\n│  3. search_arxiv() → find papers             │\n│  4. check_paper_exists() → skip duplicates   │\n│  5. check_relevance() → quick filter         │\n│  6. analyze_paper() → full analysis          │\n│  7. save_paper() → save best metadata        │\n│                                              │\n│  LLM decides tool order and adjusts strategy │\n│  based on results (reflection)               │\n└─────────────────────────────────────────────┘\n```\n\n## License\n\nMIT\n","ArXiv Tracker Agent 是一个基于AI的arXiv论文追踪和推荐系统。它利用自主的LangGraph ReAct代理来决定搜索策略、分析论文并保存最佳结果，同时支持智能发现、语义推荐、全文问答等功能，并能生成研究总结报告。该系统采用Python编写，通过OpenAI兼容或Anthropic API实现AI摘要及中文翻译，借助DashScope嵌入技术进行论文匹配。适用于科研人员跟踪最新学术动态，管理个人文献库，以及需要定期获取特定领域内高质量论文更新的情景。",2,"2026-06-11 03:58:31","CREATED_QUERY"]