就绪
成功: 0 失败: 0

# L1-S2-U14-L1 到你上学啦 (组件录入测试)

生成时间: 2026-04-30 12:44:55 模型: doubao-seed-2.0-pro Wiki: AEPJwf0DUiDkWska4SbceSAbnyc
42
总组件
37
成功
4
失败
1
跳过
1 对话朗读 cId: 0000800 mid_dialog_repeat
生成成功 ▶
jsonData
{ "cType": "mid_dialog_repeat", "cId": "0000800", "title": "表示大家一起上学", "resourceMapping": { "Eva": 663, "Peter": 653, "Vicky": 658 }, "preDialog": [ { "type": "user", "content": "Great!" }, { "type": "user", "content": "Oh, there's no time left." } ], "imgShowTimingList": [ "content" ], "img": "0000800.png", "question": { "type": "user", "content": "Let's go to school now." }, "postDialog": [] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | school |  |

2 对话挖空 cId: 0000801 mid_dialog_fillin
生成成功 ▶
jsonData
{ "cType": "mid_dialog_fillin", "cId": "0000801", "title": "表示一起去上学", "resourceMapping": { "Eva": 663, "Peter": 653, "Vicky": 658 }, "preDialog": [ { "type": "user", "content": "Peter, Eva!" } ], "imgShowTimingList": [], "question": { "type": "user", "desc": "Let's go to ___.", "content": "Let's go to school." }, "optionGroupList": [ { "optionList": [ { "option": "school", "needAudio": true }, { "option": "zoo", "needAudio": true } ], "answer": [ 0 ] } ], "corFeedback": {}, "errFeedback": { "type": "npc", "npcName": "Vicky", "content": "I don't think so." }, "postDialog": [] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | school |  |

3 对话朗读 cId: 0000802 mid_dialog_repeat
生成成功 ▶
jsonData
{ "cType": "mid_dialog_repeat", "cId": "0000802", "title": "告诉 Eva 和 Peter 需要学习", "resourceMapping": { "Eva": 663, "Peter": 653, "Vicky": 658 }, "preDialog": [], "imgShowTimingList": [], "question": { "type": "user", "content": "You need to study." }, "postDialog": [ { "type": "npc", "npcName": "Eva", "content": "No, we want to play!" } ] }
kpInfo (3个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | You need to... |  |
[1] |  |  | study |  |
[2] |  |  | play |  |

4 对话朗读 cId: 0000803 mid_dialog_repeat
生成成功 ▶
jsonData
{ "cType": "mid_dialog_repeat", "cId": "0000803", "title": "表示在学校里也可以玩", "resourceMapping": { "Eva": 663, "Peter": 653, "Vicky": 658 }, "preDialog": [], "imgShowTimingList": [], "question": { "type": "user", "content": "We can play at school." }, "postDialog": [ { "type": "npc", "npcName": "Peter", "content": "That's not fun!" } ] }
kpInfo (3个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | We can... |  |
[1] |  |  | play |  |
[2] |  |  | school |  |

5 对话朗读 cId: 0000804 mid_dialog_repeat
生成成功 ▶
jsonData
{ "cType": "mid_dialog_repeat", "cId": "0000804", "title": "询问 Eva 和 Peter 是否想做学生", "resourceMapping": { "Eva": 663, "Peter": 653, "Vicky": 658 }, "preDialog": [], "imgShowTimingList": [], "question": { "type": "user", "content": "Do you want to be a student?" }, "postDialog": [] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | student |  |

6 对话组句 cId: 0000805 mid_dialog_sentence
生成成功 ▶
jsonData
{ "cType": "mid_dialog_sentence", "cId": "0000805", "title": "表示自己是学生", "resourceMapping": { "Eva": 663, "Peter": 653, "Vicky": 658 }, "preDialog": [ { "type": "user", "content": "Hey, look at me." } ], "imgShowTimingList": [], "question": { "desc": "表示我是一个学生。", "content": "I'm a student." }, "optionList": [ { "option": "I'm", "needAudio": true }, { "option": "student", "needAudio": true }, { "option": "a", "needAudio": true } ], "answer": [ 0, 2, 1 ], "tip": "student 指“学生”。", "corFeedback": {}, "errFeedback": { "type": "npc", "npcName": "Vicky", "content": "Try again." }, "postDialog": [] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | student |  |

7 对话朗读 cId: 0000806 mid_dialog_repeat
生成成功 ▶
jsonData
{ "cType": "mid_dialog_repeat", "cId": "0000806", "title": "表示自己在学校学习", "resourceMapping": { "Eva": 663, "Peter": 653, "Vicky": 658 }, "preDialog": [], "imgShowTimingList": [ "content" ], "img": "0000806.png", "question": { "type": "user", "content": "I study at school." }, "postDialog": [] }
8 对话朗读 cId: 0000807 mid_dialog_repeat
生成成功 ▶
jsonData
{ "cType": "mid_dialog_repeat", "cId": "0000807", "title": "表示自己也玩", "resourceMapping": { "Eva": 663, "Peter": 653, "Vicky": 658 }, "preDialog": [], "imgShowTimingList": [ "content" ], "img": "0000807.png", "question": { "type": "user", "content": "And I play too." }, "postDialog": [] }
9 对话挖空 cId: 0000808 mid_dialog_fillin
生成成功 ▶
jsonData
{ "cType": "mid_dialog_fillin", "cId": "0000808", "title": "表示并不是要学习", "resourceMapping": { "Eva": 663, "Peter": 653, "Vicky": 658 }, "preDialog": [], "imgShowTimingList": [], "question": { "type": "user", "desc": "We're not here to ___.", "content": "We're not here to study." }, "optionGroupList": [ { "optionList": [ { "option": "study", "needAudio": true }, { "option": "student", "needAudio": true } ], "answer": [ 0 ] } ], "corFeedback": {}, "errFeedback": { "type": "npc", "npcName": "Grace", "content": "Are you sure?" }, "postDialog": [] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | study |  |

10 对话朗读 cId: 0000809 mid_dialog_repeat
生成成功 ▶
jsonData
{ "cType": "mid_dialog_repeat", "cId": "0000809", "title": "说出书名", "resourceMapping": { "Eva": 663, "Peter": 653, "Vicky": 658 }, "preDialog": [], "imgShowTimingList": [ "content" ], "img": "0000809.png", "question": { "type": "user", "content": "It's \"Go to School\"." }, "postDialog": [] }
11 听力选择 cId: 0000810 ? 失败 ▶
错误: LLM返回内容不是合法JSON: Expecting value: line 1 column 1 (char 0) 内容: 无
12 对话组句 cId: 0000811 mid_dialog_sentence
生成成功 ▶
jsonData
{ "cType": "mid_dialog_sentence", "cId": "0000811", "title": "表示你们需要学习", "resourceMapping": { "Eva": 663, "Peter": 653, "Vicky": 658 }, "preDialog": [], "imgShowTimingList": [], "question": { "desc": "表示你们需要学习。", "content": "You need to study." }, "optionList": [ { "option": "need to", "needAudio": true }, { "option": "you", "needAudio": true }, { "option": "study", "needAudio": true } ], "answer": [ 1, 0, 2 ], "tip": "study 指“学习”。", "corFeedback": {}, "errFeedback": { "type": "npc", "npcName": "Peter", "content": "Huh?" }, "postDialog": [] }
kpInfo (2个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | You need to... |  |
[1] |  |  | study |  |

13 对话组句 cId: 0000812 mid_dialog_sentence
生成成功 ▶
jsonData
{ "cType": "mid_dialog_sentence", "cId": "0000812", "title": "表示你们需要上学", "resourceMapping": { "Eva": 663, "Peter": 653, "Vicky": 658 }, "preDialog": [], "imgShowTimingList": [], "question": { "desc": "表示你们需要上学。", "content": "You need to go to school." }, "optionList": [ { "option": "need to", "needAudio": true }, { "option": "go to school", "needAudio": true }, { "option": "you", "needAudio": true } ], "answer": [ 2, 0, 1 ], "tip": "go to school 指“上学”。", "corFeedback": {}, "errFeedback": { "type": "npc", "npcName": "Grace", "content": "Try again." }, "postDialog": [] }
kpInfo (2个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | You need to... |  |
[1] |  |  | school |  |

14 对话挖空 cId: 0000813 mid_dialog_fillin
生成成功 ▶
jsonData
{ "cType": "mid_dialog_fillin", "cId": "0000813", "title": "表示可以在学校玩耍", "resourceMapping": { "Eva": 663, "Peter": 653, "Vicky": 658 }, "preDialog": [], "imgShowTimingList": [], "question": { "type": "user", "desc": "Then you can ___ there.", "content": "Then you can play there." }, "optionGroupList": [ { "optionList": [ { "option": "play", "needAudio": true }, { "option": "catch", "needAudio": true } ], "answer": [ 0 ] } ], "corFeedback": {}, "errFeedback": { "type": "npc", "npcName": "Grace", "content": "I don't think so." }, "postDialog": [] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | play |  |

15 对话组句 cId: 0000814 mid_dialog_sentence
生成成功 ▶
jsonData
{ "cType": "mid_dialog_sentence", "cId": "0000814", "title": "表示可以坐校车上学", "resourceMapping": { "Eva": 738, "Peter": 739 }, "preDialog": [], "imgShowTimingList": [], "question": { "desc": "表示我们可以坐校车上学。", "content": "We can take the school bus." }, "optionList": [ { "option": "we can", "needAudio": true }, { "option": "the school bus", "needAudio": true }, { "option": "take", "needAudio": true } ], "answer": [ 0, 2, 1 ], "tip": "句子以 we can 开头。", "corFeedback": {}, "errFeedback": { "type": "npc", "npcName": "Vicky", "content": "No, try again." }, "postDialog": [] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | We can... |  |

16 对话挖空 cId: 0000815 mid_dialog_fillin
生成成功 ▶
jsonData
{ "cType": "mid_dialog_fillin", "cId": "0000815", "title": "表示 Peter 是学生了", "resourceMapping": { "Eva": 738, "Peter": 739 }, "preDialog": [], "imgShowTimingList": [], "question": { "type": "user", "desc": "You are a ___ now.", "content": "You are a student now." }, "optionGroupList": [ { "optionList": [ { "option": "play", "needAudio": true }, { "option": "student", "needAudio": true } ], "answer": [ 1 ] } ], "corFeedback": {}, "errFeedback": { "type": "npc", "npcName": "Grace", "content": "Try again." }, "postDialog": [] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | student |  |

17 核心合作阅读 cId: 0000800 core_reading_order
生成成功 ▶
taskInfo
{ "cType": "core_reading_order", "cId": "0000800", "title": "阅读Brainy的社团加入介绍", "sceneDesc": "你们听说Vala学院没有考试，正在欢呼雀跃。突然发现Pioneer的一项重要任务：加入社团！为什么Pioneer一定要加入社团呢？快来阅读Brainy的介绍吧。", "img": "", "key": [ { "desc": "词汇类", "keyList": [ { "type": "default", "content": "plant", "desc": "n. 植物" }, { "type": "default", "content": "club", "desc": "n. 俱乐部" }, { "type": "default", "content": "join", "desc": "v. 加入" }, { "type": "default", "content": "member", "desc": "n. 成员" }, { "type": "default", "content": "choose", "desc": "v. 选择" }, { "type": "default", "content": "interested", "desc": "adj. 感兴趣的" } ] } ], "resourceMapping": { "Eva": 738, "Peter": 739 } }
materialInfo
{ "text": [ { "textType": "Lcd", "textTitle": "How to Join Clubs?", "textBody": "<sp>You can choose your favourite club to join. If you are interested in something, you can find a club for it. The robot club, the plant club, the sports club, and the reading club are all popular choices.<br>If you are not interested in any club, you can start a new one with friends!<br><sp>图片:[0101106_core reading2]" } ], "question": [ { "type": "npc", "npcName": "Brainy", "content": "At Vala Academy, how can Pioneers get points?", "optionList": [ { "option": "Take many exams.", "feedback": { "type": "npc", "npcName": "Otis", "content": "No! We have no exams!" } }, { "option": "Join clubs.", "feedback": { "type": "npc", "npcName": "Otis", "content": "Right. We need to join a club to get points." } }, { "option": "Level up.", "feedback": { "type": "npc", "npcName": "Otis", "content": "We have to get points first, then we can level up." } } ], "answer": [ 1 ], "meaning": "", "explain": "" }, { "type": "npc", "npcName": "Brainy", "content": "What can you do in a club?", "optionList": [ { "option": "We can earn some money.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "No, that's not right." } }, { "option": "We can play, study and work together.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "That's right! That's what clubs are for!" } }, { "option": "We can only play.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "Hmm… We play, but we also study and work." } } ], "answer": [ 1 ], "meaning": "", "explain": "" }, { "type": "npc", "npcName": "Otis", "content": "How can we choose a club?", "optionList": [ { "option": "We can only choose the plant club and the robot club.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "Nope! We can choose from many clubs." } }, { "option": "We can choose a club we are interested in.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "Yes, exactly! Choose what you like!" } }, { "option": "We must start a new club.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "No, not must. Only if you want to." } } ], "answer": [ 1 ], "meaning": "", "explain": "" }, { "type": "npc", "npcName": "Skylar", "content": "If we are not interested in any club, what should we do?", "optionList": [ { "option": "We can't join any clubs.", "feedback": { "type": "npc", "npcName": "Otis", "content": "Uh… That sounds bad." } }, { "option": "We can start a new club.", "feedback": { "type": "npc", "npcName": "Otis", "content": "Yes! That sounds okay." } }, { "option": "We can only join the plant club.", "feedback": { "type": "npc", "npcName": "Otis", "content": "I don't think so… We have other choices." } } ], "answer": [ 1 ], "meaning": "", "explain": "" } ] }
flowInfo
{ "sequence": [ { "text": [ 0 ] }, { "dialog": { "type": "npc", "npcName": "Brainy", "content": "Now, let’s make sure you understand everything." } }, { "question": [ 0 ] }, { "question": [ 1 ] }, { "text": [ 1 ] }, { "question": [ 2 ] }, { "question": [ 3 ] } ] }
studyInfo
{ "closing": { "type": "npc", "content": "恭喜你完成了所有题目的练习，今天的知识点都掌握得很不错哦，继续加油！", "npcName": "Brainy" }, "learningPart": [ { "leadIn": { "desc": "At Vala Academy, Pioneers don't have exams. But you need points to level up!" }, "type": "npc", "content": "我们来认识一下这段话中的关键单词 points。points 在这里的意思是积分、分数，我们常用 earn points 来表示赚取积分。", "npcName": "Brainy", "learning": [ { "answer": [ 1 ], "meaning": "句意选择题", "optionList": [ { "feedback": { "type": "npc", "content": "不对哦，句中的关键词是 points 积分，不是考试，而且前文也提到了没有考试，再仔细看看吧。", "npcName": "Brainy" }, "option": "但是你需要通过考试才能升级。" }, { "feedback": { "type": "npc", "content": "太棒了！你已经掌握了关键单词 points 和整个句子的意思啦。", "npcName": "Brainy" }, "option": "但是你需要积分来升级。" } ], "question": { "type": "npc", "npcName": "Brainy", "content": "接下来，我们来看下包含 points 的句子 But you need points to level up! 是什么意思呢？" } }, { "answer": [ 0 ], "meaning": "段落大意题", "optionList": [ { "feedback": { "type": "npc", "content": "完全正确！你准确抓住了段落里的两个核心信息哦。", "npcName": "Brainy" }, "option": "瓦拉学院的先锋们没有考试，但是升级需要积分。" }, { "feedback": { "type": "npc", "content": "不对哦，段落明确说了没有考试，再认真读一下段落内容吧。", "npcName": "Brainy" }, "option": "瓦拉学院的先锋们需要通过考试获得积分来升级。" } ], "question": { "type": "npc", "npcName": "Brainy", "content": "了解了关键单词和句子的意思，我们来看看这一段主要在说什么吧？" } } ] }, { "leadIn": { "desc": "You can choose your favourite club to join. If you are interested in something, you can find a club for it." }, "type": "npc", "content": "我们来认识一下这段话中的关键单词 club。club 的意思是俱乐部，加入俱乐部可以说 join a club。", "npcName": "Brainy", "learning": [ { "answer": [ 1 ], "meaning": "句意选择题", "optionList": [ { "feedback": { "type": "npc", "content": "不对哦，句中的关键词是 club 俱乐部，不是课程，再回忆一下我们刚刚讲的单词释义吧。", "npcName": "Brainy" }, "option": "你可以选择你最喜欢的课程去学习。" }, { "feedback": { "type": "npc", "content": "完美回答！你已经掌握了关键单词 club 和这个句子的意思啦。", "npcName": "Brainy" }, "option": "你可以选择你最喜欢的俱乐部加入。" } ], "question": { "type": "npc", "npcName": "Brainy", "content": "接下来，我们来看下包含 club 的句子 You can choose your favourite club to join. 是什么意思呢？" } }, { "answer": [ 1 ], "meaning": "段落大意题", "optionList": [ { "feedback": { "type": "npc", "content": "不对哦，这段还没有提到创办新俱乐部的内容，再看看段落内容吧。", "npcName": "Brainy" }, "option": "你可以选择喜欢的俱乐部加入，也可以自己创办新的俱乐部。" }, { "feedback": { "type": "npc", "content": "太厉害啦！你完全理解了这一段的核心内容哦。", "npcName": "Brainy" }, "option": "你可以选择喜欢的俱乐部加入，如果你对某件事感兴趣，就能找到对应的俱乐部。" } ], "question": { "type": "npc", "npcName": "Brainy", "content": "下面我们来看看这一段主要在讲什么内容吧？" } } ] } ] }
kpInfo (6个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | plant n. 植物 |  |
[1] |  |  | club n. 俱乐部 |  |
[2] |  |  | join v. 加入 |  |
[3] |  |  | member n. 成员 |  |
[4] |  |  | choose v. 选择 |  |
[5] |  |  | interested adj. 感兴趣的 |  |

中间结果: 阅读材料格式化

    ```
    # 材料2
    类型：电子屏
    标题：How to Join Clubs?
    正文:
    <sp>You can choose your favourite club to join. If you are interested in something, you can find a club for it. The robot club, the plant club, the sports club, and the reading club are all popular choices.<br>If you are not interested in any club, you can start a new one with friends!<br><sp>图片:[0101106_core reading2]
    ```

中间结果: 学习材料格式化

    ```
    # 段落1
    重点词汇: 无
    正文:
    ---
    At Vala Academy, Pioneers don't have exams. But you need points to level up!
    ---
    # 段落2
    重点词汇: 无
    正文:
    ---
    You can choose your favourite club to join. If you are interested in something, you can find a club for it.
    ---
    ```

中间结果: 学习过程配置

    ```
    # 段落1
    ## 段落内容
    ---
    At Vala Academy, Pioneers don't have exams. But you need points to level up!
    ---
    ## 互动题目
    Brainy：我们来认识一下这段话中的关键单词 points。points 在这里的意思是积分、分数，我们常用 earn points 来表示赚取积分。
    1. 句意选择题
    Brainy：接下来，我们来看下包含 points 的句子 But you need points to level up! 是什么意思呢？
    - 但是你需要通过考试才能升级。
      Brainy：不对哦，句中的关键词是 points 积分，不是考试，而且前文也提到了没有考试，再仔细看看吧。
    - 但是你需要积分来升级。[正确]
      Brainy：太棒了！你已经掌握了关键单词 points 和整个句子的意思啦。

    2. 段落大意题
    Brainy：了解了关键单词和句子的意思，我们来看看这一段主要在说什么吧？
    - 瓦拉学院的先锋们没有考试，但是升级需要积分。[正确]
      Brainy：完全正确！你准确抓住了段落里的两个核心信息哦。
    - 瓦拉学院的先锋们需要通过考试获得积分来升级。
      Brainy：不对哦，段落明确说了没有考试，再认真读一下段落内容吧。
    # 段落2
    ## 段落内容
    ---
    You can choose your favourite club to join. If you are interested in something, you can find a club for it.
    ---
    ## 互动题目
    Brainy：我们来认识一下这段话中的关键单词 club。club 的意思是俱乐部，加入俱乐部可以说 join a club。
    1. 句意选择题
    Brainy：接下来，我们来看下包含 club 的句子 You can choose your favourite club to join. 是什么意思呢？
    - 你可以选择你最喜欢的课程去学习。
      Brainy：不对哦，句中的关键词是 club 俱乐部，不是课程，再回忆一下我们刚刚讲的单词释义吧。
    - 你可以选择你最喜欢的俱乐部加入。[正确]
      Brainy：完美回答！你已经掌握了关键单词 club 和这个句子的意思啦。

    2. 段落大意题
    Brainy：下面我们来看看这一段主要在讲什么内容吧？
    - 你可以选择喜欢的俱乐部加入，也可以自己创办新的俱乐部。
      Brainy：不对哦，这段还没有提到创办新俱乐部的内容，再看看段落内容吧。
    - 你可以选择喜欢的俱乐部加入，如果你对某件事感兴趣，就能找到对应的俱乐部。[正确]
      Brainy：太厉害啦！你完全理解了这一段的核心内容哦。
    # 完结反馈
    Brainy：恭喜你完成了所有题目的练习，今天的知识点都掌握得很不错哦，继续加油！
    ```

18 核心看图选词 cId: 0000800 core_reading_imageDrag
生成成功 ▶
taskInfo
{ "cType": "core_reading_imageDrag", "cId": "0000800", "title": "补全单词城堡墙上的句子", "taskDesc": "观察主图内容，将下方选项池中的单词拖拽到对应句子的空白处，补全所有句子。", "sceneDesc": "你来到了神奇的单词城堡，城堡的墙上有很多缺了单词的句子，你需要找到正确的单词把它们补全，才能打开城堡的大门哦！", "key": [ { "desc": "", "keyList": [ { "type": "default", "content": "lake", "desc": "n. 湖" }, { "type": "default", "content": "monkey", "desc": "n. 猴子" }, { "type": "default", "content": "three", "desc": "num. 三" }, { "type": "default", "content": "How many ...?", "desc": "多少……？" }, { "type": "default", "content": "There be ...", "desc": "有……" } ] } ], "resourceMapping": { "Eva": 738, "Peter": 739 }, "cDesc": "你回应了本关于河马住在哪里的提问，填入单词lake，了解到河马在湖里安家；你回应了布莱尼关于动物园其他动物的提问，选择了tree，知道动物园里还有动物栖息在树上" }
questionGroup
[{'image': '1201001_02.png', 'questionList': [{'type': 'npc', 'npcName': 'Ben', 'content': 'Where do hippos live？', 'desc': 'in the ___', 'optionList': [{'option': 'lake'}, {'option': 'tree'}, {'option': 'grass'}], 'answer': [0]}, {'type': 'npc', 'npcName': 'Brainy', 'title': 'What other animals are there in the zoo？', 'desc': '___', 'optionList': [{'option': 'lake'}, {'option': 'tree'}, {'option': 'grass'}], 'answer': [1]}]}]
studyInfo
{ "learningPart": [ { "image": "1201001_02.png", "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "这道题我们要先认识三个表示地点/事物的英文单词哦，看看哪个是\"湖\"的意思吧~" }, "optionList": [ { "option": "tree", "feedback": { "type": "npc", "npcName": "Brainy", "content": "tree的意思是树，河马不是住在树上的哦，再想想看吧~" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "grass的意思是草，河马也不是住在草里的哦，再试一次呀~" } }, { "option": "lake", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒啦！lake就是湖的意思，你记住这个单词啦~" } } ], "answer": [ 2 ] }, { "question": { "type": "npc", "npcName": "Brainy", "content": "现在Ben问河马住在哪里，结合我们刚才学的单词，想想河马的栖息地，选合适的单词填到句子里吧，句子意思是“在____里”。" }, "optionList": [ { "option": "lake", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！河马是生活在湖里的，这个答案完全正确，现在试着大声朗读这句话：in the lake 吧~" } }, { "option": "tree", "feedback": { "type": "npc", "npcName": "Brainy", "content": "河马没办法住在树上呀，这个不符合常识哦，结合图片和河马的生活习性再选一次吧~" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "草里不是河马的主要生活场所哦，再想想河马喜欢待的地方，重新选一次吧~" } } ], "answer": [ 0 ] } ] }, { "image": "1201001_02.png", "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "这道题我们要找出和动物栖息地相关的正确表述哦，先看看哪个选项是动物园里会有的、可以作为动物活动区域的事物吧~" }, "optionList": [ { "option": "lake", "feedback": { "type": "npc", "npcName": "Brainy", "content": "lake是湖，刚才我们知道河马住在湖里，但是这道题问的是动物园里还有的其他事物哦，再想想看吧~" } }, { "option": "tree", "feedback": { "type": "npc", "npcName": "Brainy", "content": "对啦！tree是树，动物园里有树，很多动物比如猴子都可以在树上活动，你选对啦~" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "grass是草，虽然动物园里也有草，但这不是这道题的正确答案哦，再试一次呀~" } } ], "answer": [ 1 ] }, { "question": { "type": "npc", "npcName": "Brainy", "content": "现在Brainy问动物园里还有什么其他的事物/动物相关的场地，结合动物园的场景，选合适的答案吧。" }, "optionList": [ { "option": "lake", "feedback": { "type": "npc", "npcName": "Brainy", "content": "湖是河马的栖息地，刚才我们已经提到过啦，题目问的是“其他”的事物哦，再想想看吧~" } }, { "option": "tree", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！动物园里有树，是很多小动物的活动区域，这个答案很合适，试着大声朗读这个单词tree吧~" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "草是很常见的植物，但不是这道题要找的“其他动物相关的典型场地”哦，再结合动物园的场景想想看吧~" } } ], "answer": [ 1 ] } ] } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你今天学会了lake（湖）、tree（树）、grass（草）这些单词，还知道了河马的栖息地，也会回答动物园里的相关场景问题啦，你的英语又进步了哦，继续加油吧~" } }
kpInfo (5个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | lake n. 湖 |  |
[1] |  |  | monkey n. 猴子 |  |
[2] |  |  | three num. 三 |  |
[3] |  |  | How many ...? 多少……？ |  |
[4] |  |  | There be ... 有…… |  |

中间结果: 学习流程配置

    ```
    # 小题 4
    ## 材料内容
    【展示该小题对应的图片 ID：1201001_02.png】

    ## 互动题目
    ### 1. 句意选词题
    Brainy：这道题我们要先认识三个表示地点/事物的英文单词哦，看看哪个是"湖"的意思吧~
    - 选项 A：tree
      Brainy：tree的意思是树，河马不是住在树上的哦，再想想看吧~
    - 选项 B：grass
      Brainy：grass的意思是草，河马也不是住在草里的哦，再试一次呀~
    - 选项 C：lake[正确]
      Brainy：太棒啦！lake就是湖的意思，你记住这个单词啦~

    ### 2. 原题降级
    Brainy：现在Ben问河马住在哪里，结合我们刚才学的单词，想想河马的栖息地，选合适的单词填到句子里吧，句子意思是“在____里”。
    - 选项 A：lake[正确]
      Brainy：答对啦！河马是生活在湖里的，这个答案完全正确，现在试着大声朗读这句话：in the lake 吧~
    - 选项 B：tree
      Brainy：河马没办法住在树上呀，这个不符合常识哦，结合图片和河马的生活习性再选一次吧~
    - 选项 C：grass
      Brainy：草里不是河马的主要生活场所哦，再想想河马喜欢待的地方，重新选一次吧~

    ---
    # 小题 5
    ## 材料内容
    【展示该小题对应的图片 ID：1201001_02.png】

    ## 互动题目
    ### 1. 句意选词题
    Brainy：这道题我们要找出和动物栖息地相关的正确表述哦，先看看哪个选项是动物园里会有的、可以作为动物活动区域的事物吧~
    - 选项 A：lake
      Brainy：lake是湖，刚才我们知道河马住在湖里，但是这道题问的是动物园里还有的其他事物哦，再想想看吧~
    - 选项 B：tree[正确]
      Brainy：对啦！tree是树，动物园里有树，很多动物比如猴子都可以在树上活动，你选对啦~
    - 选项 C：grass
      Brainy：grass是草，虽然动物园里也有草，但这不是这道题的正确答案哦，再试一次呀~

    ### 2. 原题降级
    Brainy：现在Brainy问动物园里还有什么其他的事物/动物相关的场地，结合动物园的场景，选合适的答案吧。
    - 选项 A：lake
      Brainy：湖是河马的栖息地，刚才我们已经提到过啦，题目问的是“其他”的事物哦，再想想看吧~
    - 选项 B：tree[正确]
      Brainy：答对啦！动物园里有树，是很多小动物的活动区域，这个答案很合适，试着大声朗读这个单词tree吧~
    - 选项 C：grass
      Brainy：草是很常见的植物，但不是这道题要找的“其他动物相关的典型场地”哦，再结合动物园的场景想想看吧~

    ---
    # 完结反馈
    Brainy：太棒了！你今天学会了lake（湖）、tree（树）、grass（草）这些单词，还知道了河马的栖息地，也会回答动物园里的相关场景问题啦，你的英语又进步了哦，继续加油吧~
    ```

中间结果: 互动描述

    You follow Ben's question about where hippos live, and fill the blank with "lake", learning that hippos make their homes in the lake happily. (你回应了本关于河马住在哪里的提问，填入单词lake，了解到河马在湖里安家)
    You answer Brainy's question about other zoo animals, and pick "tree" as the right fit, knowing that there are also animals living in the trees in the zoo. (你回应了布莱尼关于动物园其他动物的提问，选择了tree，知道动物园里还有动物栖息在树上)

19 核心口语快答 cId: 0000800 core_speaking_reply
生成成功 ▶
taskInfo
{ "cType": "core_speaking_reply", "cId": "0000800", "title": "告诉清洁站的工人，大象需要洗澡，你们乐意帮助，希望送一些干净的水过来", "taskDesc": "请你告诉清洁站的工人，大象需要洗澡，你们乐意帮助，希望送一些干净的水过来。", "sceneDesc": "你是Logan，在 Wander Port 的清洁站工作。清洁站附近有一只大象，人们都很喜欢她，喂她吃香蕉，帮她洗澡。这天你接到电话，几个孩子说大象需要洗澡，你意识到一定是饲养员粗心忘记了！孩子们说愿意帮助大象洗澡，需要借一些干净的水，你立刻答应。", "img": "", "key": [ { "desc": "", "keyList": [ { "type": "default", "content": "Let's...", "desc": "让我们……" }, { "type": "default", "content": "Instead of..., we'd better...", "desc": "与其……，我们不如……" }, { "type": "default", "content": "... love(s) to...", "desc": "……很乐意……" } ] } ], "resourceMapping": { "Eva": 738, "Peter": 739 } }
dialogSetting
{ "setting": { "npcName": "Logan", "round": 5, "checkRound": 3 } }
dialogConfig
{ "config": { "asrPrompt": "elephant,shower,water,keepers,help", "promptInfo": { "default": "\n# 1. 角色（你要扮演谁）\n你是Logan，在Wander Port的清洁站工作。你的语言风格亲切友好，适合儿童理解。\n# 2. 任务（你如何参与对话）\n1. 开场先询问大象的情况，确认大象是否需要洗澡。\n2. 当用户告知你大象需要洗澡后，你要表达惊讶，提出可以等一等，或许饲养员很快会来。\n3. 接下来询问用户是否愿意帮忙给大象洗澡。\n4. 如果用户表示愿意帮忙，你要先表达感谢，然后告诉用户你会立刻送干净的水过去，对话自然结束。\n5. 如果用户表示不愿意帮忙，你要表示没关系，告知你会自己联系饲养员处理，对话自然结束。\n6. 如果用户的回答和当前问题无关，你要用简单的话重复你当前的问题，引导用户回答。\n7. 如果用户有单词发音错误或者表达语法错误，不要纠正，正常理解意思即可。\n# 3. 背景信息\n你是Logan，在 Wander Port 的清洁站工作。清洁站附近有一只大象，人们都很喜欢她，喂她吃香蕉，帮她洗澡。这天你接到电话，几个孩子说大象需要洗澡，你意识到一定是饲养员粗心忘记了！孩子们说愿意帮助大象洗澡，需要借一些干净的水，你立刻答应。\n# 4. 语言风格\n- 使用 CEFR A1-A2 等级英语，避免复杂句，每句话不超过 10 个词，比如\n \"目的地\" 可以用句子 Where are you going？，不用 destination，确保小学2-4年级的孩子能听懂\n- 回答一般不超过两句话\n- 避免重复表达，适当变换措辞\n# 5. 开场白 (仅用于首轮)\n由你开始对话，你会问用户：\"Hi. What happened to the elephant?\"\n# 6. 回应方式\n- 无论用户如何对话，你都应基于你的身份做出合理反应。\n- 每次最多只提问一个问题，等待用户回答后再继续。\n- 除开场轮次外，每次回应，可以先基于用户的话给一句反馈。然后再推进你的任务。\n", "scene": "你是Logan，在 Wander Port 的清洁站工作。清洁站附近有一只大象，人们都很喜欢她，喂她吃香蕉，帮她洗澡。这天你接到电话，几个孩子说大象需要洗澡，你意识到一定是饲养员粗心忘记了！孩子们说愿意帮助大象洗澡，需要借一些干净的水，你立刻答应。", "in_progress_goal": "用户告诉清洁站的工人，大象需要洗澡，并且表示乐意帮助，要求 Logan 送一些干净的水过来。", "final_goal": "用户告诉清洁站的工人，大象需要洗澡，并提出需要一些水。", "reference_dialog": "Logan: Hi. What happened to the elephant?\nUser: The elephant needs a shower. Let's set up a shower for her.\nLogan: Are you saying she hasn't had a shower yet? Maybe someone will probably come soon.\nUser: Instead of waiting here, we'd better get some water for her first.\nLogan: The keepers are too careless! Thank you! Can you help her shower?\nUser: We'd love to help.\nLogan: Great. We will send some water to her right away.", "user_task": "请你告诉清洁站的工人，大象需要洗澡，你们乐意帮助，希望送一些干净的水过来。", "user_scene": "你是Logan，在 Wander Port 的清洁站工作。清洁站附近有一只大象，人们都很喜欢她，喂她吃香蕉，帮她洗澡。这天你接到电话，几个孩子说大象需要洗澡，你意识到一定是饲养员粗心忘记了！孩子们说愿意帮助大象洗澡，需要借一些干净的水，你立刻答应。", "user_knowledge": "Let's... 让我们……\nInstead of..., we'd better... 与其……，我们不如……\n... love(s) to... ……很乐意……" } } }
studyInfo
{ "learningPart": { "opening": { "type": "npc", "npcName": "Logan", "content": "Hi. What happened to the elephant?" }, "wrongReadLeadIn": { "type": "npc", "content": "请根据提词框内的内容大声地朗读这句话", "npcName": "Brainy" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "Logan问你大象发生什么事啦，现在你需要告诉他大象需要洗澡，你们想要帮她安排洗澡哦。" }, "optionList": [ { "option": "The elephant needs a shower. Let's set up a shower for her.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "回答正确！太棒啦，你可以试着把这句话大声读出来哦。" } }, { "option": "The elephant likes eating bananas. We want to feed her.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "现在我们要讲的是大象需要洗澡的相关内容哦，这句话说的是大象喜欢吃香蕉、你们想要喂她，和当前情境不匹配，再试一次吧。" } }, { "option": "The keeper is playing with the elephant happily.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是说饲养员正开心地和大象玩耍，和我们要表达的大象需要洗澡的内容不一样哦，再选一次吧。" } } ], "answer": [ 0 ], "read": { "type": "user", "content": "The elephant needs a shower. Let's set up a shower for her." }, "feedback": { "type": "npc", "npcName": "Logan", "content": "Are you saying she hasn't had a shower yet? Maybe someone will probably come soon." } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "Logan说“你是说她还没洗澡吗？可能很快就会有人来了”，现在你要回应说与其在这里等，不如你们先去给她拿点水。" }, "optionList": [ { "option": "We have to wait for the keeper to come and help her.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是说我们得等饲养员来帮她，和我们要表达的不等饲养员、先去拿水的意思相反哦，再试一次吧。" } }, { "option": "Instead of waiting here, we'd better get some water for her first.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！你真厉害，试着把这句话朗读出来吧。" } }, { "option": "We are going to leave here and find the keeper first.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "现在我们是要先拿水给大象洗澡，不是先离开去找饲养员哦，这句话不符合当前情境，再选一次吧。" } } ], "answer": [ 1 ], "read": { "type": "user", "content": "Instead of waiting here, we'd better get some water for her first." }, "feedback": { "type": "npc", "npcName": "Logan", "content": "The keepers are too careless! Thank you! Can you help her shower?" } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "Logan说饲养员太粗心了，谢谢你，还问你们能不能帮忙给大象洗澡，你要回应说你们很乐意帮忙哦。" }, "optionList": [ { "option": "We'd love to help.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "回答正确！你表现得超棒，把这句话读出来就更完美啦。" } }, { "option": "We are very busy so we can't help.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "我们是很愿意帮忙给大象洗澡的哦，这句话说你太忙帮不了，不符合情境，再试一次吧。" } }, { "option": "We can help you clean the cleaning station.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "现在我们要帮忙的是给大象洗澡，不是打扫清洁站哦，这句话不对，再选一次吧。" } } ], "answer": [ 0 ], "read": { "type": "user", "content": "We'd love to help." }, "feedback": { "type": "npc", "npcName": "Logan", "content": "Great. We will send some water to her right away." } } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "太棒啦！你已经顺利完成了这次的英语对话任务，你对相关的表达掌握得很好哦，继续加油~" } } }
kpInfo (3个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | Let's... 让我们…… |  |
[1] |  |  | Instead of..., we'd better... 与其……，我们不如…… |  |
[2] |  |  | ... love(s) to... ……很乐意…… |  |

中间结果: 学习流程配置

    ```
    # 开场回合
    Logan：Hi. What happened to the elephant?

    # 中间回合1
    Brainy：Logan问你大象发生什么事啦，现在你需要告诉他大象需要洗澡，你们想要帮她安排洗澡哦。
    用户选项:
    （A）The elephant needs a shower. Let's set up a shower for her.
      Brainy：回答正确！太棒啦，你可以试着把这句话大声读出来哦。
    （B）The elephant likes eating bananas. We want to feed her.
      Brainy：现在我们要讲的是大象需要洗澡的相关内容哦，这句话说的是大象喜欢吃香蕉、你们想要喂她，和当前情境不匹配，再试一次吧。
    （C）The keeper is playing with the elephant happily.
      Brainy：这句话是说饲养员正开心地和大象玩耍，和我们要表达的大象需要洗澡的内容不一样哦，再选一次吧。
    Logan：Are you saying she hasn't had a shower yet? Maybe someone will probably come soon.

    # 中间回合2
    Brainy：Logan说“你是说她还没洗澡吗？可能很快就会有人来了”，现在你要回应说与其在这里等，不如你们先去给她拿点水。
    用户选项:
    （A）We have to wait for the keeper to come and help her.
      Brainy：这句话是说我们得等饲养员来帮她，和我们要表达的不等饲养员、先去拿水的意思相反哦，再试一次吧。
    （B）Instead of waiting here, we'd better get some water for her first.
      Brainy：答对啦！你真厉害，试着把这句话朗读出来吧。
    （C）We are going to leave here and find the keeper first.
      Brainy：现在我们是要先拿水给大象洗澡，不是先离开去找饲养员哦，这句话不符合当前情境，再选一次吧。
    Logan：The keepers are too careless! Thank you! Can you help her shower?

    # 中间回合3
    Brainy：Logan说饲养员太粗心了，谢谢你，还问你们能不能帮忙给大象洗澡，你要回应说你们很乐意帮忙哦。
    用户选项:
    （A）We'd love to help.
      Brainy：回答正确！你表现得超棒，把这句话读出来就更完美啦。
    （B）We are very busy so we can't help.
      Brainy：我们是很愿意帮忙给大象洗澡的哦，这句话说你太忙帮不了，不符合情境，再试一次吧。
    （C）We can help you clean the cleaning station.
      Brainy：现在我们要帮忙的是给大象洗澡，不是打扫清洁站哦，这句话不对，再选一次吧。
    Logan：Great. We will send some water to her right away.

    # 结尾回合
    Brainy：太棒啦！你已经顺利完成了这次的英语对话任务，你对相关的表达掌握得很好哦，继续加油~
    ```

中间结果: promptInfo配置

    ```
    # 1. 角色（你要扮演谁）
    你是Logan，在Wander Port的清洁站工作。你的语言风格亲切友好，适合儿童理解。
    # 2. 任务（你如何参与对话）
    1. 开场先询问大象的情况，确认大象是否需要洗澡。
    2. 当用户告知你大象需要洗澡后，你要表达惊讶，提出可以等一等，或许饲养员很快会来。
    3. 接下来询问用户是否愿意帮忙给大象洗澡。
    4. 如果用户表示愿意帮忙，你要先表达感谢，然后告诉用户你会立刻送干净的水过去，对话自然结束。
    5. 如果用户表示不愿意帮忙，你要表示没关系，告知你会自己联系饲养员处理，对话自然结束。
    6. 如果用户的回答和当前问题无关，你要用简单的话重复你当前的问题，引导用户回答。
    7. 如果用户有单词发音错误或者表达语法错误，不要纠正，正常理解意思即可。
    # 3. 背景信息
    你是Logan，在 Wander Port 的清洁站工作。清洁站附近有一只大象，人们都很喜欢她，喂她吃香蕉，帮她洗澡。这天你接到电话，几个孩子说大象需要洗澡，你意识到一定是饲养员粗心忘记了！孩子们说愿意帮助大象洗澡，需要借一些干净的水，你立刻答应。
    # 4. 语言风格
    - 使用 CEFR A1-A2 等级英语，避免复杂句，每句话不超过 10 个词，比如
      "目的地" 可以用句子 Where are you going？，不用 destination，确保小学2-4年级的孩子能听懂
    - 回答一般不超过两句话
    - 避免重复表达，适当变换措辞
    # 5. 开场白 (仅用于首轮)
    由你开始对话，你会问用户："Hi. What happened to the elephant?"
    # 6. 回应方式
    - 无论用户如何对话，你都应基于你的身份做出合理反应。
    - 每次最多只提问一个问题，等待用户回答后再继续。
    - 除开场轮次外，每次回应，可以先基于用户的话给一句反馈。然后再推进你的任务。
    ```

中间结果: 语音识别热词

    elephant,shower,water,keepers,help

20 口语独白 cId: 0000800 ? 跳过 ▶
跳过: 类型 '口语独白' 尚未实现生成器
21 核心口语妙问 cId: 0000800 core_speaking_inquiry
生成成功 ▶
taskInfo
{ "cType": "core_speaking_inquiry", "cId": "0000800", "title": "向Chloe询问健身房位置并索要毛巾", "taskDesc": "你要向 Chloe 询问健身房的位置，以及讨要毛巾，做好开始运动的准备。", "sceneDesc": "你是 Chloe，是 Twilight 的空乘，服务好每一位乘客是你的使命。用户之前帮你在另一位乘客面前解了围，你很感谢用户的帮忙，对用户的态度也格外友善热情。你发现用完餐的用户正在东张西望，似乎在寻找什么，你确认用户需要帮助，于是上前询问。你发现用户想去健身房消消食，但是不知道方向，于是回答了用户的问题，提供了你的帮助。", "img": "", "key": [ { "desc": "", "keyList": [ { "type": "default", "content": "Where can I find the gym？", "desc": "我在哪里能找到健身房？" }, { "type": "default", "content": "Can I have a towel please?？", "desc": "我能要一条毛巾吗？" }, { "type": "default", "content": "What else can I do there?", "desc": "我在那儿还能做些什么？" } ] } ], "resourceMapping": { "Eva": 738, "Peter": 739 } }
dialogSetting
{ "setting": { "npcName": "Chloe", "round": 5, "checkRound": 3 } }
dialogConfig
{ "config": { "asrPrompt": "gym,towel,exercise,sightseeing,walkway,relax", "promptInfo": { "default": "# 1. 角色（你要扮演谁）\n你是Chloe，是Twilight的空乘，服务乘客是你的使命，对曾帮助过你的用户格外友善热情。\n\n# 2. 任务（你如何参与到整个对话）\n- 你只在用户提问时提供特定信息，不主动透露知识库中的信息。\n- 如果用户提问的内容在知识库范围内，你会准确回答。\n- 如果用户的问题不清晰，你会尝试确认问题。\n- 一般情况下，一次最多只回答知识库中的一条信息，除非用户明确地分别提问到多条信息。\n- 如果用户不提问，你会温和、自然地进行交谈。\n\n# 3. 背景信息\n你是Chloe，是Twilight的空乘，服务好每一位乘客是你的使命。\n用户之前帮你在另一位乘客面前解了围，你很感谢用户的帮忙，对用户的态度也格外友善热情。\n你发现用完餐的用户正在东张西望，似乎在寻找什么，你确认用户需要帮助，于是上前询问。你发现用户想去健身房消消食，但是不知道方向，于是回答了用户的问题，提供了你的帮助。\n\n# 4. 知识库（你知道的信息）\n- 健身房就在前方过道的尽头。\n- 你会为有需要的用户准备一条新毛巾。\n- 在健身房可以进行的活动：运动、看宇宙风光（sightseeing），或者可以拉伸放松、进行休息。\n- 对用户的任何提问，你都耐心安抚并一一回答。\n\n# 5. 语言风格\n- 使用 CEFR A1-A2 等级英语，避免复杂句，每句话不超过 10 个词，比如\n \"我要去...\" 可以用句子 I am going to ...，不用 My destination is ...，确保小学2-4年级的孩子能听懂\n- 回答一般不超过两句话\n- 避免重复表达，适当变换措辞\n\n# 6. 开场白\n你由你开始对话，你会说：\"Can I help you?\"\n\n# 7. 回应方式（固定内容）\n- 你只在用户提问时才根据知识库中的信息回答。其他时候，以符合你身份的方式，自然地进行交谈。\n- 不主动提供知识库的信息\n- 不主动提问题", "scene": "你是 Chloe，是 Twilight 的空乘，服务好每一位乘客是你的使命。\n用户之前帮你在另一位乘客面前解了围，你很感谢用户的帮忙，对用户的态度也格外友善热情。\n你发现用完餐的用户正在东张西望，似乎在寻找什么，你确认用户需要帮助，于是上前询问。你发现用户想去健身房消消食，但是不知道方向，于是回答了用户的问题，提供了你的帮助。", "in_progress_goal": "用户成功问出“健身房在哪里”、“可以给我一条毛巾吗”以及“在哪儿我还能做什么”的三个问题。", "final_goal": "Chloe回答了用户关于健身房的问题，提供了耐心友好的帮助。", "reference_dialog": "Chloe: Can I help you?\nUser: Where can I find the gym?\nChloe: Look, it's over there at the end of this walkway.\nUser: Oh, and can I have a towel please? \nChloe: Of course! I'll bring a new one for you soon.\nUser: What else can I do there? \nChloe: Well, you can do some exercise and enjoy sightseeing there. Or you can just relax.", "user_task": "你要向 Chloe 询问健身房的位置，以及讨要毛巾，做好开始运动的准备。", "user_scene": "你是 Chloe，是 Twilight 的空乘，服务好每一位乘客是你的使命。\n用户之前帮你在另一位乘客面前解了围，你很感谢用户的帮忙，对用户的态度也格外友善热情。\n你发现用完餐的用户正在东张西望，似乎在寻找什么，你确认用户需要帮助，于是上前询问。你发现用户想去健身房消消食，但是不知道方向，于是回答了用户的问题，提供了你的帮助。", "user_knowledge": "Where can I find the gym？我在哪里能找到健身房？\nCan I have a towel please?？我能要一条毛巾吗？\nWhat else can I do there? 我在那儿还能做些什么？" } } }
studyInfo
{ "learningPart": { "opening": { "type": "npc", "npcName": "Chloe", "content": "Can I help you?" }, "wrongReadLeadIn": { "type": "npc", "content": "请根据提词框内的内容大声地朗读这句话", "npcName": "Brainy" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "空乘Chloe主动询问你是否需要帮助，现在你需要向她询问健身房的位置。" }, "optionList": [ { "option": "Where can I find the gym?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你正确地表达了想要询问健身房位置的需求。请大声朗读这句话！" } }, { "option": "Can I have a towel please?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是询问能不能拿毛巾的，现在我们首先要问健身房的位置哦，请再试一次吧。" } }, { "option": "What else can I do there?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是询问在健身房还能做什么的，现在我们首先要问健身房的位置哦，请再试一次吧。" } } ], "answer": [ 0 ], "read": { "type": "user", "content": "Where can I find the gym?" }, "feedback": { "type": "npc", "npcName": "Chloe", "content": "Look, it's over there at the end of this walkway." } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "Chloe已经告诉你健身房在过道的尽头，现在你需要向她讨要毛巾，为运动做准备。" }, "optionList": [ { "option": "Where can I find the gym?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是询问健身房位置的，你已经知道健身房在哪里啦，现在需要问毛巾相关的内容哦，请再试一次吧。" } }, { "option": "Oh, and can I have a towel please?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你正确地表达了想要一条毛巾的需求。请大声朗读这句话！" } }, { "option": "What else can I do there?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是询问在健身房还能做什么的，现在我们需要先向Chloe要毛巾哦，请再试一次吧。" } } ], "answer": [ 1 ], "read": { "type": "user", "content": "Oh, and can I have a towel please?" }, "feedback": { "type": "npc", "npcName": "Chloe", "content": "Of course! I'll bring a new one for you soon." } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "Chloe同意给你拿一条新毛巾，现在你可以进一步询问在健身房还能做些什么。" }, "optionList": [ { "option": "Where can I find the gym?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是询问健身房位置的，你已经知道健身房在哪里啦，现在可以问问在健身房能做什么哦，请再试一次吧。" } }, { "option": "Can I have a towel please?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是询问能不能拿毛巾的，Chloe已经答应给你拿毛巾啦，现在可以问问在健身房能做什么哦，请再试一次吧。" } }, { "option": "What else can I do there?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你正确地表达了想要询问健身房其他可做的事的需求。请大声朗读这句话！" } } ], "answer": [ 2 ], "read": { "type": "user", "content": "What else can I do there?" }, "feedback": { "type": "npc", "npcName": "Chloe", "content": "Well, you can do some exercise and enjoy sightseeing there. Or you can just relax." } } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "Chloe已经告诉了你健身房的位置、给你准备了毛巾，也告诉你在健身房可以运动、赏景或者放松，你已经做好运动的全部准备啦，任务成功完成！" } } }
kpInfo (3个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | Where can I find the gym？我在哪里能找到健身房？ |  |
[1] |  |  | Can I have a towel please?？我能要一条毛巾吗？ |  |
[2] |  |  | What else can I do there? 我在那儿还能做些什么？ |  |

中间结果: 学习流程配置

    ```
    # 开场回合
    Chloe: Can I help you?

    # 中间回合1
    Brainy: 空乘Chloe主动询问你是否需要帮助，现在你需要向她询问健身房的位置。
    用户选项:
    （选项 A）Where can I find the gym? [正确]
      Brainy: 太棒了！你正确地表达了想要询问健身房位置的需求。请大声朗读这句话！
    （选项 B）Can I have a towel please?
      Brainy: 这句话是询问能不能拿毛巾的，现在我们首先要问健身房的位置哦，请再试一次吧。
    （选项 C）What else can I do there?
      Brainy: 这句话是询问在健身房还能做什么的，现在我们首先要问健身房的位置哦，请再试一次吧。
    Chloe: Look, it's over there at the end of this walkway.

    # 中间回合2
    Brainy: Chloe已经告诉你健身房在过道的尽头，现在你需要向她讨要毛巾，为运动做准备。
    用户选项:
    （选项 A）Where can I find the gym?
      Brainy: 这句话是询问健身房位置的，你已经知道健身房在哪里啦，现在需要问毛巾相关的内容哦，请再试一次吧。
    （选项 B）Oh, and can I have a towel please? [正确]
      Brainy: 太棒了！你正确地表达了想要一条毛巾的需求。请大声朗读这句话！
    （选项 C）What else can I do there?
      Brainy: 这句话是询问在健身房还能做什么的，现在我们需要先向Chloe要毛巾哦，请再试一次吧。
    Chloe: Of course! I'll bring a new one for you soon.

    # 中间回合3
    Brainy: Chloe同意给你拿一条新毛巾，现在你可以进一步询问在健身房还能做些什么。
    用户选项:
    （选项 A）Where can I find the gym?
      Brainy: 这句话是询问健身房位置的，你已经知道健身房在哪里啦，现在可以问问在健身房能做什么哦，请再试一次吧。
    （选项 B）Can I have a towel please?
      Brainy: 这句话是询问能不能拿毛巾的，Chloe已经答应给你拿毛巾啦，现在可以问问在健身房能做什么哦，请再试一次吧。
    （选项 C）What else can I do there? [正确]
      Brainy: 太棒了！你正确地表达了想要询问健身房其他可做的事的需求。请大声朗读这句话！
    Chloe: Well, you can do some exercise and enjoy sightseeing there. Or you can just relax.

    # 结尾回合
    Brainy: Chloe已经告诉了你健身房的位置、给你准备了毛巾，也告诉你在健身房可以运动、赏景或者放松，你已经做好运动的全部准备啦，任务成功完成！
    ```

中间结果: promptInfo配置

    ```
    # 1. 角色（你要扮演谁）
    你是Chloe，是Twilight的空乘，服务乘客是你的使命，对曾帮助过你的用户格外友善热情。

    # 2. 任务（你如何参与到整个对话）
    - 你只在用户提问时提供特定信息，不主动透露知识库中的信息。
    - 如果用户提问的内容在知识库范围内，你会准确回答。
    - 如果用户的问题不清晰，你会尝试确认问题。
    - 一般情况下，一次最多只回答知识库中的一条信息，除非用户明确地分别提问到多条信息。
    - 如果用户不提问，你会温和、自然地进行交谈。

    # 3. 背景信息
    你是Chloe，是Twilight的空乘，服务好每一位乘客是你的使命。
    用户之前帮你在另一位乘客面前解了围，你很感谢用户的帮忙，对用户的态度也格外友善热情。
    你发现用完餐的用户正在东张西望，似乎在寻找什么，你确认用户需要帮助，于是上前询问。你发现用户想去健身房消消食，但是不知道方向，于是回答了用户的问题，提供了你的帮助。

    # 4. 知识库（你知道的信息）
    - 健身房就在前方过道的尽头。
    - 你会为有需要的用户准备一条新毛巾。
    - 在健身房可以进行的活动：运动、看宇宙风光（sightseeing），或者可以拉伸放松、进行休息。
    - 对用户的任何提问，你都耐心安抚并一一回答。

    # 5. 语言风格
    - 使用 CEFR A1-A2 等级英语，避免复杂句，每句话不超过 10 个词，比如
      "我要去..." 可以用句子 I am going to ...，不用 My destination is ...，确保小学2-4年级的孩子能听懂
    - 回答一般不超过两句话
    - 避免重复表达，适当变换措辞

    # 6. 开场白
    你由你开始对话，你会说："Can I help you?"

    # 7. 回应方式（固定内容）
    - 你只在用户提问时才根据知识库中的信息回答。其他时候，以符合你身份的方式，自然地进行交谈。
    - 不主动提供知识库的信息
    - 不主动提问题
    ```

中间结果: 语音识别热词

    gym,towel,exercise,sightseeing,walkway,relax

22 核心看图说话 cId: 0000800 core_speaking_image
生成成功 ▶
taskInfo
{ "cType": "core_speaking_image", "cId": "0000800", "title": "", "taskDesc": "回答 Mr Rock 的问题", "sceneDesc": "Mr Rock 要给我们煮东西吃，看着暖腾腾的热气，听着咕咚咚的水声，闻着香飘飘的味道，心里美滋滋。等待开饭的时间里，和 Mr Rock 聊聊天吧。", "key": [ { "desc": "", "keyList": [ { "type": "default", "content": "winter", "desc": "n. 冬天" }, { "type": "default", "content": "cold", "desc": "adj. 冷的" }, { "type": "default", "content": "snow", "desc": "n. 雪" } ] } ], "resourceMapping": { "Eva": 738, "Peter": 739 }, "cDesc": "NPC: What season is it?\nUser: Winter.\nNPC: Is it hot or cold?\nUser: Cold.\nNPC: What do you see in winter?\nUser: Snow." }
dialogConfig
{ "config": { "asrPrompt": "winter,cold,snow,season,hot", "promptInfo": { "user_scene": "Mr Rock 要给我们煮东西吃，看着暖腾腾的热气，听着咕咚咚的水声，闻着香飘飘的味道，心里美滋滋。等待开饭的时间里，和 Mr Rock 聊聊天吧。", "user_task": "回答 Mr Rock 的问题", "user_knowledge": "winter 冬天\ncold 冷的\nsnow 雪", "pass_condition": "用户说出：\n1. 冬天\n2. 冷的\n3. 雪", "reference_dialog": "NPC: What season is it?\nUser: Winter.\nNPC: Is it hot or cold?\nUser: Cold.\nNPC: What do you see in winter?\nUser: Snow.", "questionList": [ { "type": "npc", "npcName": "Rock", "content": "What season is it?", "index": 0, "answerText": "Winter." }, { "type": "npc", "npcName": "Rock", "content": "Is it hot or cold?", "index": 1, "answerText": "Cold." }, { "type": "npc", "npcName": "Rock", "content": "What do you see in winter?", "index": 2, "answerText": "Snow." } ] } } }
studyInfo
{ "learningPart": [ { "leadIn": { "type": "npc", "npcName": "Rock", "content": "What season is it?" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "Rock 老师现在问你现在是什么季节，你需要回答当前所处的季节哦。", "index": 0 }, "optionList": [ { "option": "Winter.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你正确回答了现在的季节是冬天。请大声朗读这个单词！" } }, { "option": "Cold.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个单词的意思是“寒冷的”，是用来描述天气感受的，不是季节的答案，和当前的问题不匹配哦。请再仔细听清问题，告诉 Rock 老师现在是什么季节。" } }, { "option": "Snow.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个单词的意思是“雪”，是冬天会出现的事物，不是季节的答案，和当前的问题不匹配哦。请再仔细听清问题，告诉 Rock 老师现在是什么季节。" } } ], "answer": [ 0 ], "read": { "type": "npc", "npcName": "User", "content": "Winter." } } ] }, { "leadIn": { "type": "npc", "npcName": "Rock", "content": "Is it hot or cold?" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "Rock 老师现在问你天气是热还是冷，你需要回答冬天的天气感受哦。", "index": 1 }, "optionList": [ { "option": "Winter.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个单词的意思是“冬天”，是季节的名称，不是描述冷热感受的答案，和当前的问题不匹配哦。请再仔细听清问题，告诉 Rock 老师冬天的天气是冷还是热。" } }, { "option": "Cold.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你正确说出了冬天的天气是寒冷的。请大声朗读这个单词！" } }, { "option": "Snow.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个单词的意思是“雪”，是冬天会出现的事物，不是描述冷热感受的答案，和当前的问题不匹配哦。请再仔细听清问题，告诉 Rock 老师冬天的天气是冷还是热。" } } ], "answer": [ 1 ], "read": { "type": "npc", "npcName": "User", "content": "Cold." } } ] }, { "leadIn": { "type": "npc", "npcName": "Rock", "content": "What do you see in winter?" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "Rock 老师现在问你在冬天能看到什么，你需要说出冬天特有的事物哦。", "index": 2 }, "optionList": [ { "option": "Winter.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个单词的意思是“冬天”，是季节本身，不是冬天能看到的具体事物，和当前的问题不匹配哦。请再仔细听清问题，告诉 Rock 老师你在冬天能看到什么。" } }, { "option": "Cold.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个单词的意思是“寒冷的”，是冬天的天气感受，不是能看到的具体事物，和当前的问题不匹配哦。请再仔细听清问题，告诉 Rock 老师你在冬天能看到什么。" } }, { "option": "Snow.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你正确说出了冬天能看到的事物是雪。请大声朗读这个单词！" } } ], "answer": [ 2 ], "read": { "type": "npc", "npcName": "User", "content": "Snow." }, "feedback": { "type": "npc", "npcName": "Rock", "content": "Great! You know winter very well. Let's go and have some warm food now." } } ] } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "太棒啦！你已经全部答对了Rock老师的问题，不仅知道了冬天对应的英文表达，还了解了冬天的天气特点和特有事物，顺利完成了本次学习任务，接下来就可以享用Rock老师准备的热乎食物啦！" } }
imageInfo
{ "questionImg": "0000800_question.png" }
questionList
[{'type': 'npc', 'npcName': 'Rock', 'content': 'What season is it?', 'index': 0, 'answerText': 'Winter.'}, {'type': 'npc', 'npcName': 'Rock', 'content': 'Is it hot or cold?', 'index': 1, 'answerText': 'Cold.'}, {'type': 'npc', 'npcName': 'Rock', 'content': 'What do you see in winter?', 'index': 2, 'answerText': 'Snow.'}]
optionList
[{'option': '0000800_option_00.png'}, {'option': '0000800_option_01.png'}, {'option': '0000800_option_02.png'}]
kpInfo (3个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | winter 冬天 |  |
[1] |  |  | cold 冷的 |  |
[2] |  |  | snow 雪 |  |

中间结果: 学习流程配置

    ```
    # 中间回合1
    Rock: What season is it?
    Brainy: Rock 老师现在问你现在是什么季节，你需要回答当前所处的季节哦。
    用户选项:
    （选项 A）Winter. [正确]
      Brainy: 太棒了！你正确回答了现在的季节是冬天。请大声朗读这个单词！
    （选项 B）Cold.
      Brainy: 这个单词的意思是“寒冷的”，是用来描述天气感受的，不是季节的答案，和当前的问题不匹配哦。请再仔细听清问题，告诉 Rock 老师现在是什么季节。
    （选项 C）Snow.
      Brainy: 这个单词的意思是“雪”，是冬天会出现的事物，不是季节的答案，和当前的问题不匹配哦。请再仔细听清问题，告诉 Rock 老师现在是什么季节。

    # 中间回合2
    Rock: Is it hot or cold?
    Brainy: Rock 老师现在问你天气是热还是冷，你需要回答冬天的天气感受哦。
    用户选项:
    （选项 A）Winter.
      Brainy: 这个单词的意思是“冬天”，是季节的名称，不是描述冷热感受的答案，和当前的问题不匹配哦。请再仔细听清问题，告诉 Rock 老师冬天的天气是冷还是热。
    （选项 B）Cold. [正确]
      Brainy: 太棒了！你正确说出了冬天的天气是寒冷的。请大声朗读这个单词！
    （选项 C）Snow.
      Brainy: 这个单词的意思是“雪”，是冬天会出现的事物，不是描述冷热感受的答案，和当前的问题不匹配哦。请再仔细听清问题，告诉 Rock 老师冬天的天气是冷还是热。

    # 中间回合3
    Rock: What do you see in winter?
    Brainy: Rock 老师现在问你在冬天能看到什么，你需要说出冬天特有的事物哦。
    用户选项:
    （选项 A）Winter.
      Brainy: 这个单词的意思是“冬天”，是季节本身，不是冬天能看到的具体事物，和当前的问题不匹配哦。请再仔细听清问题，告诉 Rock 老师你在冬天能看到什么。
    （选项 B）Cold.
      Brainy: 这个单词的意思是“寒冷的”，是冬天的天气感受，不是能看到的具体事物，和当前的问题不匹配哦。请再仔细听清问题，告诉 Rock 老师你在冬天能看到什么。
    （选项 C）Snow. [正确]
      Brainy: 太棒了！你正确说出了冬天能看到的事物是雪。请大声朗读这个单词！

    # 结尾回合
    Brainy: 你已经顺利回答完了 Rock 老师的所有问题，太棒啦！现在可以等着吃 Rock 老师煮的热乎食物咯，任务成功完成！
    ```

中间结果: 语音识别热词

    winter,cold,snow,season,hot

23 核心合作听力 cId: 0000800 core_listening_order
生成成功 ▶
taskInfo
{ "cType": "core_listening_order", "cId": "0000800", "title": "让Shark听听健身达人Max分享的专业健身指南,学习健康的生活方式。", "sceneDesc": "Shark 的生活方式实在不健康，为了变强壮，居然把自己饿晕了！你想起健身达人 Max，曾经分享过一些专业健身指南，快让 Shark 听听看。", "img": "", "key": [ { "desc": "", "keyList": [ { "type": "default", "content": "bake", "desc": "v. 烘焙；烤制" }, { "type": "default", "content": "healthy", "desc": "adj. 健康的" }, { "type": "default", "content": "money", "desc": "n. 钱" }, { "type": "default", "content": "cake", "desc": "n. 蛋糕" }, { "type": "default", "content": "alcohol", "desc": "n. 含酒精饮料" } ] } ], "resourceMapping": { "Eva": 738, "Peter": 739 } }
materialInfo
{ "audio": [ { "audioType": "File", "audioTitle": "How to live a healthy life?", "audioSource": "0330116_01", "audioText": "Second, live a healthy life.\nGo to bed on time and get up early. Try to stay away from bad things, like smoking and alcohol. These things are not good for your body.\nThird, you do not need much money.\n Keeping a healthy body is not about money. You do not need expensive things. Good habits are the most important." } ], "question": [ { "type": "npc", "npcName": "Shark", "content": "When I want sweet food, what should I do?", "optionList": [ { "option": "Buy cake at a shop", "feedback": { "type": "npc", "npcName": "Medic", "content": "You do not need to buy it." } }, { "option": "Bake at home with healthy food.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Yes! Baking at home is a good choice." } }, { "option": "Eat sweet food all the time.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Too much sweet food is not healthy." } } ], "answer": [ 1 ], "meaning": "无" }, { "type": "npc", "npcName": "Shark", "content": "What should I do to live a healthy life?", "optionList": [ { "option": "Go to bed late and get up late.", "feedback": { "type": "npc", "npcName": "Medic", "content": "This is not a healthy routine." } }, { "option": "Go to bed on time and get up early.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Yes! A good routine is important." } }, { "option": "Smoke and drink alcohol.", "feedback": { "type": "npc", "npcName": "Medic", "content": "These things are bad for your body." } } ], "answer": [ 1 ], "meaning": "无" }, { "type": "npc", "npcName": "Shark", "content": "What do I need to keep healthy?", "optionList": [ { "option": "A lot of money.", "feedback": { "type": "npc", "npcName": "Medic", "content": "I don't think so." } }, { "option": "Expensive things.", "feedback": { "type": "npc", "npcName": "Medic", "content": "You do not need expensive things." } }, { "option": "Good habits.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Right! Good habits are the most important." } } ], "answer": [ 2 ], "meaning": "无" }, { "type": "npc", "npcName": "Shark", "content": "What is a healthy life NOT about?", "optionList": [ { "option": "Money.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Right! A healthy life is not about money." } }, { "option": "Good habits.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Good habits are very important." } }, { "option": "Healthy food.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Healthy food helps your body feel better." } } ], "answer": [ 0 ], "meaning": "无" } ] }
flowInfo
{ "sequence": [ { "audio": [ 0 ] }, { "question": [ 0 ] }, { "audio": [ 1 ] }, { "question": [ 1, 2, 3 ] } ] }
studyInfo
{ "closing": { "type": "npc", "content": "很好！你已经回答完了全部问题，相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!", "npcName": "Brainy" }, "learningPart": [ { "leadIn": { "type": "npc", "content": "When you really want sweet food, like biscuits or cake, you can bake at home.", "npcName": "Brainy" }, "content": "刚刚听到的音频里有一个很有用的短语 bake at home，bake 是动词，意思是烘焙，这个短语的意思就是在家烘焙，是一个很实用的生活类表达哦。", "type": "npc", "npcName": "Brainy", "learning": [ { "answer": [ 0 ], "meaning": "听音选句", "optionList": [ { "feedback": { "type": "npc", "content": "太厉害啦！你准确抓住了句子里的重点短语 bake at home！", "npcName": "Brainy" }, "option": "When you really want sweet food, like biscuits or cake, you can bake at home." }, { "feedback": { "type": "npc", "content": "不对哦，这句话说的是在商店购买，没有提到在家烘焙的内容，再仔细听一遍音频试试吧～", "npcName": "Brainy" }, "option": "When you really want sweet food, like biscuits or cake, you can buy at the shop." } ], "question": { "type": "npc", "npcName": "Brainy", "content": "仔细听音频哦，看看下面哪一个句子是你刚刚听到的内容？" } }, { "answer": [ 0 ], "meaning": "听音选意", "optionList": [ { "feedback": { "type": "npc", "content": "完全正确！你不仅听懂了整句话的意思，还掌握了 bake at home 这个实用短语，太棒啦！", "npcName": "Brainy" }, "option": "当你很想吃甜食，比如饼干或者蛋糕的时候，你可以在家烘焙。" }, { "feedback": { "type": "npc", "content": "不对哦，这句话说的不是去商店买的内容，再仔细看看句子里的重点短语是什么意思吧～", "npcName": "Brainy" }, "option": "当你很想吃甜食，比如饼干或者蛋糕的时候，你可以去商店买。" } ], "question": { "type": "npc", "npcName": "Brainy", "content": "现在来看看这句话的正确意思是什么吧，选选看？" } } ] } ] }
kpInfo (5个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | bake v. 烘焙；烤制 |  |
[1] |  |  | healthy adj. 健康的 |  |
[2] |  |  | money n. 钱 |  |
[3] |  |  | cake n. 蛋糕 |  |
[4] |  |  | alcohol n. 含酒精饮料 |  |

中间结果: 学习过程配置

    ```
    # 重点句子 1
    音频文本：When you really want sweet food, like biscuits or cake, you can bake at home.
    讲解文本：刚刚听到的音频里有一个很有用的短语 bake at home，bake 是动词，意思是烘焙，这个短语的意思就是在家烘焙，是一个很实用的生活类表达哦。
    1. 听音选句
    Brainy：仔细听音频哦，看看下面哪一个句子是你刚刚听到的内容？
    - When you really want sweet food, like biscuits or cake, you can bake at home. [正确]
      - Brainy：太厉害啦！你准确抓住了句子里的重点短语 bake at home！
    - When you really want sweet food, like biscuits or cake, you can buy at the shop.
      - Brainy：不对哦，这句话说的是在商店购买，没有提到在家烘焙的内容，再仔细听一遍音频试试吧～

    2. 听音选意
    Brainy：现在来看看这句话的正确意思是什么吧，选选看？
    - 当你很想吃甜食，比如饼干或者蛋糕的时候，你可以在家烘焙。[正确]
      - Brainy：完全正确！你不仅听懂了整句话的意思，还掌握了 bake at home 这个实用短语，太棒啦！
    - 当你很想吃甜食，比如饼干或者蛋糕的时候，你可以去商店买。
      - Brainy：不对哦，这句话说的不是去商店买的内容，再仔细看看句子里的重点短语是什么意思吧～
    ---
    # 完成反馈
    Brainy：很好！你已经回答完了全部问题，相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!
    ```

中间结果: 互动描述

    You listened to the audio about how to live a healthy life, learning you should sleep and get up on time, keep good habits and don't need much money or expensive things.（你听了关于如何健康生活的音频，了解到应该按时作息，保持好习惯，不需要很多钱或者昂贵的东西。）

24 听力拖拽 cId: 0000800 ? 失败 ▶
错误: LLM返回内容不是合法JSON: Expecting value: line 1 column 1 (char 0) 内容: 无
25 听力选择 cId: 0000800 ? 失败 ▶
错误: LLM返回内容不是合法JSON: Expecting value: line 1 column 1 (char 0) 内容: 无
26 核心看图组句 cId: 0000800 core_writing_imgMakeSentence
生成成功 ▶
taskInfo
{ "cId": "0000800", "cType": "core_writing_imgMakeSentence", "title": "报告飞船坠毁事件", "taskDesc": "请根据图片内容，用英文写一段求救报告，说明你们现在的处境、遇到的困难和需要的帮助。", "sceneDesc": "在森林中，Otis、Skylar 和你通过小熊猫 Bam 和无人机照片搜集到了关于飞船坠落的重要线索。你们需要将这些信息整理并汇报给 Luisa 教授，以便确定飞船的具体坠落位置。", "img": "", "plotSummary": "I saw a very cute kitten in the pet shop yesterday. The pattern on his body is black and white, like a cow. It's a month old and perfect for breeding.", "stemDesc": [ "0000800-01.png", "0000800-00.png" ], "key": [ { "keyList": [ { "type": "default", "content": "I think the spaceship fell...", "desc": "我认为飞船坠落在……" }, { "type": "default", "content": "I saw trees with...", "desc": "我看到有…… 的树。" }, { "type": "default", "content": "I heard a loud noise in...", "desc": "我听到…… 方向有巨大的声音。" } ] } ], "cDesc": "Dear Alex, I hope this email finds you well. We can take care of each other.（亲爱的亚历克斯：希望你一切都好。我们可以互相照顾。）" }
textInfo
{ "inputType": "sentence", "passCondition": "用户写出：1. 坠机在一个湖附近 2. 湖周边树木有红黄色的叶子 3. Bam 听到东北方向的噪音", "textList": [ { "mode": "preset", "desc": "Dear Alex," }, { "mode": "universalInput", "optionList": [ { "option": "well" }, { "option": "this email" }, { "option": "you" }, { "option": "finds" }, { "option": "I hope" }, { "option": "fine" } ], "answer": [ 4, 1, 3, 2, 0 ] }, { "mode": "fillingInput", "desc": "We can ___ each other.", "optionList": [ { "option": "of" }, { "option": "take" }, { "option": "care" }, { "option": "look" }, { "option": "for" } ], "answer": [ 1, 2, 0 ] } ] }
studyInfo
{ "learningPart": [ { "leadIn": { "image": "0000800-01.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你准备写邮件给Luisa教授汇报线索，开头需要正确称呼收件人Alex（教授的英文名），你会怎么写开头称呼？" }, "optionList": [ { "option": "Dear Alex,", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！这是英文邮件非常标准的开头称呼方式，很适合正式的汇报场景哦。" } }, { "option": "Hello Alex?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个表达多用于口语打招呼，句尾的问号也不符合书面称呼的规范，正式汇报邮件的称呼更适合用\"Dear + 名字\"的格式，再试试吧。" } }, { "option": "Alex, listen!", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个表达非常口语化，带有命令语气，很不礼貌，不适合用于给教授写汇报邮件的开头哦，再试试吧。" } } ], "answer": [ 0 ], "write": { "desc": "Dear Alex,", "trans": "亲爱的亚历克斯：" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "image": "0000800-00.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "写完称呼后，你需要写邮件的开头问候语，表达\"希望你一切安好\"的意思，你会选择以下哪个正确的句子？" }, "optionList": [ { "option": "I hope this email finds you fine.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，\"find sb well\"是固定的常用表达，用来表示祝愿对方身体/状态安好，一般不用fine搭配这个句式，再想想吧。" } }, { "option": "I hope this email finds you well.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "完全正确！这是英文邮件非常经典的问候语，很适合这次正式汇报的场景，用得非常棒。" } }, { "option": "I hope you find this email well.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话语序不对哦，正确的语序应该是\"I hope this email finds you well\"，表达的是希望收到邮件的你状态很好，再调整一下语序试试吧。" } } ], "answer": [ 1 ], "write": { "desc": "I hope this email finds you well.", "trans": "希望您收到这封邮件时一切安好。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "你在邮件里说明目前小队的情况，想要表达\"我们可以互相照顾\"，横线处应该填什么内容补全句子：We can ___ each other." }, "optionList": [ { "option": "look care for", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，没有这个搭配，\"照顾\"的正确固定短语是\"take care of\"，如果用look的话应该是\"look after\"，再试试吧。" } }, { "option": "take care of", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太对啦！\"take care of\"是表示\"照顾\"的固定短语，填入后句子完整表达\"我们可以互相照顾\"，完全符合你想说明的小队情况哦。" } }, { "option": "take care for", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，固定搭配里care后面搭配的介词是of不是for，\"take care of\"才是正确的\"照顾\"的表达，再调整一下吧。" } } ], "answer": [ 1 ], "write": { "desc": "take care of", "trans": "照顾；照料" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "恭喜你，可以使用准确的表达 Dear Alex、I hope this email finds you well 和短语 take care of，完成了给Luisa教授的汇报邮件的称呼、问候和小队情况说明部分的写作！" } }
evalInfo
{ "title": "报告飞船坠毁事件", "taskDesc": "请根据图片内容，用英文写一段求救报告，说明你们现在的处境、遇到的困难和需要的帮助。", "sceneDesc": "在森林中，Otis、Skylar 和你通过小熊猫 Bam 和无人机照片搜集到了关于飞船坠落的重要线索。你们需要将这些信息整理并汇报给 Luisa 教授，以便确定飞船的具体坠落位置。", "knowledge": "- 地点描述 I think the spaceship fell... 我认为飞船坠落在…… I saw trees with... 我看到有…… 的树。 I heard a loud noise in... 我听到…… 方向有巨大的声音。", "passCondition": "用户写出：1. 坠机在一个湖附近 2. 湖周边树木有红黄色的叶子 3. Bam 听到东北方向的噪音", "textList": [ { "mode": "preset", "desc": "Dear Alex," }, { "mode": "universalInput", "optionList": [ { "option": "well" }, { "option": "this email" }, { "option": "you" }, { "option": "finds" }, { "option": "I hope" }, { "option": "fine" } ], "answer": [ 4, 1, 3, 2, 0 ] }, { "mode": "fillingInput", "desc": "We can ___ each other.", "optionList": [ { "option": "of" }, { "option": "take" }, { "option": "care" }, { "option": "look" }, { "option": "for" } ], "answer": [ 1, 2, 0 ] } ] }
kpInfo (4个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | - 地点描述 |  |
[1] |  |  | I think the spaceship fell... 我认为飞船坠落在…… |  |
[2] |  |  | I saw trees with... 我看到有…… 的树。 |  |
[3] |  |  | I heard a loud noise in... 我听到…… 方向有巨大的声音。 |  |

中间结果: 学习流程配置

    ```
    # 问题1：
    Brainy: 你准备写邮件给Luisa教授汇报线索，开头需要正确称呼收件人Alex（教授的英文名），你会怎么写开头称呼？
    用户选项:
    （选项 A）Dear Alex, [正确]
      Brainy: 太棒了！这是英文邮件非常标准的开头称呼方式，很适合正式的汇报场景哦。
    （选项 B）Hello Alex?
      Brainy: 这个表达多用于口语打招呼，句尾的问号也不符合书面称呼的规范，正式汇报邮件的称呼更适合用"Dear + 名字"的格式，再试试吧。
    （选项 C）Alex, listen!
      Brainy: 这个表达非常口语化，带有命令语气，很不礼貌，不适合用于给教授写汇报邮件的开头哦，再试试吧。

    # 问题2：
    Brainy: 写完称呼后，你需要写邮件的开头问候语，表达"希望你一切安好"的意思，你会选择以下哪个正确的句子？
    用户选项:
    （选项 A）I hope this email finds you fine.
      Brainy: 不对哦，"find sb well"是固定的常用表达，用来表示祝愿对方身体/状态安好，一般不用fine搭配这个句式，再想想吧。
    （选项 B）I hope this email finds you well. [正确]
      Brainy: 完全正确！这是英文邮件非常经典的问候语，很适合这次正式汇报的场景，用得非常棒。
    （选项 C）I hope you find this email well.
      Brainy: 这句话语序不对哦，正确的语序应该是"I hope this email finds you well"，表达的是希望收到邮件的你状态很好，再调整一下语序试试吧。

    # 问题3：
    Brainy: 你在邮件里说明目前小队的情况，想要表达"我们可以互相照顾"，横线处应该填什么内容补全句子：We can ___ each other.
    用户选项:
    （选项 A）look care for
      Brainy: 不对哦，没有这个搭配，"照顾"的正确固定短语是"take care of"，如果用look的话应该是"look after"，再试试吧。
    （选项 B）take care of [正确]
      Brainy: 太对啦！"take care of"是表示"照顾"的固定短语，填入后句子完整表达"我们可以互相照顾"，完全符合你想说明的小队情况哦。
    （选项 C）take care for
      Brainy: 不对哦，固定搭配里care后面搭配的介词是of不是for，"take care of"才是正确的"照顾"的表达，再调整一下吧。
    ```

中间结果: 互动描述

    Dear Alex, I hope this email finds you well. We can take care of each other.（亲爱的亚历克斯：希望你一切都好。我们可以互相照顾。）

27 看图撰写 cId: 0000800 ? 失败 ▶
错误: LLM返回内容不是合法JSON: Expecting value: line 1 column 1 (char 0) 内容: 无
28 核心邮件组句 cId: 0000800 core_writing_questionMakeSentence
生成成功 ▶
taskInfo
{ "cId": "0000800", "cType": "core_writing_questionMakeSentence", "title": "编写给 Rebecca 的邮件", "taskDesc": "请根据提示问题，用英文组句完成这封邮件。", "sceneDesc": "Rebecca听上去十分担心你们的安全，你们刚刚做出了决定，要继续留在 Wander Port 进行学院的探索任务，你需要回一封邮件给她，告诉她你们的决定以及原因，顺便询问她何时会来。", "img": "", "plotSummary": "", "stemDesc": [ "What is your opinion on the job?", "Why do you want to stay?", "Ask her when to come." ], "key": [ { "keyList": [ { "type": "default", "content": "The job is...", "desc": "这份工作......" }, { "type": "default", "content": "That's why we have to...", "desc": "这就是为什么我们必须……" }, { "type": "default", "content": "When will you arrive?", "desc": "你什么时候会到？" } ] } ], "cDesc": "Dear Rebecca, I know you are worried. But this is our best chance to explore Wander Port. The job is important for us. That's why we have to stay. Will you come to Wander Port some day? When will you arrive?（亲爱的丽贝卡：我知道你很担心。但这是我们探索漫游港的最佳机会。这项任务对我们很重要。这就是我们必须留下来的原因。你会有一天来漫游港吗？你什么时候会到呀？）" }
textInfo
{ "inputType": "sentence", "passCondition": "用户写出：\n这份工作很重要。\n这就是我们为什么要留下。\n你什么时候将会到达？", "textList": [ { "mode": "preset", "desc": "Dear Rebecca," }, { "mode": "preset", "desc": "I know you are worried. But this is our best chance to explore Wander Port. " }, { "mode": "fillingInput", "desc": "The ___ is important for us.", "optionList": [ { "option": "job" }, { "option": "jobs" }, { "option": "projects" } ], "answer": [ 0 ] }, { "mode": "fillingInput", "desc": "That's ___ we have to stay.", "optionList": [ { "option": "why" }, { "option": "how" }, { "option": "which" } ], "answer": [ 0 ] }, { "mode": "preset", "desc": "Will you come to Wander Port some day? " }, { "mode": "fillingInput", "desc": " ___ you arrive?", "optionList": [ { "option": "When will" }, { "option": "When is" }, { "option": "How is" } ], "answer": [ 0 ] } ] }
studyInfo
{ "learningPart": [ { "leadIn": { "desc": "What is your opinion on the job?" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你在邮件里要向Rebecca说明这项工作对你们的重要性，现在需要补全句子\"The ___ is important for us.\"" }, "optionList": [ { "option": "job", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！这里be动词是is，说明主语是单数，job作为单数名词符合语法和句意，表示“这项工作对我们很重要”。" } }, { "option": "jobs", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，jobs是复数形式，和后面的be动词is不匹配，句子里需要单数名词，再想想吧。" } }, { "option": "projects", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，projects是复数形式，和后面的be动词is不匹配，而且不符合这里要表达的“这项工作”的语义，再试一次吧。" } } ], "answer": [ 0 ], "write": { "desc": "The job is important for us.", "trans": "这项工作对我们很重要。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "desc": "Why do you want to stay?" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你要向Rebecca解释你们必须留下的原因，现在需要补全句子\"That's ___ we have to stay.\"" }, "optionList": [ { "option": "why", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！\"That's why...\"是固定表达，用来引出原因，符合这里“这就是我们必须留下的原因”的句意。" } }, { "option": "how", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，how是用来询问方式的，这里要说明留下的原因，不符合语义，再试一次吧。" } }, { "option": "which", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，which一般用来引导定语从句指代事物，这里要表达原因，搭配和语义都不合适，再想想吧。" } } ], "answer": [ 0 ], "write": { "desc": "That's why we have to stay.", "trans": "这就是我们必须留下来的原因。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "desc": "Ask her when to come." }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你想询问Rebecca什么时候会到达，现在需要补全句子\"___ you arrive?\"" }, "optionList": [ { "option": "When will", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！询问将来的时间要用一般将来时，\"When will you arrive?\"是正确的表达，意思是“你什么时候会到？”。" } }, { "option": "When is", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，句子里已经有实义动词arrive了，不能用be动词is来构成疑问句，语法不正确，再试一次吧。" } }, { "option": "How is", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，这里要询问的是到达的时间，不是方式，而且同样不能用be动词is搭配实义动词arrive，再想想吧。" } } ], "answer": [ 0 ], "write": { "desc": "When will you arrive?", "trans": "你什么时候会到？" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "恭喜你，你学会了使用名词job、固定句式\"That's why...\"以及疑问句式\"When will you...?\"，完成了给Rebecca的邮件，可以准确告知对方你们的决定和原因，同时询问对方的到达时间了！" } }
evalInfo
{ "title": "编写给 Rebecca 的邮件", "taskDesc": "请根据提示问题，用英文组句完成这封邮件。", "sceneDesc": "Rebecca听上去十分担心你们的安全，你们刚刚做出了决定，要继续留在 Wander Port 进行学院的探索任务，你需要回一封邮件给她，告诉她你们的决定以及原因，顺便询问她何时会来。", "knowledge": "The job is... \n这份工作......\nThat's why we have to... \n这就是为什么我们必须……\nWhen will you arrive? \n你什么时候会到？", "passCondition": "用户写出：\n这份工作很重要。\n这就是我们为什么要留下。\n你什么时候将会到达？", "textList": [ { "mode": "preset", "desc": "Dear Rebecca," }, { "mode": "preset", "desc": "I know you are worried. But this is our best chance to explore Wander Port. " }, { "mode": "fillingInput", "desc": "The ___ is important for us.", "optionList": [ { "option": "job" }, { "option": "jobs" }, { "option": "projects" } ], "answer": [ 0 ] }, { "mode": "fillingInput", "desc": "That's ___ we have to stay.", "optionList": [ { "option": "why" }, { "option": "how" }, { "option": "which" } ], "answer": [ 0 ] }, { "mode": "preset", "desc": "Will you come to Wander Port some day? " }, { "mode": "fillingInput", "desc": " ___ you arrive?", "optionList": [ { "option": "When will" }, { "option": "When is" }, { "option": "How is" } ], "answer": [ 0 ] } ] }
kpInfo (6个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | The job is... |  |
[1] |  |  | 这份工作...... |  |
[2] |  |  | That's why we have to... |  |
[3] |  |  | 这就是为什么我们必须…… |  |
[4] |  |  | When will you arrive? |  |
[5] |  |  | 你什么时候会到？ |  |

中间结果: 学习流程配置

    ```
    # 问题1：
    Brainy: 你在邮件里要向Rebecca说明这项工作对你们的重要性，现在需要补全句子"The ___ is important for us."
    用户选项:
    （选项 A）job [正确]
      Brainy: 答对啦！这里be动词是is，说明主语是单数，job作为单数名词符合语法和句意，表示“这项工作对我们很重要”。
    （选项 B）jobs
      Brainy: 不对哦，jobs是复数形式，和后面的be动词is不匹配，句子里需要单数名词，再想想吧。
    （选项 C）projects
      Brainy: 不对哦，projects是复数形式，和后面的be动词is不匹配，而且不符合这里要表达的“这项工作”的语义，再试一次吧。

    # 问题2：
    Brainy: 你要向Rebecca解释你们必须留下的原因，现在需要补全句子"That's ___ we have to stay."
    用户选项:
    （选项 A）why [正确]
      Brainy: 太棒了！"That's why..."是固定表达，用来引出原因，符合这里“这就是我们必须留下的原因”的句意。
    （选项 B）how
      Brainy: 不对哦，how是用来询问方式的，这里要说明留下的原因，不符合语义，再试一次吧。
    （选项 C）which
      Brainy: 不对哦，which一般用来引导定语从句指代事物，这里要表达原因，搭配和语义都不合适，再想想吧。

    # 问题3：
    Brainy: 你想询问Rebecca什么时候会到达，现在需要补全句子"___ you arrive?"
    用户选项:
    （选项 A）When will [正确]
      Brainy: 答对啦！询问将来的时间要用一般将来时，"When will you arrive?"是正确的表达，意思是“你什么时候会到？”。
    （选项 B）When is
      Brainy: 不对哦，句子里已经有实义动词arrive了，不能用be动词is来构成疑问句，语法不正确，再试一次吧。
    （选项 C）How is
      Brainy: 不对哦，这里要询问的是到达的时间，不是方式，而且同样不能用be动词is搭配实义动词arrive，再想想吧。
    ```

中间结果: 互动描述

    Dear Rebecca, I know you are worried. But this is our best chance to explore Wander Port. The job is important for us. That's why we have to stay. Will you come to Wander Port some day? When will you arrive?（亲爱的丽贝卡：我知道你很担心。但这是我们探索漫游港的最佳机会。这项任务对我们很重要。这就是我们必须留下来的原因。你会有一天来漫游港吗？你什么时候会到呀？）

29 核心邮件撰写 cId: 0000800 core_writing_questionWrite
生成成功 ▶
taskInfo
{ "cId": "0000800", "cType": "core_writing_questionWrite", "title": "编写给 Rebecca 的邮件", "taskDesc": "请根据提示问题，用英文组句完成这封邮件。", "sceneDesc": "Rebecca听上去十分担心你们的安全，你们刚刚做出了决定，要继续留在 Wander Port 进行学院的探索任务，你需要回一封邮件给她，告诉她你们的决定以及原因，顺便询问她何时会来。", "img": "", "plotSummary": "", "stemDesc": [ "Tell her your decision and why.", "Ask her when she will arrive." ], "key": [ { "keyList": [ { "type": "default", "content": "The job is...", "desc": "这份工作......" }, { "type": "default", "content": "That's why we have to...", "desc": "这就是为什么我们必须……" }, { "type": "default", "content": "When will you arrive?", "desc": "你什么时候会到？" } ] } ], "cDesc": "Dear Rebecca, I know you are worried. But this is our best chance to explore Wander Port. The job is important for us. That's why we have to stay. Will you come to Wander Port some day? If so, when will you arrive?（亲爱的丽贝卡：我知道你很担心。但这是我们探索漫游港的最佳机会。这项工作对我们来说很重要。这就是我们必须留下来的原因。你会不会有一天来漫游港呢？如果会的话，你什么时候会到？）" }
textInfo
{ "inputType": "write", "passCondition": "1. 这份工作很重要 2. 这就是我们为什么要留下 3. 你什么时候将会到达？", "textList": [ { "mode": "preset", "desc": "Dear Rebecca,", "answerText": "" }, { "mode": "preset", "desc": "I know you are worried. But this is our best chance to explore Wander Port.", "answerText": "" }, { "mode": "fillingInput", "desc": "The ____ is important for us.", "answerText": "job", "hint": "这份工作（job）对我们来说很重要。" }, { "mode": "fillingInput", "desc": "That's ____ we have to stay.", "answerText": "why", "hint": "这就是为什么（why）我们必须留下。" }, { "mode": "preset", "desc": "Will you come to Wander Port some day?", "answerText": "" }, { "mode": "fillingInput", "desc": "If so, _________ you arrive?", "answerText": "when will", "hint": "如果是这样的话，你什么时候会（when will）到达？" } ] }
studyInfo
{ "learningPart": [ { "leadIn": { "desc": "Tell her your decision and why." }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你准备给Rebecca写邮件，开头需要正确称呼她，现在请选择合适的邮件开头语。" }, "optionList": [ { "option": "Dear Rebecca,", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒啦！这是英文邮件非常标准的称呼方式，很适合写给Rebecca的邮件开头哦。" } }, { "option": "Hello, is that Rebecca?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话通常是打电话时确认对方身份的表达，不适合作为邮件的开头哦，再试一下吧。" } }, { "option": "Nice to meet you, Rebecca.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话一般用在初次见面打招呼的场景，你们已经认识啦，而且也不适合做邮件开头，再想想吧。" } } ], "answer": [ 0 ], "write": { "desc": "Dear Rebecca,", "trans": "亲爱的丽贝卡：" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "desc": "Tell her your decision and why." }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你首先要回应Rebecca的担心，同时说明留在Wander Port的理由，现在请选择合适的表达。" }, "optionList": [ { "option": "I know you are worried. But this is our best chance to explore Wander Port.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "回答得非常好！这句话既回应了她的担心，又清晰说明了你们想要留下探索的原因，很合适。" } }, { "option": "Don't worry, we will come back right now.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是说你们马上要回来，但你们的决定是留在Wander Port做探索任务，和实际情况不符哦，再试一次吧。" } }, { "option": "We don't need your care, we are safe.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话语气太生硬啦，Rebecca是关心你们的安全，这样回应很不礼貌，而且也没有说明留下的原因哦。" } } ], "answer": [ 0 ], "write": { "desc": "I know you are worried. But this is our best chance to explore Wander Port.", "trans": "我知道你很担心。但这是我们探索漫游港的最佳机会。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "desc": "Tell her your decision and why." }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你想进一步说明这份探索工作对你们的重要性，现在要补全句子“The ____ is important for us.”，请选择合适的词汇。" }, "optionList": [ { "option": "job", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！这里be动词是is，说明主语是单数，job作为单数名词填入句子完全通顺，准确表达了这份工作的重要性。" } }, { "option": "jobs", "feedback": { "type": "npc", "npcName": "Brainy", "content": "jobs是复数形式，和后面的单数be动词is不匹配哦，语法上是错误的，再想想吧。" } }, { "option": "projects", "feedback": { "type": "npc", "npcName": "Brainy", "content": "projects是“项目”的复数形式，同样和后面的单数be动词is不搭配，不符合句子的语法要求哦。" } } ], "answer": [ 0 ], "write": { "desc": "The job is important for us.", "trans": "这项工作对我们来说很重要。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "desc": "Tell her your decision and why." }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你需要向Rebecca解释你们必须留下来的原因，现在要补全句子“That's ____ we have to stay.”，请选择合适的连接词。" }, "optionList": [ { "option": "why", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太聪明啦！“That's why...”是固定表达，意思是“这就是为什么……”，正好用来引出你们必须留下的原因，完全符合语境。" } }, { "option": "how", "feedback": { "type": "npc", "npcName": "Brainy", "content": "how表示“如何、怎样”，填入句子的话意思就变成“这就是我们如何必须留下的”，语义不通顺哦，再试一下吧。" } }, { "option": "which", "feedback": { "type": "npc", "npcName": "Brainy", "content": "which通常用来引导定语从句指代事物，填入这里句子逻辑不通，没法解释你们留下的原因哦。" } } ], "answer": [ 0 ], "write": { "desc": "That's why we have to stay.", "trans": "这就是我们必须留下来的原因。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "desc": "Ask her when she will arrive." }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你想要询问Rebecca未来会不会来Wander Port，现在请选择合适的问句。" }, "optionList": [ { "option": "Will you come to Wander Port some day?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！这句话用一般将来时询问对方未来会不会来Wander Port，完全符合你想要询问的内容哦。" } }, { "option": "Did you come to Wander Port last year?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是一般过去时，询问的是对方去年有没有来过Wander Port，而你要问的是未来会不会来，时间不符哦。" } }, { "option": "Are you staying in Wander Port now?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是问对方现在是不是正在Wander Port，你要问的是未来的计划，不是当下的情况，不符合要求哦。" } } ], "answer": [ 0 ], "write": { "desc": "Will you come to Wander Port some day?", "trans": "你会不会有一天来漫游港呢？" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "desc": "Ask her when she will arrive." }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "假设Rebecca会来，你想要询问她到达的时间，现在要补全句子“If so, _________ you arrive?”，请选择正确的表达。" }, "optionList": [ { "option": "when will", "feedback": { "type": "npc", "npcName": "Brainy", "content": "回答正确！询问将来的时间要用一般将来时，结构是“特殊疑问词+will+主语+动词原形”，这里正好用来问她什么时候会到。" } }, { "option": "when is", "feedback": { "type": "npc", "npcName": "Brainy", "content": "后面已经有实义动词arrive了，不能再用be动词is哦，语法上是错误的，再想想吧。" } }, { "option": "how is", "feedback": { "type": "npc", "npcName": "Brainy", "content": "how是询问方式，而且同样和后面的实义动词arrive冲突，既不符合语法也不是在问时间哦。" } } ], "answer": [ 0 ], "write": { "desc": "If so, when will you arrive?", "trans": "如果会的话，你什么时候会到？" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "恭喜你，你已经掌握了邮件称呼语Dear Rebecca、表达顾虑与原因的句型I know you are worried. But this is our best chance to explore Wander Port、说明重要性的句子The job is important for us、解释原因的固定表达That's why...、询问未来计划的问句Will you come to Wander Port some day?以及询问到达时间的句子If so, when will you arrive?，成功完成了给Rebecca的邮件编写！" } }
evalInfo
{ "title": "编写给 Rebecca 的邮件", "taskDesc": "请根据提示问题，用英文组句完成这封邮件。", "sceneDesc": "Rebecca听上去十分担心你们的安全，你们刚刚做出了决定，要继续留在 Wander Port 进行学院的探索任务，你需要回一封邮件给她，告诉她你们的决定以及原因，顺便询问她何时会来。", "knowledge": "The job is... 这份工作......That's why we have to... 这就是为什么我们必须……When will you arrive? 你什么时候会到？", "passCondition": "1. 这份工作很重要 2. 这就是我们为什么要留下 3. 你什么时候将会到达？", "textList": [ { "mode": "preset", "desc": "Dear Rebecca,", "answerText": "" }, { "mode": "preset", "desc": "I know you are worried. But this is our best chance to explore Wander Port.", "answerText": "" }, { "mode": "fillingInput", "desc": "The ____ is important for us.", "answerText": "job", "hint": "这份工作（job）对我们来说很重要。" }, { "mode": "fillingInput", "desc": "That's ____ we have to stay.", "answerText": "why", "hint": "这就是为什么（why）我们必须留下。" }, { "mode": "preset", "desc": "Will you come to Wander Port some day?", "answerText": "" }, { "mode": "fillingInput", "desc": "If so, _________ you arrive?", "answerText": "when will", "hint": "如果是这样的话，你什么时候会（when will）到达？" } ] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | The job is... 这份工作......That's why we have to... 这就是为什么我们必须……When will you arrive? 你什么时候会到？ |  |

中间结果: 学习流程配置

    ```
    # 问题1：
    Brainy: 你准备给Rebecca写邮件，开头需要正确称呼她，现在请选择合适的邮件开头语。
    用户选项:
    （选项 A）Dear Rebecca, [正确]
      Brainy: 太棒啦！这是英文邮件非常标准的称呼方式，很适合写给Rebecca的邮件开头哦。
    （选项 B）Hello, is that Rebecca?
      Brainy: 这句话通常是打电话时确认对方身份的表达，不适合作为邮件的开头哦，再试一下吧。
    （选项 C）Nice to meet you, Rebecca.
      Brainy: 这句话一般用在初次见面打招呼的场景，你们已经认识啦，而且也不适合做邮件开头，再想想吧。

    # 问题2：
    Brainy: 你首先要回应Rebecca的担心，同时说明留在Wander Port的理由，现在请选择合适的表达。
    用户选项:
    （选项 A）I know you are worried. But this is our best chance to explore Wander Port. [正确]
      Brainy: 回答得非常好！这句话既回应了她的担心，又清晰说明了你们想要留下探索的原因，很合适。
    （选项 B）Don't worry, we will come back right now.
      Brainy: 这句话是说你们马上要回来，但你们的决定是留在Wander Port做探索任务，和实际情况不符哦，再试一次吧。
    （选项 C）We don't need your care, we are safe.
      Brainy: 这句话语气太生硬啦，Rebecca是关心你们的安全，这样回应很不礼貌，而且也没有说明留下的原因哦。

    # 问题3：
    Brainy: 你想进一步说明这份探索工作对你们的重要性，现在要补全句子“The ____ is important for us.”，请选择合适的词汇。
    用户选项:
    （选项 A）job [正确]
      Brainy: 答对啦！这里be动词是is，说明主语是单数，job作为单数名词填入句子完全通顺，准确表达了这份工作的重要性。
    （选项 B）jobs
      Brainy: jobs是复数形式，和后面的单数be动词is不匹配哦，语法上是错误的，再想想吧。
    （选项 C）projects
      Brainy: projects是“项目”的复数形式，同样和后面的单数be动词is不搭配，不符合句子的语法要求哦。

    # 问题4：
    Brainy: 你需要向Rebecca解释你们必须留下来的原因，现在要补全句子“That's ____ we have to stay.”，请选择合适的连接词。
    用户选项:
    （选项 A）why [正确]
      Brainy: 太聪明啦！“That's why...”是固定表达，意思是“这就是为什么……”，正好用来引出你们必须留下的原因，完全符合语境。
    （选项 B）how
      Brainy: how表示“如何、怎样”，填入句子的话意思就变成“这就是我们如何必须留下的”，语义不通顺哦，再试一下吧。
    （选项 C）which
      Brainy: which通常用来引导定语从句指代事物，填入这里句子逻辑不通，没法解释你们留下的原因哦。

    # 问题5：
    Brainy: 你想要询问Rebecca未来会不会来Wander Port，现在请选择合适的问句。
    用户选项:
    （选项 A）Will you come to Wander Port some day? [正确]
      Brainy: 太棒了！这句话用一般将来时询问对方未来会不会来Wander Port，完全符合你想要询问的内容哦。
    （选项 B）Did you come to Wander Port last year?
      Brainy: 这句话是一般过去时，询问的是对方去年有没有来过Wander Port，而你要问的是未来会不会来，时间不符哦。
    （选项 C）Are you staying in Wander Port now?
      Brainy: 这句话是问对方现在是不是正在Wander Port，你要问的是未来的计划，不是当下的情况，不符合要求哦。

    # 问题6：
    Brainy: 假设Rebecca会来，你想要询问她到达的时间，现在要补全句子“If so, _________ you arrive?”，请选择正确的表达。
    用户选项:
    （选项 A）when will [正确]
      Brainy: 回答正确！询问将来的时间要用一般将来时，结构是“特殊疑问词+will+主语+动词原形”，这里正好用来问她什么时候会到。
    （选项 B）when is
      Brainy: 后面已经有实义动词arrive了，不能再用be动词is哦，语法上是错误的，再想想吧。
    （选项 C）how is
      Brainy: how是询问方式，而且同样和后面的实义动词arrive冲突，既不符合语法也不是在问时间哦。
    ```

中间结果: 互动描述

    Dear Rebecca, I know you are worried. But this is our best chance to explore Wander Port. The job is important for us. That's why we have to stay. Will you come to Wander Port some day? If so, when will you arrive?（亲爱的丽贝卡：我知道你很担心。但这是我们探索漫游港的最佳机会。这项工作对我们来说很重要。这就是我们必须留下来的原因。你会不会有一天来漫游港呢？如果会的话，你什么时候会到？）

30 对话表达 cId: 0000800 mid_dialog_express
生成成功 ▶
jsonData
{ "cType": "mid_dialog_express", "cId": "0000800", "title": "回答养蜂人的问题", "asrPrompt": "养蜂人，蜂蜜，spring，春天", "resourceMapping": { "Vicky": 658 }, "preDialog": [], "imgShowTimingList": [ "content", "feedback" ], "img": "0000800.png", "tip": "春天会收获最多的蜂蜜哦~", "corFeedback": { "type": "npc", "npcName": "Sunny", "content": "You are so clever!" }, "errFeedback": { "type": "npc", "npcName": "Beekeeper", "content": "Try again." }, "question": { "desc": "回答养蜂人的问题。" }, "example": { "type": "user", "content": "Spring!" }, "postDialog": [] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | spring |  |

31 对话选择 cId: 0000800 mid_dialog_choose
生成成功 ▶
jsonData
{ "cType": "mid_dialog_choose", "cId": "0000800", "title": "房屋主人是谁", "resourceMapping": { "Vicky": 658 }, "preDialog": [ { "type": "npc", "npcName": "Dad", "content": "Is it for a cat?" } ], "imgShowTimingList": [ "content", "feedback" ], "img": "0000800.png", "optionList": [ { "option": "This is Mr Rabbit's home.", "needAudio": true }, { "option": "This is a cat's home.", "needAudio": true } ], "answer": [ 0 ], "corFeedback": { "type": "npc", "npcName": "Dad", "content": "Oh, I see." }, "errFeedback": { "type": "npc", "npcName": "Dad", "content": "It is too small for a cat." }, "postDialog": [] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | home |  |

32 对话选读 cId: 0000800 mid_dialog_select
生成成功 ▶
jsonData
{ "cType": "mid_dialog_select", "cId": "0000800", "title": "评价随地睡觉的习惯", "resourceMapping": { "Vicky": 658 }, "preDialog": [], "imgShowTimingList": [], "optionList": [ { "option": "It sounds healthy.", "needAudio": false, "feedback": { "type": "npc", "npcName": "Medic", "content": "Really? Medic wants more sleep too!" } }, { "option": "It isn't healthy.", "needAudio": false, "feedback": { "type": "npc", "npcName": "Medic", "content": "Really? But Medic likes sleeping..." } } ], "postDialog": [ { "type": "user", "content": "Going to bed early and getting up early is healthy." }, { "type": "user", "content": "Sleeping too much is not healthy." }, { "type": "npc", "npcName": "Medic", "content": "Medic remembers it now!" } ] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | healthy(词义) |  |

33 信息描写 cId: 0000800 mid_message_trace
生成成功 ▶
jsonData
{ "cType": "mid_message_trace", "cId": "0000800", "title": "购买葡萄", "resourceMapping": { "Vicky": 658 }, "cDesc": "You bought the grapes you needed. (你购买了你需要的葡萄。)", "question": { "desc": "请描写你需要的水果" }, "trace": "grape", "img": "0000800.png", "inputSet": [] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | Grape (词形 - 拼写规律) |  |

34 信息拼词 cId: 0000800 mid_message_spell
生成成功 ▶
jsonData
{ "cType": "mid_message_spell", "cId": "0000800", "title": "购买葡萄", "resourceMapping": { "Vicky": 658 }, "cDesc": "You bought the fresh grape successfully.（你成功买到了新鲜的葡萄。）", "question": { "desc": "请填入“葡萄”的正确的英文拼写" }, "tip": "葡萄的英文是 grape / 第二个字母是 r 哦，再想想最后一个空应该填什么吧", "inputConfig": [ { "stem": "G（2）pe", "value": "ra" } ], "stemList": [ "h", "a", "r", "l", "e", "w" ], "img": "0000800.png", "inputSet": [] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | Grape (词形 - 拼写规律) |  |

35 信息组句 cId: 0000800 mid_message_combine
生成成功 ▶
jsonData
{ "cType": "mid_message_combine", "cId": "0000800", "title": "填写信息表", "resourceMapping": { "Vicky": 658 }, "cDesc": "You asked \"Is Maeve the visitor you invited?\". (你问出了“梅芙是你邀请的访客吗？”这句话。)", "question": { "desc": "请在空白处填入正确的单词，组成句子" }, "tip": "可以用 is 引导的一般疑问句询问；you invited 是 visitor 的后置定语", "optionList": [ { "option": "is" }, { "option": "the visitor" }, { "option": "you invited" }, { "option": "Maeve" } ], "answer": [ 0, 3, 1, 2 ], "img": "0000800.png", "inputSet": [] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | Grape (词形 - 拼写规律) |  |

36 信息补词 cId: 0000800 mid_message_fillin
生成成功 ▶
jsonData
{ "cType": "mid_message_fillin", "cId": "0000800", "title": "填写信息表", "resourceMapping": { "Vicky": 658 }, "cDesc": "You filled in \"now\" to form \"knowledge\". (你填入now组成了单词knowledge。)", "question": { "desc": "请在空白处填入正确的字母，组成完整单词" }, "tip": "需要填入的单词的中文释义是“知识”", "inputConfig": [ { "stem": "K(3)ledge", "value": "now" } ], "img": "0000800.png", "inputSet": [] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | Grape (词形 - 拼写规律) |  |

37 信息填词 cId: 0000800 mid_message_word
生成成功 ▶
jsonData
{ "cType": "mid_message_word", "cId": "0000800", "title": "填写信息表", "resourceMapping": { "Vicky": 658 }, "cDesc": "You finished filling the information form with knowledge.（你完成了信息表的填写，填入了“知识”对应的单词。)", "question": { "desc": "请在空白处填入合适的单词，使句意完整" }, "tip": "需要填入的单词的中文释义是“知识”", "answer": [ "knowledge", "information" ], "img": "0000800.png", "inputSet": [] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | Grape (词形 - 拼写规律) |  |

38 信息填句 cId: 0000800 mid_message_sentence
生成成功 ▶
jsonData
{ "cType": "mid_message_sentence", "cId": "0000800", "title": "填写信息表", "resourceMapping": { "Vicky": 658 }, "cDesc": "You filled the information form with the correct sentence. (你填写好了信息表的正确句子。)", "question": { "desc": "请填入正确的内容，使句意完整" }, "tip": "你可以使用 The main purpose of this tour is...", "answerHint": "The main purpose of this tour is to learn knowledge about local traditional crafts.", "img": "0000800.png", "inputSet": [] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | Grape (词形 - 拼写规律) |  |

39 图片单选 cId: 0000800 mid_image_choose
生成成功 ▶
jsonData
{ "cType": "mid_image_choose", "cId": "0000800", "title": "选择合适的河段取水", "meaning": "", "resourceMapping": { "Vicky": 658 }, "question": { "desc": "Find $warm$ water.", "content": "Find $warm$ water." }, "imageInfo": { "questionImg": "0000800_question.png", "answerImg": "0000800_answer.png" }, "optionList": [ { "option": "0000800_option_00.png" }, { "option": "0000800_option_01.png" }, { "option": "0000800_option_02.png" } ], "answer": [ 2 ], "preDialog": [ { "type": "user", "content": "Look!" } ], "tip": "warm 指“温暖的”。", "corFeedback": { "type": "user", "npcName": "", "content": "Warm water here!" }, "errFeedback": { "type": "user", "npcName": "", "content": "It doesn't seem like there's warm water." }, "postDialog": [], "cDesc": "You found the warm water section. (你找到了温暖的水域。)" }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | warm |  |

40 图片多选 cId: 0000800 mid_image_multiple
生成成功 ▶
jsonData
{ "cType": "mid_image_multiple", "cId": "0000800", "title": "选出需要修复的部分", "meaning": "", "resourceMapping": {}, "question": { "desc": "Find parts of the $house$.", "content": "Find parts of the $house$." }, "imageInfo": { "questionImg": "0000800_question.png", "answerImg": "0000800_answer.png" }, "optionList": [ { "option": "0000800_option_00.png" }, { "option": "0000800_option_01.png" }, { "option": "0000800_option_02.png" }, { "option": "0000800_option_03.png" }, { "option": "0000800_option_04.png" } ], "answer": [ 2, 3, 4 ], "preDialog": [ { "type": "npc", "npcName": "Peter", "content": "Let's fix the house!" }, { "type": "user", "content": "Okay." } ], "tip": "house 指“房子”。", "corFeedback": { "type": "user", "content": "These are all parts of the house." }, "errFeedback": { "type": "user", "content": "Let's check again." }, "postDialog": [], "cDesc": "You found the repairable parts of the house. (你找到了房子需要修复的部分。)" }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | house |  |

41 图片有序 cId: 0000800 mid_image_sequence
生成成功 ▶
jsonData
{ "cType": "mid_image_sequence", "cId": "0000800", "title": "排序跳格子顺序", "meaning": "", "resourceMapping": { "Vicky": 658 }, "question": { "desc": "We must go $one by one$." }, "imageInfo": { "questionImg": "0000800_question.png", "answerImg": "0000800_answer.png" }, "optionList": [ { "option": "0000800_option_00.png" }, { "option": "0000800_option_01.png" }, { "option": "0000800_option_02.png" }, { "option": "0000800_option_03.png" } ], "answer": [ 0, 1, 2, 3 ], "preDialog": [], "tip": "one by one指\"一个接一个\"", "corFeedback": {}, "errFeedback": { "type": "npc", "npcName": "Dan", "content": "We can't jump like that." }, "postDialog": [], "cDesc": "You arranged hopscotch order one by one. (你把跳格子的顺序一个接一个排好了。)" }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | ... one by one. |  |

42 图片拖拽 cId: 0000800 mid_image_drag
生成成功 ▶
jsonData
{ "cType": "mid_image_drag", "cId": "0000800", "title": "选出正确的物品", "meaning": "", "resourceMapping": { "Vicky": 658 }, "question": { "desc": "Let's pick the $fish$, $crab$ and $octopus$ in order." }, "imageInfo": { "questionImg": "0000800_question.png", "answerImg": "0000800_answer.png" }, "optionList": [ { "option": "0000800_option_00.png" }, { "option": "0000800_option_01.png" }, { "option": "0000800_option_02.png" }, { "option": "0000800_option_03.png" } ], "answer": [ 0, 2, 1 ], "preDialog": [ { "type": "npc", "npcName": "Sarah", "content": "Look! So many gloves there!" } ], "tip": "fish 指“鱼”；crab 指“螃蟹”；octopus 指“章鱼”", "corFeedback": { "type": "npc", "npcName": "Daisy", "content": "Yes! You got it right!" }, "errFeedback": { "type": "npc", "npcName": "Daisy", "content": "This doesn't seem like a crab." }, "postDialog": [ { "type": "npc", "npcName": "Daisy", "content": "very good!" } ], "cDesc": "You found fish, crab and octopus in order. (你按顺序找到了鱼、螃蟹和章鱼。)" }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | hammer （词义） |  |