Skill 首次加载时( ~/.openclaw/skills/kaogong-study-tracker/.welcomed 不存在),
主动发一条说明消息,之后不再重复:
text
朱批录已安装。
直接发文字就能记录,比如"今天判断推理错了8道"。
发截图的话,需要 OpenClaw 配置了支持图片输入的多模态模型才能自动识别。
没有的话也没关系,把题目文字手动复制过来发给我,一样能整理。
不问任何问题,不存储任何凭据。
平台无关——飞书、Telegram、WhatsApp、Discord,逻辑完全一致。
图片识别统一走多模态模型:文字题、图形推理、统计图表都能理解,不依赖本地 OCR。
用户说的话(示例)应执行的操作"今天做了一套行测,判断推理错了8道"→ 解析 + 归档 + 分析发来一张错题截图(图片消息)→ 多模态识别 + 单题归档 + 追问原因发来截图并附带"粗心"→ 多模态识别 + 直接归档,不追问"把今天的错题发给你:第12题……"→ 错题分类 + 存档"今天申论没写,太累了"→ 打卡记录(未完成状态)"我最近资料分析一直不稳,怎么办"→ 查历史记录 + 建议"帮我看看最近哪个模块最弱"→ 统计分析 + 回复"导出错题本" / "把错题发给我" / "生成报告"→ export_xlsx.js,发回文件"只导出待二刷的"→ 筛选导出,仅待二刷题目"导出判断推理的错题"→ 按科目筛选导出"导出最近两周的"→ 按时间筛选导出"只导出待二刷的资料分析题"→ 多条件组合筛选导出"资料-乘积增长-公式不熟-待二刷"(快捷格式)→ 直接归档,不追问二刷时回复"记得" / "不记得"→ review_reminder.js 处理,连续2次记得→已掌握"同步到飞书" / "更新飞书错题本"→ feishu_doc.js,同步含截图
所有数据以 JSON 存储在 ~/.openclaw/skills/kaogong-study-tracker/data/。
daily/{YYYY-MM-DD}.json#json
{
"date": "2026-03-17",
"modules": {
"言语理解": { "wrong": 6, "total": 40 },
"数量关系": { "wrong": 8, "total": 15 },
"判断推理": { "wrong": 10, "total": 40 },
"资料分析": { "wrong": 7, "total": 20 },
"申论": { "written": false }
},
"mood": "中性",
"note": "用户原话"
}
wrong_questions.json#json
[
{
"id": "uuid",
"date": "2026-03-17",
"source": "image",
"module": "判断推理",
"subtype": "逻辑判断",
"question_text": "题目文字;图形题写对规律的描述",
"visual_description": "图形推理/统计图的详细视觉描述(多模态模型生成)",
"answer": "B",
"user_annotation": "用户手写批注",
"error_reason": "知识点不会 | 粗心 | 时间不够 | 概念混淆",
"keywords": ["假言命题", "逆否命题"],
"raw_image_b64": "base64...",
"status": "待二刷 | 已掌握"
}
]
stats_cache.json#json
{
"last_updated": "2026-03-17",
"streak": 5,
"total_days_studied": 12,
"weak_modules": ["数量关系", "判断推理"],
"module_accuracy": {
"言语理解": 0.82,
"数量关系": 0.51,
"判断推理": 0.68,
"资料分析": 0.74
}
}
parse_input.js)#text
文字消息 → parseStudyInput() 提取科目/错题数/情绪
图片消息 → parseImageInput() 调用多模态模型
图片处理流程:
config.json 中的 multimodal 配置needs_confirm 不为 null 时追问(最多一个问题);caption 已含原因则直接归档追问只问一次,按优先级:
原因关键词知识点不会不懂、没学过、概念不清楚粗心看错、算错、选反了时间不够没做完、最后几题蒙的概念混淆搞混了、分不清、以为是
update_daily.js)#写入 daily/{date}.json,同步更新 stats_cache.json(连续打卡、模块准确率)。
见 references/reply_templates.md,150 字以内。语气见 references/tone_guide.md。
export_xlsx.js)#openpyxl(Python)嵌入对应行python3,失败自动 fallback 到 pythonfeishu_doc.js,可选)#feishu_doc.app_id / app_secret / doc_token每天 21:00 触发 daily_summary.js,自动发当日总结。
文件作用scripts/parse_input.js文字解析 + 多模态图片识别scripts/update_daily.js写入每日记录 + 统计缓存scripts/export_xlsx.js导出 Excel(含截图嵌入,openpyxl)scripts/feishu_doc.js同步到飞书云文档(含图片块,可选)scripts/daily_summary.js定时汇总并主动发送references/reply_templates.md回复话术模板references/tone_guide.md语气风格指引assets/module_map.json科目/模块名称标准化映射assets/config.example.json配置模板(多模态 + 飞书),复制为 config.json 使用
所有数据(含截图 base64)存储在本地,不上传任何云端(飞书同步除外,仅在用户主动触发时上传到用户自己的飞书文档)。
⭐ Star 这个仓库,让更多备考的人能找到它 🍴 Fork 改成你的考试类型(省考 / 事业单位 / 军考……) 有问题欢迎提 Issue 或 PR。