逆元装置 ▍ INVERSION

丽·芙

CONSTRUCT — LIV
▍
意识海深度 · 回廊稳定
逆元装置 · 待机中
指挥官链接 · 未认证

ZCST校园助手 —— 基于OpenWebUI改造的轻量校园AI问答平台

发布于 2026-06-12 00:00 1174 字 6 min read

珠海科技学院校园AI助手——面向师生和访客的自然语言问答平台,支持RAG知识库、临时会话和角色权限分离。

项目背景

“食堂哪个窗口好吃?""宿舍报修找谁?""创新创业基地怎么申请?“——这些问题的答案散落在官网通知、公众号推文和新生手册里,没有一个统一的入口。

ZCST Campus AI 的定位是:一个比 OA 更轻、比通用 AI 更懂校园的问答助手。 基于 OpenWebUI 改造,面向珠海科技学院的师生和访客,提供基于知识库的校园问答服务。

学校:珠海科技学院 角色:核心开发 完成时间:2026年6月

核心理念

不做 OA、不做教务、不做一卡通。做一个纯粹的”校园 AI 同学”:

  1. 轻量化:不接入内部系统,不需要学号密码,靠公开校园资料回答问题
  2. 人性化:自然语言交互,不需要知道菜单在哪、表单叫什么
  3. 可维护:管理员通过知识库上传文档即可更新问答内容,无需改代码

技术架构

┌───────────────────────────────────────────────┐
│                   SvelteKit 前端                │
│  普通用户界面           管理后台 (/admin)          │
│  · 对话 · 知识来源       · 知识库 · 模型 · 用户     │
│  · 关于 · 管理员入口      · 系统设置 · 数据统计      │
├───────────────────────────────────────────────┤
│              FastAPI 后端 (Python)              │
│  · 路由鉴权  · 聊天API  · 知识库索引  · 模型调度   │
├──────────────┬────────────────┬───────────────┤
│ Ollama 本地   │ OpenAI API 兼容 │ 向量检索 (RAG)  │
│ (默认模型)    │ (可选配置)      │ (文档问答增强)   │
└──────────────┴────────────────┴───────────────┘
层级技术说明
前端框架SvelteKit + Svelte 5编译时框架,无运行时开销
样式Tailwind CSS极简校园风格
构建ViteHMR 开发体验
后端FastAPI异步 Python Web 框架
ORMSQLAlchemy + Peewee数据模型与数据库迁移
模型服务Ollama / OpenAI API可本地部署,也可接入云端模型
测试Vitest + Svelte Check + Cypress前端单元测试 + E2E
部署Docker Compose一键启动应用 + Ollama 服务

核心实现

角色权限分离

这是最核心的改造——把 OpenWebUI 的开发者工具全部隐藏,为校园场景重新设计用户界面:

普通用户(访客/学生/教师)
  └── 可见:对话、知识来源、关于我们、管理员登录入口
  └── 不可见:聊天历史、Workspace、Models、Prompts、Tools、Functions

管理员(通过 /admin-login 登录)
  └── 可见:完整后台 → /admin
  └── 能力:知识库管理、模型配置、用户管理、系统设置、数据统计

前端通过 SvelteKit 的路由守卫隐藏管理员入口,后端通过 FastAPI 中间件进行二次鉴权——不能只靠 UI 显隐来保证安全。

临时会话设计

// 普通用户默认使用临时聊天模式
const isGuest = !currentUser || currentUser.role === 'guest'

if (isGuest) {
  // 创建一次性会话 token,页面刷新后失效
  session = await createTemporarySession()
  // 不记录用户身份和对话历史到数据库
  chatHistory = []
}

这个设计考虑了校园场景的特殊性:访客(家长、考生、外来人员)不应该被记录对话历史;学生的日常提问也不需要长期留存。隐私优先,而非功能优先。

知识库与 RAG

复用 OpenWebUI 的文档上传和向量索引能力,但做了校园场景的适配:

  1. 管理员上传校园文档(通知 PDF、公众号文章、新生手册等)
  2. 系统自动分块、向量化并建立索引
  3. 用户提问时,先从知识库检索相关段落,拼入 prompt 上下文
  4. LLM 结合检索结果生成回答,并标注信息来源

安全考量

措施说明
管理员路由双重鉴权前端隐藏 + 后端中间件校验
临时 token访客自动申请,限制权限仅限聊天
CORS 限制生产环境设置明确域名,不保留 *
敏感信息排除.env、密钥、真实管理员密码全部忽略提交
数据统计匿名化仅记录访问路径和问题摘要,不关联个人身份

项目思考

做校园产品的过程中有一个很深的体会:产品不是你想象中用户需要什么,而是用户实际上在问什么。

上线后统计后台显示提问最多的问题是”食堂几点开门”、“招生分数线”、“图书馆预约”——这些和我们预想的”创新创业政策咨询""学术资源检索”完全不同。接地气的需求,往往是最朴素的需求。

项目链接