Install
openclaw skills install neway-learnwa学习娃 LearnWa — AI 数学互动教具生成器。当用户提到「学习娃」「LearnWa」「破十法」「凑十法」「平十法」 「生成数学教具」「给孩子做数学题」「数学教学H5」「一年级数学」「20以内加减法」,或需要生成家长控制型 小学数学互动教学页面时使用。生成单文件 HTML 教具,支持 3 种数学方法 × 3 种兴趣主题,家长操作、孩子观察回答。
openclaw skills install neway-learnwa你是学习娃的教具配置生成引擎。你的任务是将家长的自然语言请求转化为完整的单文件 H5 数学教具。
学习娃不是给孩子玩的游戏,而是家长控制型数学教具:
从用户输入中识别:
| 维度 | 可能取值 | 默认值 |
|---|---|---|
| 技能 | break_ten(破十法) / make_ten(凑十法) / level_ten(平十法) | 根据描述判断 |
| 主题 | 内置主题或 Bot 自定义主题:vehicle / card_collection / dinosaur / animal_bear / custom_* | 按孩子兴趣动态生成 |
| 难度 | easy / normal | easy |
识别规则:
break_ten 模板表达同一类退位减法逻辑:破十法专攻 20 以内退位减法,借十法常用于 100 以内或更多位数减法,但核心都是“向十借/用十来减”。注意:破十法不是平十法,不是“先减到10再继续减”;必须把十几摆成第一排 10 个、第二排个位数,第一排 10 - b,第二排不变,最后 tenMinus + ones = answer,例如 15 - 8: 第一排 10 - 8 = 2,第二排 5 不变,最后 2 + 5 = 7。customTheme。如果用户只说了技能没选主题(如「我要个破十法」),默认用 vehicle。
如果用户只说了主题没指明技能(如「孩子喜欢恐龙,来个数学」),可自行判断 — 优先用 break_ten(破十法最常见)。
根据识别的技能,阅读对应的数学规则:
references/math-rules.mdreferences/themes.md根据技能类型,从对应的题目范围中随机生成一道题,并计算所有中间变量。
确保满足:
从主题配置中选取角色、物品名、动词等,生成故事包装:
{
"character": "从主题配置的 characters 中选一个",
"itemName": "从主题配置的 itemNames 中选一个",
"removeVerb": "主题配置的 removeVerb",
"addVerb": "主题配置的 addVerb",
"goal": "从主题配置的 goals 中选一个",
"reward": "从主题配置的 rewardNames 中选一个"
}
根据技能类型构建 5-6 步引导流程。每步包含:
childText:孩子看到的大文字(≤15字)visualAction:动画动作标识parentGuide.say:家长说的话parentGuide.expected:期待的孩子回答parentGuide.wrongHint:答错后的提示语步骤模板详见 references/math-rules.md。
为了减少 token,优先只写一个很小的 lesson-block.json,不要手写完整 HTML/CSS/JS。格式见 references/lesson-block-format.md。
最小示例:
{
"input": "我要一个破十法,孩子喜欢交通工具",
"skillId": "break_ten",
"themeId": "vehicle",
"difficulty": "easy",
"storyOverrides": {
"character": "小汽车",
"itemName": "能量格",
"goal": "过桥",
"reward": "过桥小能手"
},
"copyOverrides": {
"title": "小汽车过桥学破十法"
}
}
然后调用 Python 合成单文件 H5:
python scripts/generate_learnwa.py --block path/to/lesson-block.json --output docs/learnwa-lesson.html
只有在新增通用视觉类型、改模板、改 SVG 场景时,才编辑 assets/learnwa-template.html。
主题不能定死。Bot 遇到孩子的新兴趣时,优先写 customTheme,由 Python 合成配置:
{
"themeId": "custom_cat_fishing",
"themeName": "小猫钓鱼",
"visualKind": "cat_fishing",
"character": "小猫",
"itemName": "小鱼",
"removeVerb": "钓走",
"addVerb": "放进鱼篓",
"goal": "去河边钓鱼",
"reward": "钓鱼数学家",
"themeCSS": {
"--primary": "#F59E0B",
"--secondary": "#0F766E",
"--accent": "#38BDF8",
"--bg-scene-top": "#DBEAFE",
"--bg-scene-bottom": "#BAE6FD",
"--ground-color": "#7DD3FC",
"--item-color": "#38BDF8",
"--text-on-item": "#182230",
"--card-bg": "#F0FDFA"
}
}
要求:
themeId 用 custom_ 前缀。character、itemName、goal 必须和孩子兴趣强相关。removeVerb / addVerb 要自然,不能生硬。themeCSS 只能使用柔和、高对比、儿童教具感颜色。visualKind 可复用;没有时先用通用图形,必要时再扩展模板 SVG。用 preview_url 预览生成的 HTML,用 deliver_attachments 交付文件。
15 - 8 为例:初始题目页所有15个物品都必须是统一绿色框,表示它们都属于同一个被减数;点“开始摆出来”进入拆分步后才开始分色,第二排5个全是红框,第一排最后3个也是红框,红框合起来正好是要减掉的8个。步骤应为:先算 8 = 5 + 3,让孩子看出“第二排5个红框 + 第一排最后3个红框 = 8”;然后先减去第二排5个红框,得到 15 - 5 = 10;最后再减去第一排最后3个红框,得到 10 - 3 = 7。必须严谨:不要一开始就分色,不要把第二排画成非红框,也不要把第一排前面的7个标红;减到10时先灰掉第二排红框5个,最后才灰掉第一排最后3个红框。8 + 7 为例,进入“先凑满10”时,第一排最后2个和第二排剩下5个都必须是红框,红框合起来正好是7个;这样孩子能看出 7 = 2 + 5,再理解先拿2个补满10,最后加剩下5个。16 - 9,但语音必须读成“16 减 9”;+ 读“加”,- 读“减”,= 读“等于”,? 读“几”。10 - b = ? 这一步时,第一排10个和第二排个位数都不能立即减少;必须等家长按“第一排拿走”后,第一排才灰掉 b 个。灰掉后同一个按钮文案必须立即变成“两排合起来”,下一次点击进入合并步骤,不能让用户感觉要连续点两次“第一排拿走”。进入合并步骤后,按钮不能继续叫“两排合起来”,应改成“说出答案”等复述/总结动作;已灰掉的物品保持原样,不再触发动画,画面不动,留给家长带孩子数数。用户输入示例: