Content
# Tool List
A local knowledge incubator for **personal scientific research work** - gathering **Paper Research, Idea Flash, Experiment Notes, Concept Dictionary** together,
can be connected to any large model (OpenAI / DeepSeek / Gemini / Claude / AG-UI / any OpenAI compatible API) for in-depth dialogue.
> Inspired by SillyTavern's multi-model routing + Notion's knowledge organization + scientific research paper reading process.
## Features
- **Multi-Entity Knowledge Base**: Paper · Idea · Note · Experiment · Reading-log · Concept
- **Multi-Protocol LLM Routing**: OpenAI / DeepSeek / Anthropic Claude / Google Gemini / AG-UI / any OpenAI compatible endpoint
- **Chat Tavern Style**: multi-session, message editing/regeneration, system prompt presets, multi-model side-by-side comparison
- **Day / Night / Follow System** theme switching
- **Local Encryption**: store API Key (AES + machine fingerprint)
- **Pure File JSON Storage**, zero database dependency, reserved SQLite upgrade interface
- **Idea Kanban**: sprout → research → verification → drafting → produced
- **Paper Workflow**: arXiv / DOI / PDF import, BibTeX export, automatic summary
## Roadmap
- [x] **Phase 1** (current): scaffolding + backend + multi-protocol Provider routing + basic conversation page
- [ ] **Phase 2**: Paper import (arXiv / PDF), knowledge card CRUD, Idea Kanban
- [ ] **Phase 3**: tavern-level conversation experience (multi-session, branching, presets, comparison mode, formula rendering)
- [ ] **Phase 4**: BibTeX import/export, citation chain tracking, visual relationship graph
## Quick Start
```bash
cd paper-idea-memory
pip install -r requirements.txt
bash start.sh # macOS / Linux
# Windows:
start.bat
```
Open browser to <http://127.0.0.1:3200>, click ⚙ **Connection Management**:
1. Select provider type (OpenAI / DeepSeek / Gemini / Claude / AG-UI / Custom-OpenAI)
2. Fill in API Key / base_url / enterprise WeChat user-token (AG-UI scenario)
3. Select default model
4. Save → start conversation
## Project Structure
```
paper-idea-memory/
├── server.py # Flask entry (simplified, business split to routes/)
├── requirements.txt
├── start.sh / start.bat
├── config.example.yaml # default configuration template
│
├── lib/
│ ├── storage.py # multi-entity JSON storage
│ ├── settings.py # local configuration & key management (AES)
│ ├── sse.py # SSE tool
│ ├── providers/ # multi-protocol LLM routing (core)
│ │ ├── base.py # BaseProvider abstract
│ │ ├── openai_provider.py
│ │ ├── deepseek_provider.py
│ │ ├── anthropic_provider.py
│ │ ├── google_provider.py
│ │ ├── agui_provider.py
│ │ └── registry.py
│ ├── paper/ # arXiv/PDF/BibTeX tool (Phase 2)
│ └── prompts/ # various system prompt templates
│
├── routes/ # Flask Blueprint
│ ├── items.py # knowledge entry CRUD
│ ├── chat.py # multi-session chat (SSE)
│ ├── providers.py # connection management
│ ├── ingest.py # document import (Phase 2)
│ └── settings.py # UI preferences
│
├── knowledge-base/ # user data (generated at runtime, .gitignore)
├── settings/ # connection configuration & preferences (generated at runtime, .gitignore)
└── public/ # front-end static resources
├── index.html
├── styles/
└── js/
```
## Multi-Protocol Provider Design
All providers implement a unified streaming interface, upper-layer routing and front-end completely unaware of differences:
```python
class BaseProvider:
def stream_chat(self, *, messages, model, temperature, system=None,
max_tokens=None, extra=None):
"""yield {'type': 'text'|'thinking'|'error'|'done', 'delta': str, 'meta': {}}"""
def list_models(self) -> list[dict]: ...
def test_connection(self) -> dict: ...
```
Want to add a new provider? Three steps:
1. Create `xxx_provider.py` in `lib/providers/`, inherit `BaseProvider`
2. Register type in `lib/providers/registry.py`
3. Front-end `settings/providers.json` can save connection configuration of this type
## Security and Privacy
- All API Keys are encrypted with **AES-256 + machine fingerprint** and stored in `settings/providers.json`
- All data is stored locally, **not uploaded to cloud**
- `.gitignore` has excluded `knowledge-base/`, `settings/`, `.venv/` and other directories
## License
Personal Use — by BlackTea-c
Connection Info
You Might Also Like
everything-claude-code
Complete Claude Code configuration collection - agents, skills, hooks,...
markitdown
Python tool for converting files and office documents to Markdown.
awesome-claude-skills
A curated list of awesome Claude Skills, resources, and tools for...
antigravity-awesome-skills
The Ultimate Collection of 130+ Agentic Skills for Claude...
context-mode
MCP is the protocol for tool access. We're the virtualization layer for context.
claude-context-mode
claude-context-mode plugin reduces MCP context bloat, saving up to 99% of tokens.