GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - MSKNET/ATRI

BranchesTags
Open more actions menu
 
 

Latest commit

 

History

11 Commits
11 Commits

Folders and files

NameName
Last commit message
Last commit date
assets
assets
 
 
background
background
 
 
content
content
 
 
icons
icons
 
 
popup
popup
 
 
.gitignore
.gitignore
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
manifest.json
manifest.json
 
 

Repository files navigation

ATRI: Automated Task Repetition Instrument

高性能智慧树刷题助手

一个基于 Chrome Manifest V3 的智慧树平台自动刷题浏览器扩展,采用模块化架构设计,支持智能答题、错题枚举、题库管理等功能。


✨ 核心特性

🎯 智能答题系统

  • 自动答题:智能识别题型(单选/多选/判断),自动填写答案
  • 题库记忆:基于 examId 自动保存和加载历史答案
  • 错题枚举:多选题答错时自动进行组合枚举(n选→n-1选→...→2选)
  • 进度追踪:实时显示答题进度和枚举状态

🔄 全流程自动化

  • 多页面支持:
    • mastery 页面:自动查找未完成题目
    • pointOfMastery 页面:检测完成度,自动返回
    • exam 页面:参数提取与自动答题
    • examAnalysis 页面:答案更新与错题处理
  • 智能导航:100% 完成后自动返回,继续下一题目
  • 断线重连:页面刷新后自动恢复状态

🛠️ 用户界面

  • 悬浮控制面板:可拖拽的浮动窗口,实时显示状态
  • 一键操作:启动/停止、清空题库、查看当前状态
  • 通知系统:彩色通知提示(成功/警告/错误)
  • 深色模式适配:支持智慧树平台深色模式

📁 项目结构

ZhiHuiShu/
├── manifest.json              # Manifest V3 配置文件
├── background/                # 后台服务
│   └── background.js         # Service Worker,题库存储管理
├── content/                   # 内容脚本(模块化架构)
│   ├── content-main.js       # 主入口,页面监听与路由
│   ├── utils.js              # 工具函数(页面类型判断等)
│   ├── interceptor.js        # 网络请求拦截器
│   ├── page-interceptor.js   # 页面数据拦截与解析
│   ├── page-handlers.js      # 页面处理器(mastery/pointOfMastery)
│   ├── auto-answer.js        # 自动答题核心逻辑
│   └── ui.js                 # 用户界面组件
├── popup/                     # 弹出页面
│   ├── popup.html
│   ├── popup.css
│   └── popup.js
├── icons/                     # 图标资源
└── data/                      # 数据存储目录

🚀 安装与使用

安装方法

  1. 下载或克隆本项目

    git clone https://github.com/zjuatri/ZhiHuiShu.git
  2. 打开 Chrome/Edge 浏览器

  3. 访问扩展管理页面:

    • Chrome: chrome://extensions/
    • Edge: edge://extensions/
  4. 开启右上角的 "开发者模式"

  5. 点击 "加载已解压的扩展程序"

  6. 选择项目根目录(包含 manifest.json 的文件夹)

使用指南

  1. 访问智慧树平台

    • 支持域名:
      • studywisdomh5.zhihuishu.com
      • fusioncourseh5.zhihuishu.com
  2. 启动自动刷题

    • 在“掌握度”页面点击悬浮窗中的 "🚀 开始自动刷题" 按钮
    • 如果未显示该按钮刷新页面即可
    • 开启该插件进入智慧树课程页面可能触发警告,关闭插件,打开“掌握度”页面,刷新即可正常使用
  3. 查看进度

    • 悬浮窗实时显示当前状态:
      • 空闲中 / 自动答题中
      • 当前答案、枚举进度
      • 答题序号
  4. 清空题库

    • 点击 "🗑️ 清空所有题库" 按钮
    • 确认后清除所有已保存的答案数据

🔧 技术架构

核心技术栈

  • Manifest V3:Chrome 扩展最新标准
  • Vanilla JavaScript:无框架依赖,高性能
  • Chrome Storage API:持久化题库数据
  • Fetch/XHR Interception:网络请求拦截

模块化设计

1. content-main.js - 主控制器

  • 页面类型识别与路由
  • URL 变化监听(MutationObserver + popstate)
  • 模块生命周期管理

2. utils.js - 工具库

  • isPageType(): 页面类型判断
  • extractExamParams(): 考试参数提取
  • showNotification(): 通知显示

3. interceptor.js - 网络拦截

  • Fetch/XHR 请求拦截
  • 题目数据提取(getQuestions API)
  • 答案数据提取(getUserAnswers API)

4. page-handlers.js - 页面处理

  • findAndClickNextUncompleted(): 查找未完成题目(mastery)
  • handlePointOfMasteryPage(): 处理进度检测(pointOfMastery)
  • getNextEnumerationAnswer(): 错题枚举算法

5. auto-answer.js - 答题引擎

  • startAutoAnswer(): 自动答题流程控制
  • fillAnswerOnly(): 答案填写(支持单选/多选/判断)
  • 异步顺序点击(防止事件冲突)
  • 答案验证与错误处理

6. ui.js - 界面组件

  • 悬浮窗创建与拖拽
  • 状态显示更新
  • 按钮事件绑定

7. background.js - 后台服务

  • 题库数据存储(基于 examId)
  • 跨页面状态同步
  • 消息通信处理

📊 工作流程

完整答题流程

┌─────────────────────────────────────────────────────────────┐
│  1. mastery 页面                                            │
│     - 查找未完成题目(custom-content div)                   │
│     - 点击按钮进入 pointOfMastery                            │
└─────────────────────┬───────────────────────────────────────┘
                      ↓
┌─────────────────────────────────────────────────────────────┐
│  2. pointOfMastery 页面                                     │
│     - 检测进度(charts-label-rate)                          │
│     - 100%: 点击返回 mastery,继续下一题                     │
│     - <100%: 点击查看分析按钮进入 examAnalysis               │
└─────────────────────┬───────────────────────────────────────┘
                      ↓
┌─────────────────────────────────────────────────────────────┐
│  3. examAnalysis 页面                                       │
│     - 拦截 getUserAnswers API 获取答案数据                   │
│     - 更新题库(正确答案或错题枚举)                          │
│     - 刷新页面重新进入 exam                                  │
└─────────────────────┬───────────────────────────────────────┘
                      ↓
┌─────────────────────────────────────────────────────────────┐
│  4. exam 页面                                               │
│     - 拦截 getQuestions API 获取题目                         │
│     - 提取 examId 从题库加载答案                             │
│     - 自动填写答案并提交                                      │
│     - 等待跳转到 examAnalysis                                │
└─────────────────────┬───────────────────────────────────────┘
                      ↓
                 循环直至 100%

错题枚举策略

多选题答错时自动进行组合枚举:

// 示例:5 个选项的多选题
初始答案: [1, 2, 3, 4, 5]  // 全选
第 1 次: [1, 2, 3, 4]      // C(5,4) = 5 种组合
第 2 次: [1, 2, 3]         // C(5,3) = 10 种组合
第 3 次: [1, 2]            // C(5,2) = 10 种组合
...
直到找到正确答案

🎨 界面说明

悬浮控制面板

  • 标题栏:显示 "ATRI 刷题助手" + 当前状态指示灯
  • 状态显示:
    • 🔴 空闲中 / 🟢 自动答题中
    • 当前答案数组
    • 答题序号
  • 操作按钮:
    • 🚀 开始自动刷题(绿色渐变)
    • ⏸️ 停止自动刷题(橙色渐变)
    • 🗑️ 清空所有题库(红色渐变)

通知提示

  • 成功通知(绿色):答题完成、题库清空等
  • 警告通知(橙色):页面检测、状态提醒等
  • 错误通知(红色):元素未找到、操作失败等

题目数据结构

{
  questionId: "123456",           // 题目ID
  questionType: 1 | 2 | 14,       // 1=单选, 2=多选, 14=判断
  optionList: [...],              // 选项列表
  // ...
}

答案数据结构

{
  examId: "exam_123",             // 考试ID(题库键)
  answerList: [
    {
      questionId: "123456",
      answer: [1, 2, 3]           // 统一数组格式
    }
  ]
}

🐛 调试与日志

日志系统

所有关键操作都有详细日志输出(F12 控制台查看):

  • 🔍 查找操作
  • ✅ 成功操作
  • ❌ 失败/错误
  • 📊 数据统计
  • 🔄 流程状态
  • ⚠️ 警告提示

🔐 数据存储

Chrome Storage Local

{
  "exam_123": {                   // 键:examId
    "123456": [1, 2],             // 值:questionId -> answer
    "123457": [1],
    // ...
  },
  "exam_456": { ... }
}

数据清除

  • 手动清除:点击悬浮窗 "清空所有题库" 按钮
  • 编程清除:chrome.storage.local.clear()

📄 许可证

MIT License


👨‍💻 作者

zjuatri - GitHub


⚠️ 免责声明

本项目仅供学习交流使用,请勿用于任何商业用途或违反平台规则的行为。使用本工具所产生的任何后果由使用者自行承担。


🙏 致谢

感谢所有为本项目提供建议和反馈的用户!

如有问题或建议,欢迎提交 Issue 或 Pull Request。

About

No description, website, or topics provided.

Resources

Readme
License
Activity
Custom properties

Stars

0 stars

Watchers

0 watching

Forks

0 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.