入口放在最显眼的位置
底部导航正中央那颗凸起的黄色「组卷」按钮,是整个 App 唯一一个跳出 tab 栏的元素。
面向 A-Level / IB / AP 国际课程独立老师的微信小程序。它把备课出卷、作业批改、和向家长交代这三件反复消耗老师的事,收成一条能沉淀下来的产线。
后端已上线,六科题库已开放,整条组卷链路真实跑通。

独立老师给一个学生出一份针对性的练习,真实动作是这样的:翻出十几份历年真题 PDF → 一页页找符合这个知识点的题 → 截图 → 贴进 Word → 再去另一份文件里找对应答案 → 排版 → 导出。走完这一整套,才换来四道题。而下一个学生要练别的知识点,整套重来。
"我要一套 P1 的积分,别太难也别太简单,30 分钟能做完。" —— 这是产品里真实被输入的一句话
WMA11/01 · Unit P1 · 9709 Paper 3 · 章节编码 · 考季代号
这套编码是考试局视角——它为命题和评分服务,按考纲归档。老师是教学视角——按"这类题怎么讲、常用哪个方法、学生一般卡在哪"来组织。
下面是 2026-07-30 那次真实组卷的逐帧回放。左边是系统在做的事,右边是老师看到的界面,最后打开的是那一次真正生成出来的 PDF。

注意第二组里的 difficulty → 中等(unit 内分位):难度不是靠题号猜的,是同一 unit 内的分位数,同一句需求两次生成,难度分布一致。这一条后面还会再提,因为它有个诚实的尾巴。
这不是玩具——它就是产品里那条解析漏斗的第 1–2 级:意图词表 + 目录解析 + 正则,完全不调用大模型。产品中约七成的对话轮次到这里就结束了,一个 token 都不花。
全部是真机截图。手机屏幕跟着你往下读换屏——每一步下面那条黄色的旁注,是这一屏背后的产品判断。
底部导航正中央那颗凸起的黄色「组卷」按钮,是整个 App 唯一一个跳出 tab 栏的元素。
「自然语言组卷(推荐)」和「章节组卷」并列。后者是老老实实的三级筛选器:考试局 → 科目 → 单元。
系统没有直接生成,而是复述了一遍理解:"爱德思数学 P1 的积分练习题,难度适中,30 分钟内可完成",并告诉你这个范围一共 30 题可选。
换一道、上移、下移、删除。每题带完整来源:原题 2023 年 1 月考季 · Pure Mathematics P1 (WMA11) · 第 3 题。
章节分布条:Integration 积分 4 题 27 分 100%。加上题目数、满分、预估时长、覆盖章节。
合成 PDF 要几秒到十几秒,页面给了一条实时进度条。
生成完成后是两个独立入口:查看题目卷 PDF / 查看答案卷 PDF。还有「生成平行卷」和「布置给学生」。
标准试卷版式:TIME / PAPER REFERENCE(S) / QUESTIONS / TOTAL MARKS,每题上方标来源考季与原题号,通页水印,页脚带溯源信息。
组卷列表区分「草稿 / 已生成」,可复制、可删除。复制一份改两道题,就是下一个学生的卷子。
回放里那句 "这个范围一共 30 题可选" 看着不起眼,它是我在这个产品里最坚持的一条设计。
系统在抽题之前会先查库存,并把真实数字告诉老师。如果某个知识点只有 3 道题,它不会凑数、不会拿相邻知识点顶上、更不会重复用同一道题填满,而是直接说"只有 3 道",然后给出替代方案。
这条规则会让产品在某些时候显得"不够强"。但它换来的是:老师可以相信卷子里的每一道题都是他要的。
凑够题数在工程上更容易实现,指标上也更好看——生成成功率 100%。
但老师只要发现一次卷子里混进了不相干的题,就再也不会用这个功能了。这个取舍不是技术问题,是一个只有理解使用场景的人才会做的决定。
不是示意图,是真机点「生成试卷 PDF」之后拿到的东西。可以直接打开翻页。
题库是我自己从历年真题 PDF 里切出来、逐题分类、逐题质检之后灌进去的。六科目前全部开放,基本每道题都带原始题图。
检索是到单元的,不是到科目的。下面的数字直接来自产品内的选单元页。
下面每一条都是从最初构想里主动删掉的,不是"没做完"。
放在正文里,不藏在页脚小字里。
上面「编辑组卷」那张截图里,每道题右上角写着「难度未标」——我没有 P 掉它。难度口径(unit 内分位数)是定好的,但标注是分批回填的,这批 P1 的题还没轮到。功能设计和数据覆盖是两件事,不该混着说。
题库分类质量有一整套质检流程;但"这份卷子是不是老师真正想要的那份",目前只靠约束满足和人工复核,没有正式评测集。下一步就是建它——哪怕只是 20 份由教师打分的卷子。
"官方分类不好用"这个判断来自与一线教师的协作和按教师标准重建分类的过程,但我没有把它做成体系化的访谈,样本量小。
后端已上线并稳定运行,小程序目前是体验版。另外只有组卷侧接了真实对话式 AI,作业与报告类生成仍走默认 mock;增长完全没做。