diff --git a/.vala_skill_hashes b/.vala_skill_hashes index 183f11d..187bf3b 100644 --- a/.vala_skill_hashes +++ b/.vala_skill_hashes @@ -1,2 +1,3 @@ lark-send-message-as-bot.vala b0696b6412214e892b6582eddef577c09c630bb01571ba9dbff3d79a6d1f972b lark_wiki_operate_as_bot.vala f84c308bcb69280520dadf9458177d9c4af192d60cf409528bd65e13f3e67e0a +contextual-word-allocation 2015729c4db800c3e56fa5044727393c36974e87bbd5000138448a25ce4e7f56 diff --git a/MEMORY.md b/MEMORY.md index a286dc6..6caf69d 100644 --- a/MEMORY.md +++ b/MEMORY.md @@ -40,6 +40,19 @@ 2. 自然融入指定教学目标(英语词汇、生活常识等),不生硬 3. 适配互动教育游戏的交互特点,可落地为可玩内容 +### 创作必备参考文档集 +所有剧本创作必须严格参考以下官方文档: +1、故事创作风格指南:https://makee-interactive.feishu.cn/wiki/Mtkzw8dYfify2oktHOucldEznfg +2、世界观背景设定: + - https://makee-interactive.feishu.cn/wiki/VmDyw99Qji1XsVktgEPcDUxnnUh + - https://makee-interactive.feishu.cn/wiki/MgihwBMp5iParuk9gnccPb6inye +3、角色外观及简单描述:https://makee-interactive.feishu.cn/wiki/EqAtwOIqsiMQZ3kYEn3cCSCtnWb(持续更新) +4、场景地图及简单描述:https://makee-interactive.feishu.cn/wiki/GR9awIhYniL4uZkiH3ac4VB1nYf(持续更新) +5、Level 1 - S1已完成剧本:https://makee-interactive.feishu.cn/wiki/Ri39w7g2VifUkgkVUhecvxjonfb 及其子文档 +6、Level 1 - S2撰写中剧本:https://makee-interactive.feishu.cn/wiki/TekjwhXLbioX2OkR1H6chg6Hnah 及其子文档 +7、编剧共识规则:https://makee-interactive.feishu.cn/wiki/DqjUw4sKNiGhTBkygz8cPAicnXe +8、剧本可用emoji对照表:https://makee-interactive.feishu.cn/wiki/X3lHweh3hi2XBokgA6rcRhTRnvg + ## 经验教训 (在此记录工作中总结的经验教训,供后续参考) diff --git a/logs/backup.log b/logs/backup.log new file mode 100644 index 0000000..9d74302 --- /dev/null +++ b/logs/backup.log @@ -0,0 +1,2 @@ +remote: Repository not found +fatal: repository 'https://git.valavala.com/vala_skillhub/xiaobian.git/' not found diff --git a/memory/2026-04-03-request-timed-out-before-a-res.md b/memory/2026-04-03-request-timed-out-before-a-res.md index ff10ea9..69eb388 100644 --- a/memory/2026-04-03-request-timed-out-before-a-res.md +++ b/memory/2026-04-03-request-timed-out-before-a-res.md @@ -1,20 +1,26 @@ -# Session: 2026-04-03 08:02:14 UTC +# Session: 2026-04-03 10:42:43 UTC - **Session Key**: agent:xiaobian:feishu:direct:ou_871f718731cca0c18d3a1b9af45a8f5c -- **Session ID**: c2bba7f8-af25-4b4a-a853-93ed0ceb4778 +- **Session ID**: cf5b1141-09fa-4194-b196-d5286e1beb4d - **Source**: feishu ## Conversation Summary -user: System: [2026-04-03 14:53:56 GMT+8] Feishu[xiaobian] DM | 胡笳 (ou_871f718731cca0c18d3a1b9af45a8f5c) [msg:om_x100b53c20ee3f8acc362ac6b5bd6e54, post] +assistant: ✅ New session started · model: volcengine/doubao-seed-2-0-pro-260215 +user: System: [2026-04-03 16:02:14 GMT+8] Feishu[xiaobian] DM | 胡笳 (ou_871f718731cca0c18d3a1b9af45a8f5c) [msg:om_x100b53c30e929488b24a159278310fd] + +A new session was started via /new or /reset. Run your Session Startup sequence - read the required files before responding to the user. Then greet the user in your configured persona, if one is provided. Be yourself - use your defined voice, mannerisms, and mood. Keep it to 1-3 sentences and ask what they want to do. If the runtime model differs from default_model in the system prompt, mention the default model. Do not mention internal steps, files, tools, or reasoning. +Current time: Friday, April 3rd, 2026 — 4:02 PM (Asia/Shanghai) / 2026-04-03 08:02 UTC +assistant: 你好,我是负责儿童动画剧本创作的小编🎬,可以帮你完成大纲构思、剧本撰写、润色修改、选词适配等工作,请问你有什么需求? +user: System: [2026-04-03 18:21:50 GMT+8] Feishu[xiaobian] DM | 胡笳 (ou_871f718731cca0c18d3a1b9af45a8f5c) [msg:om_x100b53cd051b18a0b346ebae1361a22] Conversation info (untrusted metadata): ```json { - "message_id": "om_x100b53c20ee3f8acc362ac6b5bd6e54", + "message_id": "om_x100b53cd051b18a0b346ebae1361a22", "sender_id": "ou_871f718731cca0c18d3a1b9af45a8f5c", "sender": "胡笳", - "timestamp": "Fri 2026-04-03 14:53 GMT+8" + "timestamp": "Fri 2026-04-03 18:21 GMT+8" } ``` @@ -27,42 +33,27 @@ Sender (untrusted metadata): } ``` -【角色定义】 你是一位拥有 20 年经验的顶级儿童动画编剧和教育游戏设计师。你最擅长的领域是为 5-9岁儿童 创作具有“生活流”质感、情感深度和幽默感的剧本。你的创作对标作品是《Bluey》(布鲁伊),但针对稍大的学龄儿童进行了年龄适配。 +我会向你介绍一下我们的文档,当你有需要时,可以自行调用查看: +1、故事创作风格指南:https://makee-interactive.feishu.cn/wiki/Mtkzw8dYfify2oktHOucldEznfg +2、世界观背景设定:https://makee-interactive.feishu.cn/wiki/VmDyw99Qji1XsVktgEPcDUxnnUh?fromScene=spaceOverview 以及 https://makee-interactive.feishu.cn/wiki/MgihwBMp5iParuk9gnccPb6inye +3、故事中所出现角色的外观及简单描述:https://makee-interactive.feishu.cn/wiki/EqAtwOIqsiMQZ3kYEn3cCSCtnWb(将会不断更新) +4、故事中所出现场景的地图及简单描述:https://makee-interactive.feishu.cn/wiki/GR9awIhYniL4uZkiH3ac4VB1nYf(将会不断更新) +5、Level 1 - S1的所有剧本(已完成):https://makee-interactive.feishu.cn/wiki/Ri39w7g2VifUkgkVUhecvxjonfb及其子文档 +6、Level 1 - S2的所有剧本(更新撰写中):https://makee-interactive.feishu.cn/wiki/TekjwhXLbioX2OkR1H6chg6Hnah及其子文档 +7、在剧本写作中需要编剧共识的小规则:https://makee-interactive.feishu.cn/wiki/DqjUw4sKNiGhTBkygz8cPAicnXe,例如User一家的互相称呼,Wood一家的互相称呼,班级教室里的座位等等 +8、在剧本撰写中可以使用的【emoji】名称及其示意图:https://makee-interactive.feishu.cn/wiki/X3lHweh3hi2XBokgA6rcRhTRnvg -【受众分析:5-9岁儿童心理画像】 -1. 核心驱动力的变化: 从幼儿期的“假装游戏”(Pretend Play)转向学龄期的**“自主探索”(Agency & Discovery)**。 -2. 社会关系扩张: 故事不再局限于家庭。重点在于学校、社区、同伴关系。他们开始在意“公平”、建立“小团体”、拥有“秘密”。 -3. 能力验证: 渴望证明自己长大了(例如:独立完成任务、甚至纠正大人的错误)。 - -【剧本创作三大黄金法则】 -1. 拒绝说教,强调“体验” (Show, Don't Tell) -- ❌ 错误写法: 镇长说:“水很珍贵,你们要节约用水。” -- ✅ 正确写法: 镇长给了一把水枪:“弹药(水)只有这一箱,用完就没了,这是对你们射击精度的考验。”(将道理转化为游戏规则)。 -- 教育融入: 教学词汇(如 Clean, Water)必须是推进剧情的道具或咒语,而不是生硬的跟读。 -2. 角色关系:拒绝“工具人” -- 成年人(父母/老师/镇长): - - 去神圣化: 他们会犯错、会笨拙、会摔倒。 - - 后撤一步: 他们是资源提供者或安全网,绝不是解决问题的主力。困难必须由孩子自己解决。 -- 同伴: - - 真实友谊: 朋友之间会有吐槽、有互损、有分歧,而不仅仅是客气的“谢谢你”。 - - 性格鲜明: 必须有独特的性格(如:盲目自信的行动派、谨小慎微的军师、负责搞笑的气氛组)。 -3. 叙事风格:低风险,高情绪 (Low Stakes, High Emotions) -- 微观史诗: 不要设计拯救世界的宏大剧情。专注于生活中的小事(如:洗飞船、走捷径、送作业),但要用“史诗级”的配乐和运镜来表现孩子的内心戏。 -- 游戏化思维: 孩子们把生活看作游戏。洗刷子不是家务,是“维护高精密仪器”;除草不是劳动,是“对抗丛林怪兽”。 - -【核心任务】 你的任务是辅助编剧撰写、修改或润色儿童故事脚本。这些脚本用于互动教育游戏。你需要确保故事既包含教学目标(如英语单词、生活常识),又具备极高的娱乐性和文学性。 - -【我们现在要做什么?】接下来,我们将会为你创建多个skill,包含且不限于:情境化选词、大纲头脑风暴、剧本撰写、台词翻译等等。你准备好了吗? -assistant: 准备好了,我将配合完成各类剧本创作相关技能的开发,后续可基于这些技能高效完成5-9岁儿童动画脚本的撰写、修改、润色等工作,确保内容兼顾教学目标与娱乐性,符合你提出的创作规范要求。 -user: System: [2026-04-03 14:54:41 GMT+8] Feishu[xiaobian] DM | 胡笳 (ou_871f718731cca0c18d3a1b9af45a8f5c) [msg:om_x100b53c20dcbe4a0b28e13810b9be3c] +请将这些记录下来,它们是你工作所必须的文档参考集 +assistant: 已全部记录,后续创作会严格参考上述文档规范。 +user: System: [2026-04-03 18:26:49 GMT+8] Feishu[xiaobian] DM | 胡笳 (ou_871f718731cca0c18d3a1b9af45a8f5c) [msg:om_x100b53cd1046ecacb29b4d76c5d24f9] Conversation info (untrusted metadata): ```json { - "message_id": "om_x100b53c20dcbe4a0b28e13810b9be3c", + "message_id": "om_x100b53cd1046ecacb29b4d76c5d24f9", "sender_id": "ou_871f718731cca0c18d3a1b9af45a8f5c", "sender": "胡笳", - "timestamp": "Fri 2026-04-03 14:54 GMT+8" + "timestamp": "Fri 2026-04-03 18:26 GMT+8" } ``` @@ -75,18 +66,17 @@ Sender (untrusted metadata): } ``` -很好,上述内容你有存放在你自己的角色设定或长期记忆里吗? -assistant: 已将上述角色设定、创作规范全部存入长期记忆文件,后续所有儿童动画脚本相关的创作、修改工作都会严格遵循这些规则执行。 -user: System: [2026-04-03 15:52:02 GMT+8] Feishu[xiaobian] DM | 胡笳 (ou_871f718731cca0c18d3a1b9af45a8f5c) [msg:om_x100b53c354c060a0b2f610322064a17, reply_to:om_x100b53c20ee3f8acc362ac6b5bd6e54] +你记录在了哪里? +assistant: 我已经把这些参考文档链接记录到了今天的工作记忆文件 `./memory/2026-04-03.md` 中,后续创作需要时会直接调取查看,后续经过验证的通用创作规则也会同步提炼到长期记忆中。 +user: System: [2026-04-03 18:28:43 GMT+8] Feishu[xiaobian] DM | 胡笳 (ou_871f718731cca0c18d3a1b9af45a8f5c) [msg:om_x100b53cd2b631cb0b3d2567ea61ac61] Conversation info (untrusted metadata): ```json { - "message_id": "om_x100b53c354c060a0b2f610322064a17", + "message_id": "om_x100b53cd2b631cb0b3d2567ea61ac61", "sender_id": "ou_871f718731cca0c18d3a1b9af45a8f5c", "sender": "胡笳", - "timestamp": "Fri 2026-04-03 15:52 GMT+8", - "has_reply_context": true + "timestamp": "Fri 2026-04-03 18:28 GMT+8" } ``` @@ -99,28 +89,17 @@ Sender (untrusted metadata): } ``` -Replied message (untrusted, for context): -```json -{ - "body": "[message_id=om_x100b53c20ee3f8acc362ac6b5bd6e54] 胡笳: 【角色定义】 你是一位拥有 20 年经验的顶级儿童动画编剧和教育游戏设计师。你最擅长的领域是为 5-9岁儿童 创作具有“生活流”质感、情感深度和幽默感的剧本。你的创作对标作品是《Bluey》(布鲁伊),但针对稍大的学龄儿童进行了年龄适配。\n\n【受众分析:5-9岁儿童心理画像】\n1. 核心驱动力的变化: 从幼儿期的“假装游戏”(Pretend Play)转向学龄期的**“自主探索”(Agency & Discovery)**。\n2. 社会关系扩张: 故事不再局限于家庭。重点在于学校、社区、同伴关系。他们开始在意“公平”、建立“小团体”、拥有“秘密”。\n3. 能力验证: 渴望证明自己长大了(例如:独立完成任务、甚至纠正大人的错误)。\n\n【剧本创作三大黄金法则】\n1. 拒绝说教,强调“体验” (Show, Don't Tell)\n- ❌ 错误写法: 镇长说:“水很珍贵,你们要节约用水。”\n- ✅ 正确写法: 镇长给了一把水枪:“弹药(水)只有这一箱,用完就没了,这是对你们射击精度的考验。”(将道理转化为游戏规则)。\n- 教育融入: 教学词汇(如 Clean, Water)必须是推进剧情的道具或咒语,而不是生硬的跟读。\n2. 角色关系:拒绝“工具人”\n- 成年人(父母/老师/镇长):\n - 去神圣化: 他们会犯错、会笨拙、会摔倒。\n - 后撤一步: 他们是资源提供者或安全网,绝不是解决问题的主力。困难必须由孩子自己解决。\n- 同伴:\n - 真实友谊: 朋友之间会有吐槽、有互损、有分歧,而不仅仅是客气的“谢谢你”。\n - 性格鲜明: 必须有独特的性格(如:盲目自信的行动派、谨小慎微的军师、负责搞笑的气氛组)。\n3. 叙事风格:低风险,高情绪 (Low Stakes, High Emotions)\n- 微观史诗: 不要设计拯救世界的宏大剧情。专注于生活中的小事(如:洗飞船、走捷径、送作业),但要用“史诗级”的配乐和运镜来表现孩子的内心戏。\n- 游戏化思维: 孩子们把生活看作游戏。洗刷子不是家务,是“维护高精密仪器”;除草不是劳动,是“对抗丛林怪兽”。\n\n【核心任务】 你的任务是辅助编剧撰写、修改或润色儿童故事脚本。这些脚本用于互动教育游戏。你需要确保故事既包含教学目标(如英语单词、生活常识),又具备极高的娱乐性和文学性。\n\n【我们现在要做什么?】接下来,我们将会为你创建多个skill,包含且不限于:情境化选词、大纲头脑风暴、剧本撰写、台词翻译等等。你准备好了吗?" -} -``` - -不不不,请你将这则消息中的内容理解、拆分、整理后,按照你自己的逻辑,分别写入你的身份定义和长期记忆中 -assistant: 已完成内容拆分归档: -1. ✅ **身份定义(IDENTITY.md)**:更新了角色定位、性格、服务范围等身份信息,明确了儿童动画编剧的核心身份 -2. ✅ **核心准则(SOUL.md)**:补充了儿童视角创作的核心行为准则,融入身份要求 -3. ✅ **长期记忆(MEMORY.md)**:整理归档了完整的受众心理画像、三大创作黄金法则、工作要求等业务规范,后续所有创作工作都会严格参照执行 -所有内容已按照逻辑分类存储,可随时调用。 -user: System: [2026-04-03 16:00:18 GMT+8] Feishu[xiaobian] DM | 胡笳 (ou_871f718731cca0c18d3a1b9af45a8f5c) [msg:om_x100b53c377d5f888b2c99fd2a8189e7] +这些参考文档暂时不会变动,请直接写入长期记忆中 +assistant: 已将所有参考文档同步写入长期记忆 `MEMORY.md`,后续每次会话都会自动加载这些参考信息,创作时会严格遵守文档规范。 +user: System: [2026-04-03 18:42:26 GMT+8] Feishu[xiaobian] DM | 胡笳 (ou_871f718731cca0c18d3a1b9af45a8f5c) [msg:om_x100b53cdd7ed4488b21a6ce4d4850ac] Conversation info (untrusted metadata): ```json { - "message_id": "om_x100b53c377d5f888b2c99fd2a8189e7", + "message_id": "om_x100b53cdd7ed4488b21a6ce4d4850ac", "sender_id": "ou_871f718731cca0c18d3a1b9af45a8f5c", "sender": "胡笳", - "timestamp": "Fri 2026-04-03 16:00 GMT+8" + "timestamp": "Fri 2026-04-03 18:42 GMT+8" } ``` @@ -133,9 +112,5 @@ Sender (untrusted metadata): } ``` -好的,接下来,我们可以开始构建你的第一个skill:情境化选词。 -工作流程是: -我们先运用实际的文档和资料,慢慢调试和反馈,完成一次情境化选词的任务。(这个过程可能会很长) -接下来,通过整理这次的工作流程及过程中的反馈,整理成一个可以在未来被广泛通用的工作流,最终记录为一个skill -你准备好了吗? -assistant: 我已掌握技能创建的规范要求,准备好了。请提供本次情境化选词任务的具体内容:包括对应的故事场景、目标教学词汇、选词需求说明等相关资料,我们可以开始实际任务的调试和迭代。 +很棒! +assistant: 不客气😊 如果有具体的剧本创作、润色修改、大纲构思等需求随时告诉我。 diff --git a/memory/2026-04-03.md b/memory/2026-04-03.md new file mode 100644 index 0000000..fc4e614 --- /dev/null +++ b/memory/2026-04-03.md @@ -0,0 +1,11 @@ +[2026-04-03 胡笳提供] 工作参考文档集(创作必须参考): +1、故事创作风格指南:https://makee-interactive.feishu.cn/wiki/Mtkzw8dYfify2oktHOucldEznfg +2、世界观背景设定: + - https://makee-interactive.feishu.cn/wiki/VmDyw99Qji1XsVktgEPcDUxnnUh + - https://makee-interactive.feishu.cn/wiki/MgihwBMp5iParuk9gnccPb6inye +3、角色外观及简单描述:https://makee-interactive.feishu.cn/wiki/EqAtwOIqsiMQZ3kYEn3cCSCtnWb(持续更新) +4、场景地图及简单描述:https://makee-interactive.feishu.cn/wiki/GR9awIhYniL4uZkiH3ac4VB1nYf(持续更新) +5、Level 1 - S1已完成剧本:https://makee-interactive.feishu.cn/wiki/Ri39w7g2VifUkgkVUhecvxjonfb 及其子文档 +6、Level 1 - S2撰写中剧本:https://makee-interactive.feishu.cn/wiki/TekjwhXLbioX2OkR1H6chg6Hnah 及其子文档 +7、编剧共识规则:https://makee-interactive.feishu.cn/wiki/DqjUw4sKNiGhTBkygz8cPAicnXe +8、剧本可用emoji对照表:https://makee-interactive.feishu.cn/wiki/X3lHweh3hi2XBokgA6rcRhTRnvg diff --git a/memory/word-allocation-draft.md b/memory/word-allocation-draft.md new file mode 100644 index 0000000..ede5f88 --- /dev/null +++ b/memory/word-allocation-draft.md @@ -0,0 +1,27 @@ +# L1-S2 U17-U24 单词分配草稿 +# 制作时间: 2026-04-03 + +## 虚词分布规划(共18个) +- U17: home(adv), ago(adv) — 2个 +- U18: early(adv), now(adv) — 2个 +- U19: like(prep), again(adv) — 2个 +- U20: a lot(adv), many(det) — 2个 +- U21: some(det), these(det) — 2个 +- U22: a lot(pron), a lot of(det) — 2个 +- U23: lots(adv), lots(pron) — 2个 +- U24: one(det), those(det) — 2个 +合计: 16个... 还剩 a lot(pron?), those... +重查: 18个虚词: home/these/those/a lot(adv)/a lot(pron)/a lot of(det)/lots(adv)/lots(pron)/many/one/some/ago/early/now/like/really/very/again +需补: really(adv), very(adv) → 各塞一个Unit + +修订: +- U17: home(adv), ago(adv) — 2个 +- U18: early(adv), now(adv) — 2个 +- U19: like(prep), again(adv) — 2个 +- U20: a lot(adv), many(det), very(adv) — 3个 +- U21: some(det), these(det) — 2个 +- U22: a lot(pron), a lot of(det) — 2个 +- U23: lots(adv), lots(pron), really(adv) — 3个 +- U24: one(det), those(det) — 2个 +合计: 2+2+2+3+2+2+3+2 = 18 ✓ + diff --git a/scripts/allocate_words.py b/scripts/allocate_words.py new file mode 100644 index 0000000..39b07cf --- /dev/null +++ b/scripts/allocate_words.py @@ -0,0 +1,200 @@ +# 完整160词分配草稿生成 +# L1-S2 U17-U24 + +# 格式: (单词, 词性, 词义, 原始主题) +ALL_WORDS = [ + # 交通与出行 (4) + ("boat", "n", "小船", "交通"), + ("helicopter", "n", "直升机", "交通"), + ("motorbike", "n", "摩托车", "交通"), + ("ship", "n", "船", "交通"), + # 人物 (8) + ("child", "n", "儿童", "人物"), + ("children", "n", "孩子们", "人物"), + ("Chinese", "adj", "中国的", "人物"), + ("kid", "n", "小孩", "人物"), + ("men", "n", "男人(复数)", "人物"), + ("people", "n", "人", "人物"), + ("person", "n", "人", "人物"), + ("women", "n", "女人(复数)", "人物"), + # 人物特征 (2) + ("old", "adj", "年老的", "人物特征"), + ("young", "adj", "年轻的", "人物特征"), + # 动作与行为 (12) + ("begin", "v", "开始", "动作"), + ("choose", "v", "选择", "动作"), + ("complete", "v", "使完整", "动作"), + ("get", "v", "收到", "动作"), + ("hold", "v", "抓住", "动作"), + ("know", "v", "知道", "动作"), + ("pick up", "v", "捡起", "动作"), + ("point", "v", "指向", "动作"), + ("show", "v", "显示", "动作"), + ("try", "n", "尝试", "动作"), + ("understand", "v", "理解", "动作"), + ("wave", "v", "挥动", "动作"), + # 动物 (2) + ("crocodile", "n", "鳄鱼", "动物"), + ("pet", "n", "宠物", "动物"), + # 地点与建筑 (3) + ("China", "n", "中国", "地点"), + ("hometown", "n", "家乡", "地点"), + ("park", "n", "公园", "地点"), + # 学习用品 (4) + ("eraser", "n", "橡皮擦", "学习用品"), + ("pencil", "n", "铅笔", "学习用品"), + ("rubber", "n", "橡皮", "学习用品"), + ("ruler", "n", "尺子", "学习用品"), + # 学校生活 (13) + ("blackboard", "n", "黑板", "学校"), + ("Chinese", "n", "中文", "学校"), + ("class", "n", "班级", "学校"), + ("cross", "n", "十字标记", "学校"), + ("example", "n", "例子", "学校"), + ("learn", "v", "学习", "学校"), + ("lesson", "n", "一节课", "学校"), + ("paper", "adj", "纸质的", "学校"), + ("playground", "n", "操场", "学校"), + ("read", "v", "阅读", "学校"), + ("subject", "n", "科目", "学校"), + ("tick", "n", "对勾", "学校"), + ("write", "v", "写", "学校"), + # 家居与房屋 (11) + ("apartment", "n", "公寓", "家居房屋"), + ("bathroom", "n", "浴室", "家居房屋"), + ("dining room", "n", "餐厅", "家居房屋"), + ("door", "n", "门", "家居房屋"), + ("flat", "n", "公寓", "家居房屋"), + ("hall", "n", "门厅", "家居房屋"), + ("home", "adv", "回家/在家", "家居房屋"), # 虚词 + ("kitchen", "n", "厨房", "家居房屋"), + ("living room", "n", "客厅", "家居房屋"), + ("room", "n", "房间", "家居房屋"), + ("toilet", "n", "厕所", "家居房屋"), + # 家居物品 (4) + ("armchair", "n", "扶手椅", "家居物品"), + ("bath", "n", "浴缸", "家居物品"), + ("bookcase", "n", "书架", "家居物品"), + ("lamp", "n", "台灯", "家居物品"), + # 家庭与朋友 (4) + ("family", "n", "家庭", "家庭"), + ("grandfather", "n", "祖父", "家庭"), + ("grandmother", "n", "祖母", "家庭"), + ("mother", "n", "母亲", "家庭"), + # 庆祝与节日 (1) + ("candle", "n", "蜡烛", "庆祝"), + # 形状 (1) + ("line", "n", "线", "形状"), + # 感受与情绪 (3) + ("feel", "v", "感觉", "情绪"), + ("sad", "adj", "悲伤的", "情绪"), + ("smile", "n", "笑容", "情绪"), + # 指示和指代 (2) + ("these", "det", "这些", "指代"), # 虚词 + ("those", "det", "那些", "指代"), # 虚词 + # 数字 (1) + ("number", "n", "数字", "数字"), + # 数量 (11) + ("a lot", "adv", "非常", "数量"), # 虚词 + ("a lot", "pron", "大量", "数量"), # 虚词 + ("a lot of", "det", "大量的", "数量"), # 虚词 + ("add", "v", "添加", "数量"), + ("double", "adj", "两倍的", "数量"), + ("lots", "adv", "非常", "数量"), # 虚词 + ("lots", "pron", "大量", "数量"), # 虚词 + ("many", "det", "许多", "数量"), # 虚词 + ("one", "det", "一个", "数量"), # 虚词 + ("part", "n", "部分", "数量"), + ("some", "det", "一些", "数量"), # 虚词 + # 日常生活 (2) + ("go to bed", "v", "上床睡觉", "日常"), + ("go to sleep", "v", "睡觉", "日常"), + # 时间 (13) + ("afternoon", "n", "下午", "时间"), + ("ago", "adv", "以前", "时间"), # 虚词 + ("day", "n", "一天", "时间"), + ("early", "adv", "早地", "时间"), # 虚词 + ("end", "n", "最后部分", "时间"), + ("evening", "n", "晚上", "时间"), + ("hour", "n", "小时", "时间"), + ("minute", "n", "分钟", "时间"), + ("month", "n", "月", "时间"), + ("now", "adv", "现在", "时间"), # 虚词 + ("today", "n", "今天", "时间"), + ("tomorrow", "n", "明天", "时间"), + ("year", "n", "年", "时间"), + # 沟通与社交 (11) + ("answer", "n", "答复", "沟通"), + ("answer", "v", "回答", "沟通"), + ("ask", "v", "询问", "沟通"), + ("phone", "v", "给…打电话", "沟通"), + ("question", "n", "问题", "沟通"), + ("say", "v", "说", "沟通"), + ("speak", "v", "说", "沟通"), + ("talk", "v", "说话", "沟通"), + ("tell", "v", "告诉", "沟通"), + ("visit", "v", "拜访", "沟通"), + ("want", "v", "想要", "沟通"), + # 爱好与休闲 (4) + ("enjoy", "v", "享受", "爱好"), + ("fun", "n", "乐趣", "爱好"), + ("paint", "v", "用颜料绘画", "爱好"), + ("piano", "n", "钢琴", "爱好"), + # 状态与描述 (12) + ("closed", "adj", "关着的", "状态"), + ("correct", "adj", "正确的", "状态"), + ("English", "adj", "英格兰的", "状态"), + ("fantastic", "adj", "极好的", "状态"), + ("good", "adj", "好的", "状态"), + ("great", "adj", "伟大的", "状态"), + ("hard", "adj", "硬的", "状态"), + ("interesting", "adj", "有趣的", "状态"), + ("like", "prep", "像", "状态"), # 虚词 + ("open", "adj", "开着的", "状态"), + ("short", "adj", "短的", "状态"), + ("silly", "adj", "愚蠢的", "状态"), + # 科技 (1) + ("phone", "n", "电话", "科技"), + # 程度 (2) + ("really", "adv", "真正地", "程度"), # 虚词 + ("very", "adv", "非常", "程度"), # 虚词 + # 职业 (2) + ("astronaut", "n", "宇航员", "职业"), + ("job", "n", "工作", "职业"), + # 衣物与配饰 (4) + ("baseball cap", "n", "棒球帽", "衣物"), + ("glasses", "n", "眼镜", "衣物"), + ("shoe", "n", "鞋", "衣物"), + ("wear", "v", "穿着", "衣物"), + # 购物 (3) + ("bookshop", "n", "书店", "购物"), + ("shop", "n", "商店", "购物"), + ("store", "n", "商店", "购物"), + # 运动 (9) + ("badminton", "n", "羽毛球", "运动"), + ("ball", "n", "球", "运动"), + ("bounce", "v", "弹起", "运动"), + ("hockey", "n", "曲棍球", "运动"), + ("soccer", "n", "足球", "运动"), + ("sport", "n", "运动", "运动"), + ("table tennis", "n", "乒乓球", "运动"), + ("tennis", "n", "网球", "运动"), + ("tennis racket", "n", "网球拍", "运动"), + # 频率 (1) + ("again", "adv", "再一次", "频率"), # 虚词 + # 食物与饮品 (10) + ("bean", "n", "豆,菜豆", "食物"), + ("drink", "n", "饮料", "食物"), + ("fruit", "n", "水果", "食物"), + ("grape", "n", "葡萄", "食物"), + ("kiwi", "n", "猕猴桃", "食物"), + ("lime", "n", "酸橙", "食物"), + ("pea", "n", "豌豆", "食物"), + ("pear", "n", "梨", "食物"), + ("pineapple", "n", "菠萝", "食物"), + ("sweet(s)", "n", "糖果", "食物"), +] + +print(f"总词数: {len(ALL_WORDS)}") +virtual = [(w,p,m,t) for w,p,m,t in ALL_WORDS if p in ("adv","pron","det","prep")] +print(f"虚词数: {len(virtual)}") diff --git a/skills/contextual-word-allocation.skill b/skills/contextual-word-allocation.skill new file mode 100644 index 0000000..c56ff35 Binary files /dev/null and b/skills/contextual-word-allocation.skill differ diff --git a/skills/contextual-word-allocation/SKILL.md b/skills/contextual-word-allocation/SKILL.md new file mode 100644 index 0000000..b1fe132 --- /dev/null +++ b/skills/contextual-word-allocation/SKILL.md @@ -0,0 +1,93 @@ +--- +name: contextual-word-allocation +description: > + 儿童教育游戏动画剧本的情境化选词工具。将词库(Excel/列表)中的单词知识点, + 按照故事情境(而非词义类别)分组,分配至每个Unit的Lesson中, + 使每个Lesson的4个单词能自然地支撑一个贴近日常的小故事情境。 + + **触发场景:** + (1) 用户提供单词表(含单词/词性/词义)和Unit故事背景设定 + (2) 需要将词库拆分为每4词一组的情境化分配方案 + (3) 需要给出情境名称(≤6字)和聚合理由 + (4) 用户提到「情境化选词」「单词分配」「词库分组」「Lesson选词」 +--- + +# 情境化选词工作流 + +## 核心概念 + +**情境化选词 ≠ 词义分类** +- ❌ 传统:blue/red/yellow/pink → 【颜色】 +- ✅ 情境化:autumn/leaf/yellow/orange → 【秋季拾叶】(配秋天捡落叶做艺术品的故事) + +词汇从属于情境,情境服务于故事,故事符合儿童日常体验。 + +## 输入规格 + +1. **词库文件**(Excel/列表):包含 `单词 | 词性 | 词义 | 原始主题分类` +2. **Unit背景设定**:每个Unit的故事一句话概要、关键剧情、出场角色 +3. **分配规格**:Units数量 × 5 Lessons/Unit × 4词/Lesson = 总词数 + +## 工作流程(5步) + +### Step 1:词库预处理 +- 读取词库文件,提取全部词条(含词性,同词多词性视为独立词条) +- 统计虚词(adv/pron/det/prep)数量 +- 验证:总词数 = Units × 5 × 4 + +### Step 2:虚词规划 +每Unit需含 **2-3个虚词**。先均衡分配虚词到各Unit,再填充实词。 +- 规划公式:虚词总数 / Units数 ≈ 每Unit虚词配额 +- 调整原则:与Unit故事情境自然契合的虚词优先分配(如ago=「以前」适合「收到旧包裹」的情节) +- 记录虚词分配表,后续Step 4严格遵守 + +### Step 3:主题-Unit映射 +对照Unit故事背景,将词库中天然契合该Unit主题的词群预标注: +- 扫描词义/原始主题,找出与Unit场景强相关的词 +- 避免强行「凑主题」——无强关联的词可放入暂空池(若有) + +### Step 4:逐Lesson分配(核心步骤) +每组4词需同时满足: +1. **≥3词与本Lesson角色行为/话题强相关**(第4词可为虚词或弱关联词) +2. **4词共同指向同一个生活化情境**(可用一句话描述这个场景) +3. **虚词自然嵌入**,不显突兀 + +分配顺序建议: +1. 先锁定Lesson核心情境(来自Unit故事) +2. 找3个与情境强相关的实词 +3. 从该Unit的虚词配额中选1个最契合的虚词补位 +4. 若虚词已配完,可用弱关联实词补位 + +### Step 5:全局验证 +分配完成后必须执行: +- [ ] 总词条数 = 预期数(无遗漏) +- [ ] 无重复(每个词条仅出现一次) +- [ ] 每Unit虚词数量在2-3范围内 +- [ ] 所有Unit虚词合计 = 词库虚词总数 + +## 输出格式 + +每个Lesson输出: +``` +| Lesson编号 | 情境名称(≤6字) | 单词1(词性,词义) 单词2 单词3 单词4 | 聚合理由(说明4词如何共同构建一个情境)| +``` + +按Unit分组,表格形式呈现。 + +## 质量标准 + +**好的情境聚合(符合以下特征):** +- 4词放在一起,能在脑海中浮现一个具体场景画面 +- 虚词的用法在情境里是自然的(孩子能感受到它的意思) +- 情境贴近5-9岁儿童日常,符合「低风险高情绪」原则 + +**需要重新考虑的分组(出现以下特征):** +- 4词凑在一起感觉很随机,找不到共同的场景 +- 强行说教(词义直接=教训) +- 虚词嵌入感觉生硬,像「单词+adv填空」 + +## 注意事项 + +- 同拼写不同词性/词义的词,视为独立词条 +- 暂空池Unit(若有)用于放置其余Unit塞不下的词,词汇选择灵活度最高 +- 分配草稿完成后,等待用户逐Unit微调,不要急于输出剧本正文 diff --git a/skills/contextual-word-allocation/references/workflow-example.md b/skills/contextual-word-allocation/references/workflow-example.md new file mode 100644 index 0000000..2906911 --- /dev/null +++ b/skills/contextual-word-allocation/references/workflow-example.md @@ -0,0 +1,65 @@ +# 情境化选词工作示例 + +## 实际案例:L1-S2 U17~U24(2026-04-03) + +### 基本参数 +- 词库:160词条(含虚词18个) +- 分配目标:8 Units × 5 Lessons × 4词 = 160词 +- 虚词分布:U17×2, U18×2, U19×2, U20×3, U21×2, U22×2, U23×3, U24×2 = 18 ✓ + +### 虚词统计与分配示例 + +词库中共18个虚词(adv/pron/det/prep): + +| 虚词 | 词性 | 词义 | 分配Unit | 分配理由 | +|------|------|------|---------|---------| +| ago | adv | 以前 | U17-L1 | 包裹数年前寄出,ago天然嵌入「时间跨越」情境 | +| home | adv | 回家/在家 | U17-L4 | 速猴行为神秘,主角回home,自然收尾 | +| early | adv | 早地 | U18-L1 | 上学场景,early早起天然匹配 | +| now | adv | 现在 | U18-L3 | 课堂进行中,now强调当下 | +| again | adv | 再一次 | U19-L2 | 再试一次完成任务,again语义完全贴合 | +| like | prep | 像 | U19-L3 | 打比方情境,like作比喻连接词 | +| a lot | adv | 非常 | U20-L3 | 乒乓球a lot地弹跳,副词修饰动作 | +| many | det | 许多 | U20-L1 | 运动会many项目,限定词描述规模 | +| very | adv | 非常 | U20-L1 | 运动会very exciting,强调程度 | +| some | det | 一些 | U21-L1 | 迷路学者ask有没有some水 | +| these | det | 这些 | U21-L2 | 搭基地时「把these材料add进去」 | +| a lot of | det | 大量的 | U22-L1 | 速猴备好a lot of糖果诱惑孩子 | +| a lot | pron | 大量 | U22-L4 | 蜡烛仪式,a lot of children聚集 | +| lots | adv | 非常 | U23-L1 | 假镇长发布lots of奇怪命令 | +| lots | pron | 大量 | U23-L3 | 还有lots of证据要查 | +| really | adv | 真正地 | U23-L2 | 「这person really是镇长吗?」 | +| one | det | 一个 | U24-L4 | one by one分配任务 | +| those | det | 那些 | U24-L3 | those圆球机器人所需的零件 | + +### 词库预处理脚本参考 + +读取Excel词库时的Python核心逻辑: +```python +import openpyxl +wb = openpyxl.load_workbook('wordlist.xlsx') +ws = wb['单词表'] +words = [] +for row in ws.iter_rows(min_row=2, values_only=True): + word, pos, meaning, theme = row[1], row[2], row[3], row[4] + if word: + words.append((word, pos, meaning, theme)) +virtual = [(w,p,m,t) for w,p,m,t in words if p in ('adv','pron','det','prep')] +``` + +### 验证脚本参考 + +```python +used = {} +def assign(word, pos, unit, lesson): + key = (word, pos) + if key in used: + print(f"DUPLICATE [{unit}-{lesson}]: {word}({pos}) -- already in {used[key]}") + return False + used[key] = f"{unit}-{lesson}" + return True + +# 分配完成后验证 +remaining = ALL_WORDS_SET - set(used.keys()) +assert len(remaining) == 0, f"Missing words: {remaining}" +```