笔记 + LLM 第二大脑 —— 基于 Karpathy Wiki 编译范式的个人知识管理系统
灵感来自 Andrej Karpathy 提出的 Wiki 编译范式:
原始笔记(随便写) → LLM 编译(自动整理) → Wiki 知识库(结构化) → AI 对话(智能查询)
你只管把想法「倒进来」,LLM 帮你整理成结构化知识,你随时可以和 AI 对话查询这些知识。
| 模块 | 功能 |
|---|---|
| Memo Flow | 时间流笔记,支持 Markdown 编辑(CodeMirror 6)、标签、全文搜索 |
| Compile Engine | LLM 编译引擎,将碎片笔记编译为结构化 Wiki 页面(支持手动/定时触发) |
| Wiki Hub | 结构化知识库,支持分类浏览、双向链接 [[页面名]]、知识图谱可视化 |
| Chat | AI 对话助手,自动注入 Wiki 上下文,支持流式输出(SSE) |
| Model Hub | 多模型管理,支持 DeepSeek / Qwen / Ollama,API Key 加密存储 |
| 层 | 技术 |
|---|---|
| 前端 | Vue 3 + Vite + TypeScript + Pinia + Vue Router |
| 编辑器 | CodeMirror 6(Markdown)+ markdown-it + highlight.js |
| 后端 | Python FastAPI + SQLAlchemy 2.0 (async) + Pydantic v2 |
| 数据库 | SQLite + aiosqlite(单机)/ PostgreSQL + asyncpg(生产) |
| 全文搜索 | SQLite FTS5 虚拟表 |
| LLM | LiteLLM 统一调用(DeepSeek / Qwen / Ollama) |
| 部署 | Docker Compose + Nginx 反向代理 |
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| Python | 3.10+ | 后端运行环境 |
| Node.js | 18+ | 前端构建与开发服务器 |
| Git | 任意版本 | 克隆项目 |
可选:
- Docker + Docker Compose:用于容器化部署
- Ollama:如需使用本地大模型(下载地址)
适合快速体验,脚本会自动安装依赖并启动前后端服务。
第 1 步:克隆项目
git clone https://github.com/user0752/Cyberdiary.git
cd Cyberdiary第 2 步:双击运行启动脚本
start.bat脚本会自动:
- 检测 Python 和 Node.js 是否安装
- 首次运行时创建虚拟环境并安装依赖
- 启动后端(
http://localhost:8000)和前端(http://localhost:5173) - 打开浏览器访问应用
Linux / macOS 用户使用
./start.sh(需先chmod +x start.sh)
第 1 步:克隆项目
git clone https://github.com/user0752/Cyberdiary.git
cd Cyberdiary第 2 步:启动后端
cd backend
# 创建并激活虚拟环境
python -m venv venv
venv\Scripts\activate # Windows
# source venv/bin/activate # Linux / macOS
# 安装依赖
pip install -r requirements.txt
# 复制并编辑环境配置(可选,默认配置即可运行)
copy .env.example .env # Windows
# cp .env.example .env # Linux / macOS
# 启动服务
uvicorn app.main:app --reload --port 8000启动成功后看到:
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
INFO: Started reloader process
第 3 步:启动前端(新开一个终端窗口)
cd frontend
# 安装依赖
npm install
# 启动开发服务器
npm run dev启动成功后看到:
VITE v8.x.x ready in xxx ms
➜ Local: http://localhost:5173/
第 4 步:打开浏览器
访问 http://localhost:5173 即可使用。
前端开发服务器会自动将
/api请求代理到后端localhost:8000(配置在frontend/vite.config.ts)。
适合生产部署或快速体验完整功能,前后端统一容器化运行。
第 1 步:克隆项目
git clone https://github.com/user0752/Cyberdiary.git
cd Cyberdiary第 2 步:配置环境变量
在项目根目录创建 .env 文件(与 docker-compose.yml 同级):
# 必填:修改为一个随机字符串(JWT 密钥)
SECRET_KEY=your-random-secret-key-here不设置则使用默认值
dev-secret-key-change-in-production,仅限本地测试使用。
第 3 步:启动服务
docker compose up --build第 4 步:打开浏览器
访问 http://localhost:8080 即可使用。
Nginx 监听 8080 端口,统一代理前端页面和后端 API,并支持 SSE 流式输出。
使用本地 Ollama 模型
如果已在宿主机运行 Ollama,Docker 容器会自动通过 host.docker.internal:11434 连接。
如需修改 Ollama 地址,在 .env 中覆盖:
OLLAMA_BASE_URL=http://your-ollama-host:11434应用启动后,进入 Settings(设置) 页面配置模型:
| 提供商 | 模型 | 所需配置 |
|---|---|---|
| DeepSeek | deepseek-v4-flash / `deepseek-v4-pro |
API Key(申请地址) |
| 阿里云百炼(Qwen) | qwen-max / qwen-plus / qwen-turbo |
DashScope API Key(申请地址) |
API Key 使用 AES-256-GCM 加密存储,不会明文落盘。
- 安装 Ollama:https://ollama.com
- 拉取模型,例如:
ollama pull qwen2.5:7b
- 确保 Ollama 运行在
http://localhost:11434 - 在设置页面会自动检测到可用模型
在设置页面可以分别为以下功能指定使用的模型:
- 编译模型:将笔记编译为 Wiki 使用的模型(推荐能力强的模型,如
qwen-max、deepseek-reasoner) - 对话模型:AI 对话使用的模型(推荐响应快的模型,如
deepseek-chat、qwen-plus)
打开应用后,在 Memo 页面直接输入笔记内容:
- 支持 Markdown 格式(标题、列表、代码块等)
- 随手记录想法、学习内容、灵感,无需在意格式
- 笔记按时间倒序展示,支持全文搜索
积累了一些笔记后,点击 Compile 按钮:
- 系统会读取所有未编译的笔记
- 调用 LLM 自动整理为结构化 Wiki 页面
- 页面类型包括:概念(concept)、实体(entity)、对比(comparison)、综合(synthesis)、来源(source)
- 编译进度实时显示(SSE 流式推送)
编译完成后,在 Wiki 页面浏览整理好的知识:
- 按类型分类浏览
- 点击
[[页面名]]链接在 Wiki 页面之间跳转 - 查看知识图谱可视化(力导向图展示页面间关系)
- 可手动编辑 Wiki 页面
在 Chat 页面向 AI 提问:
- AI 自动以你的 Wiki 知识库为上下文回答
- 支持流式输出,实时看到回答生成过程
- 可以追问、讨论、深入某个知识点
在 backend/ 目录下创建 .env 文件进行配置:
| 变量名 | 默认值 | 说明 |
|---|---|---|
DATABASE_URL |
sqlite+aiosqlite:///./data/cybernote.db |
数据库连接字符串,生产环境可改为 PostgreSQL |
SECRET_KEY |
change-me-to-a-random-string |
JWT 签名密钥,生产环境必须修改 |
ACCESS_TOKEN_EXPIRE_MINUTES |
1440(24小时) |
JWT Token 有效期 |
AUTH_MODE |
none |
认证模式:none 关闭认证(单用户本地),jwt 开启登录 |
ALLOWED_ORIGINS |
* |
CORS 允许的前端域名,生产建议改为具体域名 |
OLLAMA_BASE_URL |
http://localhost:11434 |
Ollama 服务地址 |
Cyberdiary/
├── backend/ # 后端(FastAPI)
│ ├── app/
│ │ ├── api/
│ │ │ ├── v1/ # 路由层(memo, wiki, chat, compile, model)
│ │ │ └── deps.py # 依赖注入(DB session、认证)
│ │ ├── core/ # 配置、数据库连接、安全工具
│ │ ├── models/ # SQLAlchemy ORM 模型
│ │ ├── schemas/ # Pydantic 请求/响应模型
│ │ ├── services/ # 业务逻辑层
│ │ ├── prompts/ # LLM Prompt 模板(.md 文件)
│ │ └── main.py # 应用入口
│ ├── data/ # 运行时数据(SQLite、Wiki .md 文件)
│ ├── Dockerfile
│ ├── requirements.txt
│ └── .env.example
├── frontend/ # 前端(Vue 3 + Vite)
│ ├── src/
│ │ ├── api/ # API 请求层
│ │ ├── components/ # 通用组件
│ │ ├── stores/ # Pinia 状态管理
│ │ ├── views/ # 页面组件
│ │ ├── styles/ # 全局样式与 CSS 变量
│ │ ├── router/ # 路由配置
│ │ ├── App.vue
│ │ └── main.ts
│ ├── Dockerfile
│ ├── package.json
│ └── vite.config.ts
├── nginx/
│ └── nginx.conf # Nginx 反向代理配置
├── docker-compose.yml
├── start.bat # Windows 一键启动脚本
└── start.sh # Linux/macOS 一键启动脚本
后端启动后,访问以下地址查看自动生成的 API 文档:
| 文档 | 地址 |
|---|---|
| Swagger UI | http://localhost:8000/docs |
| ReDoc | http://localhost:8000/redoc |
| 模块 | 端点 | 说明 |
|---|---|---|
| Memo | GET/POST /api/v1/memo |
笔记增删改查 |
| Wiki | GET /api/v1/wiki |
Wiki 页面查询 |
| Compile | POST /api/v1/compile |
触发编译任务(SSE 流式) |
| Chat | POST /api/v1/chat |
AI 对话(SSE 流式) |
| Model | GET/POST /api/v1/model |
模型配置管理 |
Q: 启动后浏览器显示空白页?
A: 请确认后端是否正常运行(访问 http://localhost:8000/docs 检查),然后查看浏览器控制台(F12)是否有报错。
Q: 编译或对话时提示模型错误?
A: 进入 Settings 页面检查 LLM 配置,确认 API Key 已填写且有效。如果使用 Ollama,确认 Ollama 服务正在运行。
Q: 如何使用 PostgreSQL 替代 SQLite?
A: 修改 .env 中的 DATABASE_URL:
DATABASE_URL=postgresql+asyncpg://user:password@localhost:5432/cybernote然后安装 asyncpg:pip install asyncpg,重启后端即可,数据库表会自动创建。
Q: Docker 部署后无法连接 Ollama?
A: Docker 容器通过 host.docker.internal 访问宿主机服务。Linux 上需要在 docker-compose.yml 中添加:
extra_hosts:
- "host.docker.internal:host-gateway"Q: 如何开启登录认证?
A: 修改 .env:
AUTH_MODE=jwt
SECRET_KEY=一个随机长字符串重启后端,应用将要求用户注册/登录。
MIT




