就绪
成功: 0 失败: 0

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

生成时间: 2026-04-30 14:26:31 模型: doubao-seed-2.0-pro Wiki: AEPJwf0DUiDkWska4SbceSAbnyc
42
总组件
36
成功
5
失败
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的Vala学院社团介绍", "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 在这里指的是积分、分数，积累足够的积分才能升级哦。", "npcName": "Brainy", "learning": [ { "answer": [ 0 ], "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 的意思是俱乐部，兴趣相同的人可以一起加入俱乐部参加活动哦。", "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": [ 0 ], "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 在这里指的是积分、分数，积累足够的积分才能升级哦。
    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 的意思是俱乐部，兴趣相同的人可以一起加入俱乐部参加活动哦。
    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
{ "cId": "0000800", "cType": "core_reading_imageDrag", "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": "When you first start exploring the word castle, you hear Ben ask where hippos live, and you pick the right word to finish the sentence \"in the lake\", learning hippos make their homes in lakes. Next, Brainy asks what other animals you can find in the zoo, and you choose the matching word to give the answer, knowing there are trees as part of the zoo's natural environment for animals." }
questionGroup
[{'image': '1201001_02.png', 'questionList': [{'type': 'npc', 'npcName': 'Brainy', 'content': 'Ben: Where do hippos live？', 'desc': 'in the ___', 'optionList': [{'option': 'lake'}, {'option': 'tree'}, {'option': 'grass'}], 'answer': [0]}, {'type': 'npc', 'npcName': 'Brainy', 'title': 'Brainy: 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问“河马住在哪里呀？”，你要选一个合适的单词填到横线上，完成“in the ___”的回答，告诉Ben河马的居住地哦。" }, "optionList": [ { "option": "lake", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！河马是住在湖里的，完整回答就是“in the lake”，快大声把这个回答读出来吧~" } }, { "option": "tree", "feedback": { "type": "npc", "npcName": "Brainy", "content": "tree是树的意思，河马不会住在树上呀，结合图片里的场景再想想看~" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "grass是草的意思，这里不是河马的主要居住环境哦，再试一次吧~" } } ], "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": "lake是湖，这里问的是动物园里的其他事物，湖不属于动物园里特有的这类事物哦，再想想看~" } }, { "option": "tree", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！动物园里会有树木，给动物们提供贴近自然的生活环境，快把“tree”这个单词大声读出来吧~" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "grass是草，不符合这道题的要求哦，结合对动物园的了解再试一次吧~" } } ], "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问“河马住在哪里呀？”，你要选一个合适的单词填到横线上，完成“in the ___”的回答，告诉Ben河马的居住地哦。
    - 选项 A：lake[正确]
      Brainy：答对啦！河马是住在湖里的，完整回答就是“in the lake”，快大声把这个回答读出来吧~
    - 选项 B：tree
      Brainy：tree是树的意思，河马不会住在树上呀，结合图片里的场景再想想看~
    - 选项 C：grass
      Brainy：grass是草的意思，这里不是河马的主要居住环境哦，再试一次吧~

    ---

    # 小题 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：lake是湖，这里问的是动物园里的其他事物，湖不属于动物园里特有的这类事物哦，再想想看~
    - 选项 B：tree[正确]
      Brainy：答对啦！动物园里会有树木，给动物们提供贴近自然的生活环境，快把“tree”这个单词大声读出来吧~
    - 选项 C：grass
      Brainy：grass是草，不符合这道题的要求哦，结合对动物园的了解再试一次吧~

    ---

    # 完结反馈
    Brainy：太棒了！你已经完成了这两个题目的练习，复习了lake、tree、grass这些单词的意思，还学会了怎么用英文回答关于动物栖息地和动物园事物的问题，你的英语又进步啦！
    ```

中间结果: 互动描述

    When you first start exploring the word castle, you hear Ben ask where hippos live, and you pick the right word to finish the sentence "in the lake", learning hippos make their homes in lakes.
    Next, Brainy asks what other animals you can find in the zoo, and you choose the matching word to give the answer, knowing there are trees as part of the zoo's natural environment for animals.

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 is sleeping. We can play with her later.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "现在的情境是要告诉Logan大象需要洗澡哦，这句话说的是大象在睡觉，和当前的情况不匹配，再选一次吧。" } }, { "option": "The elephant is eating bananas. She looks very happy.", "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 keepers 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": "I think we can go home and come back tomorrow.", "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 too busy to help her.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "我们本来就是想要帮忙的哦，这句话说的是太忙了帮不了，不符合现在的情况，再选一次吧。" } }, { "option": "Sorry, we don't know how to shower an elephant.", "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 is sleeping. We can play with her later.
      Brainy：现在的情境是要告诉Logan大象需要洗澡哦，这句话说的是大象在睡觉，和当前的情况不匹配，再选一次吧。
    （C）The elephant is eating bananas. She looks very happy.
      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 keepers to come and help her.
      Brainy：现在我们要表达的是不等别人、先去拿水的意思哦，这句话说的是要等饲养员来，和要表达的内容相反啦，再选一次吧。
    （B）Instead of waiting here, we'd better get some water for her first.
      Brainy：完全正确！你太厉害了，来把这句话大声朗读出来吧~
    （C）I think we can go home and come back tomorrow.
      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 too busy to help her.
      Brainy：我们本来就是想要帮忙的哦，这句话说的是太忙了帮不了，不符合现在的情况，再选一次吧。
    （C）Sorry, we don't know how to shower an elephant.
      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,relax,walkway", "promptInfo": { "default": "# 1. 角色（你要扮演谁）\n你是Chloe，是Twilight航班的空乘，服务好每一位乘客是你的使命。你对曾经帮你解过围的用户态度格外友善热情。\n\n# 2. 任务（你如何参与到整个对话）\n- 你只在用户提问时提供特定信息，不主动透露知识库中的信息。\n- 如果用户提问的内容在知识库范围内，你会准确回答。\n- 如果用户的问题不清晰，你会尝试确认问题。\n- 一般情况下，一次最多只回答知识库中的一条信息，除非用户明确地分别提问到多条信息。\n- 如果用户不提问，你会温和、自然地进行交谈。\n\n# 3. 背景信息\n你是Chloe，是Twilight的空乘，服务好每一位乘客是你的使命。用户之前帮你在另一位乘客面前解了围，你很感谢用户的帮忙，对用户的态度也格外友善热情。你发现用完餐的用户正在东张西望，似乎在寻找什么，你确认用户需要帮助，于是上前询问。你发现用户想去健身房消消食，但是不知道方向，于是回答了用户的问题，提供了你的帮助。\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 can I do in the gym?", "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 is the restroom?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是询问洗手间位置的，现在你需要索要毛巾哦，再试一次~" } }, { "option": "Can I have a towel please?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太好啦！你正确地表达了想要一条毛巾的需求。请大声朗读这句话！" } }, { "option": "How much is the towel?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是询问毛巾价格的，不需要问价格哦，直接向Chloe索要毛巾就可以啦，再试一次~" } } ], "answer": [ 1 ], "read": { "type": "user", "content": "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": "What else can I do there?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "非常棒！你正确地询问了在健身房还可以做的事。请大声朗读这句话！" } }, { "option": "Can you go to the gym with me?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是邀请Chloe和你一起去健身房的，我们现在是要了解健身房里的其他可做事项哦，再试一次~" } }, { "option": "When does the gym close?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是询问健身房关门时间的，现在你需要问的是在健身房里还能做什么，再试一次~" } } ], "answer": [ 0 ], "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": "你已经问清楚了健身房的位置，也索要了毛巾，还了解了在健身房可以做的事，这次对话任务圆满完成啦！" } }
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 can I do in the gym?
      Brainy: 这句话是询问健身房里可以做什么的，现在你首先需要知道健身房的位置哦，再试一次~

    Chloe：Look, it's over there at the end of this walkway.

    # 中间回合2
    Brainy: Chloe已经告诉了你健身房在走廊的尽头，现在你需要向她要一条毛巾，为运动做准备。
    用户选项:
    （选项 A）Where is the restroom?
      Brainy: 这句话是询问洗手间位置的，现在你需要索要毛巾哦，再试一次~
    （选项 B）Can I have a towel please? [正确]
      Brainy: 太好啦！你正确地表达了想要一条毛巾的需求。请大声朗读这句话！
    （选项 C）How much is the towel?
      Brainy: 这句话是询问毛巾价格的，不需要问价格哦，直接向Chloe索要毛巾就可以啦，再试一次~

    Chloe：Of course! I'll bring a new one for you soon.

    # 中间回合3
    Brainy: Chloe答应很快给你拿一条新毛巾，现在你可以问问在健身房里还能做些什么，了解更多相关信息。
    用户选项:
    （选项 A）What else can I do there? [正确]
      Brainy: 非常棒！你正确地询问了在健身房还可以做的事。请大声朗读这句话！
    （选项 B）Can you go to the gym with me?
      Brainy: 这句话是邀请Chloe和你一起去健身房的，我们现在是要了解健身房里的其他可做事项哦，再试一次~
    （选项 C）When does the gym close?
      Brainy: 这句话是询问健身房关门时间的，现在你需要问的是在健身房里还能做什么，再试一次~

    Chloe：Well, you can do some exercise and enjoy sightseeing there. Or you can just relax.

    # 结尾回合
    Brainy: 你已经问清楚了健身房的位置，也索要了毛巾，还了解了在健身房可以做的事，这次对话任务圆满完成啦！
    ```

中间结果: 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,relax,walkway

22 核心看图说话 cId: 0000800 core_speaking_image
已保存 ▶
taskInfo
{ "cType": "core_speaking_image", "cId": "0000800", "title": "回答Mr Rock的问题", "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": "Summer.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话的意思是夏天，但是现在我们在冬季岛屿，周围还有热腾腾的食物用来取暖，和夏天的特点不符哦。请仔细看当前的场景，告诉 Rock 老师现在的季节吧。" } }, { "option": "Cold.", "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": "Hot.", "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": "Flower.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话的意思是花，花一般是春天温暖的时候才会开放的，冬天很少能看到盛开的花，和当前场景不符哦。请仔细看看冬季岛屿的景色，告诉 Rock 老师你能看到什么吧。" } }, { "option": "Ice cream.", "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": "You did a great job answering all the questions. The food will be ready soon!" } } ] } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "恭喜你顺利回答完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）Summer.
      Brainy: 这句话的意思是夏天，但是现在我们在冬季岛屿，周围还有热腾腾的食物用来取暖，和夏天的特点不符哦。请仔细看当前的场景，告诉 Rock 老师现在的季节吧。
    （选项 C）Cold.
      Brainy: 这句话的意思是寒冷的，这是用来描述天气感受的词，不是季节哦。请仔细听清问题，告诉 Rock 老师现在是什么季节。

    # 中间回合2
    Rock: Is it hot or cold?
    Brainy: Rock 老师现在问你冬天是热的还是冷的，你需要告诉他冬天的体感特点。
    用户选项:
    （选项 A）Hot.
      Brainy: 这句话的意思是热的，冬天的温度很低，是很寒冷的，和实际情况不符哦。请仔细感受当前场景的温度，告诉 Rock 老师冬天的感受吧。
    （选项 B）Cold. [正确]
      Brainy: 太厉害啦！冬天确实是寒冷的。请大声朗读这个单词吧！
    （选项 C）Snow.
      Brainy: 这句话的意思是雪，这是冬天会出现的事物，不是用来描述冷热感受的哦。请仔细听清问题，告诉 Rock 老师冬天是热还是冷。

    # 中间回合3
    Rock: What do you see in winter?
    Brainy: Rock 老师问你在冬天能看到什么东西，你需要说出冬天特有的事物哦。
    用户选项:
    （选项 A）Flower.
      Brainy: 这句话的意思是花，花一般是春天温暖的时候才会开放的，冬天很少能看到盛开的花，和当前场景不符哦。请仔细看看冬季岛屿的景色，告诉 Rock 老师你能看到什么吧。
    （选项 B）Ice cream.
      Brainy: 这句话的意思是冰淇淋，这是夏天常吃的消暑食物，不是冬天会看到的特有事物哦。请仔细听清问题，告诉 Rock 老师冬天能看到的东西。
    （选项 C）Snow. [正确]
      Brainy: 回答正确！冬天经常会下雪，能看到很多雪花哦。请大声朗读这个单词吧！

    # 结尾回合
    Brainy: 你已经顺利回答完 Rock 老师的所有问题啦，你们的聊天很愉快，食物也马上就要煮好咯，任务完成！
    ```

中间结果: 语音识别热词

    winter,cold,snow,season,hot

23 核心合作听力 cId: 0000800 core_listening_order
已保存 ▶
taskInfo
{ "cType": "core_listening_order", "cId": "0000800", "title": "帮助Shark学习健康的健身相关知识。", "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 是“烘焙、烤”的意思，home 是“家”，组合在一起就是在家自己制作食物的意思哦。", "type": "npc", "npcName": "Brainy", "learning": [ { "question": { "type": "npc", "content": "认真听音频，选出发音和你听到的内容完全一致的句子吧。", "npcName": "Brainy" }, "optionList": [ { "option": "When you really want sweet food, like biscuits or cake, you can bake at home.", "feedback": { "type": "npc", "content": "太厉害啦！你精准听出了句子里的重点短语 bake at home！", "npcName": "Brainy" } }, { "option": "When you really want sweet food, like biscuits or cake, you can buy at the shop.", "feedback": { "type": "npc", "content": "不对哦，这句话说的是在商店购买，没有提到 bake at home 哦，再仔细听一遍音频试试吧！", "npcName": "Brainy" } } ], "answer": [ 0 ], "meaning": "听音选句" }, { "question": { "type": "npc", "content": "听完句子，你知道这句话的正确中文意思是什么吗？试着选一下吧。", "npcName": "Brainy" }, "optionList": [ { "option": "当你很想吃甜食，比如饼干或者蛋糕时，你可以在家烘焙。", "feedback": { "type": "npc", "content": "完全正确！你不仅听懂了整句话，还掌握了 bake at home 这个实用的短语，太棒啦！", "npcName": "Brainy" } }, { "option": "当你很想吃甜食，比如饼干或者蛋糕时，你可以去商店买。", "feedback": { "type": "npc", "content": "这句话的重点是在家自己做哦，不是去商店购买，再想想看吧～", "npcName": "Brainy" } } ], "answer": [ 0 ], "meaning": "听音选意" } ] } ] }
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 是“烘焙、烤”的意思，home 是“家”，组合在一起就是在家自己制作食物的意思哦。
    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：不对哦，这句话说的是在商店购买，没有提到 bake at home 哦，再仔细听一遍音频试试吧！

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

中间结果: 互动描述

    You listened to the audio about how to live a healthy life, and learned you should go to bed on time and get up early, stay away from smoking and alcohol. (你听了关于如何健康生活的音频，了解到应该按时睡觉早起，远离烟酒。)
    You also got to know that keeping a healthy body doesn't need much money or expensive things, and good habits are the most important. (你还了解到保持健康不需要很多钱或昂贵的物品，好习惯才是最重要的。)

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 ? 失败 ▶
错误: LLM返回内容不是合法JSON: Expecting value: line 1 column 1 (char 0) 内容: 无
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": "用户写出：这份工作很重要。这就是我们为什么要留下。你什么时候将会到达？", "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解释留在Wander Port的原因，提到“这份工作对我们来说很重要”，需要补全句子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动词are，和句子里的is不匹配，所以不能选这个。" } }, { "option": "projects", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，projects是“项目”的复数形式，同样需要搭配be动词are，和句中的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": "你说完工作的重要性后，要表达“这就是我们必须留下来的原因”，需要补全句子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是否会来Wander Port后，想要进一步问她什么时候会到，需要补全句子___ you arrive?" }, "optionList": [ { "option": "When will", "feedback": { "type": "npc", "npcName": "Brainy", "content": "完全正确！arrive是实义动词，将来时的特殊疑问句要用“疑问词+will+主语+动词原形”的结构，这句话准确表达了“你什么时候会到？”的意思，非常符合邮件语境。" } }, { "option": "When is", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，arrive是实义动词原形，不能和be动词is直接搭配使用，这个结构不符合语法规则哦。" } }, { "option": "How is", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，首先疑问词how是询问方式的，不符合你要问“到达时间”的需求，同时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... 这份工作......\nThat's why we have to... 这就是为什么我们必须……\nWhen will you arrive? 你什么时候会到？", "passCondition": "用户写出：这份工作很重要。这就是我们为什么要留下。你什么时候将会到达？", "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解释留在Wander Port的原因，提到“这份工作对我们来说很重要”，需要补全句子The ___ is important for us.
    用户选项:
    （选项 A）job [正确]
      Brainy: 答对啦！这里be动词是is，说明主语是可数名词单数，job作为单数形式符合句子语法和语义要求，准确表达了“这份工作对我们很重要”的含义。
    （选项 B）jobs
      Brainy: 不对哦，jobs是可数名词复数，后面应该搭配be动词are，和句子里的is不匹配，所以不能选这个。
    （选项 C）projects
      Brainy: 不对哦，projects是“项目”的复数形式，同样需要搭配be动词are，和句中的is冲突，不符合句子语法要求。

    # 问题2：
    Brainy: 你说完工作的重要性后，要表达“这就是我们必须留下来的原因”，需要补全句子That's ___ we have to stay.
    用户选项:
    （选项 A）why [正确]
      Brainy: 太棒了！That's why...是固定表达，用来引出前面陈述内容带来的结果，这里正好对应“工作重要”是“留下来”的原因，逻辑和语法都完全正确。
    （选项 B）how
      Brainy: 不对哦，how是用来询问方式的，填入的话句子会变成“这就是我们必须留下来的方式”，和你要表达的“原因”逻辑不符哦。
    （选项 C）which
      Brainy: 不对哦，which通常用来引导定语从句指代事物，在这里不符合句子的逻辑关系，无法表达“原因”的含义哦。

    # 问题3：
    Brainy: 你询问完Rebecca是否会来Wander Port后，想要进一步问她什么时候会到，需要补全句子___ you arrive?
    用户选项:
    （选项 A）When will [正确]
      Brainy: 完全正确！arrive是实义动词，将来时的特殊疑问句要用“疑问词+will+主语+动词原形”的结构，这句话准确表达了“你什么时候会到？”的意思，非常符合邮件语境。
    （选项 B）When is
      Brainy: 不对哦，arrive是实义动词原形，不能和be动词is直接搭配使用，这个结构不符合语法规则哦。
    （选项 C）How is
      Brainy: 不对哦，首先疑问词how是询问方式的，不符合你要问“到达时间”的需求，同时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?\n（亲爱的丽贝卡：我知道你很担心。但这是我们探索漫游港的最佳机会。这份工作对我们来说很重要。这就是我们必须留下来的原因。你某天会来漫游港吗？如果会的话，你什么时候会到呢？）" }
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": "Dear Sir,", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个称呼是用来称呼陌生男性的，你知道Rebecca的名字，而且她是认识的人，用这个称呼不合适哦，再试一下吧。" } }, { "option": "Hello, it's me.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个表达太随意了，不符合正式邮件的开头规范，给Rebecca的邮件需要更得体的称呼哦。" } } ], "answer": [ 0 ], "write": { "desc": "Dear Rebecca,", "trans": "亲爱的丽贝卡：" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "你接下来要在邮件里说明你理解Rebecca的担忧，同时解释留下来的原因，以下哪个表达最准确？" }, "optionList": [ { "option": "I know you are angry. But we want to play in Wander Port.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，Rebecca是担心你们的安全，不是生气，而且我们留下来是为了探索任务，不是玩耍，这个表达不符合原意~" } }, { "option": "I know you are worried. But this is our best chance to explore Wander Port.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太对了！你准确传达了“理解对方担忧，同时说明这是探索Wander Port的最好机会”的意思，完全符合邮件内容要求~" } }, { "option": "I know you are excited. But we don't want to leave Wander Port now.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "Rebecca是担心你们，不是兴奋，而且这句话也没有说明留下来的原因是探索任务，不符合哦，再试试吧。" } } ], "answer": [ 1 ], "write": { "desc": "I know you are worried. But this is our best chance to explore Wander Port.", "trans": "我知道你很担心。但这是我们探索漫游港的最佳机会。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "你想表达“这份工作对我们很重要”，现在句子是\"The ____ is important for us.\"，横线处应该填什么？" }, "optionList": [ { "option": "jobs", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，句子里的be动词是is，说明主语是单数，jobs是复数形式，和is不搭配哦。" } }, { "option": "job", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！job是单数形式，和后面的is搭配 perfectly，准确表达了“这份工作对我们很重要”的意思~" } }, { "option": "projects", "feedback": { "type": "npc", "npcName": "Brainy", "content": "projects是复数形式，和句中的is不匹配，而且意思也不符合这里要表达的内容哦，再试一下吧。" } } ], "answer": [ 1 ], "write": { "desc": "The job is important for us.", "trans": "这份工作对我们来说很重要。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "你要接着上文解释留下来的原因，句子是\"That's ____ we have to stay.\"，横线处应该填哪个词？" }, "optionList": [ { "option": "how", "feedback": { "type": "npc", "npcName": "Brainy", "content": "填how的话句子意思就变成“那就是我们得怎么留下来”，不符合这里要说明“留下来的原因”的逻辑哦。" } }, { "option": "why", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太聪明了！\"That's why...\"是固定表达，意思是“那就是……的原因”，刚好承接上文说明我们必须留下来的原因，完全正确~" } }, { "option": "which", "feedback": { "type": "npc", "npcName": "Brainy", "content": "which在这里不符合语法结构，也没法表达出“原因”的含义，不合适哦，再想想吧。" } } ], "answer": [ 1 ], "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": "很棒！这句话准确礼貌地询问了Rebecca未来是否会来Wander Port，非常符合邮件的语境~" } }, { "option": "You will come to Wander Port soon, right?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话带有强烈的猜测对方一定会来的意味，我们是不确定所以询问，不是预设对方会来哦，不太合适。" } }, { "option": "Do you come to Wander Port every day?", "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": "你写的很好！" } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "你接着问如果她来的话，什么时候会到，句子是\"If so, _________ you arrive?\"，横线处应该填什么？" }, "optionList": [ { "option": "when is", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，句子里的动词是arrive，是实义动词，疑问句需要用助动词will，不能用is哦，语法不对。" } }, { "option": "when will", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！一般将来时的特殊疑问句结构是“特殊疑问词+will+主语+动词原形”，这里刚好符合，准确询问了对方到达的时间~" } }, { "option": "how is", "feedback": { "type": "npc", "npcName": "Brainy", "content": "how是询问方式的，我们这里要问的是时间，而且is也不能和动词原形arrive搭配，所以不对哦。" } } ], "answer": [ 1 ], "write": { "desc": "If so, when will you arrive?", "trans": "如果会的话，你什么时候会到呢？" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "恭喜你，你已经掌握了英文邮件的礼貌称呼、表达理解对方情绪、说明原因的固定句式That's why...以及询问未来安排的相关表达，成功完成了给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）Dear Sir,
      Brainy: 这个称呼是用来称呼陌生男性的，你知道Rebecca的名字，而且她是认识的人，用这个称呼不合适哦，再试一下吧。
    （选项 C）Hello, it's me.
      Brainy: 这个表达太随意了，不符合正式邮件的开头规范，给Rebecca的邮件需要更得体的称呼哦。

    # 问题2：
    Brainy: 你接下来要在邮件里说明你理解Rebecca的担忧，同时解释留下来的原因，以下哪个表达最准确？
    用户选项:
    （选项 A）I know you are angry. But we want to play in Wander Port.
      Brainy: 不对哦，Rebecca是担心你们的安全，不是生气，而且我们留下来是为了探索任务，不是玩耍，这个表达不符合原意~
    （选项 B）I know you are worried. But this is our best chance to explore Wander Port. [正确]
      Brainy: 太对了！你准确传达了“理解对方担忧，同时说明这是探索Wander Port的最好机会”的意思，完全符合邮件内容要求~
    （选项 C）I know you are excited. But we don't want to leave Wander Port now.
      Brainy: Rebecca是担心你们，不是兴奋，而且这句话也没有说明留下来的原因是探索任务，不符合哦，再试试吧。

    # 问题3：
    Brainy: 你想表达“这份工作对我们很重要”，现在句子是"The ____ is important for us."，横线处应该填什么？
    用户选项:
    （选项 A）jobs
      Brainy: 不对哦，句子里的be动词是is，说明主语是单数，jobs是复数形式，和is不搭配哦。
    （选项 B）job [正确]
      Brainy: 答对啦！job是单数形式，和后面的is搭配 perfectly，准确表达了“这份工作对我们很重要”的意思~
    （选项 C）projects
      Brainy: projects是复数形式，和句中的is不匹配，而且意思也不符合这里要表达的内容哦，再试一下吧。

    # 问题4：
    Brainy: 你要接着上文解释留下来的原因，句子是"That's ____ we have to stay."，横线处应该填哪个词？
    用户选项:
    （选项 A）how
      Brainy: 填how的话句子意思就变成“那就是我们得怎么留下来”，不符合这里要说明“留下来的原因”的逻辑哦。
    （选项 B）why [正确]
      Brainy: 太聪明了！"That's why..."是固定表达，意思是“那就是……的原因”，刚好承接上文说明我们必须留下来的原因，完全正确~
    （选项 C）which
      Brainy: which在这里不符合语法结构，也没法表达出“原因”的含义，不合适哦，再想想吧。

    # 问题5：
    Brainy: 你想在邮件里询问Rebecca是否会来Wander Port，以下哪个表达是正确的？
    用户选项:
    （选项 A）Will you come to Wander Port some day? [正确]
      Brainy: 很棒！这句话准确礼貌地询问了Rebecca未来是否会来Wander Port，非常符合邮件的语境~
    （选项 B）You will come to Wander Port soon, right?
      Brainy: 这句话带有强烈的猜测对方一定会来的意味，我们是不确定所以询问，不是预设对方会来哦，不太合适。
    （选项 C）Do you come to Wander Port every day?
      Brainy: 这句话是问对方是不是每天都来Wander Port，和我们要问的“未来是否会来”的意思完全不一样哦，再试一下吧。

    # 问题6：
    Brainy: 你接着问如果她来的话，什么时候会到，句子是"If so, _________ you arrive?"，横线处应该填什么？
    用户选项:
    （选项 A）when is
      Brainy: 不对哦，句子里的动词是arrive，是实义动词，疑问句需要用助动词will，不能用is哦，语法不对。
    （选项 B）when will [正确]
      Brainy: 答对啦！一般将来时的特殊疑问句结构是“特殊疑问词+will+主语+动词原形”，这里刚好符合，准确询问了对方到达的时间~
    （选项 C）how is
      Brainy: how是询问方式的，我们这里要问的是时间，而且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? 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 fresh sweet grapes. (你买了新鲜香甜的葡萄。)", "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 formed the sentence \"Is Maeve the visitor you invited?\".（你组成了句子“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 \"now\" in K(3)ledge to make \"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 completed the info sheet with knowledge and information. (你完成了填写含有知识和信息的信息表。)", "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 completed 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": "npc", "npcName": "User", "content": "Warm water here!" }, "errFeedback": { "type": "npc", "npcName": "User", "content": "It doesn't seem like there's warm water." }, "postDialog": [], "cDesc": "You found the warm water area. (你找到了温暖的水域。)" }
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": { "Vicky": 658 }, "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 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 arrange the hopscotch 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 （词义） |  |