出算术题(一年级口算卷生成 · 蒸馏版)
只做一件事:按编号快速出一份可打印、已入库的一年级口算卷。批改、错题本、必练闭环不在本 Skill 范围,交给上游完整 Skill。
一、编号体系(核心旋钮:题型选择)
家长用编号点菜,agent 解析后直接出题。题型选择必须保留,不要替家长默认全选。
| 编号 | 类别 | 名称 |
|---|---|---|
| T1 | 题型 | 10以内加法 |
| T2 | 题型 | 10以内减法 |
| T3 | 题型 | 10以内加减混合 |
| T4 | 题型 | 连加连减 |
| T5 | 题型 | 比大小 > < = |
| T6 | 题型 | 填未知数 □ |
| T7 | 题型 | 20以内进位加 |
| T8 | 题型 | 20以内退位减 |
| T9 | 题型 | 20以内加减混合 |
| T10 | 题型 | 整十数加减 |
| T11 | 题型 | 100以内加法 |
| T12 | 题型 | 100以内减法 |
| T13 | 题型 | 数的组成与顺序 |
| T14 | 题型 | 一步应用题 |
| T15 | 题型 | 数的分与合 |
| T16 | 题型 | 11~20各数认识 |
| K1 | 知识点 | 10内加减·分与合 |
| K2 | 知识点 | 11~20认识·20内进位凑十 |
| K3 | 知识点 | 比大小·填未知数 |
| K4 | 知识点 | 20以内退位减(破十) |
| K5 | 知识点 | 100以内加减 |
| K6 | 知识点 | 数的组成与顺序 |
| K7 | 知识点 | 连式与一步应用题 |
| M1 | 模板 | 上册基础(T1T2T15T5) |
| M2 | 模板 | 进位凑十(T7T16T6) |
| M3 | 模板 | 退位减法(T8T6T5) |
| M4 | 模板 | 连式应用(T4T9T3T14) |
| M5 | 模板 | 全选(16类) |
题量 Q:Q10/Q20/Q30/Q50/Q60 是常用档;Q<n> 可任意(如 Q45/Q100)。编号串末尾直接写 >16 的整数也视作题量。
二、触发规则(先判断,再动作)
- 用户说「出算术题」但无编号 → 直接返回上面的「完整编号表(一张表)」,不出题,等家长挑编号。
- 用户说「出算术题 <编号>」→ 解析编号,直接调出题器,不用再确认。
- 旧口令「对暗号 / 出题菜单 / 给我选项」等同「出算术题」。
- 「排一页 / 一页纸」只是强调单页铺满(本就是默认),无需额外动作。
示例:出算术题 M5 Q60 → 全选 16 类 60 题;出算术题 T7 T8 T13 Q20 → 进位加+退位减+组成与顺序 20 题;出算术题 t2,t3,q60(大小写、逗号、连写都认)。
三、出题流程(对话版闭环)
- 取授权 token:
ToolSearch{tool_names:["connect_open_platform"]}→DeferExecuteTool{skill_id:"library"}得op_开头 token(30 分钟过期,仅作授权语义凭证,不进 stdin)。 - 调出题器:
python gen_paper.py --spec "t2,t3,q60" --write --token <op_xxx> --out <html路径>
---spec编号直出(推荐):parse_spec()把T/K/M编号归题型、Q<n>或独立 >16 整数归题量;大小写不敏感、可无分隔连写。
- 输出 JSON 含paper_no / count / types / db_written。盯住db_written必须等于题量——不等就是写库失败(见红线)。 - 交付:
present_files打开 HTML 预览(含打印/存 PDF 按钮),回家长「卷号 + 题型 + 题量 + 已写库条数」。
四、排版标准(默认·单页铺满 A4)
所有卷默认单页铺满一张 A4:字号 15px、行高 1.65、列数 ceil(N/20)(60题→3列、30题→2列)、每列题目左对齐、整张卷面居中、抬头信息行居中。加 --no-one-page 才退化为多页宽松排版。
答题空位:题面里空白括号统一渲染为 2 个全角空格(约 2 汉字宽书写位),括号内勿用半角空格(会被 HTML 折叠成窄缝)。
五、红线与边界(必须遵守)
- 写库红线:library 脚本在
--stdin模式把整个 stdin 当单个 JSON 解析,且不消费--token-stdin(该标志已失效)。token 绝对不能塞进 stdin——塞 token 首行会让整体 JSON 解析失败、静默写 0 条。正确写法:只把 JSON 经--stdin送入。若脚本回{"error":"输入 JSON 为空或格式非法"},必是 token 行污染了 stdin。 - 题量红线:
generate()去重撞60N次上限即放开重复,题量严格 = N,绝不缩水。 - 批重结构:
batch_add字段放记录顶层(不带properties包装);batch_update每条才是{"record_id":..., "properties":{...}},别混。 - 网络抖动:写库返回 0 条或报
NETWORK_ERROR→ 先做一次只读fetch/query确认状态再重试,别连点。 - 不越界:本 Skill 只出题。批改需先
Read验证能读图(读不了严禁编造判分,曾有伪造事故全量回滚);错题/必练/回滚配方交给上游完整 Skill。
六、上游资产(本 Skill 依赖,勿重建)
- 出题器:
scripts/gen_paper.py(16 类题型函数 +parse_spec+build_html+write_db)。 - 资料库「练习卷记录表」:出题即直写 N 条(卷号/题号/题型/题面/正确答案/结果=未批改/练习日期)。
- 完整闭环(批改/错题/必练/回滚):见上游
小学算术skill的 SKILL.md。
七、常见编号→题意速查(agent 自检用)
出算术题 t3,q40→ T3(10以内加减混合)40 题出算术题 t2,t3,q60→ T2(10以内减法)+ T3(10以内加减混合)60 题出算术题 t1,t2,t3,q60→ T1+T2+T3 60 题出算术题 k1,q30→ 知识点组1(10内加减·分与合)30 题出算术题 m4,q20→ 模板4(连式应用)20 题