清华本科生选课增强工具。在原选课页面叠加全屏工作台,提供课程搜索、课表预览、暂存管理、AI 排课等功能。
建议使用方式二(解压加载)。Chrome / Edge 已收紧外部 .crx 安装策略,直接拖入 .crx 可能被拦截。解压加载在所有浏览器均可正常使用。
🚀 校内访问 git.tsinghua.edu.cn/gjl25/NextTHUxk 下载速度更快。
- 从 Releases 下载
NextTHUxk.crx - 浏览器打开
chrome://extensions,右上角开启「开发者模式」 - 将 .crx 文件拖入浏览器窗口,确认安装
- 若提示无法安装,请改用方式二
- 从 Releases 下载
NextTHUxk.zip并解压 - 浏览器打开扩展管理页(Chrome:
chrome://extensions,Edge:edge://extensions),开启「开发者模式」 - 点击「加载已解压的扩展程序」,选择解压后的文件夹
进入清华选课网站(zhjwxk.cic.tsinghua.edu.cn 或 zhjw.cic.tsinghua.edu.cn),右下角出现 ✨ 按钮,点击即可打开全屏工作台。
- 全校课程目录搜索(按课名、课号、教师模糊匹配)
- 按类型快速筛选:必修 / 限选 / 体育 / 已选 / 我的队列 / 可选
- 高级筛选:按学分数、周几、第几大节精确过滤
- 时间冲突筛选:按与当前预览课表是否冲突过滤
- 每门课显示余量、竞争热度、各志愿排队人数
- 每门课程自动计算所有合法选法的抽中概率,红黄绿三色直观展示
- 概率模型基于志愿级联机制:容量按志愿优先级递减分配,结合各志愿报名人数估算中签率
- 课程卡片、暂存区、草稿列表、预览课表均显示概率信息
- 修改课程类型或志愿号后概率实时刷新
预选抽签结果出来后,系统自动切换到课余量模式:
- 实时课余量:从教务系统获取所有课程的容量、剩余座位和排队人数
- 我的队列:显示个人候补队列,包含队列排名和总排队人数(如「排队第121名 / 共185人」)
- 课程卡片显示余量/排队/排入希望值,替代预选阶段的概率显示
- 课表预览中候补课程显示排队状态,已选课程显示「已选」
- 草稿/暂存在课余量模式下也显示余量队列信息
- 独立的「刷新队列」按钮,一键更新课余量和排队数据
- 所有课程卡片自动检测与当前预览课表(正选/草稿/暂存)的时间冲突
- 冲突信息直接显示在卡片上(如「⚠ 冲突: 周三3-4节 数据结构」)
- 支持筛选「仅无冲突」或「仅冲突」课程
- 课程类型选择遵循选课规则:必修课可选必修/限选/任选;限选课可选限选/任选;任选课只能任选;体育课只能体育
- 直接在卡片上选择课程类型和志愿号,点击「选课」提交
- 已选课程可调整志愿顺序(▲▼),系统自动校验志愿名额上限
- 必修 / 限选 / 任选:1 志愿最多 1 门,2 志愿最多 2 门
- 体育:1 志愿最多 1 门,2 志愿最多 1 门
- 3 志愿不限数量
- 操作后实时刷新选课状态
- 自动生成已选课程的周课表视图(周一至周日 × 第 1-12 大节)
- 时间冲突标红显示
- 可预览暂存区或任意草稿的课表,一键切回正式课表
- 课表单元格显示课程名称和教师姓名
- 可直接在课表上操作:鼠标悬停显示 ✕ 按钮,点击可退选(已选课)、从暂存移除、从草稿删除
- 暂存/草稿预览课表按概率着色(预选阶段:绿/橙/红;课余量阶段:显示余量/排队人数)
核心创新功能:在不直接提交选课的前提下,预先编排多套课表方案。
- 将课程「暂存」到草稿区,最多保存 5 张草稿
- 暂存区每门课可独立调整课程类型和志愿号,实时显示所有选法的概率
- 已选课程也可一键转化为新的暂存草稿
- 草稿支持展开查看全部课程列表,可逐门调整类型/志愿或删除
- 「提交选课」:自动退选所有已选课,再按草稿内容一次性选入
- 提交后草稿保留,不会自动删除
- 导出 / 导入:复制 JSON 分享给同学,对方导入后可直接提交
- 自动检测草稿内课程的时间冲突
- 查看所有培养方案课组及完成进度
- 自动检测:已选课 + 暂存课 + 所有草稿是否覆盖方案要求
- 特殊规则:
- 体育课互认:任一体育课可满足任意体育方案要求
- 英语(3) 即「英语进阶读写」,可由「第二外国语」替代
- 英语(1)(2) 即「英语阅读写作/听说交流(ABC)」,不可由第二外国语替代
- 填入兼容 OpenAI 格式的 API 地址、模型名称和 Key
- AI 自动读取:当前必修 + 体育课程目录、已选课程、所有暂存草稿、个人偏好
- 生成推荐方案并自动存入暂存草稿区
- 对任选 / 通识课仅给出方向建议,不硬选具体课程
- 定期检查 GitHub Releases 是否有新版本
- 发现更新时在顶部显示提示横幅
- 也可手动点击「检查更新」
- 自动从教务系统 URL 检测当前选课学期
- 支持手动切换学期(点击右上角学期标签)
- 切换后自动清空缓存并重新拉取数据
- 选课操作走原系统表单提交,与手动操作完全等价
- 个人数据(草稿、API 配置等)全部存储在浏览器本地
- 扩展代码中不包含任何个人数据
- 课程目录和志愿数据有缓存机制:
- 课程目录:首次加载后缓存,手动刷新时更新
- 志愿排队数据:每日 8:00 / 12:00 / 16:00 / 20:00 自动刷新
- 已选课程:每次打开工作台实时获取
- 仅在清华选课网站域名下生效(zhjwxk / zhjw / webvpn)
- 需要已登录教务系统的浏览器 session
- 体育课的志愿信息独立于其他课程类型,显示规则略有不同
├── manifest.json # 浏览器扩展配置 (Manifest V3)
├── content.css # 全部样式
├── content.js # 入口:HTML 模板 + Shadow DOM + 事件绑定 + 启动流程
├── src/
│ ├── config.js # 命名空间 NX、常量、工具函数、存储、网络
│ ├── data.js # 数据抓取与解析(课程目录、志愿、选退课 API)
│ ├── probability.js # 中签概率计算、志愿格式化
│ ├── state.js # 暂存/草稿管理、课表解析、冲突检测、选课状态
│ ├── render.js # 所有渲染函数 + 筛选逻辑
│ ├── ai.js # AI 搜索 + 智能排课
│ └── update.js # 版本更新检查
├── popup.html # 扩展弹出页
├── popup.js # 弹出页逻辑
└── README.md # 本文件
MIT
