基于多模态AI与本地优先架构的考公错题管理助手设计与实现
1. 项目概述一个本地优先的考公错题管理助手如果你正在准备公务员考试或者身边有朋友在备考那你一定对“刷题”和“错题本”这两个词不陌生。每天一套行测做完对答案看着满篇的红叉心里想着“明天一定要整理”结果往往是草草看一眼就翻篇错题本永远停留在第一页。不是不想整理而是这个过程太繁琐了截图、粘贴、分类、写分析……一套流程下来比做题还累极大地消耗了本就宝贵的备考精力。“朱批录”kaogong-study-tracker这个项目就是为了解决这个“最后一公里”的痛点而生的。它不是一个独立的App而是一个运行在OpenClaw平台上的Skill技能。你可以把它理解为一个24小时在线的、专属于你的“考公备考小秘书”。它的核心逻辑非常简单你只管做题和反馈它来负责所有繁琐的记录、归档和分析工作。你通过日常聊天的飞书、Telegram等工具把错题截图或者成绩文字发过去它就能自动帮你把错题整理得明明白白所有数据都安全地留在你自己的电脑里。我之所以花时间折腾这个工具是因为我自己在备考和辅导他人的过程中深刻体会到“有效复盘”才是提分的关键。大部分人的分数瓶颈不在于做题量而在于对错题的消化吸收程度。朱批录的目标就是利用多模态AI的能力把“消化吸收”这个环节的门槛降到最低让你能更轻松、更持续地进行高质量的复习。1.1 核心需求与设计思路在深入代码之前我们先拆解一下考公备考者在错题管理上的真实需求这决定了朱批录的每一个功能设计。第一极致的便捷性。备考已经够累了任何增加操作步骤的工具都会被抛弃。因此朱批录确立了“对话即操作”的第一原则。你不需要打开任何额外的软件界面就在你平时聊天的飞书窗口里像跟朋友吐槽一样说一句“今天资料分析错了5道”或者随手丢一张错题截图它就能理解并处理。这种无缝的体验是坚持使用的关键。第二数据的绝对主权与隐私。错题尤其是那些反复做错的题某种程度上反映了你的思维弱点和知识盲区是非常个人且敏感的数据。很多在线工具需要上传到云端存在隐私泄露风险也让人心里不踏实。朱批录采用“本地优先”架构所有截图、识别后的文本、分析结果都存储在你本地电脑的~/.openclaw/目录下。它调用AI模型进行识别的过程也是通过你已经配置好的、可信的API渠道如DeepSeek、Kimi等数据流完全可控。第三智能与鲁棒性的平衡。我们希望能用AI自动识别截图中的题目、答案和错误原因但这技术并非100%可靠尤其是对于复杂的图形推理题。因此朱批录设计了“失败软降级”机制。如果图片识别不清或失败它会明确地提示你“这张图有点模糊能直接把题目文字发我吗” 引导你进行手动文本输入确保流程不会因为一次识别失败而彻底中断你整理错题的动作依然可以继续。第四提供持续的正反馈与指导。备考是场马拉松容易迷失方向。朱批录不只是被动的记录者它还是一个主动的提醒者。通过配置定时任务它会在每天晚间比如21:00主动给你发送一条总结告诉你今天各模块的准确率、近期最薄弱的环节并给出一条像教练一样的、具体的明日复习建议例如“图形推理的‘位置规律’最近3天错了7次建议明天花15分钟专项复习一下这个知识点”。这种及时的反馈能帮助你保持节奏聚焦重点。基于以上四点朱批录的整体架构就清晰了一个以后台服务形式运行、通过自然语言交互、在本地处理数据、并具备一定主动提醒能力的错题管理自动化助手。2. 核心功能模块深度解析朱批录的功能看似简单但背后是几个模块的精密协作。理解这些模块不仅能帮你更好地使用它也方便你未来根据自己的需求进行定制化修改。2.1 多模态错题识别引擎这是项目的技术核心位于scripts/parse_input.js。当你发送一张错题截图时背后发生了一系列动作。第一步消息路由与类型判断。OpenClaw框架会拦截到你的消息朱批录的Skill被触发。它首先判断消息类型是纯文本如“言语4错”还是包含图片附件如果是图片它会将图片下载到本地临时目录并准备进行识别。第二步构造识别提示词Prompt。这是决定识别准确率的关键。你不能简单地把图片丢给AI说“看看这是什么”必须给出明确的指令。朱批录的Prompt经过精心设计旨在引导AI结构化地输出信息。其核心要点包括身份与任务界定明确告诉AI“你是一个公务员考试备考助手”需要从截图中提取错题信息。结构化输出要求强制要求AI以指定的JSON格式回复字段包括module模块如“言语理解”、subtype题型如“逻辑填空”、question_text题目文字、visual_description对图表、图形的文字描述、answer正确答案、error_reason错误原因分类。错误原因分类引导预先定义了几种常见的错误类型“知识点不会”、“粗心失误”、“时间不足”、“概念混淆”让AI从中选择这比让AI自由发挥更稳定、更实用。容错与降级指令在Prompt中明确说明如果图片质量太差无法识别就返回一个特定的失败状态码从而触发前文提到的“软降级”流程转而向你请求文字输入。第三步调用模型与解析结果。朱批录本身不绑定任何特定模型它使用你在OpenClaw中已经配置好的多模态模型例如Qwen-VL、Kimi-Vision、Claude等。这带来了极大的灵活性你可以根据自己对准确性、速度和成本的需求选择最合适的模型。收到AI返回的JSON后脚本会进行校验确保必要字段存在然后将其与原始的图片Base64编码一起组装成一个完整的错题记录对象。实操心得Prompt工程是灵魂在实际测试中我发现直接让AI“分析错题”效果很差它可能会开始讲解题目解法。必须用“提取信息”和“按以下JSON格式输出”来严格约束其行为。此外为error_reason提供选项池至关重要这能保证后续统计分析的维度统一。如果你发现识别结果总是不准第一个要调整的就是Prompt。2.2 本地数据存储与管理体系所有数据都存放在~/.openclaw/skills/kaogong-study-tracker/data/目录下采用文件数据库的形式简单而高效。daily/目录按日期存储每天的整体练习情况。每个文件如2026-03-15.json记录的是你当天汇报的“行测做完了言语4错判断8错…”这样的汇总数据。它的结构侧重于宏观统计用于计算每日正确率和生成趋势图。wrong_questions.json文件这是核心数据库一个JSON数组保存了所有识别/录入的错题详情。每一条记录都包含我们在2.1节提到的完整字段。这个文件是所有深度分析的基础。stats_cache.json文件这是一个为了提高响应速度而设计的缓存文件。系统会定期如每次新增记录后计算“近7日各模块准确率”、“连续打卡天数”等指标并缓存于此。当你在聊天中询问“我最近怎么样”时它能快速读取缓存返回结果而无需实时遍历大量历史数据重新计算体验更流畅。config.json文件存储一些简单的配置比如是否已完成初始设置、默认选择的AI模型等。exports/目录存放生成的Excel错题本文件。这种基于文件的设计优点是非常直观、易于备份和迁移直接复制整个文件夹即可。缺点是不适合超大规模并发写入但对于个人备考场景这完全不是问题。2.3 自然语言交互与上下文理解朱批录的“对话即操作”体验依赖于对自然语言的灵活解析。这主要在scripts/parse_input.js的文本处理部分实现。它并不依赖复杂的NLP模型而是采用“关键词匹配规则解析”的轻量级方案这对于垂直领域、句式相对固定的场景非常有效且可靠。例如当消息中包含“今天”、“错了”、“言语”、“判断”等关键词组合时判定为“每日成绩汇报”。当消息是“导出错题本”或“导出Excel”时触发导出流程。当消息是“同步飞书”时触发云文档同步流程。当消息是“我最近怎么样”或“总结一下”时触发生成统计分析报告。对于成绩汇报它会使用正则表达式来捕捉“[模块名][数字]错”的模式例如从“言语4错判断8错”中提取出“言语”-4“判断”-8。同时它还内置了一个module_map.json别名映射表能理解“逻辑”指的是“判断推理”“数资”可能同时指代“数量关系”和“资料分析”并进行智能拆分或追问确认。这种设计使得交互非常自然你可以用多种方式表达同一意图系统都能正确理解。2.4 定时任务与主动关怀系统被动响应之外主动提醒是提升工具粘性的法宝。这是通过OpenClaw的cron_jobs功能配合scripts/daily_summary.js脚本实现的。在workspace.yaml配置文件中你可以添加一个定时任务例如每天21:00执行。时间一到OpenClaw的调度器就会自动运行daily_summary.js脚本。这个脚本会读取stats_cache.json和当天的daily/记录。分析出近期如7天内准确率最低的1-2个模块。从预定义的“建议语料库”中选取一条针对该薄弱模块的具体、可操作的建议。比如针对“图形推理-位置规律”薄弱建议可能是“建议明天花20分钟专项练习10道涉及‘旋转’、‘平移’、‘翻转’的位置规律题重点观察元素的方向和移动步长。”将今日成绩、薄弱分析和建议拼接成一条鼓励性的消息通过你指定的渠道如飞书发送给你。这个功能模拟了一个负责任的备考伙伴在你可能松懈的时候给你一个轻轻的推动帮助你保持复盘的习惯和复习的方向性。3. 从零开始的完整部署与配置实操理论讲完了我们动手把它跑起来。假设你已经在电脑上安装并配置好了OpenClaw一个用于连接各种聊天平台和AI模型的自动化框架下面是一步步的部署指南。3.1 环境准备与技能安装首先确保你的环境符合要求Node.js版本需要大于等于18。打开终端进入OpenClaw的技能目录。# 1. 进入OpenClaw的技能目录通常在这里 cd ~/.openclaw/skills # 2. 克隆朱批录项目 git clone https://github.com/KaguraNanaga/kaogong-study-tracker # 3. 进入项目目录并安装依赖 cd kaogong-study-tracker npm installnpm install会安装项目所需的第三方库主要是用于生成Excel文件的openpyxl通过某个Node.js封装包或Python桥接以及一些工具库。3.2 核心配置文件详解与修改接下来是关键的配置环节。你需要修改OpenClaw的主配置文件workspace.yaml通常位于~/.openclaw/目录下。# 在 workspace.yaml 中找到或添加 skills 部分 skills: - kaogong-study-tracker # 添加这一行启用朱批录技能 # 在 workspace.yaml 中找到或添加 cron_jobs 部分 cron_jobs: - name: 备考晚间总结 schedule: 0 21 * * * # 每天21:00执行cron表达式 action: type: run_script script: skills/kaogong-study-tracker/scripts/daily_summary.js # 脚本路径 channel: feishu # 推送渠道根据你实际使用的改比如 telegramschedule: 这是Cron表达式“0 21 * * *”表示每天21:00。你可以根据需要调整比如“0 22 * * *”是22点。channel: 必须与你OpenClaw中配置的某个聊天渠道名称一致。如果你主要用Telegram就改成telegram。注意事项路径与权限确保script路径是正确的相对路径或绝对路径。如果OpenClaw提示找不到脚本请检查路径。另外确保Node.js有权限读取和写入~/.openclaw/下的目录。3.3 飞书机器人接入可选但推荐飞书在国内访问稳定且支持图片消息是使用朱批录的绝佳渠道。配置稍复杂但一劳永逸。创建飞书机器人登录飞书开放平台创建一个企业自建应用获取app_id和app_secret。启用接收消息能力在应用的功能权限中启用“接收消息”和“发送消息”。配置事件订阅在事件订阅页面设置请求网址URL你需要有一个公网IP或使用内网穿透工具如ngrok将本地OpenClaw的端口暴露出去。验证令牌和加密密钥需要记录下来。修改OpenClaw配置在OpenClaw的workspace.yaml中应该有专门配置飞书连接的部分填入上面获取的app_id,app_secret,verification_token,encryption_key等信息。配置朱批录的飞书文档同步可选如果你想使用“同步到飞书”功能还需要在飞书云文档中创建一个表格并获取其app_token和table_id。然后将项目assets/目录下的config.example.json复制为config.json并填入你的飞书文档信息。详细的飞书配置步骤项目中的assets/workspace-example.yaml文件提供了非常清晰的模板你可以直接参考复制。3.4 首次运行与测试配置完成后重启你的OpenClaw服务。# 在OpenClaw主目录下通常这样重启 npm run restart # 或者根据你的启动方式可能是 pm2 restart openclaw重启后在你配置的飞书或Telegram群里一下你的机器人或者直接给它发一条消息比如“你好”。朱批录应该会回复一条欢迎信息介绍它的基本功能。这说明技能已经成功加载。现在你可以开始真正的测试了文本汇报发送“今天行测言语理解错了3道判断推理错了5道”。图片识别找一道行测错题截图后发送给机器人。功能指令发送“导出错题本”检查是否能收到Excel文件。发送“我最近怎么样”查看统计分析。4. 高级使用技巧与个性化定制基础功能用熟后你可以通过一些调整让朱批录更贴合你的个人备考习惯。4.1 适配不同类型的公职考试朱批录默认的科目映射是针对国考行测的五大模块言语、判断、数量、资料、常识。但省考、事业单位、军队文职的科目名称和划分可能不同。你可以修改assets/module_map.json文件来实现适配。这个文件定义了关键词别名映射。例如事业单位《职业能力倾向测验》可能把“判断推理”叫做“逻辑判断”把“言语理解”叫做“言语表达”。你可以在module_map.json里添加{ 逻辑判断: 判断推理, 言语表达: 言语理解, 策略制定: 判断推理, // 将事业单位特有题型映射到相近大类 ... }这样当你汇报“逻辑判断错了4道”时系统会自动将其归类到“判断推理”模块下进行统计。对于差异更大的考试如军队文职的专业科目你可以Fork这个项目直接修改parse_input.js中关于模块列表的定义并相应调整daily_summary.js中的分析逻辑打造一个完全为你目标考试定制的版本。4.2 优化AI识别提示词Prompt如果你发现某个AI模型比如你用的Kimi对图形推理题的描述总是不准确可以针对性优化Prompt。提示词模板主要在scripts/parse_input.js的buildImagePrompt函数中。优化的方向可以包括更具体的格式要求对于图形推理明确要求按“图形构成点、线、面、角、素”、“位置变化平移、旋转、翻转”、“样式规律叠加、遍历”等维度进行描述。提供例子Few-shot在Prompt中加入一两个正确描述的例子让AI模仿。限制输出长度要求“visual_description”字段控制在100字以内避免生成冗长废话。修改后记得重启OpenClaw服务使改动生效。4.3 错题本Excel的深度利用导出的Excel错题本备考记录_日期.xlsx是一个宝藏。除了本地查看你可以二次分析将这个Excel文件直接上传到Kimi、ChatGPT等AI助手让它基于所有错题数据为你生成一份更详细的《薄弱知识点诊断报告》和《后续两周复习计划建议》。手动筛选与标记在Excel中你可以方便地根据“模块”、“错误原因”、“状态”进行筛选。例如筛选出所有“知识点不会”且“状态”为“待二刷”的图形推理题集中攻克。定期清零与复盘建议每两周或一个月将已经掌握、二刷正确的题目“状态”改为“已掌握”并在文件中新建一个Sheet存档。保持当前错题本的清爽只聚焦于最新的、未解决的难题。4.4 数据备份与迁移所有数据都在本地备份非常简单。只需定期压缩复制~/.openclaw/skills/kaogong-study-tracker/data/这个目录即可。如果你想换电脑或者重装系统迁移步骤是在新电脑上安装OpenClaw和朱批录Skill重复3.1和3.2步。将旧电脑上备份的data/目录整体覆盖到新电脑的对应路径。重启OpenClaw你的所有历史记录就都回来了。5. 常见问题排查与实战心得在实际使用和与一些早期用户交流的过程中我总结了一些典型问题和解决方案。5.1 图片识别失败或不准这是最常见的问题。现象机器人回复“识别失败请直接发送题目文字”或者识别出的题目内容乱七八糟。排查步骤检查截图质量确保截图清晰、完整包含了题目、选项和你的错误答案标记。避免截图上有大量无关内容或文字重叠。检查AI模型配置确认你的OpenClaw中配置的多模态模型API是有效的且有足够的余额或调用次数。查看OpenClaw日志运行pm2 logs openclaw如果你用PM2管理或直接查看OpenClaw的输出日志里面通常会有模型调用的详细错误信息例如API密钥错误、网络超时等。尝试手动输入如果图片识别始终不行这是“失败软降级”设计发挥作用的时候。直接复制粘贴题目文字和你的错误选项发给机器人效果是一样的。不要因为识别问题放弃记录。5.2 定时总结消息没有发送现象到了设定时间如21:00没有收到总结消息。排查步骤检查Cron表达式确认workspace.yaml中的schedule设置正确。可以用在线的Cron表达式验证工具检查。检查OpenClaw服务状态确保OpenClaw服务在后台正常运行没有崩溃。pm2 list查看状态。检查渠道配置确认channel设置的值如feishu与你在OpenClaw中配置的某个聊天渠道的name完全一致且该渠道连接正常能收發普通消息。查看定时任务日志OpenClaw的日志中会记录定时任务的触发和执行情况查看是否有错误信息。5.3 导出Excel失败或文件损坏现象发送“导出错题本”后机器人没有反应或收到的文件无法打开。排查步骤检查依赖确保npm install成功安装了所有依赖特别是处理Excel的库如exceljs。有时网络问题会导致安装不完整可以删除node_modules文件夹和package-lock.json重新运行npm install。检查文件权限确保OpenClaw进程有权限在data/exports/目录下创建和写入文件。检查数据内容如果wrong_questions.json文件格式损坏例如JSON格式错误导出脚本可能会失败。可以尝试用JSON格式化工具验证一下该文件的有效性。5.4 性能与存储空间担心截图以Base64形式存储会不会占用很大空间解答一张普通的手机截图转换成Base64文本后大小大约在几百KB。即使你每天记录20道带截图的错题一个月也就几十MB。对于现代电脑的硬盘来说微不足道。项目设计时也考虑过存储优化例如可以定期清理exports/目录下的旧Excel文件。核心的wrong_questions.json是纯文本体积更小。我个人最深刻的实战心得是工具的价值在于坚持使用。朱批录把记录错题的成本从“10分钟”降到了“10秒钟”但这10秒钟的动作需要你养成习惯。我的建议是每次做完题对完答案趁着记忆还新鲜立刻打开聊天窗口把错题截图或成绩发出去。让这个动作成为你刷题闭环的一部分。坚持两周当你回顾自动生成的错题本和趋势图时你会清晰地看到自己的进步轨迹和顽固弱点这种数据驱动的反馈会比任何模糊的感觉都更能指导你高效备考。