家里的 AI 老师团,和家长一起教。几位可以直接对话的老师(数学、语文、英语,还有一位出厂关着的口播老师),孩子在 iPad 上按住说话就能问,家长在自己的页面上看全部过程、管每位老师的性子和规矩。数据全在自家电脑上。
家长端与孩子端都能用:老师的回复是一页板书(卡 + 逐句讲稿),家长在幕后把要画出来讲的题做成小课堂;学完家长打星记账进 Obsidian 日记,作业照片在学科老师页上拍。
需要 Node ≥ 22.18,以及 Claude Code 或 Qwen Code 至少一个(老师是它们跑出来的)。
npm i -g cotutor
cotutor init ming --name 小明 # 建 ~/cotutor/ming/:四位老师、十个 skill、账本、对话目录、cotutor.json
cotutor doctor # 逐项体检,不过的每条都带修复命令;--live 真起一次老师
cotutor serve # 孩子端 http://<ip>:5180/,家长端 /parentinit 把出厂老师拷进 .claude/agents/,把做课包用的四个领域 skill(随 drawtell 包来)和六个机器件 cotutor-tutor / cotutor-board / cotutor-vault / cotutor-analyze / cotutor-tune / cotutor-home 拷进 .claude/skills/;
做课包用的 drawtell 随包装好(.cotutor/drawtell),不用另外装。要在 iPad 上用(按住说话要 HTTPS):cotutor cert 签一张
自签证书,把根证书装到 iPad,重启 serve。
然后在浏览器里:
- 家长端
/parent:只看。按天看孩子和每位老师的板书(答案不剥)、看录像、打星、记账、删话题。 - 工作台
/dev:给有技术背景的家长与开发者。和任何一位老师说话、看一轮的原文;老师团页改人设、政策、老师文件,加新老师;音色页试听挑声音;设置页改路径、端口、配音。 - 孩子端
/:首页每位老师一张卡,卡上的按钮是家长排好的(新话题、接着以前的话题、带讲法的开场、先看一堂小课堂);点了进板书页,按住说话或打字。老师的回答是一页板书:卡先铺开(选择题、填空、点读、田字格、单词、图、小课堂、画板、录音),讲稿一句句念、笔跟着声音标注,末句问句停下来等孩子。点一张卡进舞台做题,做完「交给老师」。孩子永远看不到工具、报错、评判。
想听老师的声音:装 voxtell,给老师填音色;没装就退回浏览器合成的声音。
不花钱先看孩子端长什么样:cotutor mock 起一份模拟接口,不经真实老师。细节见 docs/家长手册.md。
每位老师 = 一个 Markdown 文件(frontmatter + 正文即系统提示)+ cotutor.json 里的一条(显示名、头像、音色、开关、政策)+ 自己的目录与对话。出厂四位(数学、语文、英语、口播)随包发布,init 拷贝进你的老师们,改了就是你家的;cotutor upgrade 只换没改过的,改过的打印差异让你定。再加一位:
cotutor add science-tutor --display 科学老师 --subject 科学 --avatar 🔬名字以 -tutor 结尾的是老师(有脸),其余是孩子看不到的工具人。头像可以是 emoji,也可以是
workspace 里的一张图(avatars/<老师>.png):用 figshot
figshot pick --workspace ~/cotutor/<孩子> 让孩子自己搭一个乐高人仔当老师,存盘直接落到这里。
cotutor.json 里加一行 "figshot": { "port": 8477 },孩子端首页就多一张「给老师们换个样子」,iPad 上点了直接进去(figshot 没开着时这张卡不出现)。
或者家长端老师团页点「新老师」。没有注册表,删掉文件和那条配置就是删老师。
cotutor.json 首行指向一份 JSON Schema(.cotutor/cotutor.schema.json),编辑器里有补全与说明。
import { CotutorConfigSchema, cotutorJsonSchema } from 'cotutor/schema'; // 契约(zod)与 JSON Schema
import { deriveKidView, parseSections } from 'cotutor/lib'; // 转录、孩子视图、账本等纯函数
import { loadWorkspace } from 'cotutor/workspace'; // 解析链 + 校验改代码的看 docs/开发者手册.md(检出、冒烟、iPad 真机)与 CONTRIBUTING.md;设计与拍板在 docs/(产品规划、agent 层设计、契约草案)。
pnpm i && pnpm typecheck && pnpm test
node bin/cotutor.js --help # bin 在仓库内直跑 src,零构建
pnpm build && pnpm smoke # 出厂检查:体检要发的那份cotutor 按 Apache-2.0 加附加条件授权,全文见 LICENSE。白话说:
- 家里自己用、自己改都行,几个孩子几个 workspace 都算自己家。
- 替别的家庭或别人运营 cotutor(收不收钱都算),要先拿到书面许可。
- 家长端页脚和工作台的 cotutor 标记不能去掉(自己家用也一样);主题、老师的名字与头像、标题照常改。
这段只是说明,以 LICENSE 原文为准。要许可或商业授权,到仓库开 issue。