今天我用 QClaw 写了一个刷课插件

今天我用 QClaw 写了一个刷课插件
从想法到上线,全程 AI 协作,不写一行代码
起因:被网课折磨的下午
事情的起因很简单——我有一堆网课要刷。
平台是「正在学」(learnin.com.cn),课程不少,视频一个接一个,还不能快进太多,坐在那里干等着实在太煎熬了。
我突然想到:我现在用的 QClaw 不就是个 AI 助手吗?它能帮我写代码,能操作浏览器,能提交 GitHub……那能不能直接让它帮我做一个 Chrome 插件,自动刷课?
说干就干。
第一步:让 AI 先看看平台长什么样
我把课程列表的地址丢给 QClaw:
「帮我开发一个 chrome 浏览器下的刷课插件,平台是正在学,站点是 learnin.com.cn,课程列表地址是 https://www.learnin.com.cn/user/#/…」
QClaw 先用浏览器打开了这个地址,发现需要登录,但它已经从 URL 结构判断出这是一个 Vue SPA + Hash 路由的应用,足够开始动手了。
没多久,第一版插件就出来了:
- 悬浮控制面板(右下角,可拖拽)
- 倍速播放(1× / 1.5× / 2× / 3×)
- 自动播放、自动切换下一节、自动关闭弹窗
- 默认配置:3× 倍速,自动播放开,自动切换关
文件结构清晰, manifest.json、 content.js、 panel.css、 popup.html 一应俱全,直接拖进 Chrome 扩展就能用。
我一行代码没写。
第二步:推上 GitHub
插件写好了,我顺手让 QClaw 把它提交到 GitHub:
「帮我把这个插件提交到 github 上」
QClaw 发现本机没装 gh CLI,自己用 winget 装好了,然后发起 GitHub 登录授权,给了我一个验证码:
2DB3-EB5D
我去 github.com/login/device 输入,授权完告诉它「好了」,它就自动完成了:
- 初始化 git 仓库
- 创建 GitHub 远程仓库
- 写好 README
- 推送上去
全程我只做了一件事:在浏览器里输了个验证码。
第三步:第一个 Bug——自动播放没触发
装上插件,打开课程页,视频……没动。
我把问题告诉 QClaw,它让我在 Console 里跑了一段诊断代码,结果出来了:
{"paused":true,"parentClass":"video-js vjs-paused vjs-controls-disabled ...","muted":false}
关键信息一目了然:平台用的是 video.js 播放器,而且 vjs-controls-disabled——控制栏被禁用了。直接调 video.play() 根本不管用。
QClaw 立刻给出了修复方案:
- 优先通过 video.js 的
player.play()API 触发 - 备用方案:先静音播放(绕过浏览器自动播放策略),成功后 500ms 恢复音量
- 同时监听 vjs 的
ratechange事件,防止平台重置倍速
修复完,版本升到 v1.1.0,推上 GitHub,顺手还建了个 CHANGELOG.md。
第四步:新功能——一键多开
刷课刷着刷着,我有了新想法:
「现在想要插件具备一个功能,将课程列表的每个视频一键打开,多 tab 分别自动播放,以达到多开的效果」
这个需求有点意思——相当于把所有课同时开着,让它们在后台自己跑。
QClaw 先问我课程列表的 DOM 结构,我告诉它:
容器是
class="video-items",每项是<ahref="#/user/..."class="student-course-video-item"target="_blank">
它立刻写好了逻辑:
- 自动识别页面中所有
a.student-course-video-item链接 - 每隔 600ms 依次在新标签页打开(避免浏览器拦截)
- 按钮实时显示可打开的视频数量
- 在列表页显示,在视频页自动隐藏
面板底部多了一个按钮:「🗂 一键多开 (N)」
测试,成功。版本升到 v1.2.0。
第五步:多开成功,但还是不自动播放
多开是好使了,但新标签页打开后,视频还是不动。
我让 QClaw 给了一段诊断代码,在新标签页里跑了一下:
✅静音播放成功
静音能播,说明不是权限问题,是时机问题——插件注入时视频还没准备好, tryPlay 只尝试了一次就放弃了。
QClaw 的修复思路很直接:
- 检测到视频页 URL(含
/learn/)时自动启动刷课,不用手动点按钮 tryPlay改为持续重试,每秒一次,最多 30 次,直到播放成功为止
改完,版本升到 v1.3.0,再测——
所有标签页全部自动播放,3× 倍速,安静地在后台跑着。
最终成果
从下午开始聊,到晚上测试通过,整个过程大概两个小时。
最终插件的功能:
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
代码在这里:https://github.com/bruceoyqq-debug/learnin-helper
感受
整个过程我做的事情:
- 描述需求
- 在 Console 里跑了几段诊断代码
- 输了一个 GitHub 验证码
QClaw 做的事情:
- 分析平台结构
- 写插件代码
- 安装 gh CLI
- 创建 GitHub 仓库、写 README、写 CHANGELOG
- 定位 Bug、修复、迭代
- 每次改动自动更新版本号、创建 Release
以前我觉得「AI 写代码」是辅助,我还是主力。今天这个体验让我重新想了想——也许更准确的说法是:我提需求,AI 交付,我验收。
角色变了。
插件开源,欢迎 Star 和 PR。如果你也在用正在学平台,直接拿去用就好。
如果你想用但还不会安装这个插件,可以在我的公众号回复“正在学”。
夜雨聆风