界面结构示意,非实时截图
概览
经验一直都在。只是站内搜索只认标题,而真正有用的那句话,往往藏在第十四楼。
一套系统负责把楼层找出来,另一套负责把找到的内容变成选课时能核对的证据。同一站点上还长着两条 AI 对话:一条查本地索引,一条把问题编译成查询矩阵后去调官方接口。
数据截至 2026 年 11 月 13 日,取自本地 SQLite 实测。
材料准备集中在 3–5 月,报名在 5–6 月,考核大多安排在 7 月。[1][3]
·各学院通知时间不一致,学院官网与研究生院通知都要盯。[2]
·常见材料是成绩单、排名证明、英语成绩、个人陈述与推荐信。[1][4]
·有帖子提到部分院系的夏令营与预推免互不冲突,可以都报。[3]
材料只能部分回答时,说明能确认什么、不能确认什么;确实不相关时才说没有找到足够依据。
界面结构示意,非实时截图
关键词走 FTS5 + BM25,语义走本地 BGE 向量与 ANN 索引,标题层单独一路。三路结果用 RRF 融合,同一主题只显示最高分的那层楼。
keyword · semantic · hybrid / 可切换
35 万余条纯标题可以直接搜到、可以按板块与时间过滤。命中之后才去抓那一条的楼层,抓到就永久缓存。单并发、共享日配额,不与采集器抢请求。
title_only → fetch_one → 正文入缓存
答案按 [n] 逐条标注楼层编号、作者、时间与板块。生成后校验引用是否越界,越界直接剔除;材料不相关就明说,不硬答。
SSE 流式 · 引用后校验 · 拒答阈值
02 course-system/ · 选课情报系统
从原版培养方案出发,走到本学期分班、教师评价,再到自己的学分表。每条结论都标明来源层级,都能点回原始帖子或指南条目。
界面结构示意,非实时截图
培养方案 PDF 逐页保留原版式,课程代码是可点热区,点一下就能看到详情并加入工作区。解析器出的草稿要人工审核过才发布。
73 页原文 · 314 个课程锚点
指南优先,无指南才用河畔,只有两者都没有时才引用口碑。跨课程与口碑单独隔离,标注「非本课结论」;两源冲突会显式标出。
guide > hepan > cross / general
按分类选课、选教师,实时汇总学分进度与上课时间;冲突直接指到星期和节次,每门课带代表评价与来源链接。
学分统计 · 时间冲突 · 证据回链
03 web/ · 本地问答 /ask
不是接一个模型就开始答。一句话进来,先拆出实体和检索词,再依次走本地楼层、标题层和按需抓取;材料不够就少说,引用对不上就删掉。
先说结论:权重投给具体教学班,不是投给课程。[1][3]
·人没选满的课,0 权重也能进;名额紧张时才需要投。[2]
·有帖子提到权重也能用于退课,但要在规定时间内操作。[4]
界面结构示意,非实时截图
模型抽人名、课程名等实体和检索词,抽不出来就退回规则。问某位老师时,标题和正文都没提到他的材料直接丢掉,不让同名的人凑数。
实体门 · 规则兜底 · 查询改写
混合模式先在 35 万余条标题里召回,模型挑出最可能有答案的几条,再单并发抓正文,抓到就缓存。强度分三档,硬上限 12 帖 / 24 次请求。
light 20/3 · standard 40/5 · deep 80/10
SSE 流式输出,思考过程单独展开,不混进正文。生成后校验 [n] 有没有越界,越界直接剔除,零引用标低置信;材料确实不相关就直说。
引用后校验 · 低置信标记 · 可拒答
这条链路只用本机索引,代价是最新发生的事查不到。同一个站点下还有另一条路径:不查本地库,把问题编译成可编辑的查询矩阵,人工确认后才去调论坛官方接口。
04 prototype/ · 实时检索 /live
另一条 AI 对话,反过来做。一句话先编译成一张可编辑的查询矩阵,人确认过才执行;之后每条查询、每次等待、每篇正文都在屏幕上,答案要带日期和楼层。
| 查询组 | 主表述 | 简称 / 别名 | 评价 / 补充 | 权重 | 启用 |
|---|---|---|---|---|---|
| 时间 × 通知 | 选课 开放 | 选课系统 时间 | 选课 通知 | 高 | ✓ |
| 教务处 × 安排 | 教务处 选课 | 选课 安排 | 可补充 | 高 | ✓ |
| 学期 × 截止 | 本学期 选课 | 选课 截止 | 可补充 | 中 | ✓ |
| 宽召回 | 选课 | — | — | 低 | ✓ |
界面结构示意,非实时截图;日期与条目为示例
模型把一句话拆成 3–4 行检索面、每行至多 3 条短查询,上限 9 条。格子可以改、可以加组,去重并强制留一条宽召回。确认之前,一个请求都不会发出去。
每格 ≤ 4 词 · 权重高 / 中 / 低 · 规则兜底
运行时按 UTC+8 取当天,问题涉及时效就标出门槛,规则判定优先、模型不能放宽。材料分当前 / 近期 / 历史 / 未标注,历史降权;没有新材料的,回答开头必须直说。
今年 / 现在 → 365 天 · 其他 → 730 天
SSE 逐条播报查询命中、配额倒计时、合并去重与正文抓取。搜索 10 次 / 60 秒、两次间隔至少 6 秒,抓正文单并发,且和采集器互斥;引用能落到具体楼层。
top 5 × 1 页正文 · 内存缓存 30 分钟
校园词表是离线挖出来的:从 393,815 条标题里用纯规则筛出 1,794 条(教师 551 / 课程 517 / 黑话 589 / 地点 113 / 板块 13 / 组织 11)和 33 组别名,例如「数据结构 → 数构 / DS」。一次 9 条查询的实测约 59.4 秒、54 条候选;抓 5 篇正文得到 18 段证据、534 字,引用可定位到第 1 / 2 / 9 楼。官网白名单检索目前仍停在方案阶段,尚未接入运行链路。
05 一条链路
前半段是检索问题,后半段是判断问题。论坛楼层被抽成带出处的证据,才进入教师评价与选课工作区;本地问答读的是同一批材料。实时检索是旁路,不写回索引。
单并发、限速、断点续采,主楼与回复都写进同一张楼层表。
FTS5 全文、本地向量、标题索引,每 90 秒增量同步。
三路召回融合,答案逐条引用,可跳回原站楼层。
保留帖子标题、楼层号、正文片段与原帖链接。
按指南 / 河畔 / 口碑分层聚合,冲突与非本课结论单列。
学分、时间冲突、代表评价,点开就是原始来源。
目前有 327 条来自河畔的楼层证据进入评价系统,占 549 条证据的 59.6%。另外 138 条来自选课指南,其余为跨课程与口碑参考。
06 技术规格
主体是两套独立工程,另有一条实时链路挂在同一个站点下。主站与选课系统全程本机运行;实时检索会调用论坛官方接口,需要账号和网络,且调用前由人确认矩阵。
http.server,SSE 流式输出bge-base-zh-v1.5 嵌入,向量落盘 fp16127.0.0.1:8777:8000 / :8080)+ Nginx还有一条实时链路 · prototype/
/live 下复用登录会话;单独运行默认 127.0.0.1:8899http.server + SSE,接口 /api/plan · /api/run · /api/statussearchid 翻页、500 条截断两条对话链路的模型分别由 web/llm.local.json 与 prototype/llm.local.json 配置。主站未配置时只列依据、不生成回答;实时检索未配置时退回抽取式回答。配置后会把检索到的楼层片段送给模型,这一步由使用者自己决定。页面中的界面图形为结构示意,数据条目取自本地数据库或实测记录。
07 三条底线
采集、清洗、索引、嵌入都在本地完成,主站只监听回环地址。实时检索是唯一会走外部接口的一环:确认矩阵后才发关键词,楼层片段是否交给模型由使用者决定。
库里只存检索所需的文本与定位信息。要看原帖,一律跳回 bbs.uestc.edu.cn 对应的楼层。
引用要能点开,结论要标明来源层级,旧材料只作历史参考。材料不足时写清不能确认的部分,不补材料之外的事实。