Skip to content

user0752/Cyberdiary

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CyberNote 赛博笔记

笔记 + LLM 第二大脑 —— 基于 Karpathy Wiki 编译范式的个人知识管理系统

version vue fastapi python license


V1.0 总览

Memo Flow

Compile Engine

Wiki Hub

Chat

Settings

目录


核心理念

灵感来自 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:如需使用本地大模型(下载地址

方式一:一键启动脚本(Windows 推荐)

适合快速体验,脚本会自动安装依赖并启动前后端服务。

第 1 步:克隆项目

git clone https://github.com/user0752/Cyberdiary.git
cd Cyberdiary

第 2 步:双击运行启动脚本

start.bat

脚本会自动:

  1. 检测 Python 和 Node.js 是否安装
  2. 首次运行时创建虚拟环境并安装依赖
  3. 启动后端(http://localhost:8000)和前端(http://localhost:5173
  4. 打开浏览器访问应用

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)。


方式三:Docker Compose 部署

适合生产部署或快速体验完整功能,前后端统一容器化运行。

第 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

配置 LLM 模型

应用启动后,进入 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)

  1. 安装 Ollama:https://ollama.com
  2. 拉取模型,例如:
    ollama pull qwen2.5:7b
  3. 确保 Ollama 运行在 http://localhost:11434
  4. 在设置页面会自动检测到可用模型

为不同功能指定模型

在设置页面可以分别为以下功能指定使用的模型:

  • 编译模型:将笔记编译为 Wiki 使用的模型(推荐能力强的模型,如 qwen-maxdeepseek-reasoner
  • 对话模型:AI 对话使用的模型(推荐响应快的模型,如 deepseek-chatqwen-plus

使用指南

第 1 步:写笔记(Memo Flow)

打开应用后,在 Memo 页面直接输入笔记内容:

  • 支持 Markdown 格式(标题、列表、代码块等)
  • 随手记录想法、学习内容、灵感,无需在意格式
  • 笔记按时间倒序展示,支持全文搜索

第 2 步:编译为 Wiki(Compile)

积累了一些笔记后,点击 Compile 按钮:

  • 系统会读取所有未编译的笔记
  • 调用 LLM 自动整理为结构化 Wiki 页面
  • 页面类型包括:概念(concept)、实体(entity)、对比(comparison)、综合(synthesis)、来源(source)
  • 编译进度实时显示(SSE 流式推送)

第 3 步:浏览知识库(Wiki Hub)

编译完成后,在 Wiki 页面浏览整理好的知识:

  • 按类型分类浏览
  • 点击 [[页面名]] 链接在 Wiki 页面之间跳转
  • 查看知识图谱可视化(力导向图展示页面间关系)
  • 可手动编辑 Wiki 页面

第 4 步:AI 对话(Chat)

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 文档

后端启动后,访问以下地址查看自动生成的 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=一个随机长字符串

重启后端,应用将要求用户注册/登录。


License

MIT

About

CyberNote - Notes + LLM Second Brain

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors