Skip to content
KAI3zZPublic

About

从链接开始学习,只需要给一个视频链接(如b站、小红书、小宇宙等)即可完成内容的转录,并通过对话式 Agent 支持基于视频内容的多轮问答与交互式学习

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

LinkStart

从链接开始学习 — 输入视频链接,AI 帮你提取知识、整理笔记、对话答疑。

Python Next.js FastAPI LangChain LangGraph ChromaDB License: MIT


功能

  • 视频内容解析 — 支持 Bilibili、YouTube 等 30+ 平台,自动提取字幕与元数据
  • 结构化笔记生成 — 13 种模板(摘要、时间线、闪卡、测验等),3 种必选 + 9 种可选,SSE 流式输出
  • AI 对话答疑 — LangGraph Agent,7 个工具(内容查询、混合检索、联网搜索、SQL 查询等),7 层中间件链
  • 混合检索 — BM25 关键词 + 语义向量 RRF 融合,可选 Qwen3-Reranker 重排序
  • 长期记忆 — 跨会话持久化学习偏好与知识,LLM 驱动记忆提取
  • 联网搜索 — 支持 Tavily/DuckDuckGo 搜索 + Tavily/Jina 网页抓取,无需 API Key 即可用
  • 会话管理 — 多会话历史、一键恢复对话上下文、URL 去重检测
  • 暗色模式 — 毛玻璃风格 UI,亮/暗主题切换

架构

Frontend (Next.js 14) ──SSE──▶ FastAPI Gateway (:8000)
                                    ├── Content Pipeline (parser, downloader, subtitle, transcriber, templates)
                                    ├── Session Service (CRUD + state)
                                    ├── LangGraph Agent Engine
                                    │     ├── LeadAgent (StateGraph)
                                    │     ├── Tools (3 常驻 + 4 条件)
                                    │     ├── Middlewares (5 常驻 + 2 条件)
                                    │     ├── Checkpointer (SQLite)
                                    │     └── StreamBridge + RunManager
                                    └── Storage Layer
                                          ├── SQLite (sessions, contents, checkpoints)
                                          └── ChromaDB (BM25 + 语义向量混合搜索)

Model Service (Docker, :8001) ◀──HTTP── Backend
    ├── Qwen3-Embedding-0.6B (POST /v1/embeddings)
    └── Qwen3-Reranker-0.6B  (POST /v1/rerank)

三层架构:Next.js 14 前端、FastAPI + LangGraph 后端、SQLite + ChromaDB 存储层。视频解析与内容生成模块直接集成在后端 app/services/ 中。

快速开始

环境要求

  • Python 3.12+
  • Node.js 18+
  • Docker(用于 Model Service)
  • GPU(推荐,用于嵌入/重排序模型)
  • LLM API(OpenAI 兼容接口,用于内容生成和 Agent 对话)

配置

cd backend
cp .env.example .env

编辑 .env,填入以下必要配置:

# 内容生成 LLM
CONTENT_LLM_PROVIDER=openai
CONTENT_LLM_API_KEY=sk-xxx
CONTENT_LLM_BASE_URL=https://api.openai.com/v1
CONTENT_LLM_MODEL=gpt-4o

# Agent 对话 LLM
AGENT_LLM_PROVIDER=openai
AGENT_LLM_API_KEY=sk-xxx
AGENT_LLM_MODEL=gpt-4o

# 联网搜索(可选,留空则使用免费回退方案)
TAVILY_API_KEY=

其余配置(Model Service、嵌入、记忆、摘要等)使用默认值即可。

启动方式

方式一:Docker Compose(推荐)

一条命令启动所有服务:

docker compose up

服务启动后访问 http://localhost:3000。

方式二:本地开发(3 个终端)

# 终端 1:Model Service(嵌入 + 重排序)
docker compose up models

# 终端 2:后端
cd backend && uvicorn app.main:app --reload --port 8000

# 终端 3:前端
cd web && npm install && npm run dev

打开 http://localhost:3000 即可使用。

项目结构

LinkStart/
├── backend/
│   ├── app/                  # FastAPI 路由、服务、依赖注入
│   │   ├── models/           # SQLAlchemy 数据模型
│   │   ├── routers/          # API 路由(sessions, content, threads)
│   │   └── services/         # 业务逻辑(content_pipeline, subtitle, templates 等)
│   ├── agent/                # LangGraph Agent(StateGraph、Tools、Middlewares、Memory)
│   ├── runtime/              # StreamBridge、RunManager、Worker
│   └── db/                   # ChromaDB 客户端
├── web/                      # Next.js 14 前端
│   └── src/
│       ├── app/              # App Router
│       ├── components/       # React 组件
│       ├── hooks/            # useChat、useSSEStream、useContentGeneration 等
│       └── lib/              # 工具函数
├── model_service/            # 独立嵌入/重排序模型服务(Docker)
├── e2e/                      # Playwright E2E 测试
├── docs/                     # 设计文档与规范
├── docker-compose.yml
├── Dockerfile.backend
└── Dockerfile.web

API

方法 路径 说明
POST /api/v1/sessions 创建会话,流式生成内容(SSE)
GET /api/v1/sessions/check-duplicate 检查 URL 是否已有会话
GET /api/v1/sessions 获取会话列表(分页 + 标签过滤)
GET /api/v1/sessions/{id} 获取会话详情(含聊天历史)
DELETE /api/v1/sessions/{id} 删除会话及关联数据
GET /api/v1/content/templates 获取内容模板列表
POST /api/v1/content/generate 生成可选内容(SSE)
POST /api/v1/content/retry 重试失败内容(SSE)
POST /api/v1/threads/{thread_id}/runs/stream 发送消息,流式 Agent 回复(SSE)
POST /api/v1/threads/{thread_id}/runs/{run_id}/cancel 取消正在运行的 Agent

Agent Tools

Tool 功能 条件
get_video_content 按类型获取视频笔记内容 始终可用
search_content BM25+语义混合检索字幕内容 始终可用
generate_content 触发内容生成 始终可用
inspect_database 探索数据库结构(列表/Schema) 数据库引擎可用时
sql_query 只读 SQL 查询,结构化错误诊断 数据库引擎可用时
web_search 联网搜索(Tavily/DuckDuckGo) 启用时
web_fetch 获取 URL 内容,HTML 转 Markdown 启用时

测试

# 后端
cd backend && pytest

# 前端
cd web && npm run test

# E2E(需要后端 + 前端运行中)
npx playwright test --config=e2e/playwright.config.ts

技术栈

层 技术 用途
前端 Next.js 14 + React 18 SSR/CSR
前端 Tailwind CSS 样式
后端 FastAPI HTTP 服务
后端 LangGraph Agent 框架
后端 SQLAlchemy SQLite ORM
存储 SQLite 关系数据
存储 ChromaDB 向量搜索
模型服务 Qwen3-Embedding + Qwen3-Reranker 嵌入 + 重排序(Docker)

致谢

  • NoteKing — 视频解析与内容生成参考项目(核心代码已内化集成到 app/services/)
  • DeerFlow — StreamBridge、LangGraph 中间件模式参考

License

MIT

About

从链接开始学习,只需要给一个视频链接(如b站、小红书、小宇宙等)即可完成内容的转录,并通过对话式 Agent 支持基于视频内容的多轮问答与交互式学习

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages