乐于分享
好东西不私藏

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

今天我用 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 登录授权,给了我一个验证码:

  1. 2DB3-EB5D

我去 github.com/login/device 输入,授权完告诉它「好了」,它就自动完成了:

  • 初始化 git 仓库
  • 创建 GitHub 远程仓库
  • 写好 README
  • 推送上去

全程我只做了一件事:在浏览器里输了个验证码。


第三步:第一个 Bug——自动播放没触发

装上插件,打开课程页,视频……没动。

我把问题告诉 QClaw,它让我在 Console 里跑了一段诊断代码,结果出来了:

  1. {
  2. "paused":true,
  3. "parentClass":"video-js vjs-paused vjs-controls-disabled ...",
  4. "muted":false
  5. }

关键信息一目了然:平台用的是 video.js 播放器,而且 vjs-controls-disabled——控制栏被禁用了。直接调 video.play() 根本不管用。

QClaw 立刻给出了修复方案:

  1. 优先通过 video.js 的 player.play() API 触发
  2. 备用方案:先静音播放(绕过浏览器自动播放策略),成功后 500ms 恢复音量
  3. 同时监听 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 给了一段诊断代码,在新标签页里跑了一下:

  1. 静音播放成功

静音能播,说明不是权限问题,是时机问题——插件注入时视频还没准备好, tryPlay 只尝试了一次就放弃了。

QClaw 的修复思路很直接:

  1. 检测到视频页 URL(含 /learn/)时自动启动刷课,不用手动点按钮
  2. tryPlay 改为持续重试,每秒一次,最多 30 次,直到播放成功为止

改完,版本升到 v1.3.0,再测——

所有标签页全部自动播放,3× 倍速,安静地在后台跑着。


最终成果

从下午开始聊,到晚上测试通过,整个过程大概两个小时。

最终插件的功能:

功能
说明
🎬 自动播放
视频页加载后自动开始,无需手动点击
⚡ 倍速播放
支持 1× ~ 3×,默认 3×
⏭ 自动切换下一节
视频播完自动跳转(可开关)
🚫 自动关闭弹窗
自动处理”请认真观看”等提示
🗂 一键多开
课程列表页一键全开,并行刷课
🖱 悬浮面板
可拖拽、可收起,不挡内容

代码在这里:https://github.com/bruceoyqq-debug/learnin-helper


感受

整个过程我做的事情:

  • 描述需求
  • 在 Console 里跑了几段诊断代码
  • 输了一个 GitHub 验证码

QClaw 做的事情:

  • 分析平台结构
  • 写插件代码
  • 安装 gh CLI
  • 创建 GitHub 仓库、写 README、写 CHANGELOG
  • 定位 Bug、修复、迭代
  • 每次改动自动更新版本号、创建 Release

以前我觉得「AI 写代码」是辅助,我还是主力。今天这个体验让我重新想了想——也许更准确的说法是:我提需求,AI 交付,我验收

角色变了。


插件开源,欢迎 Star 和 PR。如果你也在用正在学平台,直接拿去用就好。

如果你想用但还不会安装这个插件,可以在我的公众号回复“正在学”。

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 今天我用 QClaw 写了一个刷课插件

猜你喜欢

  • 暂无文章