就绪
成功: 0 失败: 0

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

生成时间: 2026-04-30 12:29:12 模型: doubao-seed-2.0-pro Wiki: AEPJwf0DUiDkWska4SbceSAbnyc
42
总组件
38
成功
3
失败
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": "加入社团", "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": "我们来认识一下这段话中的关键单词 exam，exam的意思是考试，参加考试可以说take an exam。还有另一个关键词point，point在这里指分数，拿到高分可以说get high points。", "npcName": "Brainy", "learning": [ { "answer": [ 0 ], "meaning": "句意选择题", "optionList": [ { "option": "在瓦拉学院，先锋们不用参加考试。", "feedback": { "type": "npc", "content": "太棒啦！你已经准确掌握了exam的含义，理解了这个句子的意思~", "npcName": "Brainy" } }, { "option": "在瓦拉学院，先锋们需要参加考试。", "feedback": { "type": "npc", "content": "不对哦，句子里的don't have exams是“没有考试、不用考试”的意思，再回忆下exam的释义呀。", "npcName": "Brainy" } } ], "question": { "type": "npc", "npcName": "Brainy", "content": "接下来，我们来看下包含exam的句子At Vala Academy, Pioneers don't have exams. 是什么意思呢？" } }, { "answer": [ 1 ], "meaning": "句意选择题", "optionList": [ { "option": "但是你需要获得奖励才能升级。", "feedback": { "type": "npc", "content": "这里的points指的是分数哦，不是奖励，再确认下point的意思吧。", "npcName": "Brainy" } }, { "option": "但是你需要分数来升级。", "feedback": { "type": "npc", "content": "回答正确！你已经get到point在这里的含义和整个句子的意思啦~", "npcName": "Brainy" } } ], "question": { "type": "npc", "npcName": "Brainy", "content": "我们再看看包含point的句子But you need points to level up! 是什么意思呢？" } }, { "answer": [ 1 ], "meaning": "段落大意题", "optionList": [ { "option": "瓦拉学院的先锋们既不用考试，升级也不需要任何条件。", "feedback": { "type": "npc", "content": "不对哦，段落里说升级是需要分数的，并不是没有条件，再仔细看看段落内容吧。", "npcName": "Brainy" } }, { "option": "瓦拉学院的先锋们没有考试，但升级需要获得分数。", "feedback": { "type": "npc", "content": "太厉害啦！你完全抓住了这段内容的两个核心信息哦~", "npcName": "Brainy" } } ], "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。还有另一个关键词choose，choose的意思是选择，选择喜欢的东西可以说choose something you like。", "npcName": "Brainy", "learning": [ { "answer": [ 0 ], "meaning": "句意选择题", "optionList": [ { "option": "你可以选择自己最喜欢的俱乐部加入。", "feedback": { "type": "npc", "content": "完美回答！你已经掌握了club的意思和这个句子的含义啦~", "npcName": "Brainy" } }, { "option": "你可以创建自己最喜欢的俱乐部。", "feedback": { "type": "npc", "content": "句子里的join是“加入”的意思，不是创建哦，再仔细看看句子内容吧。", "npcName": "Brainy" } } ], "question": { "type": "npc", "npcName": "Brainy", "content": "接下来，我们来看下包含club的句子You can choose your favourite club to join. 是什么意思呢？" } }, { "answer": [ 0 ], "meaning": "句意选择题", "optionList": [ { "option": "如果你对某件事感兴趣，你可以找一个相关的俱乐部。", "feedback": { "type": "npc", "content": "答对啦！你准确理解了这个句子的意思哦~", "npcName": "Brainy" } }, { "option": "如果你对某件事感兴趣，你必须自己创办相关的俱乐部。", "feedback": { "type": "npc", "content": "句子里说的是find a club“找到俱乐部”，不是必须自己创办哦，再读一遍句子确认下吧。", "npcName": "Brainy" } } ], "question": { "type": "npc", "npcName": "Brainy", "content": "我们再看看包含choose的句子If you are interested in something, you can find a club for it. 是什么意思呢？" } }, { "answer": [ 0 ], "meaning": "段落大意题", "optionList": [ { "option": "你可以选择加入喜欢的俱乐部，感兴趣的领域都能找到对应的俱乐部。", "feedback": { "type": "npc", "content": "太棒了！你完全抓住了这段的核心信息，理解得非常到位~", "npcName": "Brainy" } }, { "option": "学校的俱乐部数量很少，大部分兴趣都找不到对应的俱乐部。", "feedback": { "type": "npc", "content": "不对哦，段落里说感兴趣的内容都能找到对应的俱乐部，不是找不到，再看看段落内容吧。", "npcName": "Brainy" } } ], "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: 我们来认识一下这段话中的关键单词 exam，exam的意思是考试，参加考试可以说take an exam。还有另一个关键词point，point在这里指分数，拿到高分可以说get high points。
    1. 句意选择题
    Brainy：接下来，我们来看下包含exam的句子At Vala Academy, Pioneers don't have exams. 是什么意思呢？
    - 在瓦拉学院，先锋们不用参加考试。[正确]
      Brainy：太棒啦！你已经准确掌握了exam的含义，理解了这个句子的意思~
    - 在瓦拉学院，先锋们需要参加考试。
      Brainy：不对哦，句子里的don't have exams是“没有考试、不用考试”的意思，再回忆下exam的释义呀。

    2. 句意选择题
    Brainy：我们再看看包含point的句子But you need points to level up! 是什么意思呢？
    - 但是你需要获得奖励才能升级。
      Brainy：这里的points指的是分数哦，不是奖励，再确认下point的意思吧。
    - 但是你需要分数来升级。[正确]
      Brainy：回答正确！你已经get到point在这里的含义和整个句子的意思啦~

    3. 段落大意题
    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。还有另一个关键词choose，choose的意思是选择，选择喜欢的东西可以说choose something you like。
    1. 句意选择题
    Brainy：接下来，我们来看下包含club的句子You can choose your favourite club to join. 是什么意思呢？
    - 你可以选择自己最喜欢的俱乐部加入。[正确]
      Brainy：完美回答！你已经掌握了club的意思和这个句子的含义啦~
    - 你可以创建自己最喜欢的俱乐部。
      Brainy：句子里的join是“加入”的意思，不是创建哦，再仔细看看句子内容吧。

    2. 句意选择题
    Brainy：我们再看看包含choose的句子If you are interested in something, you can find a club for it. 是什么意思呢？
    - 如果你对某件事感兴趣，你可以找一个相关的俱乐部。[正确]
      Brainy：答对啦！你准确理解了这个句子的意思哦~
    - 如果你对某件事感兴趣，你必须自己创办相关的俱乐部。
      Brainy：句子里说的是find a club“找到俱乐部”，不是必须自己创办哦，再读一遍句子确认下吧。

    3. 段落大意题
    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": "通过拖拽单词补全句子，解锁单词城堡大门，学习相关英文词汇和表达" }
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": "小朋友你好呀，这道题我们要认识几个和动物栖息地有关的单词，先考考你，你知道“lake”是什么意思吗？" }, "optionList": [ { "option": "树", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，“树”对应的英文单词是tree，lake不是这个意思，再想想看呀。" } }, { "option": "湖", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！lake的意思就是湖，你太棒啦，这个单词我们记下来哦。" } }, { "option": "草", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，“草”对应的英文单词是grass，lake不是这个意思，再试一次吧。" } } ], "answer": [ 1 ] }, { "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": "不对哦，tree是树的意思，河马不会住在树上呀，你再想想河马的生活环境，重新选一次吧。" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，grass是草的意思，河马的主要栖息地不是草地上哦，再试着选一次吧。" } } ], "answer": [ 0 ] } ] }, { "image": "1201001_02.png", "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "这道题我们来复习动物相关的表达，首先考考你，“monkey”是什么意思呀？" }, "optionList": [ { "option": "湖", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，“湖”对应的英文单词是lake，monkey不是这个意思，再想想看吧。" } }, { "option": "猴子", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太对啦！monkey的意思就是猴子，你记得很准哦。" } }, { "option": "三", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，“三”对应的英文单词是three，monkey不是这个意思，再试一次呀。" } } ], "answer": [ 1 ] }, { "question": { "type": "npc", "npcName": "Brainy", "content": "现在看题目，Brainy问“动物园里还有什么其他的动物？”，我们要选出属于动物的选项来回答这个问题哦。" }, "optionList": [ { "option": "lake", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，lake是湖，属于地点，不是动物，不符合问题的要求，再选一次吧。" } }, { "option": "monkey", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！monkey是猴子，属于动物园里的动物，正好可以回答问题，现在试着大声把“monkey”这个单词读出来吧。" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，grass是草，属于植物，不是动物，不符合问题哦，再想想看吧。" } } ], "answer": [ 1 ] } ] } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你已经完成了所有的对话任务，还复习了lake、monkey这些重点单词，还有询问事物和地点的常用表达，你的英语又进步啦，继续加油哦！" } }
kpInfo (5个知识点)

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

中间结果: 学习流程配置

    ```
    # 小题 4
    ## 材料内容
    【展示图片1201001_02.png】

    ## 互动题目
    ### 1. 句意选词题
    Brainy：小朋友你好呀，这道题我们要认识几个和动物栖息地有关的单词，先考考你，你知道“lake”是什么意思吗？
    - 选项 A：树
      Brainy：不对哦，“树”对应的英文单词是tree，lake不是这个意思，再想想看呀。
    - 选项 B：湖[正确]
      Brainy：答对啦！lake的意思就是湖，你太棒啦，这个单词我们记下来哦。
    - 选项 C：草
      Brainy：不对哦，“草”对应的英文单词是grass，lake不是这个意思，再试一次吧。

    ### 2. 原题降级
    Brainy：现在我们来看题目，Ben问“河马住在哪里呀？”，我们要选合适的单词填到句子里，说明河马的栖息地哦。
    - 选项 A：lake[正确]
      Brainy：答对啦！河马是生活在湖里的，完整的回答就是“in the lake”，意思是在湖里，现在试着大声把这个短语读出来吧。
    - 选项 B：tree
      Brainy：不对哦，tree是树的意思，河马不会住在树上呀，你再想想河马的生活环境，重新选一次吧。
    - 选项 C：grass
      Brainy：不对哦，grass是草的意思，河马的主要栖息地不是草地上哦，再试着选一次吧。

    ---

    # 小题 5
    ## 材料内容
    【展示图片1201001_02.png】

    ## 互动题目
    ### 1. 句意选词题
    Brainy：这道题我们来复习动物相关的表达，首先考考你，“monkey”是什么意思呀？
    - 选项 A：湖
      Brainy：不对哦，“湖”对应的英文单词是lake，monkey不是这个意思，再想想看吧。
    - 选项 B：猴子[正确]
      Brainy：太对啦！monkey的意思就是猴子，你记得很准哦。
    - 选项 C：三
      Brainy：不对哦，“三”对应的英文单词是three，monkey不是这个意思，再试一次呀。

    ### 2. 原题降级
    Brainy：现在看题目，Brainy问“动物园里还有什么其他的动物？”，我们要选出属于动物的选项来回答这个问题哦。
    - 选项 A：lake
      Brainy：不对哦，lake是湖，属于地点，不是动物，不符合问题的要求，再选一次吧。
    - 选项 B：monkey[正确]
      Brainy：答对啦！monkey是猴子，属于动物园里的动物，正好可以回答问题，现在试着大声把“monkey”这个单词读出来吧。
    - 选项 C：grass
      Brainy：不对哦，grass是草，属于植物，不是动物，不符合问题哦，再想想看吧。

    ---

    # 完结反馈
    Brainy：太棒了！你已经完成了所有的对话任务，还复习了lake、monkey这些重点单词，还有询问事物和地点的常用表达，你的英语又进步啦，继续加油哦！
    ```

中间结果: 互动描述

    To unlock the Word Castle gate, you first complete the sentence about hippos' homes, dragging the word "lake" to fill in the blank "in the ___", knowing hippos live in the lake.（你完成了关于河马栖息地的句子补充，把单词“lake”拖到空白处，知道了河马生活在湖里。）
    Then you move to the zoo animal question, choosing the word "tree" as part of the other animals' living environment in the zoo, getting closer to opening the castle gate.（接着你回答了关于动物园其他动物的问题，选择单词“tree”作为动物园里其他动物生存环境的一部分，离打开城堡大门更近了一步。）

19 核心口语快答 cId: 0000800 core_speaking_reply
生成成功 ▶
taskInfo
{ "cType": "core_speaking_reply", "cId": "0000800", "title": "请你告诉清洁站的工人，大象需要洗澡，你们乐意帮助，希望送一些干净的水过来。", "taskDesc": "请你告诉清洁站的工人，大象需要洗澡，你们乐意帮助，希望送一些干净的水过来。", "sceneDesc": "你是Logan，在 Wander Port 的清洁站工作。清洁站附近有一只大象，人们都很喜欢她，喂她吃香蕉，帮她洗澡。这天你接到电话，几个孩子说大象需要洗澡，你意识到一定是饲养员粗心忘记了！孩子们说愿意帮助大象洗澡，需要借一些干净的水，你立刻答应。", "img": "", "key": [ { "desc": "Let's...的描述", "keyList": [ { "type": "default", "content": "Let's...", "desc": "让我们……" } ] }, { "desc": "Instead of..., we'd better...的描述", "keyList": [ { "type": "default", "content": "Instead of..., we'd better...", "desc": "与其……，我们不如……" } ] }, { "desc": "... love(s) to...的描述", "keyList": [ { "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", "clean", "wash", "banana", "Wander Port" ], "promptInfo": { "default": "# 1. 角色（你要扮演谁）\n你是Logan，在Wander Port的清洁站工作。你的语言风格亲切自然，适合儿童理解。\n# 2. 任务（你如何参与对话）\n1. 开场首先询问用户大象发生了什么情况，确认大象是不是需要洗澡。\n2. 得到大象需要洗澡的答复后，和用户说可以先等一等，或许饲养员很快就会来。\n3. 接下来询问用户是否愿意帮忙给大象洗澡。\n4. 如果用户表示愿意帮忙，先向用户表示感谢，然后告知对方会立刻送干净的水过去，对话结束。\n5. 如果用户没有明确说愿意帮忙，可以再友好追问一次，确认用户是否想要帮助大象。\n6. 如果用户表示不愿意帮忙，你可以告知对方你会自己联系人员处理，礼貌结束对话。\n7. 如果用户的回答和当前话题无关，可以友好把话题拉回大象的相关问题上，重复你当前需要确认的内容。\n8. 所有环节都完成后自然结束对话，不要提出新的问题。\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- 除开场轮次外，每次回应，可以先基于用户的话给一句反馈。然后再推进你的任务。", "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 don't want to wake her up.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个回答不符合现在的情况哦，现在大象是需要洗澡，不是在睡觉呀，再选一次吧。" } }, { "option": "The elephant ran away, we need to find her quickly.", "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 should wait here for the keepers to come.", "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": "Let's go home first 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": "We don't know how to take a shower.", "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 don't want to wake her up.
      Brainy：这个回答不符合现在的情况哦，现在大象是需要洗澡，不是在睡觉呀，再选一次吧。
    C. The elephant ran away, we need to find her quickly.
      Brainy：不对哦，现在没有出现大象跑走的情况，我们是要帮大象洗澡，再试试选对的答案吧~
    Logan：Are you saying she hasn't had a shower yet? Maybe someone will probably come soon.

    # 中间回合2
    Brainy：Logan说“你是说她还没洗澡吗？可能很快就有人过来了”，你现在要提议别在这儿等，最好先去给她取点水哦。
    用户选项:
    A. We should wait here for the keepers to come.
      Brainy：这个回答不对哦，我们不用在这里等饲养员，要先主动去取水，再选一次吧。
    B. Instead of waiting here, we'd better get some water for her first.
      Brainy：答对啦！你太厉害了，现在把这句话大声读出来好不好~
    C. Let's go home first 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. We don't know how to take a shower.
      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. 如果用户的回答和当前话题无关，可以友好把话题拉回大象的相关问题上，重复你当前需要确认的内容。
    8. 所有环节都完成后自然结束对话，不要提出新的问题。
    # 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,clean,wash,banana,Wander Port

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\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 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 can I find the gym?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "你已经问过健身房的位置啦，现在需要找Chloe要毛巾哦，再试一次吧。" } }, { "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": [ 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": "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": "你已经知道了健身房的位置，也成功索要了毛巾，还了解了健身房的相关功能，这次的对话任务圆满完成啦！" } } }
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 can I find the gym?
      Brainy：你已经问过健身房的位置啦，现在需要找Chloe要毛巾哦，再试一次吧。
    （选项 B）Can I have a towel please? [正确]
      Brainy：太聪明啦！你正确表达了想要一条毛巾的需求。请大声朗读这句话！
    （选项 C）What can I do in the gym?
      Brainy：这句话是询问健身房的可用功能的，现在你需要先索要毛巾哦，再试一次吧。
    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：你已经知道了健身房的位置，也成功索要了毛巾，还了解了健身房的相关功能，这次的对话任务圆满完成啦！
    ```

中间结果: 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": "", "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": "这个单词的意思是寒冷的，是用来描述天气感受的，不是季节名称，和现在老师问的季节问题不匹配哦。请再仔细听清问题，告诉老师现在是什么季节。" } }, { "option": "Snow.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个单词的意思是雪，是冬天会出现的事物，不是季节名称，不符合现在的问题哦。请再仔细听清问题，告诉老师现在是什么季节。" } } ], "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": "这个单词的意思是冬天，是季节名称，老师现在问的是冬天的冷热感受，和问题不匹配哦。请再仔细听清问题，告诉老师冬天是热还是冷。" } }, { "option": "Cold.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你正确说出了冬天的感受是寒冷的。请大声朗读这个单词！" } }, { "option": "Snow.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个单词的意思是雪，是冬天的事物，不是描述冷热感受的词汇，不符合现在的问题哦。请再仔细听清问题，告诉老师冬天是热还是冷。" } } ], "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": "这个单词的意思是冬天，是季节本身，不是冬天能看到的具体事物，和现在的问题不匹配哦。请再仔细听清问题，告诉老师你在冬天能看到什么。" } }, { "option": "Cold.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个单词的意思是寒冷的，是冬天的感受，不是能看到的具体事物，不符合现在的问题哦。请再仔细听清问题，告诉老师你在冬天能看到什么。" } }, { "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 my questions about winter!" } } ] } ], "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）Cold.
      Brainy: 这个单词的意思是寒冷的，是用来描述天气感受的，不是季节名称，和现在老师问的季节问题不匹配哦。请再仔细听清问题，告诉老师现在是什么季节。
    （选项 C）Snow.
      Brainy: 这个单词的意思是雪，是冬天会出现的事物，不是季节名称，不符合现在的问题哦。请再仔细听清问题，告诉老师现在是什么季节。

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

    # 中间回合3
    Rock: What do you see in winter?
    Brainy: Rock 老师现在问你在冬天能看到什么，你需要说出冬天特有的事物哦。
    用户选项:
    （选项 A）Winter.
      Brainy: 这个单词的意思是冬天，是季节本身，不是冬天能看到的具体事物，和现在的问题不匹配哦。请再仔细听清问题，告诉老师你在冬天能看到什么。
    （选项 B）Cold.
      Brainy: 这个单词的意思是寒冷的，是冬天的感受，不是能看到的具体事物，不符合现在的问题哦。请再仔细听清问题，告诉老师你在冬天能看到什么。
    （选项 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 ] }, { "question": [ 2 ] }, { "question": [ 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 是动词“烘焙”的意思，at home 是短语“在家”，组合起来的原型短语 bake at home 就是我们要掌握的重点内容哦。", "type": "npc", "npcName": "Brainy", "learning": [ { "answer": [ 1 ], "meaning": "听音选句", "optionList": [ { "feedback": { "type": "npc", "content": "不对哦，这句话里说的是 read at home（在家读书），没有提到我们的重点内容 bake at home 哦，再仔细听一遍音频试试吧~", "npcName": "Brainy" }, "option": "When you really want sweet food, like biscuits or cake, you can read at home." }, { "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." } ], "question": { "type": "npc", "content": "认真听音频，选出你听到的句子哦。", "npcName": "Brainy" } }, { "answer": [ 0 ], "meaning": "听音选意", "optionList": [ { "feedback": { "type": "npc", "content": "完全正确！你不仅听懂了整句话的意思，还掌握了 bake at home 这个实用短语，太厉害了！", "npcName": "Brainy" }, "option": "当你很想吃甜食，比如饼干或蛋糕时，你可以在家烘焙。" }, { "feedback": { "type": "npc", "content": "不对哦，这句话的重点是做和甜食相关的事，不是在家阅读哦，再仔细想想看吧~", "npcName": "Brainy" }, "option": "当你很想吃甜食，比如饼干或蛋糕时，你可以在家阅读。" } ], "question": { "type": "npc", "content": "现在我们来看看这句话的意思，选出正确的中文翻译吧。", "npcName": "Brainy" } } ] } ] }
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 是动词“烘焙”的意思，at home 是短语“在家”，组合起来的原型短语 bake at home 就是我们要掌握的重点内容哦。
    1. 听音选句
    Brainy：认真听音频，选出你听到的句子哦。
    - When you really want sweet food, like biscuits or cake, you can read at home.
      - Brainy：不对哦，这句话里说的是 read at home（在家读书），没有提到我们的重点内容 bake at home 哦，再仔细听一遍音频试试吧~
    - When you really want sweet food, like biscuits or cake, you can bake at home. [正确]
      - Brainy：太棒啦！你准确听出了句子里的重点短语 bake at home，做得非常好！

    2. 听音选意
    Brainy：现在我们来看看这句话的意思，选出正确的中文翻译吧。
    - 当你很想吃甜食，比如饼干或蛋糕时，你可以在家烘焙。[正确]
      - Brainy：完全正确！你不仅听懂了整句话的意思，还掌握了 bake at home 这个实用短语，太厉害了！
    - 当你很想吃甜食，比如饼干或蛋糕时，你可以在家阅读。
      - Brainy：不对哦，这句话的重点是做和甜食相关的事，不是在家阅读哦，再仔细想想看吧~
    ---
    # 完成反馈
    Brainy：很好！你已经回答完了全部问题，相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!
    ```

中间结果: 互动描述

    You listened to the audio about how to live a healthy life, learning you should go to bed on time and get up early, stay away from smoking and alcohol. (你听了关于如何健康生活的音频，了解到应该早睡早起，远离烟酒。)
    You also got to know that keeping healthy 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 core_listening_choose
生成成功 ▶
taskInfo
{ "cType": "core_listening_choose", "cId": "0000800", "title": "", "sceneDesc": "心心念念的短裤原来卡在石头间了，快抓紧时间请钓鱼叔叔帮忙钓上来吧！", "key": [ { "desc": "", "keyList": [ { "type": "default", "content": "summer", "desc": "n. 夏天" }, { "type": "default", "content": "hot", "desc": "adj. 热的" }, { "type": "default", "content": "trousers", "desc": "n. 长裤" }, { "type": "default", "content": "shorts", "desc": "n. 短裤" }, { "type": "default", "content": "It feels...", "desc": "感觉......" }, { "type": "default", "content": "Could you...", "desc": "可以请你......吗？" } ] } ], "resourceMapping": { "Vicky": 658 }, "cDesc": "请提供具体的题目材料和相关正确答案内容，我会按照要求为你生成符合规范的叙事化描述。" }
questionGroup
无
studyInfo
{ "learningPart": [ { "type": "npc", "npcName": "Brainy", "content": "This summer!", "learning": [ { "question": { "content": "刚刚听到的音频中，包含了一个关键短语 summer，意思是夏天，是一年中天气比较炎热的季节哦。", "type": "npc", "npcName": "Brainy" }, "extendQuestion": { "content": "仔细听音频，下面哪一个句子和你听到的内容一致呢？", "type": "npc", "npcName": "Brainy" }, "optionList": [ { "option": "This winter!", "feedback": { "type": "npc", "content": "不对哦，这句话说的是winter（冬天），我们听到的是夏天相关的表达，再试试吧~", "npcName": "Brainy" } }, { "option": "This summer!", "feedback": { "type": "npc", "content": "太棒啦！你精准听出了句子里的重点单词summer！", "npcName": "Brainy" } } ], "answer": [ 1 ] }, { "question": { "content": "This summer!", "type": "npc", "npcName": "Brainy" }, "extendQuestion": { "content": "\"这个冬天！\"这句话是刚才句子的中文意思吗？", "type": "npc", "npcName": "Brainy" }, "optionList": [ { "option": "对 / Yes", "feedback": { "type": "npc", "content": "summer是夏天的意思哦，不是冬天，再仔细想想呀~", "npcName": "Brainy" } }, { "option": "错 / No", "feedback": { "type": "npc", "content": "完全正确！你已经掌握了summer的意思啦，真厉害！", "npcName": "Brainy" } } ], "answer": [ 1 ] } ] } ], "closing": { "type": "npc", "content": "很好！你已经回答完了全部问题，相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!", "npcName": "Brainy" } }
kpInfo (6个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | summer n. 夏天 |  |
[1] |  |  | hot adj. 热的 |  |
[2] |  |  | trousers n. 长裤 |  |
[3] |  |  | shorts n. 短裤 |  |
[4] |  |  | It feels... 感觉...... |  |
[5] |  |  | Could you... 可以请你......吗？ |  |

中间结果: 学习过程配置

    ```
    # 重点句子 1
    音频文本：This summer!
    讲解文本：刚刚听到的音频中，包含了一个关键短语 summer，意思是夏天，是一年中天气比较炎热的季节哦。
    1. 听音选句
    Brainy：仔细听音频，下面哪一个句子和你听到的内容一致呢？
    - This winter!
      - Brainy：不对哦，这句话说的是winter（冬天），我们听到的是夏天相关的表达，再试试吧~
    - This summer! [正确]
      - Brainy：太棒啦！你精准听出了句子里的重点单词summer！
    2. 听音选意
    Brainy："这个冬天！"这句话是刚才句子的中文意思吗？
    - 对 / Yes
      - Brainy：summer是夏天的意思哦，不是冬天，再仔细想想呀~
    - 错 / No [正确]
      - Brainy：完全正确！你已经掌握了summer的意思啦，真厉害！
    ---
    # 完成反馈
    Brainy：很好！你已经回答完了全部问题，相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!
    ```

中间结果: 互动描述

    请提供具体的题目材料和相关正确答案内容，我会按照要求为你生成符合规范的叙事化描述。

26 看图组句 cId: 0000800 ? 失败 ▶
错误: LLM返回内容不是合法JSON: Expecting value: line 1 column 1 (char 0) 内容: 无
27 核心看图撰写 cId: 0000800 core_writing_imgWrite
生成成功 ▶
taskInfo
{ "cId": "0000800", "cType": "core_writing_imgWrite", "title": "填写大象护理记录", "taskDesc": "根据图片内容，填写大象护理报告。", "sceneDesc": "粗心的大象饲养员忘记给大象洗澡了！真是照顾不周。你们给大象洗了澡，还喂了香蕉，现在把这些都记在护理记录上吧！", "img": "", "plotSummary": "", "stemDesc": [ "0000800-00.png", "0000800-01.png", "0000800-02.png" ], "key": [ { "keyList": [ { "type": "default", "content": "elephant", "desc": "n. 大象" }, { "type": "default", "content": "banana", "desc": "n. 香蕉" }, { "type": "default", "content": "shower", "desc": "n. 淋浴、洗澡" }, { "type": "default", "content": "... love(s) to...", "desc": "……喜爱……" } ] } ], "cDesc": "Animal Keeper's Record Animal type: Elephant Food: She ate bananas. Cleaning: She had a shower today. What does she love? The elephant loves showers and bananas!（动物饲养员记录\n动物种类：大象\n食物：她吃了香蕉。\n清洁：她今天洗了澡。\n她喜欢什么呢？\n这头大象喜欢洗澡和香蕉！）" }
textInfo
{ "inputType": "write", "passCondition": "说明动物类型是大象。说明大象吃了香蕉。说明大象洗了澡。表达大象喜欢香蕉和洗澡。", "textList": [ { "mode": "preset", "desc": "Animal Keeper's Record" }, { "mode": "fillingInput", "desc": "Animal type: ___ ", "answerText": "Elephant", "hint": "动物种类：大象（Elephant）" }, { "mode": "fillingInput", "desc": "Food: She ate ___ .", "answerText": "bananas", "hint": "食物：她吃了香蕉（bananas）。" }, { "mode": "fillingInput", "desc": "Cleaning: She had ___ today. ", "answerText": "a shower", "hint": "清洁：她今天洗了澡（a shower）。" }, { "mode": "preset", "desc": "What does she love?" }, { "mode": "universalInput", "answerText": "The elephant loves showers and bananas!", "hint": "这头大象喜欢洗澡和香蕉！（The elephant loves showers and bananas!）" } ] }
studyInfo
{ "learningPart": [ { "leadIn": { "image": "0000800-00.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你现在要开始填写大象的护理记录，首先需要在报告最上方写上记录的标题，你应该选择哪一项作为标题呢？" }, "optionList": [ { "option": "Animal Keeper's Record", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！这就是饲养员护理记录的标准标题，放在最开头非常合适~" } }, { "option": "Elephant Health Diary", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个是“大象健康日记”的意思，不是我们要使用的护理记录标准标题哦，再想想看。" } }, { "option": "Zoo Animal List", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个意思是“动物园动物清单”，和护理记录的用途不符，再试一下吧。" } } ], "answer": [ 0 ], "write": { "desc": "Animal Keeper's Record", "trans": "动物饲养员记录" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "image": "0000800-01.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "接下来要填写动物类型这一栏，你需要在横线上填正确的内容，应该选哪一项呢？" }, "optionList": [ { "option": "Tiger", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，我们今天护理的是大象，不是老虎，再选选看吧。" } }, { "option": "Elephant", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！我们今天照顾的动物是大象，填在这里完全正确。" } }, { "option": "Panda", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，大熊猫不是我们今天的护理对象，再想一想正确的答案吧。" } } ], "answer": [ 1 ], "write": { "desc": "Elephant", "trans": "大象" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "image": "0000800-02.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "现在要填写食物部分的记录：“她吃了___”，你还记得喂给大象的食物是什么吗？选合适的内容填进去吧。" }, "optionList": [ { "option": "carrots", "feedback": { "type": "npc", "npcName": "Brainy", "content": "胡萝卜不是我们今天喂给大象的食物哦，回忆一下，你刚才喂给大象的是另外一种黄黄的水果~" } }, { "option": "bananas", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太对啦！我们刚才给大象喂了香蕉，填在这里完全符合记录~" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "草不是我们这次喂给大象的食物，再想想你刚才喂的是什么吧。" } } ], "answer": [ 1 ], "write": { "desc": "She ate bananas.", "trans": "她吃了香蕉。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "image": "0000800-00.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "接下来填写清洁相关的记录：“她今天洗了___”，你刚才帮大象做了什么清洁项目呢？选正确的内容填进去吧。" }, "optionList": [ { "option": "a shower", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对了！我们刚才帮大象洗了澡，这里填a shower刚好对应我们做的清洁工作~" } }, { "option": "a haircut", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，我们今天没有给大象剪头发，这个选项不符合我们做的护理工作，再试试。" } }, { "option": "a tooth brushing", "feedback": { "type": "npc", "npcName": "Brainy", "content": "我们今天没有帮大象刷牙哦，这个和我们做的清洁内容不符，再想一想吧。" } } ], "answer": [ 0 ], "write": { "desc": "She had a shower today.", "trans": "她今天洗了澡。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "image": "0000800-01.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "记录里现在有一个问题“她喜欢什么？”，你需要选择合适的句子来回答这个问题，把它填到记录里吧。" }, "optionList": [ { "option": "The elephant loves carrots and grass.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，我们今天的护理里没有提到大象喜欢胡萝卜和草，结合你刚才做的护理内容再想想吧。" } }, { "option": "The elephant loves showers and bananas!", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太聪明啦！我们刚才给大象洗了澡、喂了香蕉，这两样正好是大象喜欢的东西，回答完全正确~" } }, { "option": "The elephant loves sleeping and running.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "我们的护理记录里没有提到大象喜欢睡觉和跑步哦，结合今天的护理经历选更合适的答案吧。" } } ], "answer": [ 1 ], "write": { "desc": "The elephant loves showers and bananas!", "trans": "这头大象喜欢洗澡和香蕉！" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "恭喜你，可以使用准确的单词 elephant、banana、shower，短语 love to，以及相关句型填写完整的大象护理记录，准确描述了照顾大象的相关内容!" } }
evalInfo
{ "title": "填写大象护理记录", "taskDesc": "根据图片内容，填写大象护理报告。", "sceneDesc": "粗心的大象饲养员忘记给大象洗澡了！真是照顾不周。你们给大象洗了澡，还喂了香蕉，现在把这些都记在护理记录上吧！", "knowledge": "elephant n. 大象\nbanana n. 香蕉\nshower n. 淋浴、洗澡\n... love(s) to... ……喜爱……", "passCondition": "说明动物类型是大象。说明大象吃了香蕉。说明大象洗了澡。表达大象喜欢香蕉和洗澡。", "textList": [ { "mode": "preset", "desc": "Animal Keeper's Record" }, { "mode": "fillingInput", "desc": "Animal type: ___ ", "answerText": "Elephant", "hint": "动物种类：大象（Elephant）" }, { "mode": "fillingInput", "desc": "Food: She ate ___ .", "answerText": "bananas", "hint": "食物：她吃了香蕉（bananas）。" }, { "mode": "fillingInput", "desc": "Cleaning: She had ___ today. ", "answerText": "a shower", "hint": "清洁：她今天洗了澡（a shower）。" }, { "mode": "preset", "desc": "What does she love?" }, { "mode": "universalInput", "answerText": "The elephant loves showers and bananas!", "hint": "这头大象喜欢洗澡和香蕉！（The elephant loves showers and bananas!）" } ] }
kpInfo (4个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | elephant n. 大象 |  |
[1] |  |  | banana n. 香蕉 |  |
[2] |  |  | shower n. 淋浴、洗澡 |  |
[3] |  |  | ... love(s) to... ……喜爱…… |  |

中间结果: 学习流程配置

    ```
    # 问题1：
    Brainy: 你现在要开始填写大象的护理记录，首先需要在报告最上方写上记录的标题，你应该选择哪一项作为标题呢？
    用户选项:
    （选项 A）Animal Keeper's Record [正确]
      Brainy: 答对啦！这就是饲养员护理记录的标准标题，放在最开头非常合适~
    （选项 B）Elephant Health Diary
      Brainy: 这个是“大象健康日记”的意思，不是我们要使用的护理记录标准标题哦，再想想看。
    （选项 C）Zoo Animal List
      Brainy: 这个意思是“动物园动物清单”，和护理记录的用途不符，再试一下吧。

    # 问题2：
    Brainy: 接下来要填写动物类型这一栏，你需要在横线上填正确的内容，应该选哪一项呢？
    用户选项:
    （选项 A）Tiger
      Brainy: 不对哦，我们今天护理的是大象，不是老虎，再选选看吧。
    （选项 B）Elephant [正确]
      Brainy: 太棒了！我们今天照顾的动物是大象，填在这里完全正确。
    （选项 C）Panda
      Brainy: 不对哦，大熊猫不是我们今天的护理对象，再想一想正确的答案吧。

    # 问题3：
    Brainy: 现在要填写食物部分的记录：“她吃了___”，你还记得喂给大象的食物是什么吗？选合适的内容填进去吧。
    用户选项:
    （选项 A）carrots
      Brainy: 胡萝卜不是我们今天喂给大象的食物哦，回忆一下，你刚才喂给大象的是另外一种黄黄的水果~
    （选项 B）bananas [正确]
      Brainy: 太对啦！我们刚才给大象喂了香蕉，填在这里完全符合记录~
    （选项 C）grass
      Brainy: 草不是我们这次喂给大象的食物，再想想你刚才喂的是什么吧。

    # 问题4：
    Brainy: 接下来填写清洁相关的记录：“她今天洗了___”，你刚才帮大象做了什么清洁项目呢？选正确的内容填进去吧。
    用户选项:
    （选项 A）a shower [正确]
      Brainy: 答对了！我们刚才帮大象洗了澡，这里填a shower刚好对应我们做的清洁工作~
    （选项 B）a haircut
      Brainy: 不对哦，我们今天没有给大象剪头发，这个选项不符合我们做的护理工作，再试试。
    （选项 C）a tooth brushing
      Brainy: 我们今天没有帮大象刷牙哦，这个和我们做的清洁内容不符，再想一想吧。

    # 问题5：
    Brainy: 记录里现在有一个问题“她喜欢什么？”，你需要选择合适的句子来回答这个问题，把它填到记录里吧。
    用户选项:
    （选项 A）The elephant loves carrots and grass.
      Brainy: 不对哦，我们今天的护理里没有提到大象喜欢胡萝卜和草，结合你刚才做的护理内容再想想吧。
    （选项 B）The elephant loves showers and bananas! [正确]
      Brainy: 太聪明啦！我们刚才给大象洗了澡、喂了香蕉，这两样正好是大象喜欢的东西，回答完全正确~
    （选项 C）The elephant loves sleeping and running.
      Brainy: 我们的护理记录里没有提到大象喜欢睡觉和跑步哦，结合今天的护理经历选更合适的答案吧。
    ```

中间结果: 互动描述

    Animal Keeper's Record Animal type: Elephant Food: She ate bananas. Cleaning: She had a shower today. What does she love? The elephant loves showers and bananas!（动物饲养员记录
    动物种类：大象
    食物：她吃了香蕉。
    清洁：她今天洗了澡。
    她喜欢什么呢？
    这头大象喜欢洗澡和香蕉！）

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?\n（亲爱的丽贝卡：\n我知道你很担心。但这是我们探索漫游港的最佳机会。这项任务对我们很重要。这就是我们必须留下来的原因。你某天会来漫游港吗？你什么时候会到呢？）" }
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": "邮件正文里你想表达“这份工作对我们来说很重要”，现在需要补全句子\"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": "你接下来要说明留下的原因，需要补全句子\"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": "不对哦，这里你想要询问的是时间，how是用来询问方式的，而且同样is不能和实义动词原形arrive搭配，不符合语义和语法要求，再思考一下吧。" } } ], "answer": [ 0 ], "write": { "desc": "When will you arrive?", "trans": "你什么时候会到？" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "恭喜你，你已经掌握了名词单复数搭配be动词的用法、固定句式\"That's why...\"的使用以及一般将来时询问时间的表达，能够顺利完成给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": "用户写出：这份工作很重要。这就是我们为什么要留下。你什么时候将会到达？", "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: 邮件正文里你想表达“这份工作对我们来说很重要”，现在需要补全句子"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: 你接下来要说明留下的原因，需要补全句子"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: 不对哦，这里你想要询问的是时间，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? 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": "非常好！这是英文邮件给联系人写称呼的标准正确表达，很适合放在邮件开头。" } }, { "option": "Hello Rebecca?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个表达是口语化的疑问句式，不符合正式邮件开头称呼的用法哦，邮件开头称呼不需要用问号，试试更标准的写法吧。" } }, { "option": "Rebecca listen:", "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的担心，同时说明你们留下的初步理由，你会选择哪一句来表达？" }, "optionList": [ { "option": "I know you are excited. But we want to visit Wander Port for fun.", "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": "太棒啦！你准确回应了Rebecca的担忧，同时也清晰说明了你们想要留下探索Wander Port的理由，表达完全符合语境。" } }, { "option": "I know you are angry. 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": "你写的很好！" } } ] }, { "leadIn": { "desc": "Tell her your decision and why." }, "learning": [ { "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\"是单数形式，和后面的be动词\"is\"搭配一致，也准确表达了这项探索工作对你们很重要的意思。" } }, { "option": "projects", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，\"projects\"是复数形式，和句子里的单数be动词\"is\"不匹配，不符合语法要求，再试一次吧。" } } ], "answer": [ 1 ], "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": "现在你要承接上文，说明这就是你们必须留下的原因，句子\"That's ____ we have to stay.\"的空格里应该填什么？" }, "optionList": [ { "option": "how", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，\"how\"是用来询问方式的，这里你要表达的是留下的原因，\"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": "Do you come to Wander Port yesterday?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，这个句子时态有问题，\"yesterday\"是过去的时间，而且你问的是未来的事，表达完全不符合语境，再试一次吧。" } }, { "option": "Have you come to Wander Port already?", "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": "你接着问如果她会来的话，什么时候到达，句子\"If so, _________ you arrive?\"的空格里应该填什么？" }, "optionList": [ { "option": "when is", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，句子里的动词是原形\"arrive\"，不能和be动词\"is\"搭配，语法上是错误的，再想想吧。" } }, { "option": "when will", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！\"when will you arrive?\"是询问对方将来到达时间的正确表达，符合你询问Rebecca来的时间的需求，语法和语义都正确。" } }, { "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: 非常好！这是英文邮件给联系人写称呼的标准正确表达，很适合放在邮件开头。
    （选项 B）Hello Rebecca?
      Brainy: 这个表达是口语化的疑问句式，不符合正式邮件开头称呼的用法哦，邮件开头称呼不需要用问号，试试更标准的写法吧。
    （选项 C）Rebecca listen:
      Brainy: 这个表达非常口语化，语气也比较生硬，不适合用在给对方的邮件开头哦，再想想合适的称呼方式吧。

    # 问题2：
    Brainy: 写完称呼后，你首先要回应Rebecca的担心，同时说明你们留下的初步理由，你会选择哪一句来表达？
    用户选项:
    （选项 A）I know you are excited. But we want to visit Wander Port for fun.
      Brainy: 不对哦，任务背景里Rebecca是担心你们的安全，而且你们留下是为了学院探索任务，不是为了游玩，这句话不符合语境，再试一次吧。
    （选项 B）I know you are worried. But this is our best chance to explore Wander Port. [正确]
      Brainy: 太棒啦！你准确回应了Rebecca的担忧，同时也清晰说明了你们想要留下探索Wander Port的理由，表达完全符合语境。
    （选项 C）I know you are angry. 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"是单数形式，和后面的be动词"is"搭配一致，也准确表达了这项探索工作对你们很重要的意思。
    （选项 C）projects
      Brainy: 不对哦，"projects"是复数形式，和句子里的单数be动词"is"不匹配，不符合语法要求，再试一次吧。

    # 问题4：
    Brainy: 现在你要承接上文，说明这就是你们必须留下的原因，句子"That's ____ we have to stay."的空格里应该填什么？
    用户选项:
    （选项 A）how
      Brainy: 不对哦，"how"是用来询问方式的，这里你要表达的是留下的原因，"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）Do you come to Wander Port yesterday?
      Brainy: 不对哦，这个句子时态有问题，"yesterday"是过去的时间，而且你问的是未来的事，表达完全不符合语境，再试一次吧。
    （选项 C）Have you come to Wander Port already?
      Brainy: 这句话是询问对方是否已经来过Wander Port了，而你要问的是未来会不会来，语义不匹配哦，再调整一下吧。

    # 问题6：
    Brainy: 你接着问如果她会来的话，什么时候到达，句子"If so, _________ you arrive?"的空格里应该填什么？
    用户选项:
    （选项 A）when is
      Brainy: 不对哦，句子里的动词是原形"arrive"，不能和be动词"is"搭配，语法上是错误的，再想想吧。
    （选项 B）when will [正确]
      Brainy: 答对啦！"when will you arrive?"是询问对方将来到达时间的正确表达，符合你询问Rebecca来的时间的需求，语法和语义都正确。
    （选项 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 grape 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 a bunch of fresh grapes. (你购买了一串新鲜的葡萄。)", "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?\". (你组成了正确的句子。)", "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 complete the word \"knowledge\". (你填入\"now\"补全了单词“知识”。)", "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 filled in \"knowledge\" and \"information\" correctly.（你正确填写了“知识”对应的英文单词。）", "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": "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 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": { "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 the parts of the house that need fixing. (你找到了房子需要修复的部分。)" }
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 hopscotch steps 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": {}, "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 （词义） |  |