1. First-time installation
When the Skill loads, it sends a message asking what exam you are preparing for, and will not repeat it afterward.
拾遗已安装。
你在备考什么考试?比如:
GRE、雅思、考研英语、注会、高考、期末……
不在列表里也没关系。
After entering the exam name, the Skill loads the corresponding recognition background knowledge, and subsequent screenshot recognition accuracy is higher. If you later switch exams, send "switch exam" to reconfigure, without affecting existing wrong-answer records.
2. Core differences from Zhupilu
| Zhupilu | Shiyi | |
|---|---|---|
| Scope of application | Civil service exams (national/provincial) | Any exam |
| Subject structure | Fixed 5 subjects (Verbal/Quantitative/Judgment/Data/Essay) | Free tags, automatically generated by AI |
| Tag reuse | Not needed (subjects are fixed) | tag_library accumulates across questions |
| Exam switching | Not supported | The "switch exam" command switches at any time |
3. Trigger scenarios
| What the user says | Action |
|---|---|
| Sends a screenshot | Multimodal recognition + tag archiving |
| Sends a screenshot with "careless" | Archive directly after recognition, no follow-up questions |
| "Verbal-Text Completion-Insufficient vocabulary" | Quick format, archive directly |
| "Remember" / "Don't remember" | Second-pass self-assessment, remembered 2 times in a row → mastered |
| "Export wrong-answer notebook" | Export all |
| "Only export those pending second pass" | Filtered export |
| "Export Verbal wrong answers" | Filter by section |
| "Export those from the last two weeks" | Filter by time |
| "Switch exam" | Reconfigure exam type |
4. Data structure
~/.openclaw/skills/shiyi/data/
├── config.json ← 当前考试配置
├── tag_library.json ← 各考试的标签词库
├── wrong_questions.json ← 所有错题
├── review_state.json ← 二刷状态
├── review_session.json ← 当前二刷进度
├── stats_cache.json ← 打卡连续天数
├── daily/ ← 每日记录
├── backups/ ← wrong_questions 自动备份(最近10个)
└── exports/ ← 导出文件
Wrong-answer record fields:
{
"id": "uuid",
"date": "2026-03-19",
"exam": "GRE",
"exam_name": "GRE",
"section": "Verbal",
"question_type": "Text Completion",
"knowledge_point": "逻辑关系词 — 转折",
"question_text": "完整题目文字",
"visual_description": null,
"answer": "B",
"error_reason": "知识点不会",
"keywords": ["逻辑关系词", "Text Completion"],
"status": "待二刷"
}
5. Core process
Image recognition
- Read
config.jsoninexam_key, load the corresponding exam background knowledge - From
tag_library.jsontake tags used in the last 30 days and inject them into the prompt (to improve reuse rate) - Call the multimodal model configured by OpenClaw for recognition
- Write the recognition result to
wrong_questions.json, append new tags totag_library.json - Call failed → prompt to manually copy the text
Tag vocabulary bank (tag_library)
- Automatically append new tags after each recognition (deduplicated)
- Reused within the same exam, different exams do not interfere with each other
- Maximum retained per category: 200 knowledge points, 50 question types (delete the oldest when exceeded)
- When injecting into the prompt, only pass those used in the last 30 days (to avoid an overly long prompt)
Scheduled push
| Time | Content |
|---|---|
| Every day at 21:00 | Daily mistake summary + high-frequency exam points + check-in days |
| Next day 20:00 | Randomly draw 3 questions to be redone, user self-assessment |
VI. File Index
| File | Purpose |
|---|---|
assets/exam_prompts.js |
Background knowledge for each exam (core of recognition accuracy) |
scripts/tag_library.js |
Tag vocabulary read/write and statistics |
scripts/onboarding.js |
First-time exam type configuration |
scripts/parse_input.js |
Message routing + recognition entry |
scripts/update_daily.js |
Write mistakes and daily records |
scripts/export_xlsx.js |
Export Excel (including filtering and screenshot embedding) |
scripts/review_reminder.js |
Redo reminders and self-assessment handling |
scripts/daily_summary.js |
Daily scheduled summary |
VII. Adding a New Exam
In assets/exam_prompts.js of EXAM_PROMPTS add a string to the object:
'驾照科目一': `
驾照科目一为交规理论考试,100道题,90分及格。
题型:判断题、单选题。
标 knowledge_point 时请具体到交规条款(如"禁止标志与警告标志区别")。`,
PRs welcome.
VIII. If This Skill Is Helpful to You
⭐ Star it so more people preparing for exams can find it 🍴 Fork it and add your exam type, PRs welcome