- Home
- Plugins
- Tools & Capabilities
- ZJU-mooc-assistant
ZJU-mooc-assistant
whoisyanhaoooo/zju-mooc-assistant
A DeepSeek Harness plugin for ZJU students on icourse163 that plays course videos, handles quizzes and exams, posts course discussions, and shows live task progress. It drives a local Edge or Chrome window signed in to your own icourse163 account (slider verification is yours to complete); with Remember password ticked the password is saved in $DSH_HOME/ZJU-mooc-assistant/account.json (mode 0600), and automated quizzes and posts are subject to your course's and the platform's rules.
Install
dsh plugin --profile web add github:whoisyanhaoooo/zju-mooc-assistantREADME
ZJU-mooc-assistant
一个带左侧栏入口的 DeepSeek Harness 插件:打开中国大学 MOOC(icourse163),用你自己的账号登录, 按章节上网课、做测验和作业、参加考试,并在综合讨论区提出自己的疑问;执行时页面上实时显示进度。
这是可分发副本:已去掉原作者的账号、Cookie、个人截图和绝对路径。 对外包名、目录名、客户端注册 id、数据目录统一为
ZJU-mooc-assistant;旧数据目录mooc-companion会在首次启动时自动迁移;内部 API 路径和 slot id 仍保留mooc-companion以兼容接口与布局。 安装与环境要求见 INSTALL.md,UI 规范见 docs/UI制作规范.md。适用:DSH 桌面版 + Edge/Chrome + 中国大学 MOOC 账号,课程需在 icourse163 上(SPOC/MOOC)。 不是独立 App,也不支持学在浙大/智云课程;首次登录需要人工完成滑块验证。
界面保持与 ZJU 工具一致的玻璃拟态风格:按钮 9px 圆角、状态胶囊 999px、卡片 15px、输入框 8px、加载圈为完整暗轨道 + 高亮弧;完整规格见 docs/UI制作规范.md。
功能
(对应需求 1–7)
- 称呼可改:设置里「怎么称呼你」可以改页面副标题里的名字;留空时副标题只显示「中国大学 MOOC 上课助手」。
- 左侧栏入口 + 页面:左侧栏出现「ZJU-mooc-assistant」,点开是完整页面;入口顺序 34,不影响其他插件。
- 打开中国大学 MOOC:点「打开中国大学 MOOC」会在一个可见的浏览器窗口里打开
https://www.icourse163.org/category/all(登录后也可以从页面里跳「我的课程」)。 - 账号密码登录:在「账号与登录」里填手机号/邮箱和密码,可勾选「记住密码」。
密码框是
type="password",保存后输入框立即清空、页面只显示「已存密码」,接口返回里不会出现密码原文。 首次登录如果弹出滑块验证,需要你在弹出的浏览器窗口里手动滑一下——插件不会替你过验证。 - 读取我的课程 / SPOC:登录后点「读取我的课程」(或「只读 SPOC」),课程列表会显示标题、教师、学期、 学校、学习进度;SPOC 课程带「SPOC」胶囊,选课下拉里也会标注。
- 按章节列出任务并挑选:选一门课后,「章节任务」里按章节折叠列出 视频/测验/作业/考试/讨论 任务,
每条带类型胶囊、状态胶囊、得分、执行说明;顶部可筛选「全部 / 视频 / 测验 / 作业 / 考试 / 讨论 / 未完成」。
每条任务可以设置计划截止时间(点「计划截止时间」→ 日历+时间滚轮):设置后,这个任务以及它之前所有未完成的任务
会按章节顺序自动完成;每个任务的完成时间随机落在每天 8:00–24:00 之间,最后一个不晚于你选的截止时间,到点自动进执行队列;
也可以直接点「开始」(
runTask)进执行队列。 折叠交互(对齐 ZJU-zhiyun-echo):每个栏目(章节任务 / 课程 / 账号与登录 / 设置)右上角都有 「收起 / 展开」,收起后只留一行摘要;「课程与筛选」常驻展开(没有二级收起栏), 课程选择器是自定义下拉浮层(选中项高亮 + 对勾、悬停高亮、可滚动,参考 ZJU 助手); 章节是一级菜单,一次只展开一周,点其它周会自动收起当前周,点已展开的这周则全部收起; 有任务正在执行/排队时,会自动展开并锁定在任务所在那一周,避免任务跑了很远列表还停在第一周。 - 执行时实时进度:不再单独占一栏;任务执行时任务行内出现一条小进度条(百分比 + 阶段 + 一句在做什么), 完成后消失,符合 ZJU-zhiyun-echo 的样式; 动作都会走一个串行队列(同一时间只操作一个网页任务,避免浏览器打架)。 执行日志会写进插件数据目录,出错时可以打开 $DSH_HOME/ZJU-mooc-assistant/state.json 里的 log 排查。
- 认真上课 + 讨论区提问:视频按设置倍速(默认 2 倍、默认不静音)完整看完; 测验第一次没满分时默认反思错题再答一次,第二次必须满分;考试按「考试最多尝试次数」控制; 只有课程给某个课次挂了讨论要求(大纲接口里的 contentType=6 讨论单元)时,才给该课次最后一个视频生成 一条讨论任务;没有讨论要求的视频不会生成、也不会保留讨论任务(旧大纲首次启动/登录后会自动刷新大纲清理)。 讨论内容优先针对老师在这个课次挂的讨论题/思考题,到综合讨论区参与讨论;找不到才围绕本节核心问题提问 (只提问讨论,不表达情绪;标题 ≤ 30 字、正文 80–200 字),默认「上完一节课自动去讨论区提问」是打开的。
安装
完整步骤见 INSTALL.md。简述:
- 把本目录放到本机任意可读位置;
- 在 DSH 的 desktop profile 里加本地链接(
link:<插件目录>)或安装dist/里的 tarball; - 在 DSH「插件」页启用「ZJU-mooc-assistant」,刷新页面;
- 首次打开时页面顶部会自动做环境自检(数据目录 / 浏览器 / 默认模型 / 调试端口)。
装好并启用后,左侧栏会出现「ZJU-mooc-assistant」入口;如果没出现,刷新一次 DSH 页面。
首次使用步骤
- 点页面顶部「打开中国大学 MOOC」→ 会弹出一个可见的浏览器窗口,打开课程分类页。
- 在「账号与登录」里填账号密码,勾选「记住密码」(也可以不勾),点「保存账号」。
- 点「登录」。如果弹出滑块验证,去那个浏览器窗口里手动滑一下,完成后回页面点「刷新」。
- 登录成功后点「读取我的课程」;课程列表出现在右侧「课程」卡里,SPOC 课程带标记。
- 在课程列表里点一门课(或左边下拉选择),插件会读取章节;如果还没读到,点「刷新大纲」,稍等一两秒。
- 在「章节任务」里按章节挑任务:要排期的点「计划截止时间」选一个截止时间,前面的任务会自动按顺序完成;想马上做的点「开始」。
- 看右边「执行进度」的大进度条、阶段和日志;任务行里也有行内进度条。失败或需要你操作时会提示。
注意事项
- 默认后台执行:设置里「后台执行(不弹浏览器窗口)」默认打开。开始任务时插件自动用无头 Edge 跑, 不弹窗口、不抢焦点;视频会强制静音(无头浏览器本来也听不到)。想看着它做,把开关关掉就是可见窗口。
- 登录/滑块仍需要可见窗口:点「登录」或「打开中国大学 MOOC」时会自动切到可见浏览器; 登录成功后如果开着「后台执行」,窗口会在 2 秒后自动关掉,后面的任务转回后台。
- 首次登录需要手动滑块:这是 MOOC 的要求,插件不会绕过验证码;浏览器窗口必须可见。
- 考试通常只有一次机会:默认「考试最多尝试次数」为 1;请确认设置后再点开始。
- 讨论区发言遵守规范:自动提问只在综合讨论区发一条与本课内容相关的问题,不要连续刷帖; 内容以老师原话和课件为准,发现不合适请及时手动删除或补充。
- 密码保存策略:只有勾选「记住密码」时才把密码存到本机数据目录(
$DSH_HOME/ZJU-mooc-assistant/account.json, 文件权限 0600);不勾选时只保存账号邮箱。任何接口返回、日志、错误信息里都不会出现密码原文。 - 同一时间只跑一个网页任务:任务串行执行,避免多个标签页抢同一个浏览器;排队中会显示「排队中」。
- 没有任务时不会后台播放视频:任务结束、失败或取消后会自动暂停浏览器里的课程视频;没有任务时也会定时检查并暂停,避免 Edge 的系统媒体控件一直亮着。
- 插件会自己启动一个持久化的浏览器用户数据目录(
$DSH_HOME/ZJU-mooc-assistant/browser-profile)来保存 Cookie, 下次通常免登录;不需要它时退出 DSH 或卸载插件即可。 - 浏览器默认用 9233 端口连接自己启动的 Edge/Chrome;装在非默认位置时在「设置 → 详细参数 → 浏览器路径」里填完整路径。
- 后台执行时如果站点要求重新验证/风控拦截,任务会提示需要人工处理,这时把「后台执行」关掉、点「登录」处理一次即可。
文件结构
ZJU-mooc-assistant/
├── index.js # 插件入口:inject = ['connection'],挂载 ctx.effect 生命周期
├── client.js # 浏览器端:左侧栏入口 + 页面(本文件是 UI 的唯一交付)
├── icon.svg # 24×24 线条图标(书 + 播放三角),插件管理与侧栏使用
├── locale/zh.json # 「ZJU-mooc-assistant」标题与描述
├── locale/en.json
├── package.json # dsh manifest(client.platform = web,immediately)
├── cordis.patch.yml
├── INSTALL.md # 安装 / 首次使用 / 安全说明
├── host/
│ ├── util.mjs # 数据目录、设置、日志等小工具
│ ├── service.mjs # 宿主 API:POST /api/mooc-companion 的 18 个 action、快照、串行队列
│ ├── cdp.mjs # 浏览器 CDP
│ ├── mooc.mjs # icourse163 站点适配(登录、课程、大纲、视频、测验、讨论)
│ ├── brain.mjs # 让模型答题 / 写讨论问题 / 总结这节课
│ ├── model.mjs # 调用当前 DSH 默认模型
│ └── exec.mjs # 单任务执行流程与进度回调
├── scripts/
│ ├── probe.mjs # 浏览器自检:打开 icourse163 并截图
│ ├── mooc-inspect.mjs # 站点侦察:登录弹层/公开大纲/selfCheck
│ ├── verify-client.mjs # 页面注册自检(slot、侧栏入口、main、action 引用)
│ └── verify-host.mjs # 宿主集成自检(假 ctx 拉起服务,验证可离线验证的 action)
└── docs/
├── contract.md # 模块之间的硬契约(API 数据结构 + 模块接口)
├── icourse163.md # 真实页面调研记录:已实测/待验证逐条标注
└── UI制作规范.md # 本插件的视觉规范(按钮/字段/胶囊/圆角/加载圈/排版)
页面与宿主之间只有一个接口:POST /api/mooc-companion,body 是 {action, input},返回 {value} 或 {error}。
页面首次用 bootstrap 取快照,之后在页面可见时每 1500ms 用 status 轮询;任何动作完成后立刻刷新一次。
自检命令
# 页面脚本语法(浏览器端源码,无需构建)
node --check client.js
# 浏览器自检:启动浏览器、打开 icourse163、截图到 shots/probe.png
node scripts/probe.mjs
# 页面注册自检(slot、侧栏入口、main、action 引用、样式体积)
node scripts/verify-client.mjs
# 宿主集成自检(假 ctx 拉起服务:bootstrap/账号/真实浏览器/诊断/错误路径/设置/启动标记)
node scripts/verify-host.mjs
# 宿主模块能单独 import
node -e "import('./host/service.mjs').then(m => console.log(Object.keys(m)))"
界面本身依赖 DSH web 环境(window.__ModuleLoader__ 与 slot 系统),不能单独用浏览器打开 client.js;
但语法、slot 注册和 18 个 action 的调用路径都可以在 Node 里静态检查。
已知限制
- 页面 UI 只在 DSH web 客户端里生效;单独打开
client.js不会渲染。 - 中国大学 MOOC 的页面结构会变,登录/大纲/测验选择器由
host/mooc.mjs多套兜底,仍可能读不到, 此时「诊断」和docs/icourse163.md里的记录是排查依据。 - 首次登录必须人工完成滑块/扫码等验证,插件最多帮你把页面和账号填好。
- 视频按页面上报的进度判断完成;网络慢或页面卡住时可能停在某个百分比,可以点「取消」后重试。
- 测验/考试的作答由模型完成,分数以 MOOC 实际判卷为准;第二次重做也受课程剩余机会限制。
- 浏览器查找覆盖 Windows / macOS / Linux 的常见安装位置;Windows 已实测,macOS/Linux 尚未实机验证;自定义安装位置需在设置里手填完整路径。
- 课程范围:仅 icourse163 上的 SPOC/MOOC;学在浙大、智云等课程不支持。不同课程页面结构可能不同,遇到不支持的题型/考试会提示需要人工处理。
- 本副本是本地插件,不含自动更新器;DSH 或 icourse163 大改版后可能需要重新适配。
Related plugins
archify (deepseek-harness)
tt-a1i/archify
WeKnora (dsh-weknora)
tencent/weknora
next-ai-draw-io (dsh-plugin)
dayuanjiang/next-ai-draw-io
weknora
tencent/weknora