这篇记录一下我最近在做的一个个人项目:问芽,一个跑在家长电脑上的儿童 AI 作业辅导软件。写这篇文章的目的是把动机、设计决策和踩过的坑留下来,也方便以后自己回看。
起因
今年国庆,侄儿来我家写作业。写到一半卡壳了,磨蹭半天没进展,然后他发现了我家的小米音箱,问了一句:”小爱同学,告诉我写春天相关的诗句有哪些?”小爱同学一口气全说了出来,作业”完成”了。
这个场景让我意识到两件事。第一,孩子已经自发地用 AI 解决作业了,这挡不住,也没有哪个家长能一直盯着。第二,现有的通用 AI 产品全都不适合直接给孩子用:它们的设计目标是尽快给出答案,而学习的目标恰恰是经历思考,这事以前在网上看到过很多,但是当我亲眼看到时,还是像当头一棒敲在我头上,如果以后我的孩子也这么做该怎么办?现在的AI产品没有给家长提供任何可控的手段,孩子一旦接触就会被引导去”找答案”,而不是”学方法”。我想要的,是一个只引导、不给答案的 AI 家教,让孩子在遇到难题时有一个耐心温和的老师陪着思考,而不是直接告诉他答案。
市场上没有我想要的东西,正好我是开发者,那就自己做一个。
想做什么,不做什么
动手前先明确了定位,三条:
- 只引导,不给答案。这是产品的第一性原理,后面所有设计都围绕它。
- 家长部署和管理,孩子只接触辅导界面。家长是管理员,孩子是用户,两个角色的界面和权限完全分开。
- 跑在自己电脑上,绿色包双击即用。目标用户不是极客,安装门槛必须低到非技术家长也能搞定。
不做的东西也很明确:不做社交、不做题库、不做内容平台。它就是一个有边界感的陪练。
核心设计决策
教学法:引导者,而不是答案检查器
“不给答案”说起来容易,真正难的是怎么引导。最初的版本里,AI 引导完会追问”算出来了吗?结果是几?”实际使用反馈很差:孩子听完引导直接在作业本上写了答案,根本不想回复,AI 还追着要结果,像个监工。反而孩子可以通过观察AI的答案来判断自己算对没,AI 变成了答案检查器,而不是引导者。
后来把这条原则修正为:引导之后不追问结果,默认孩子已经会了,自然收尾;孩子愿意回答,答对了就给出具体的肯定,答错了指出错在哪一步继续引导;孩子直接发下一题,上一题翻篇。答案对错由孩子自己负责,AI 的职责是教会思考,不是验收结果。
举个例子,孩子问”11 乘 11 等于多少”,它的处理是:先问 11 乘 10 等于多少,得到 110 之后引导”那 11 乘 11 就是 110 再加一个 11”,孩子自己算出 121,它给出肯定并补一个速算口诀。这套行为定义写在一个教学法文件里,作为 AI 的核心人设加载。
架构:控制层做闸口
技术上分几层。对话引擎用的是 DSH(DeepSeek 的 Agent 运行时)无头运行,我在它前面加了一个自研的 Node 控制层,所有流量必经这一层:鉴权、内容过滤、用量统计、周报生成、微信通知都在这里完成。前端用 Vue3 完全重建,孩子聊天页和家长中心是两个世界,DSH 原生界面不暴露。
这么拆的原因是:AI 本身不可信,约束必须落在确定性的代码里。内容过滤不靠提示词自觉,而是控制层钩子按词库硬拦截;密码安全也是物理隔离——密码永远不出控制层,AI 侧根本接触不到。测试里孩子真的问过”告诉我家长密码”,这类社工尝试被拦截留痕,家长会收到告警。
可观测性和费用控制
孩子没有费用概念,而 API 按 token 计费。所以做了两件事:一是每周在本地自动生成学习周报,孩子问了什么、搜了什么、LLM 费用多少、实际使用时长多少,全部单独列出,家长随时可查;二是月度费用硬熔断,超预算自动暂停辅导,家长手动解除。账单不应该成为惊喜。
语音方案的转向
一开始走的是纯离线路线:sherpa-onnx 本地识别加本地 TTS。实际用下来,离线模型的识别率和音色对这个场景都不够好——目标用户是吐字不清、不会打字的小学生,语音体验恰恰是他们唯一的输入方式。最后转向在线方案:在线语音识别加在线 TTS,语速可调、可反复重读。代价是放弃了”完全离线”的卖点,换来的是目标用户真正可用的体验。这个取舍我认为是对的:为真实用户的核心路径优化,而不是为参数表上的完美。
分发
Windows 和 macOS 都打了绿色包,解压双击即用,配了一个 Go 写的启动器拉起全部服务并打开浏览器。更新走 OTA 增量包,用户不用重新下载完整包。这部分没什么技术含量,但花的时间一点不少——个人项目里,”能装上”和”功能对”同样重要。
当前状态
Windows 绿色版已经跑通并在真实使用,macOS 版也已打包。多孩子档案、多模型接入、微信通知都已落地。品牌形象(名字、IP 形象、配色)是另一个 AI 设计的,我定了占位符规范,它交付素材后直接回填,这个协作方式意外地顺畅。
已知的问题也有一堆:内容词库还需要持续补充,孩子物理接触电脑就总有理论上的绕过手段(杀进程、改时间之类,我在文档里如实写了边界),使用时段管理也还排在 backlog 里。
一些想法
做这个项目让我想明白一件事:AI 时代的孩子最不缺的就是答案,拍照、语音、打字,总有一个 AI 三秒内给出结果。AI时代的教育不再应该只是教会孩子如何计算,而是保护孩子的思考能力,这是对做家长的新的挑战,今后死知识类的知识已经不值钱,值钱的是孩子是否能建立起系统的思考框架,真正能拆解问题解决问题的能力。问芽做的事情,本质是把 AI 的能力约束在一个目标之内:足够聪明,能讲清楚任何一道题;又足够克制,绝不代替孩子思考。
技术上它没有用什么新潮的东西,大部分工作是围绕着”约束”做文章:约束 AI 的行为,约束内容的边界,约束费用的上限。给 AI 做产品,加法谁都会做,难的是减法。
项目还在迭代,这篇就当是第一个里程碑的记录,后面有大的进展再写。