给娃写了个作业工作台:零第三方依赖跑在家庭局域网,还能让 Claude 帮忙录作业
家里有个小学生的人都懂这个流程:老师在群里甩一段作业原文,家长复制到备忘录里手动拆成一条条任务,晚上再盯着娃逐项打卡、检查、签字。市面上的打卡 App 我试过几个,要么广告缠身,要么核心功能锁在会员里,要么得把孩子的数据传到不知道哪里的云端。作为一个程序员爸爸,最后的结论当然是——自己写一个。
这就是 ChildrenWorkbench(儿童作业与习惯工作台):一个跑在家庭局域网里的小学生作业与习惯管理 PWA。家长在手机/电脑上发布与复核任务,孩子在平板上全屏大按钮打卡完成;同时内置 MCP 服务,让 Claude 等 AI 助手直接读取进度、解析老师发的作业原文并创建任务。项目已开源(MIT),欢迎有娃的同学自取。
它长什么样:三个角色,各干各的
孩子端(平板,全屏大按钮)——孩子打开只看到今天的事:
- 任务计时:正计时/倒计时、超时提醒,20 分钟自动暂停护眼
- 朗读/背诵录音打卡、习惯打卡清单、拍照上传
- 内置口算练习器:逐题作答、自动判分,错题自动进错题本
- 星星奖励、兑换商城、连续打卡,还有一个家长语音鼓励信箱 📮
家长端(手机/电脑,PIN 保护)——发布与复核的主战场:
- 今日任务发布:单条、复制昨日、常用模板、模板批量发一周、文本导入
- 老师原文导入:把群里那段”语文:预习课文(读三遍并录音)……”整段粘进去,自动拆成「当天备注 + 任务草稿 + 不确定段落」,不确定的地方单独标出来让家长确认
- 复核与退回(可顺手勾选入错题本)
- 周报:5 项指标 + 热力图 + AI 总结一键复制
- 错题本周末重练,做对 2 次自动归档;奖励兑换审批、课程表、语音录入都在
AI 助手——这是我最想聊的部分,下面单独展开。
最大的特色:让 Claude 帮我录作业
工作台内置了一个无状态 Streamable HTTP MCP 服务(POST /mcp + Bearer Token),提供 14 个领域工具:建任务、解析老师原文、写备注、习惯、周期任务、课表、进度查询、周报、退回等等。在 Claude Code 里配一段 JSON 就能接上:
1 | { |
接上之后的真实用法是:我把老师在群里发的作业原文直接丢给 Claude,说”帮我把这条消息整理成今天的任务”——它调 MCP 工具解析、建任务,我在手机上确认下发。录作业这件每天一次的重复劳动,从五分钟变成了一句话。
但这里有个我纠结了很久的问题:敢让 AI 直接写进孩子的任务列表吗? 解析错了科目、漏了一项、多拆了一条怎么办?最后的答案是草稿模式:Token 默认签发”家长助手”作用域,AI 创建的所有内容先进家长待确认队列,家长在手机上过目后才真正下发。AI 负责干活,决策权始终在人手里——这个边界定下来,全家才敢用。
Token 本身也做了分层:只读查询 / 家长助手(默认草稿)/ 完全管理三档作用域,越权调用直接返回 -32003;密文只在创建时展示一次,库里只存 SHA-256 哈希;每次 AI 调用都落审计表(工具、Token、耗时、成败)。家长端有专门的「AI 接入」页,签发、吊销、看日志都在一处。
技术选型:一个依赖都不装
这个项目有个反潮流的决定:零第三方依赖。Node.js ≥ 22.5(推荐 24)单进程直接跑:
- 存储用 Node 24 内置的
node:sqlite,连npm install都不需要 - HTTP 服务用原生
node:http/node:https,前端纯手写 - SQLite 开 WAL 模式,每天 03:00
VACUUM INTO在线备份,滚动保留 14 份 - 平板侧走自签 TLS(8443),家长端走 HTTP(8900);Service Worker 兜底离线可用
- 附了 Windows 开机自启脚本,家里那台小主机开机即服务
为什么这么干?家庭工具的第一诉求不是功能多,是十年后还能跑。依赖越少,升级越无痛,越不容易在某次 Node 大版本升级后变成一坨跑不起来的考古现场。
另外两处花了大力气的工程细节:
双端同步的信任边界。 家长手机和孩子平板同时在线,状态合并用 LWW + 墓碑防复活;更重要的是孩子端字段在服务端合并层净化——孩子提交上来的数据只允许更新自己的任务状态和新增兑换申请,”已兑现””已审批”这类字段一律丢弃。娃再聪明也没法把自己 5 颗星的兑换伪装成”家长已同意”。
解析器双端一致。 老师原文解析器在浏览器和 Node 里跑的是同一套规则(js/parser.js 与 app/server/parser.js 同源),保证家长端预览的结果和 AI 通过 MCP 解析的结果完全一致,不会出现”AI 拆出来和页面上不一样”的灵异事件。
快速开始
1 | git clone https://github.com/clarance2018/ChildrenWorkbench.git |
就这三行,没有 npm install。起来之后:
| 入口 | 地址 |
|---|---|
| 家长端 | http://127.0.0.1:8900/#/parent |
| 孩子端(平板,首次需信任自签证书) | https://<电脑局域网 IP>:8443 |
| 健康检查 | http://127.0.0.1:8900/api/health |
| MCP 端点 | http://127.0.0.1:8900/mcp |
首次使用:家长端设置 PIN → 孩子端用配对码绑定 → 开始发任务。仓库里带了 PRD、部署与平板接入、AI 接入说明等文档,照着走就行。
写在最后
从”群消息里的一段原文”到”孩子平板上的一项任务”,中间隔着拆解、录入、打卡、复核、错题归档这一整条流水线。以前这条流水线全靠人肉,现在家长只保留”确认”这一个动作,其余的交给工具和 AI。
自托管工具最迷人的地方从来不是省钱,而是数据和边界都归自己:孩子的作业、录音、照片全部躺在家里那台机器的 data/ 目录里,一个字节都不出门。如果你家也有个小学生,欢迎试用、提需求,或者直接 PR——毕竟娃的作业形态千奇百怪,你家的场景大概率能帮我把解析器喂得更聪明。
相关推荐:








