先放结论:这是一个开源的超星学习通学习辅助脚本,基础功能完全免费,AI 答题需要自备一个 OpenAI 兼容的模型接口(用它自己的也行,用 DeepSeek、用本地 Ollama 都行)。
脚本基于 脚本猫 1693(作者 unrival,GPL-3.0-or-later)二次开发,维护者 li_stu。上游遗留的智慧树分支已整体移除,现在只覆盖超星体系。
这次 v2.40 改了什么
之前面板是标签页切来切去的,640px 高的表单展开就把课程卡片挤出首屏。这一版把这些体验问题一次性收了。
1. 面板重做:不再切标签
- 标题并进「任务配置」,不再单独占一张卡片;
- 「课程内容 / 章节测试」和「运行日志」两块常驻显示、左右等高,右栏日志自动填满剩余高度;
- LLM 配置并进顶部「任务配置」,点「展开设置」才展开,默认收起;
- 表单在面板渲染时就已经挂载,点开即用,不会停在「正在加载 LLM 配置…」;
- 窄于 900px 自动堆成单列;考试/作业页没有主面板时改为可拖动的浮层卡片。
2. 新增「跳过已作答」
页面上本来就有答案的题,不调 AI,也不等那 12 秒逐题风控间隔(只留 120ms 让步)。已答过的题越多,一轮扫描越快。
而且这些题会被记成「已处理」而不是「未作答」,收尾时单独标注「其中 N 题沿用页面已有答案」,不会因为误报把整章提交卡死。
3. 答题准确性
这块是重点,因为答案对不对是一回事,点了没点上、漏答、误提交是另一回事:
- 选项有序映射:题目选项以有序描述符表示,不会把
{ length: 0 } 之类的元数据混进发给模型的选项;
- 严格解析:单选/多选/判断只接受约定格式,普通英文说明、越界字母、重复文本导致的歧义一律判无效;
- 点击后回读:每次点击立即回读真实选中状态,失败时依次尝试内部容器、原生控件、
aria-checked 兜底;
- 提交门禁:只有全部题目「填充成功且回读核验通过」才允许自动提交;零题、未处理题、题目切换、过期响应全部阻止提交;
- 凭证一致性:手机题页与桌面题页共用同一套提交锁,按课程
workId 防重复提交。
4. 请求稳健性
- SSE 流式响应解析(
data:、[DONE]、delta.content);
- 超时、失败重试(0–5,遇 429/5xx 退避 0.8~1.5s)、并发上限(1–6)都可调;
- 默认节奏:连接 5s、单次响应 22s、单题总等待 45s,超限即跳过该题,不拖死整场;
- 提示词固定前置,提升上游缓存命中率;面板统计调用次数、命中率与耗时;
/models 可拉模型列表;配置可导出/导入 JSON,换设备不用重填。
5. 清掉三条死链路
题库比对、自研版本检查(checkVersion())、智慧树残留分支 —— 这三条都没有调用方了,留着只会让后来的人以为还在用。删掉之后代码线干净很多。
支持的任务类型
| 类型 |
说明 |
video |
视频播放,按平台要求上报观看进度 |
document |
文档 / PPT 阅读任务 |
work |
章节测验、作业 |
book |
图书阅读任务 |
hyperlink |
外链任务 |
microCourse |
速课任务 |
live |
直播回放进度上报 |
调度器是单一 500ms 入口,有重入保护、超时回收和「只结束一次」的释放语义。未知任务与同步异常会标记失败并写日志,不会静默卡住。
稳定性
- 单实例运行:心跳租约(TTL 30s),同一顶层窗口只有一个执行者,过期自动让位;
- 同账号多窗口:会话表(10 分钟 TTL)检测并提示「另一窗口正在学习不同课程」;
- 图片/听力题文本化:纯字符串分词器,不依赖 DOM 与
innerHTML,过滤 javascript: / data: / blob: 等来源,图片不上传任何第三方。
关于权限,说清楚
需要 GM_xmlhttpRequest、GM_setValue、GM_getValue、GM_info、GM_getResourceText、unsafeWindow。
@connect 一共 8 条,每条都有代码对应:
| 域名 |
用途 |
passport2-api.chaoxing.com |
平台登录态校验 |
zhibo.chaoxing.com |
直播回放进度上报 |
pan-yz.chaoxing.com |
只用于图标与日志截图,不发起接口请求 |
api.deepseek.com / nuoapi.net / localhost / 127.0.0.1 |
内置 AI 预设 |
* |
你在设置里自填的任意 OpenAI 兼容接口,域名没法预先枚举 |
* 这条肯定有人会问。它只在你填了自定义接口地址时才会用到,不是脚本主动往外发东西。所有 GM_xmlhttpRequest 的调用点都能在源码里搜到。
API Key 只存在你本机浏览器的油猴沙箱里,不写源码、不随脚本分发、也不会传到作者这边。它只会作为请求头发给你自己配的那家服务商。
关于「获取密钥」那个按钮
面板里有一个「获取 NuoAPI 密钥」的链接。说明一下:它是裸注册地址,不带任何推广参数,我不会从中拿到分成。
它可以理解成「如果你懒得找服务商,这是一个现成的 OpenAI 兼容接口」。你也可以完全不用它:选「自定义」接任意服务商,或者选「Ollama 本地」跑本地模型,功能一模一样。
元数据里保留了 @antifeature payment,如实声明脚本会请求第三方付费 AI 接口。
装之前要注意
- 需要 Tampermonkey / Violentmonkey / ScriptCat 之一;
- 平台改版会导致脚本失效,遇到问题欢迎回帖,附上运行日志截图最好;
- 不保证 AI 答案正确率,最终判断还得你自己把关;
- 基础任务(视频、文档、图书、外链、速课、直播)不需要 AI,不配接口也能正常跑。
免责
本项目仅供学习与技术研究。请遵守所在学校/平台的用户协议与学术规范,不要用它代替本人完成应当独立完成的考核。
许可证 GPL-3.0-or-later,源码完整可查。代码线:脚本猫 379《正则脚本》(张正则)→ 丶谢 二开 → unrival(脚本猫 1693)→ li_stu(当前维护)。
有 bug 或者想加功能直接回帖说,能复现的我都会修。日志截图比「不好使」三个字有用一万倍。