Skip to content
ChengjinLiiPublic

About

StudyHub: Campus Resources, Content, and AI Assistance

Topics

Resources

Security policy

Stars

19 stars

Watchers

0 watching

Forks

Repository files navigation

StudyHub

面向高校的知识共享与校园互助平台

FastAPI Next.js TypeScript MySQL + OSS Redis + Worker Qwen SGLang PyTorch Qwen3Guard ShieldGemma Website MIT

功能概览 | 宣传片 | 快速开始 | 技术栈 | Agent | 内容审核 | ENG

StudyHub 连接学习资料、经验分享与校园互助,围绕高校学生的学习和生活需求,提供资源共享、求购协作与校园集市服务。

分享知识,交流经验,让校园资源更容易找到。


功能概览

StudyHub 海报

品牌宣传片

StudyHub 品牌宣传片动态预览

查看完整视频

平台功能

场景 主要功能
资料共享 上传、浏览与获取课程资料、复习提纲和学习笔记
经验分享 沉淀学习经验、选课建议与校园生活内容
求购协作 发布资源需求,开展求购、互助与交换
校园集市 发布校内二手交易与校园信息

官网:study-hub.cn


技术栈

层次 技术
后端服务 FastAPI、SQLAlchemy、Pydantic Settings、Uvicorn
前端界面 Next.js 15、React、TypeScript
数据存储 MySQL、SQLite、阿里云 OSS
缓存与任务 Redis、BackgroundTasks、独立 Worker
异步处理 局部异步数据库访问与异步 I/O
部署运维 Docker Compose、systemd、Nginx
Agent Qwen3.5-4B / 9B、SGLang、tokenizers、统一 Agent 执行器
内容审核 Qwen3Guard-Gen-0.6B、ShieldGemma 2-4B、Guard-as-Jev、PyTorch、Transformers

MySQL 用于预览与生产环境,SQLite 用于本地开发和快速体验。


仓库结构

studyhub/
  backend/          # 后端服务、测试与运维辅助代码
  frontend/         # 前端应用与 PWA
  studyhub-agent/   # Agent 运行框架
  review-jev/       # 文字与图片审核组件
  assets/           # 宣传片、动态预览与项目海报
  docs/             # 项目技术文档
  reports/          # 技术报告与项目复盘
  scripts/          # 开发、部署与运维脚本

快速开始

推荐使用 Python 3.12、Node.js 22、npm 10,版本配置见 .python-version 与 .nvmrc。

Docker 开发环境

bash scripts/dev/docker-dev-up.sh

本地轻量环境

bash scripts/dev/local-dev-up.sh

模块文档

模块 说明
后端服务 环境配置、接口与测试
前端应用 页面开发、构建与 PWA
Agent 工具调用、运行契约与模型推理
内容审核 模型分流、审核接口与批量评测
开发脚本 本地启动、部署与运维

接口设计

公开 API 采用 RESTful 风格,资源以复数名词命名,使用 HTTP Method 表达操作。

场景 接口示例
登录会话 POST /api/session
退出登录 DELETE /api/session
下载授权 POST /api/materials/{id}/downloads

历史动作型路径保留兼容,新客户端优先使用 OpenAPI 中的资源接口。智能体接入、OAuth 权限范围与配额见 MCP 接口说明。


开发与部署

提交前检查

bash scripts/check-shell-scripts.sh
${STUDYHUB_PYTHON_BIN:-.venv/bin/python} -m ruff check backend/app backend/tests
${STUDYHUB_PYTHON_BIN:-.venv/bin/python} -m pytest backend/tests
npm --prefix frontend run check
npm --prefix frontend run test:unit

发布检查

bash scripts/predeploy-check.sh

发布采用独立 Release 构建、验证与切换流程。完成首次配置后,使用 bash scripts/deploy/atomic-release.sh <commit>,避免直接在在线目录构建前端。

CI 与本地质量检查可使用 bash scripts/ci-check.sh。完整门禁包含开发及生产构建下的 Playwright 关键路径,部署配置与运维命令见 脚本文档。

生产配置

生产和预览环境默认关闭 FastAPI 接口文档,需要时通过 STUDYHUB_DOCS_ENABLED=true 开启。域名白名单使用 STUDYHUB_TRUSTED_HOSTS,可信代理使用 STUDYHUB_TRUSTED_PROXY_IPS,按实际部署环境配置。


参与贡献

欢迎通过 Issue 和 Pull Request 参与项目改进。

主要贡献者

贡献者 姓名
@ChengjinLii 李承锦
@Sgt-Friedrich 曾逸帆

其他贡献者

贡献者 姓名
@JoeyLam2005 林俊宇
@xiaji 季文君

初版 SpringBoot 实现见 studyhub-springboot,目前为内部仓库。


StudyHub Agent

独立运行的文档知识库、RAG 与 Agent。

StudyHub Agent 借鉴腾讯开源 WeKnora 的知识库设计,支持 PDF/OCR 文档解析、结构感知切分与 Parent-Child 分层索引,通过 BM25、向量召回、RRF 融合与 Rerank 连接 RAG 和多步 Agent;以 Map-Reduce 实现实体、概念聚合和增量 Wiki,保留文档、Chunk、版本及页码关联。

能力 实现
知识管理 本地 Markdown/TXT 导入、结构分块、版本化快照与来源定位
正文检索 关键词召回、可选向量召回、RRF 融合与模型重排
问答与工具 固定 RAG 流程,多步 Agent 通过检索、阅读和列表工具获取证据
引用核查 按实际展示的版本化片段核查引用,并支持反馈纠正
运行契约 统一消息渲染、调用解析、预算控制与契约哈希
轨迹记录 保存消息、工具证据、架构决策与模型信息
推理接口 支持 SGLang token 级接口和 OpenAI-compatible 接口

技术栈:Python 3.12、Pydantic、Jinja2、httpx、SGLang。架构与使用方法见 Agent 文档。


StudyHub Review-Jev

面向文字与图片投稿的内容审核组件。

StudyHub Review-Jev 采用 Qwen3Guard-Gen-0.6B 与 ShieldGemma 2-4B 双路架构,通过 Guard-as-Jev 读取安全等级与图像政策候选概率,结合规则融合、置信度门槛与人工复核,输出可解释的内容审核结果。

内容类型 默认模型
纯文字 Qwen3Guard-Gen-0.6B
图片 ShieldGemma 2-4B;检出文字时按需调用 Qwen
文字配图 正文与 OCR 走 Qwen,画面走 ShieldGemma
不确定或覆盖缺失 人工复核

审核组件提供 FastAPI 服务、JSON 命令行、概率评分与批量评测工具,保留各分支风险、模型版本、OCR 状态、版权声明、开放许可与参考匹配记录。模型分流、请求示例和使用方法见 Review-Jev 文档。


手机端体验

StudyHub 支持 PWA 安装。通过手机浏览器打开网站,点击右下角的下载箭头即可进入安装流程;iPhone 使用分享菜单中的“添加到主屏幕”,微信等内嵌浏览器可按提示在系统浏览器中打开。

安装后沿用网站的页面、账户和 API。版本化前端资源与离线提示页由 Service Worker 缓存,登录、投稿、文件下载与支付通过在线服务完成;页面更新会在旧窗口关闭后生效。

PWA 图标位于 frontend/public/icons/,生成命令为 node frontend/scripts/build-pwa-icons.mjs。缓存策略、更新机制和验收说明见 PWA 技术说明。


开源许可

StudyHub 主项目采用 MIT License。Review-Jev 的代码许可见 Apache-2.0 许可证。

About

StudyHub: Campus Resources, Content, and AI Assistance

Topics

Resources

Security policy

Stars

19 stars

Watchers

0 watching

Forks

Contributors

Languages