5.8 KiB
5.8 KiB
Paper Burner X - Claude Code Guide
AI文献识别、翻译、阅读与智能分析工具。浏览器即开即用的AI工作站。
Project Overview
Paper Burner X is a browser-based AI-powered document processing tool for academic literature. It supports PDF/DOCX/PPTX/EPUB/Markdown formats with OCR, translation, and intelligent analysis capabilities.
Key Features:
- Frontend Agentic RAG system for document Q&A
- High-performance batch processing with concurrent OCR and translation
- Terminology glossary support (tens of thousands of entries)
- Dual deployment modes: pure frontend (Vercel) or backend (Docker/self-hosted)
Architecture
paper-burner-x/
├── js/ # Frontend JavaScript (Vanilla JS, no framework)
│ ├── app.js # Main entry point and event coordinator
│ ├── index.js # UI initialization and module management
│ ├── storage/
│ │ └── storage-adapter.js # Dual-mode storage abstraction
│ ├── chatbot/
│ │ ├── react/ # ReAct framework for document Q&A
│ │ ├── core/ # Chatbot core logic
│ │ ├── agents/ # Vector search, semantic tools
│ │ └── ui/ # Chatbot UI components
│ ├── process/ # Document processing, OCR, translation
│ ├── history/ # Export functionality (PDF, DOCX)
│ └── annotations/ # Annotation and highlighting
├── server/ # Backend: Node.js/Express + Prisma + PostgreSQL
│ ├── src/
│ │ ├── index.js # Backend entry point
│ │ ├── routes/ # API route handlers
│ │ ├── middleware/ # Auth, error handling, rate limiting
│ │ └── utils/ # Prisma client, logger, etc.
│ └── package.json
├── local-proxy/ # Local Node.js proxy server (OCR + academic search)
│ └── server.js
├── workers/ # Cloudflare Workers
│ ├── pb-ocr-proxy/ # OCR proxy worker
│ └── academic-search-proxy/
├── admin/ # Admin panel
├── css/ # Stylesheets (modular structure)
├── tests/ # Frontend test HTML files (open in browser)
└── docs/ # Documentation
Dual Deployment Modes
Frontend Mode (Vercel/Static)
- Pure static hosting
- Uses localStorage + IndexedDB for data persistence
- Storage adapter auto-detects mode via
storage-adapter.js - No backend required
Backend Mode (Docker/Self-hosted)
- Full PostgreSQL database via Prisma
- Backend API at
/api/* - User authentication and multi-user support
- Storage adapter switches to API calls automatically
Mode Detection: js/storage/storage-adapter.js auto-detects backend availability by checking /api/health endpoint.
Development Commands
# Start both frontend (port 8080) and backend (port 3456)
./start.sh
# Frontend development
npm run dev:fe # Vite dev server on port 5173
npm run build:fe # Build frontend to dist/
npm run preview:fe # Preview built frontend
# Backend development (in server/ directory)
cd server
npm run dev # Nodemon dev server
npm test # Run Jest tests
npm run prisma:migrate # Run database migrations
npm run prisma:studio # Open Prisma Studio GUI
# Local proxy (in local-proxy/ directory)
cd local-proxy
npm start # Start proxy server
Key Modules
Frontend Core
js/app.js- Main entry, file handling, translation coordinationjs/index.js- UI module registration (window.ui.registerModule)js/storage/storage-adapter.js- Storage abstraction layer
ReAct Engine (Document Q&A)
js/chatbot/react/index.js- Main ReAct module entryjs/chatbot/react/tool-registry.js- 10 retrieval tools (grep, vector search, fetch, etc.)js/chatbot/agents/- Vector store, semantic search, BM25
Document Processing
js/process/ocr.js- OCR processing (supports mineru/doc2x adapters)js/process/document.js- Document parsing and chunkingjs/process/glossary-*.js- Terminology matching
Backend Routes
server/src/routes/auth.js- Authenticationserver/src/routes/document.js- Document managementserver/src/routes/translation.js- Translation APIserver/src/routes/chat.js- Chatbot API
Important Patterns
Module Registration (Frontend)
// UI modules register themselves via window.ui.registerModule
window.ui.registerModule('moduleName', {
func1, func2, ...
});
// Check module status
window.ui.moduleStatus['moduleName'] // true/false
Storage Adapter Usage
// Automatically uses correct storage based on deployment mode
const settings = await window.storageAdapter.loadSettings();
await window.storageAdapter.saveSettings(settings);
ReAct Engine Usage
const engine = new window.ReActEngine({
maxIterations: 5,
tokenBudget: { totalBudget: 32000, contextTokens: 18000 },
llmConfig: {...}
});
const generator = engine.run(userQuestion, docContent, systemPrompt, chatHistory);
for await (const event of generator) {
// Handle streaming events
}
Testing
- Backend tests:
cd server && npm test(Jest) - Frontend tests: Open HTML files in
tests/directory directly in browser
Environment Variables
Backend (server/.env):
DATABASE_URL=postgresql://...
JWT_SECRET=...
PORT=3456
Local proxy (local-proxy/.env):
OCR_API_KEY=...
ACADEMIC_SEARCH_API_KEY=...
Notes
- Frontend uses Vanilla JavaScript (no React/Vue framework)
- CSS is organized in
css/history_detail/with modular structure - Workers are deployed to Cloudflare for OCR and academic search proxies
- The project supports both Chinese and English interfaces