就绪
成功: 0 失败: 0

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

生成时间: 2026-04-30 14:43:57 模型: doubao-seed-2.0-pro Wiki: AEPJwf0DUiDkWska4SbceSAbnyc
42
总组件
36
成功
5
失败
1
跳过
1 对话朗读 cId: 0000800 mid_dialog_repeat
已保存 ▶
jsonData
{ "cType": "mid_dialog_repeat", "cId": "0000800", "title": "表示大家一起上学", "resourceMapping": { "Eva": 663, "Peter": 653, "Vicky": 658 }, "preDialog": [ { "type": "user", "content": "Great!" }, { "type": "user", "content": "Oh, there's no time left." } ], "imgShowTimingList": [ "content" ], "img": "0000800.png", "question": { "type": "user", "content": "Let's go to school now." }, "postDialog": [] }
kpInfo JSON
{ "pushType": "relationKp", "cType": "mid_dialog_repeat", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "school", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] } ] }
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 JSON
{ "pushType": "relationKp", "cType": "mid_dialog_fillin", "cId": "0000801", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "school", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] } ] }
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 JSON
{ "pushType": "relationKp", "cType": "mid_dialog_repeat", "cId": "0000802", "kpInfo": [ { "kpId": "0107009", "kpType": "sentence", "kpTitle": "You need to...", "kpSkill": "sentence_meaning", "kpSkillName": "语义", "candidates": [ { "kp_id": "0107009", "type": "sentence", "title": "You need to...", "vala_level": "L2", "en_desc": "" } ] }, { "kpId": "0112033", "kpType": "vocab", "kpTitle": "study", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [ { "kp_id": "0112033", "type": "vocab", "title": "study", "vala_level": "L2", "en_desc": "to learn about something by reading, observing, or doing experiments" } ] }, { "kpId": null, "kpType": "vocab", "kpTitle": "play", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [ { "kp_id": "0110025", "type": "vocab", "title": "player", "vala_level": "L2", "en_desc": "a person who takes part in a game or sport" }, { "kp_id": "0110027", "type": "sentence", "title": "There are... players in the band.", "vala_level": "L2", "en_desc": "" } ] } ] }
kpInfo (3个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] | 0107009 ▼ 0107009 sentence L2 You need to... |  | You need to... |  |
[1] | 0112033 ▼ 0112033 vocab L2 study to learn about something by reading, observing, or doing experiments |  | study |  |
[2] | (未匹配 - 2个候选) ▼ 0110025 vocab L2 player a person who takes part in a game or sport 0110027 sentence L2 There are... players in the band. |  | 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 JSON
{ "pushType": "relationKp", "cType": "mid_dialog_repeat", "cId": "0000803", "kpInfo": [ { "kpId": "0112016", "kpType": "sentence", "kpTitle": "We can...", "kpSkill": "sentence_meaning", "kpSkillName": "语义", "candidates": [ { "kp_id": "0112016", "type": "sentence", "title": "We can...", "vala_level": "L2", "en_desc": "" } ] }, { "kpId": null, "kpType": "vocab", "kpTitle": "play", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [ { "kp_id": "0110025", "type": "vocab", "title": "player", "vala_level": "L2", "en_desc": "a person who takes part in a game or sport" }, { "kp_id": "0110027", "type": "sentence", "title": "There are... players in the band.", "vala_level": "L2", "en_desc": "" } ] }, { "kpId": null, "kpType": "vocab", "kpTitle": "school", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] } ] }
kpInfo (3个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] | 0112016 ▼ 0112016 sentence L2 We can... |  | We can... |  |
[1] | (未匹配 - 2个候选) ▼ 0110025 vocab L2 player a person who takes part in a game or sport 0110027 sentence L2 There are... players in the band. |  | 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 JSON
{ "pushType": "relationKp", "cType": "mid_dialog_repeat", "cId": "0000804", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "student", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] } ] }
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 JSON
{ "pushType": "relationKp", "cType": "mid_dialog_sentence", "cId": "0000805", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "student", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] } ] }
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 JSON
{ "pushType": "relationKp", "cType": "mid_dialog_fillin", "cId": "0000808", "kpInfo": [ { "kpId": "0112033", "kpType": "vocab", "kpTitle": "study", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [ { "kp_id": "0112033", "type": "vocab", "title": "study", "vala_level": "L2", "en_desc": "to learn about something by reading, observing, or doing experiments" } ] } ] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] | 0112033 ▼ 0112033 vocab L2 study to learn about something by reading, observing, or doing experiments |  | 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 JSON
{ "pushType": "relationKp", "cType": "mid_dialog_sentence", "cId": "0000811", "kpInfo": [ { "kpId": "0107009", "kpType": "sentence", "kpTitle": "You need to...", "kpSkill": "sentence_meaning", "kpSkillName": "语义", "candidates": [ { "kp_id": "0107009", "type": "sentence", "title": "You need to...", "vala_level": "L2", "en_desc": "" } ] }, { "kpId": "0112033", "kpType": "vocab", "kpTitle": "study", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [ { "kp_id": "0112033", "type": "vocab", "title": "study", "vala_level": "L2", "en_desc": "to learn about something by reading, observing, or doing experiments" } ] } ] }
kpInfo (2个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] | 0107009 ▼ 0107009 sentence L2 You need to... |  | You need to... |  |
[1] | 0112033 ▼ 0112033 vocab L2 study to learn about something by reading, observing, or doing experiments |  | 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 JSON
{ "pushType": "relationKp", "cType": "mid_dialog_sentence", "cId": "0000812", "kpInfo": [ { "kpId": "0107009", "kpType": "sentence", "kpTitle": "You need to...", "kpSkill": "sentence_meaning", "kpSkillName": "语义", "candidates": [ { "kp_id": "0107009", "type": "sentence", "title": "You need to...", "vala_level": "L2", "en_desc": "" } ] }, { "kpId": null, "kpType": "vocab", "kpTitle": "school", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] } ] }
kpInfo (2个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] | 0107009 ▼ 0107009 sentence L2 You need to... |  | 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 JSON
{ "pushType": "relationKp", "cType": "mid_dialog_fillin", "cId": "0000813", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "play", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [ { "kp_id": "0110025", "type": "vocab", "title": "player", "vala_level": "L2", "en_desc": "a person who takes part in a game or sport" }, { "kp_id": "0110027", "type": "sentence", "title": "There are... players in the band.", "vala_level": "L2", "en_desc": "" } ] } ] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] | (未匹配 - 2个候选) ▼ 0110025 vocab L2 player a person who takes part in a game or sport 0110027 sentence L2 There are... players in the band. |  | 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 JSON
{ "pushType": "relationKp", "cType": "mid_dialog_sentence", "cId": "0000814", "kpInfo": [ { "kpId": "0112016", "kpType": "sentence", "kpTitle": "We can...", "kpSkill": "sentence_meaning", "kpSkillName": "语义", "candidates": [ { "kp_id": "0112016", "type": "sentence", "title": "We can...", "vala_level": "L2", "en_desc": "" } ] } ] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] | 0112016 ▼ 0112016 sentence L2 We can... |  | 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 JSON
{ "pushType": "relationKp", "cType": "mid_dialog_fillin", "cId": "0000815", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "student", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] } ] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] | (无候选) ▼ 无候选知识点 |  | student |  |

17 核心合作阅读 cId: 0000800 core_reading_order
已保存 ▶
taskInfo
{ "cType": "core_reading_order", "cId": "0000800", "title": "阅读Brainy的社团介绍", "sceneDesc": "你们听说Vala学院没有考试，正在欢呼雀跃。突然发现Pioneer的一项重要任务：加入社团！为什么Pioneer一定要加入社团呢？快来阅读Brainy的介绍吧。", "img": "", "key": [ { "desc": "词汇类", "keyList": [ { "type": "default", "content": "plant", "desc": "n. 植物" }, { "type": "default", "content": "club", "desc": "n. 俱乐部" }, { "type": "default", "content": "join", "desc": "v. 加入" }, { "type": "default", "content": "member", "desc": "n. 成员" }, { "type": "default", "content": "choose", "desc": "v. 选择" }, { "type": "default", "content": "interested", "desc": "adj. 感兴趣的" } ] } ], "resourceMapping": { "Eva": 738, "Peter": 739 } }
materialInfo
{ "text": [ { "textType": "Lcd", "textTitle": "How to Join Clubs?", "textBody": "<sp>You can choose your favourite club to join. If you are interested in something, you can find a club for it. The robot club, the plant club, the sports club, and the reading club are all popular choices.<br>If you are not interested in any club, you can start a new one with friends!<br><sp>图片:[0101106_core reading2]" } ], "question": [ { "type": "npc", "npcName": "Brainy", "content": "At Vala Academy, how can Pioneers get points?", "optionList": [ { "option": "Take many exams.", "feedback": { "type": "npc", "npcName": "Otis", "content": "No! We have no exams!" } }, { "option": "Join clubs.", "feedback": { "type": "npc", "npcName": "Otis", "content": "Right. We need to join a club to get points." } }, { "option": "Level up.", "feedback": { "type": "npc", "npcName": "Otis", "content": "We have to get points first, then we can level up." } } ], "answer": [ 1 ], "meaning": "", "explain": "" }, { "type": "npc", "npcName": "Brainy", "content": "What can you do in a club?", "optionList": [ { "option": "We can earn some money.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "No, that's not right." } }, { "option": "We can play, study and work together.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "That's right! That's what clubs are for!" } }, { "option": "We can only play.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "Hmm… We play, but we also study and work." } } ], "answer": [ 1 ], "meaning": "", "explain": "" }, { "type": "npc", "npcName": "Otis", "content": "How can we choose a club?", "optionList": [ { "option": "We can only choose the plant club and the robot club.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "Nope! We can choose from many clubs." } }, { "option": "We can choose a club we are interested in.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "Yes, exactly! Choose what you like!" } }, { "option": "We must start a new club.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "No, not must. Only if you want to." } } ], "answer": [ 1 ], "meaning": "", "explain": "" }, { "type": "npc", "npcName": "Skylar", "content": "If we are not interested in any club, what should we do?", "optionList": [ { "option": "We can't join any clubs.", "feedback": { "type": "npc", "npcName": "Otis", "content": "Uh… That sounds bad." } }, { "option": "We can start a new club.", "feedback": { "type": "npc", "npcName": "Otis", "content": "Yes! That sounds okay." } }, { "option": "We can only join the plant club.", "feedback": { "type": "npc", "npcName": "Otis", "content": "I don't think so… We have other choices." } } ], "answer": [ 1 ], "meaning": "", "explain": "" } ] }
flowInfo
{ "sequence": [ { "text": [ 0 ] }, { "dialog": { "type": "npc", "npcName": "Brainy", "content": "Now, let’s make sure you understand everything." } }, { "question": [ 0 ] }, { "question": [ 1 ] }, { "text": [ 1 ] }, { "question": [ 2 ] }, { "question": [ 3 ] } ] }
studyInfo
{ "closing": { "type": "npc", "content": "太棒啦！你已经完成了这两段内容的全部学习，知识点都掌握得很不错哦，继续加油~", "npcName": "Brainy" }, "learningPart": [ { "leadIn": { "desc": "At Vala Academy, Pioneers don't have exams. But you need points to level up!" }, "type": "npc", "content": "我们来认识一下这段话中的关键单词 exam，exam 的意思是考试，参加考试可以说 take an exam。还有第二个关键单词 point，在这里表示积分、分数，获得积分可以说 get points。", "npcName": "Brainy", "learning": [ { "answer": [ 0 ], "meaning": "句意选择题", "optionList": [ { "option": "在瓦拉学院，开拓者们不用参加考试。", "feedback": { "type": "npc", "content": "太棒啦！你完全掌握了exam的意思，这个句子理解得很准确~", "npcName": "Brainy" } }, { "option": "在瓦拉学院，开拓者们不用参加俱乐部活动。", "feedback": { "type": "npc", "content": "不对哦，俱乐部活动的英文是club activity，不是我们这里说的exam，再回忆一下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": "你把句子的逻辑弄反啦，是需要积分来升级，不是升级拿积分哦，再仔细看看句子意思吧。", "npcName": "Brainy" } }, { "option": "但是你需要积分来升级。", "feedback": { "type": "npc", "content": "回答完美！你已经掌握了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": "我们来认识一下这段话中的关键单词 choose，choose 的意思是选择、挑选，选择你喜欢的东西可以说 choose what you like。还有第二个关键单词 interested，interested 的意思是感兴趣的，对某件事感兴趣可以说 be interested in something。", "npcName": "Brainy", "learning": [ { "answer": [ 0 ], "meaning": "句意选择题", "optionList": [ { "option": "你可以选择你最喜欢的俱乐部加入。", "feedback": { "type": "npc", "content": "回答正确！你已经完全掌握了choose的意思和这个句子的含义啦~", "npcName": "Brainy" } }, { "option": "你可以创建你最喜欢的俱乐部。", "feedback": { "type": "npc", "content": "不对哦，创建的英文是start，不是我们这里讲的choose，再回忆一下choose的意思吧。", "npcName": "Brainy" } } ], "question": { "type": "npc", "npcName": "Brainy", "content": "接下来，我们来看下包含 choose 的句子 You can choose your favourite club to join. 是什么意思呢？" } }, { "answer": [ 0 ], "meaning": "句意选择题", "optionList": [ { "option": "如果你对某件事感兴趣，你可以找到一个对应的俱乐部。", "feedback": { "type": "npc", "content": "太棒啦！你对interested的意思和整个句子的理解都很到位~", "npcName": "Brainy" } }, { "option": "如果你对某件事不感兴趣，你可以和朋友一起创办新俱乐部。", "feedback": { "type": "npc", "content": "这个句子说的是感兴趣的情况哦，创办新俱乐部是另外的内容啦，再仔细看看句子意思吧。", "npcName": "Brainy" } } ], "question": { "type": "npc", "npcName": "Brainy", "content": "我们再看看包含 interested 的句子 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 JSON
{ "pushType": "relationKp", "cType": "core_reading_order", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "plant n. 植物", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] }, { "kpId": null, "kpType": "vocab", "kpTitle": "club n. 俱乐部", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] }, { "kpId": null, "kpType": "vocab", "kpTitle": "join v. 加入", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] }, { "kpId": null, "kpType": "vocab", "kpTitle": "member n. 成员", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] }, { "kpId": null, "kpType": "vocab", "kpTitle": "choose v. 选择", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] }, { "kpId": null, "kpType": "vocab", "kpTitle": "interested adj. 感兴趣的", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] } ] }
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，在这里表示积分、分数，获得积分可以说 get points。
    1. 句意选择题
    Brainy：接下来，我们来看下包含 exam 的句子 At Vala Academy, Pioneers don't have exams. 是什么意思呢？
    - 在瓦拉学院，开拓者们不用参加考试。[正确]
      Brainy：太棒啦！你完全掌握了exam的意思，这个句子理解得很准确~
    - 在瓦拉学院，开拓者们不用参加俱乐部活动。
      Brainy：不对哦，俱乐部活动的英文是club activity，不是我们这里说的exam，再回忆一下exam的意思吧。

    2. 句意选择题
    Brainy：我们再看看包含point的句子 But you need points to level up! 是什么意思呢？
    - 但是你需要达到一定等级才能获得积分。
      Brainy：你把句子的逻辑弄反啦，是需要积分来升级，不是升级拿积分哦，再仔细看看句子意思吧。
    - 但是你需要积分来升级。[正确]
      Brainy：回答完美！你已经掌握了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：我们来认识一下这段话中的关键单词 choose，choose 的意思是选择、挑选，选择你喜欢的东西可以说 choose what you like。还有第二个关键单词 interested，interested 的意思是感兴趣的，对某件事感兴趣可以说 be interested in something。
    1. 句意选择题
    Brainy：接下来，我们来看下包含 choose 的句子 You can choose your favourite club to join. 是什么意思呢？
    - 你可以选择你最喜欢的俱乐部加入。[正确]
      Brainy：回答正确！你已经完全掌握了choose的意思和这个句子的含义啦~
    - 你可以创建你最喜欢的俱乐部。
      Brainy：不对哦，创建的英文是start，不是我们这里讲的choose，再回忆一下choose的意思吧。

    2. 句意选择题
    Brainy：我们再看看包含 interested 的句子 If you are interested in something, you can find a club for it. 是什么意思呢？
    - 如果你对某件事感兴趣，你可以找到一个对应的俱乐部。[正确]
      Brainy：太棒啦！你对interested的意思和整个句子的理解都很到位~
    - 如果你对某件事不感兴趣，你可以和朋友一起创办新俱乐部。
      Brainy：这个句子说的是感兴趣的情况哦，创办新俱乐部是另外的内容啦，再仔细看看句子意思吧。

    3. 段落大意题
    Brainy：了解了关键单词和句子，我们来看看这一段主要在讲什么吧？
    - 介绍了怎么选择俱乐部，对什么感兴趣就可以找对应的俱乐部加入。[正确]
      Brainy：太聪明了！你完全抓住了段落的核心意思~
    - 所有的俱乐部都很受欢迎，大家都可以参加。
      Brainy：这一段没有提到俱乐部受不受欢迎哦，这是后面的内容啦，再看看这段的内容吧。

    # 完结反馈
    Brainy：太棒啦！你已经完成了这两段内容的全部学习，知识点都掌握得很不错哦，继续加油~
    ```

18 核心看图选词 cId: 0000800 core_reading_imageDrag
已保存 ▶
taskInfo
{ "cType": "core_reading_imageDrag", "cId": "0000800", "title": "补全句子打开城堡大门", "taskDesc": "观察主图内容，将下方选项池中的单词拖拽到对应句子的空白处，补全所有句子。", "sceneDesc": "你来到了神奇的单词城堡，城堡的墙上有很多缺了单词的句子，你需要找到正确的单词把它们补全，才能打开城堡的大门哦！", "key": [ { "desc": "", "keyList": [ { "type": "default", "content": "lake", "desc": "n. 湖" }, { "type": "default", "content": "monkey", "desc": "n. 猴子" }, { "type": "default", "content": "three", "desc": "num. 三" }, { "type": "default", "content": "How many ...?", "desc": "多少……？" }, { "type": "default", "content": "There be ...", "desc": "有……" } ] } ], "resourceMapping": { "Eva": 738, "Peter": 739 }, "cDesc": "你在神奇单词城堡里读到关于河马栖息地的问题，填入单词lake，了解到河马生活在湖里，接着你思考动物园里的其他动物相关内容，选出单词tree，回忆起很多动物园里的动物都在树的周边或树上生活。" }
questionGroup
[{'image': '1201001_02.png', 'questionList': [{'type': 'npc', 'npcName': 'Brainy', 'content': 'Ben: Where do hippos live？', 'desc': 'in the ___', 'optionList': [{'option': 'lake'}, {'option': 'tree'}, {'option': 'grass'}], 'answer': [0]}, {'type': 'npc', 'npcName': 'Brainy', 'title': 'Brainy: What other animals are there in the zoo？', 'desc': '___', 'optionList': [{'option': 'lake'}, {'option': 'tree'}, {'option': 'grass'}], 'answer': [1]}]}]
studyInfo
{ "learningPart": [ { "image": "1201001_02.png", "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "这道题我们要学习名词lake的用法哦，lake的意思是“湖”，我们来看看哪个选项是它的正确释义吧~" }, "optionList": [ { "option": "树", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个选项不对哦，“树”对应的英文单词是tree，不是lake，再试试吧~" } }, { "option": "湖", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！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": "这道题我们要区分三个名词的意思，我们先来复习一下哦：lake是湖，tree是树，grass是草。现在来考考你，哪个单词是“树”的意思呀？" }, "optionList": [ { "option": "lake", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，lake的意思是湖，不是树，再想一想吧~" } }, { "option": "tree", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！tree的中文意思就是树，你记得很准哦~" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，grass的意思是草，不是树，再尝试选一次吧~" } } ], "answer": [ 1 ] }, { "question": { "type": "npc", "npcName": "Brainy", "content": "现在看题目，Brainy问“动物园里还有什么其他的东西/动物？”，你需要选出动物园里存在的事物哦。" }, "optionList": [ { "option": "lake", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，虽然动物园里可能有小湖，但这不是我们这道题的正确答案，再想想还有什么是动物园里常见的呀，再选一次吧~" } }, { "option": "tree", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！动物园里会种很多树，所以tree是符合题意的~ 现在试着大声把\"tree\"这个单词读出来吧~" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，草虽然也可能在动物园里出现，但这不是本题的正确答案，再想想更典型的选项吧，重新选一次哦~" } } ], "answer": [ 1 ] } ] } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你已经完成了所有的题目，还复习了lake、tree、grass这些核心词汇的意思和用法，又进步了一大截哦，继续加油！" } }
kpInfo JSON
{ "pushType": "relationKp", "cType": "core_reading_imageDrag", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "lake n. 湖", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] }, { "kpId": null, "kpType": "vocab", "kpTitle": "monkey n. 猴子", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] }, { "kpId": null, "kpType": "vocab", "kpTitle": "three num. 三", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] }, { "kpId": null, "kpType": "sentence", "kpTitle": "How many ...? 多少……？", "kpSkill": "sentence_meaning", "kpSkillName": "语义", "candidates": [] }, { "kpId": null, "kpType": "sentence", "kpTitle": "There be ... 有……", "kpSkill": "sentence_meaning", "kpSkillName": "语义", "candidates": [] } ] }
kpInfo (5个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] | (无候选) ▼ 无候选知识点 |  | lake n. 湖 |  |
[1] | (无候选) ▼ 无候选知识点 |  | monkey n. 猴子 |  |
[2] | (无候选) ▼ 无候选知识点 |  | three num. 三 |  |
[3] | (无候选) ▼ 无候选知识点 |  | How many ...? 多少……？ |  |
[4] | (无候选) ▼ 无候选知识点 |  | There be ... 有…… |  |

中间结果: 学习流程配置

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

    ## 互动题目
    ### 1. 句意选词题
    Brainy：这道题我们要学习名词lake的用法哦，lake的意思是“湖”，我们来看看哪个选项是它的正确释义吧~
    - 选项 A：树
      Brainy：这个选项不对哦，“树”对应的英文单词是tree，不是lake，再试试吧~
    - 选项 B：湖[正确]
      Brainy：答对啦！lake的中文意思就是湖，你掌握得很棒哦~

    ### 2. 原题降级
    Brainy：现在我们来看题目，Ben问“河马住在哪里呀？”，你需要选一个合适的单词填到空里，补全回答“在____里”。结合生活常识想一想河马的生存环境哦~
    - 选项 A：lake[正确]
      Brainy：太聪明啦！河马是生活在湖里的，所以这句话的意思就是“在湖里”，现在试着大声把"in the lake"读出来吧~
    - 选项 B：tree
      Brainy：不对哦，tree是树的意思，河马不会住在树上，再结合河马的生活习性想一想，重新选一次吧~
    - 选项 C：grass
      Brainy：不对哦，grass是草的意思，河马不是栖息在草里的，再想想什么地方适合河马生活，重新选一次吧~

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

    ## 互动题目
    ### 1. 句意选词题
    Brainy：这道题我们要区分三个名词的意思，我们先来复习一下哦：lake是湖，tree是树，grass是草。现在来考考你，哪个单词是“树”的意思呀？
    - 选项 A：lake
      Brainy：不对哦，lake的意思是湖，不是树，再想一想吧~
    - 选项 B：tree[正确]
      Brainy：答对啦！tree的中文意思就是树，你记得很准哦~
    - 选项 C：grass
      Brainy：不对哦，grass的意思是草，不是树，再尝试选一次吧~

    ### 2. 原题降级
    Brainy：现在看题目，Brainy问“动物园里还有什么其他的东西/动物？”，你需要选出动物园里存在的事物哦。
    - 选项 A：lake
      Brainy：不对哦，虽然动物园里可能有小湖，但这不是我们这道题的正确答案，再想想还有什么是动物园里常见的呀，再选一次吧~
    - 选项 B：tree[正确]
      Brainy：答对啦！动物园里会种很多树，所以tree是符合题意的~ 现在试着大声把"tree"这个单词读出来吧~
    - 选项 C：grass
      Brainy：不对哦，草虽然也可能在动物园里出现，但这不是本题的正确答案，再想想更典型的选项吧，重新选一次哦~

    ---
    # 完结反馈
    Brainy：太棒了！你已经完成了所有的题目，还复习了lake、tree、grass这些核心词汇的意思和用法，又进步了一大截哦，继续加油！
    ```

中间结果: 互动描述

    To open the gate of the magic word castle, you read the question about where hippos live and fill the blank with "lake", knowing that hippos make their homes in the lake（你在神奇单词城堡里读到关于河马栖息地的问题，填入单词lake，了解到河马生活在湖里）.
    Then you think about the other animals in the zoo, and pick "tree" as the related element, remembering that many zoo animals live around or in the trees（接着你思考动物园里的其他动物相关内容，选出单词tree，回忆起很多动物园里的动物都在树的周边或树上生活）.

19 核心口语快答 cId: 0000800 core_speaking_reply
已保存 ▶
taskInfo
{ "cType": "core_speaking_reply", "cId": "0000800", "title": "请你告诉清洁站的工人，大象需要洗澡，你们乐意帮助，希望送一些干净的水过来。", "taskDesc": "请你告诉清洁站的工人，大象需要洗澡，你们乐意帮助，希望送一些干净的水过来。", "sceneDesc": "你是Logan，在 Wander Port 的清洁站工作。清洁站附近有一只大象，人们都很喜欢她，喂她吃香蕉，帮她洗澡。这天你接到电话，几个孩子说大象需要洗澡，你意识到一定是饲养员粗心忘记了！孩子们说愿意帮助大象洗澡，需要借一些干净的水，你立刻答应。", "img": "", "key": [ { "desc": "", "keyList": [ { "type": "default", "content": "Let's...", "desc": "让我们……" }, { "type": "default", "content": "Instead of..., we'd better...", "desc": "与其……，我们不如……" }, { "type": "default", "content": "... love(s) to...", "desc": "……很乐意……" } ] } ], "resourceMapping": { "Eva": 738, "Peter": 739 } }
dialogSetting
{ "setting": { "npcName": "Logan", "round": 5, "checkRound": 3 } }
dialogConfig
{ "config": { "asrPrompt": "elephant,shower,water,keepers,help,clean,wash,banana", "promptInfo": { "default": "\n# 1. 角色（你要扮演谁）\n你是Logan，在Wander Port的清洁站工作。你的语言风格亲切易懂，适合儿童理解。\n# 2. 任务（你如何参与对话）\n1. 开场先询问大象的情况，确认大象是不是需要洗澡。\n2. 当用户说明大象需要洗澡后，表达惊讶，告诉用户可以先等一等，或许饲养员很快会来。\n3. 接下来询问用户是否愿意帮忙给大象洗澡。\n4. 如果用户表示愿意帮忙，先表达感谢，然后告诉用户你会马上送干净的水过去，之后自然结束对话。\n5. 如果用户没有明确说愿意帮忙，要友好引导，再询问一次用户是否愿意提供帮助。\n6. 如果用户表达了和任务无关的内容，友好把话题拉回大象洗澡的相关事情上，不要偏离主线任务。\n7. 如果用户回答中有语法错误，不需要纠正，正常回应内容即可，保护孩子的表达积极性。\n# 3. 背景信息\n你是Logan，在 Wander Port 的清洁站工作。清洁站附近有一只大象，人们都很喜欢她，喂她吃香蕉，帮她洗澡。这天你接到电话，几个孩子说大象需要洗澡，你意识到一定是饲养员粗心忘记了！孩子们说愿意帮助大象洗澡，需要借一些干净的水，你立刻答应。\n# 4. 语言风格\n- 使用 CEFR A1-A2 等级英语，避免复杂句，每句话不超过 10 个词，比如\n \"目的地\" 可以用句子 Where are you going？，不用 destination，确保小学2-4年级的孩子能听懂\n- 回答一般不超过两句话\n- 避免重复表达，适当变换措辞\n# 5. 开场白 (仅用于首轮)\n由你开始对话，你会问用户：\"Hi. What happened to the elephant?\"\n# 6. 回应方式\n- 无论用户如何对话，你都应基于你的身份做出合理反应。\n- 每次最多只提问一个问题，等待用户回答后再继续。\n- 除开场轮次外，每次回应，可以先基于用户的话给一句反馈。然后再推进你的任务。\n", "scene": "你是Logan，在 Wander Port 的清洁站工作。清洁站附近有一只大象，人们都很喜欢她，喂她吃香蕉，帮她洗澡。这天你接到电话，几个孩子说大象需要洗澡，你意识到一定是饲养员粗心忘记了！孩子们说愿意帮助大象洗澡，需要借一些干净的水，你立刻答应。", "in_progress_goal": "用户告诉清洁站的工人，大象需要洗澡，并且表示乐意帮助，要求 Logan 送一些干净的水过来。", "final_goal": "用户告诉清洁站的工人，大象需要洗澡，并提出需要一些水。", "reference_dialog": "Logan: Hi. What happened to the elephant?\nUser: The elephant needs a shower. Let's set up a shower for her.\nLogan: Are you saying she hasn't had a shower yet? Maybe someone will probably come soon.\nUser: Instead of waiting here, we'd better get some water for her first.\nLogan: The keepers are too careless! Thank you! Can you help her shower?\nUser: We'd love to help.\nLogan: Great. We will send some water to her right away.", "user_task": "请你告诉清洁站的工人，大象需要洗澡，你们乐意帮助，希望送一些干净的水过来。", "user_scene": "你是Logan，在 Wander Port 的清洁站工作。清洁站附近有一只大象，人们都很喜欢她，喂她吃香蕉，帮她洗澡。这天你接到电话，几个孩子说大象需要洗澡，你意识到一定是饲养员粗心忘记了！孩子们说愿意帮助大象洗澡，需要借一些干净的水，你立刻答应。", "user_knowledge": "Let's... 让我们……\nInstead of..., we'd better... 与其……，我们不如……\n... love(s) to... ……很乐意……" } } }
studyInfo
{ "learningPart": { "opening": { "type": "npc", "npcName": "Logan", "content": "Hi. What happened to the elephant?" }, "wrongReadLeadIn": { "type": "npc", "content": "请根据提词框内的内容大声地朗读这句话", "npcName": "Brainy" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "Logan在问大象发生什么事啦，你现在需要告诉他大象需要洗澡，我们可以帮它安排洗澡哦。" }, "optionList": [ { "option": "The elephant needs a shower. Let's set up a shower for her.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "回答正确呀！太棒了，你试着把这句话大声读出来吧~" } }, { "option": "The elephant is hungry. Let's give her some bananas.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个选项说的是大象饿了要给它喂香蕉，但是我们现在是要告诉Logan大象需要洗澡哦，不对哦，再选一次吧~" } }, { "option": "The elephant is lost. Let's help her find the keeper.", "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": "You are right. Let's wait for the keepers here.", "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 to the zoo to see other animals first.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话说我们先去动物园看其他动物，现在我们要先解决大象洗澡的问题哦，这个回答不合适，再试试吧~" } } ], "answer": [ 1 ], "read": { "type": "user", "content": "Instead of waiting here, we'd better get some water for her first." }, "feedback": { "type": "npc", "npcName": "Logan", "content": "The keepers are too careless! Thank you! Can you help her shower?" } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "Logan说饲养员太粗心了，还问你能不能帮忙给大象洗澡，你要告诉他你们很乐意帮忙哦。" }, "optionList": [ { "option": "We'd love to help.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "回答正确！你真的很棒哦，来把这句话大声读出来吧~" } }, { "option": "No, we are very busy now.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是说我们很忙没办法帮忙，和我们本来愿意帮忙的想法不一样哦，再选一次吧~" } }, { "option": "We have no time to take a shower now.", "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": "太棒啦！你已经成功完成了这次对话任务，你不仅告诉了Logan大象需要洗澡，还主动提出帮忙，太厉害了哦~" } } }
kpInfo JSON
{ "pushType": "relationKp", "cType": "core_speaking_reply", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "Let's... 让我们……", "kpSkill": "sentence_meaning", "kpSkillName": "语义", "candidates": [] }, { "kpId": null, "kpType": "sentence", "kpTitle": "Instead of..., we'd better... 与其……，我们不如……", "kpSkill": "sentence_meaning", "kpSkillName": "语义", "candidates": [] }, { "kpId": null, "kpType": "sentence", "kpTitle": "... love(s) to... ……很乐意……", "kpSkill": "sentence_meaning", "kpSkillName": "语义", "candidates": [] } ] }
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 hungry. Let's give her some bananas.
      Brainy：这个选项说的是大象饿了要给它喂香蕉，但是我们现在是要告诉Logan大象需要洗澡哦，不对哦，再选一次吧~
    C. The elephant is lost. Let's help her find the keeper.
      Brainy：这句话的意思是大象走失了要帮它找饲养员，和我们现在要表达的大象需要洗澡的内容不相符哦，再试试看吧~
    Logan：Are you saying she hasn't had a shower yet? Maybe someone will probably come soon.

    # 中间回合2
    Brainy：Logan问你是不是说大象还没洗澡，还说可能很快就有人来啦。你可以提议不用在这儿等，我们最好先去给它打点水哦。
    用户选项:
    A. You are right. Let's wait for the keepers here.
      Brainy：这个选项是说我们就在这儿等饲养员，和我们想要主动先去打水的想法不一样哦，再选一次吧~
    B. Instead of waiting here, we'd better get some water for her first.
      Brainy：完全正确！你太厉害了，试着把这句话大声读一遍吧~
    C. Let's go to the zoo to see other animals first.
      Brainy：这句话说我们先去动物园看其他动物，现在我们要先解决大象洗澡的问题哦，这个回答不合适，再试试吧~
    Logan：The keepers are too careless! Thank you! Can you help her shower?

    # 中间回合3
    Brainy：Logan说饲养员太粗心了，还问你能不能帮忙给大象洗澡，你要告诉他你们很乐意帮忙哦。
    用户选项:
    A. We'd love to help.
      Brainy：回答正确！你真的很棒哦，来把这句话大声读出来吧~
    B. No, we are very busy now.
      Brainy：这句话是说我们很忙没办法帮忙，和我们本来愿意帮忙的想法不一样哦，再选一次吧~
    C. We have no time to take a shower now.
      Brainy：这个选项说我们现在没时间洗澡，是你要帮大象洗澡哦，理解错啦，再试试看~
    Logan：Great. We will send some water to her right away.

    # 结尾回合
    Brainy：太棒啦！你已经成功完成了这次对话任务，你不仅告诉了Logan大象需要洗澡，还主动提出帮忙，太厉害了哦~
    ```

中间结果: promptInfo配置

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

中间结果: 语音识别热词

    elephant,shower,water,keepers,help,clean,wash,banana

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

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

中间结果: 学习流程配置

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

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

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

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

    # 结尾回合
    Brainy: Chloe已经告诉了你在健身房可以运动、欣赏风景或者放松，你已经问清了健身房位置、要到了毛巾，也了解了健身房的相关信息，任务圆满完成啦！
    ```

中间结果: promptInfo配置

    ```
    # 1. 角色（你要扮演谁）
    - 你是Chloe，是Twilight的空乘，服务好每一位乘客是你的使命。
    - 你对之前帮你解过围的用户态度格外友善热情。
    # 2. 任务（你如何参与到整个对话）
    - 你只在用户提问时提供特定信息，不主动透露知识库中的信息。
    - 如果用户提问的内容在知识库范围内，你会准确回答。
    - 如果用户的问题不清晰，你会尝试确认问题。
    - 一般情况下，一次最多只回答知识库中的一条信息，除非用户明确地分别提问到多条信息。
    - 如果用户不提问，你会温和、自然地进行交谈。
    # 3. 背景信息
    你是 Chloe，是 Twilight 的空乘，服务好每一位乘客是你的使命。
    用户之前帮你在另一位乘客面前解了围，你很感谢用户的帮忙，对用户的态度也格外友善热情。
    你发现用完餐的用户正在东张西望，似乎在寻找什么，你确认用户需要帮助，于是上前询问。你发现用户想去健身房消消食，但是不知道方向，于是回答了用户的问题，提供了你的帮助。
    # 4. 知识库（你知道的信息）
    - 健身房就在前方过道的尽头。
    - 你会为有需要的用户准备一条新毛巾。
    - 你会解答用户的问题，告诉用户在健身房可以进行的活动：运动、看宇宙风光（sightseeing），或者可以拉伸放松、进行休息。
    - 对用户的任何提问，你都耐心安抚并一一回答。
    # 5. 语言风格
    - 使用 CEFR A1-A2 等级英语，避免复杂句，每句话不超过 10 个词，比如
      "我要去..." 可以用句子 I am going to ...，不用 My destination is ...，确保小学2-4年级的孩子能听懂
    - 回答一般不超过两句话
    - 避免重复表达，适当变换措辞
    # 6. 开场白
    你由你开始对话，你会说："Can I help you?"
    # 7. 回应方式（固定内容）
    - 你只在用户提问时才根据知识库中的信息回答。其他时候，以符合你身份的方式，自然地进行交谈。
    - 不主动提供知识库的信息
    - 不主动提问题
    ```

中间结果: 语音识别热词

    gym,towel,exercise,sightseeing,walkway,relax

22 核心看图说话 cId: 0000800 core_speaking_image
已保存 ▶
taskInfo
{ "cType": "core_speaking_image", "cId": "0000800", "title": "", "taskDesc": "回答 Mr Rock 的问题", "sceneDesc": "Mr Rock 要给我们煮东西吃，看着暖腾腾的热气，听着咕咚咚的水声，闻着香飘飘的味道，心里美滋滋。等待开饭的时间里，和 Mr Rock 聊聊天吧。", "key": [ { "desc": "", "keyList": [ { "type": "default", "content": "winter", "desc": "n. 冬天" }, { "type": "default", "content": "cold", "desc": "adj. 冷的" }, { "type": "default", "content": "snow", "desc": "n. 雪" } ] } ], "resourceMapping": { "Eva": 738, "Peter": 739 }, "cDesc": "NPC: What season is it?\nUser: Winter.\nNPC: Is it hot or cold?\nUser: Cold.\nNPC: What do you see in winter?\nUser: Snow." }
dialogConfig
{ "config": { "asrPrompt": "winter,cold,snow,season,hot", "promptInfo": { "user_scene": "Mr Rock 要给我们煮东西吃，看着暖腾腾的热气，听着咕咚咚的水声，闻着香飘飘的味道，心里美滋滋。等待开饭的时间里，和 Mr Rock 聊聊天吧。", "user_task": "回答 Mr Rock 的问题", "user_knowledge": "winter 冬天\ncold 冷的\nsnow 雪", "pass_condition": "用户说出：\n1. 冬天\n2. 冷的\n3. 雪", "reference_dialog": "NPC: What season is it?\nUser: Winter.\nNPC: Is it hot or cold?\nUser: Cold.\nNPC: What do you see in winter?\nUser: Snow.", "questionList": [ { "type": "npc", "npcName": "Rock", "content": "What season is it?", "index": 0, "answerText": "Winter." }, { "type": "npc", "npcName": "Rock", "content": "Is it hot or cold?", "index": 1, "answerText": "Cold." }, { "type": "npc", "npcName": "Rock", "content": "What do you see in winter?", "index": 2, "answerText": "Snow." } ] } } }
studyInfo
{ "learningPart": [ { "leadIn": { "type": "npc", "npcName": "Rock", "content": "What season is it?" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "Rock 老师问你现在是什么季节，你需要告诉他当前所处的季节。", "index": 0 }, "optionList": [ { "option": "Winter.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你正确说出了现在是冬天。请大声朗读这个单词！" } }, { "option": "Cold.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个单词的意思是寒冷的，但老师现在问的是季节，不是天气感受哦。请仔细听清问题，告诉老师现在的季节。" } }, { "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! You know a lot 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 JSON
{ "pushType": "relationKp", "cType": "core_speaking_image", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "winter 冬天", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] }, { "kpId": null, "kpType": "vocab", "kpTitle": "cold 冷的", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] }, { "kpId": null, "kpType": "vocab", "kpTitle": "snow 雪", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] } ] }
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 表示“烘焙”这个动作，home 是“家”，组合起来就是在家自己做烘焙食物的意思哦。", "type": "npc", "npcName": "Brainy", "learning": [ { "question": { "type": "npc", "content": "仔细听音频，选一选哪一句是你刚刚听到的内容吧~", "npcName": "Brainy" }, "optionList": [ { "option": "When you really want sweet food, like biscuits or cake, you can eat at a shop.", "feedback": { "type": "npc", "content": "不对哦，这句话说的是 eat at a shop（在商店吃），不是我们音频里的重点内容 bake at home，再听一遍试试呀。", "npcName": "Brainy" } }, { "option": "When you really want sweet food, like biscuits or cake, you can bake at home.", "feedback": { "type": "npc", "content": "太厉害啦！你精准听出了句子里的重点短语 bake at home！", "npcName": "Brainy" } } ], "answer": [ 1 ], "meaning": "听音选句" }, { "question": { "type": "npc", "content": "现在来看看这句话是什么意思，选出正确的中文翻译吧~", "npcName": "Brainy" }, "optionList": [ { "option": "当你很想吃甜食，比如饼干或者蛋糕的时候，你可以在家烘焙。", "feedback": { "type": "npc", "content": "完全正确！你不仅弄懂了整句话的意思，还掌握了 bake at home 这个实用短语，真棒！", "npcName": "Brainy" } }, { "option": "当你很想吃甜食，比如饼干或者蛋糕的时候，你可以去商店买。", "feedback": { "type": "npc", "content": "不对哦，这句话里没有说去商店买的内容，再仔细看看句子里的关键信息吧~", "npcName": "Brainy" } } ], "answer": [ 0 ], "meaning": "听音选意" } ] } ] }
kpInfo JSON
{ "pushType": "relationKp", "cType": "core_listening_order", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "bake v. 烘焙；烤制", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] }, { "kpId": null, "kpType": "vocab", "kpTitle": "healthy adj. 健康的", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] }, { "kpId": null, "kpType": "vocab", "kpTitle": "money n. 钱", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] }, { "kpId": null, "kpType": "vocab", "kpTitle": "cake n. 蛋糕", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] }, { "kpId": null, "kpType": "vocab", "kpTitle": "alcohol n. 含酒精饮料", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] } ] }
kpInfo (5个知识点)

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

中间结果: 学习过程配置

    ```
    # 重点句子 1
    音频文本：When you really want sweet food, like biscuits or cake, you can bake at home.
    讲解文本：刚刚听到的音频中，包含了一个关键短语 bake at home，意思是在家烘焙。bake 表示“烘焙”这个动作，home 是“家”，组合起来就是在家自己做烘焙食物的意思哦。
    1. 听音选句
    Brainy：仔细听音频，选一选哪一句是你刚刚听到的内容吧~
    - When you really want sweet food, like biscuits or cake, you can eat at a shop.
      - Brainy：不对哦，这句话说的是 eat at a shop（在商店吃），不是我们音频里的重点内容 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 sleep and get up on time, stay away from smoking and alcohol.（你听了关于如何健康生活的音频，了解到你应该按时作息，远离烟酒。）
    You also got to know keeping healthy doesn't need much money or expensive stuff, and good habits are the most important thing for health.（你还知道了保持健康不需要很多钱或者昂贵的东西，好习惯对健康来说才是最重要的。）

24 听力拖拽 cId: 0000800 ? 失败 ▶
错误: LLM返回内容不是合法JSON: Expecting value: line 1 column 1 (char 0) 内容: 无
25 听力选择 cId: 0000800 ? 失败 ▶
错误: LLM返回内容不是合法JSON: Expecting value: line 1 column 1 (char 0) 内容: 无
26 看图组句 cId: 0000800 ? 失败 ▶
错误: LLM返回内容不是合法JSON: Expecting value: line 1 column 1 (char 0) 内容: 无
27 看图撰写 cId: 0000800 ? 失败 ▶
错误: LLM返回内容不是合法JSON: Expecting value: line 1 column 1 (char 0) 内容: 无
28 核心邮件组句 cId: 0000800 core_writing_questionMakeSentence
已保存 ▶
taskInfo
{ "cId": "0000800", "cType": "core_writing_questionMakeSentence", "title": "编写给 Rebecca 的邮件", "taskDesc": "请根据提示问题，用英文组句完成这封邮件。", "sceneDesc": "Rebecca听上去十分担心你们的安全，你们刚刚做出了决定，要继续留在 Wander Port 进行学院的探索任务，你需要回一封邮件给她，告诉她你们的决定以及原因，顺便询问她何时会来。", "img": "", "plotSummary": "", "stemDesc": [ "What is your opinion on the job?", "Why do you want to stay?", "Ask her when to come." ], "key": [ { "keyList": [ { "type": "default", "content": "The job is...", "desc": "这份工作......" }, { "type": "default", "content": "That's why we have to...", "desc": "这就是为什么我们必须……" }, { "type": "default", "content": "When will you arrive?", "desc": "你什么时候会到？" } ] } ], "cDesc": "Dear Rebecca, I know you are worried. But this is our best chance to explore Wander Port. The job is important for us. That's why we have to stay. Will you come to Wander Port some day? When will you arrive?（亲爱的丽贝卡：我知道你很担心。但这是我们探索漫游港的最佳机会。这项工作对我们来说很重要。这就是我们必须留下来的原因。你会有一天来漫游港吗？你什么时候会到？）" }
textInfo
{ "inputType": "sentence", "passCondition": "用户写出：这份工作很重要。这就是我们为什么要留下。你什么时候将会到达？", "textList": [ { "mode": "preset", "desc": "Dear Rebecca," }, { "mode": "preset", "desc": "I know you are worried. But this is our best chance to explore Wander Port. " }, { "mode": "fillingInput", "desc": "The ___ is important for us.", "optionList": [ { "option": "job" }, { "option": "jobs" }, { "option": "projects" } ], "answer": [ 0 ] }, { "mode": "fillingInput", "desc": "That's ___ we have to stay.", "optionList": [ { "option": "why" }, { "option": "how" }, { "option": "which" } ], "answer": [ 0 ] }, { "mode": "preset", "desc": "Will you come to Wander Port some day? " }, { "mode": "fillingInput", "desc": " ___ you arrive?", "optionList": [ { "option": "When will" }, { "option": "When is" }, { "option": "How is" } ], "answer": [ 0 ] } ] }
studyInfo
{ "learningPart": [ { "leadIn": { "desc": "What is your opinion on the job?" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你在邮件中向Rebecca解释留下的原因，提到这份工作对你们很重要，现在需要补全句子\"The ___ is important for us.\"" }, "optionList": [ { "option": "job", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒啦！句子谓语是单数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是否会来Wander Port后，想进一步问她什么时候会抵达，需要补全句子\"___ you arrive?\"" }, "optionList": [ { "option": "When will", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太厉害了！一般将来时的特殊疑问句结构是“特殊疑问词+will+主语+动词原形”，这个选项正好符合语法和询问抵达时间的语境。" } }, { "option": "When is", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，句子里已经有实义动词原形\"arrive\"了，不能用be动词\"is\"来构成疑问句，不符合一般将来时的结构，再试试吧。" } }, { "option": "How is", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，首先你要问的是抵达的时间，不是方式，而且\"is\"也不能和动词原形\"arrive\"搭配使用，不符合语法规则，再想想吧。" } } ], "answer": [ 0 ], "write": { "desc": "When will you arrive?", "trans": "你什么时候会到？" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "恭喜你，你已经掌握了单词job、固定句式That's why...以及一般将来时特殊疑问句的用法，顺利完成了给Rebecca的邮件编写!" } }
evalInfo
{ "title": "编写给 Rebecca 的邮件", "taskDesc": "请根据提示问题，用英文组句完成这封邮件。", "sceneDesc": "Rebecca听上去十分担心你们的安全，你们刚刚做出了决定，要继续留在 Wander Port 进行学院的探索任务，你需要回一封邮件给她，告诉她你们的决定以及原因，顺便询问她何时会来。", "knowledge": "- The job is... 这份工作......\n- That's why we have to... 这就是为什么我们必须……\n- When will you arrive? 你什么时候会到？", "passCondition": "用户写出：这份工作很重要。这就是我们为什么要留下。你什么时候将会到达？", "textList": [ { "mode": "preset", "desc": "Dear Rebecca," }, { "mode": "preset", "desc": "I know you are worried. But this is our best chance to explore Wander Port. " }, { "mode": "fillingInput", "desc": "The ___ is important for us.", "optionList": [ { "option": "job" }, { "option": "jobs" }, { "option": "projects" } ], "answer": [ 0 ] }, { "mode": "fillingInput", "desc": "That's ___ we have to stay.", "optionList": [ { "option": "why" }, { "option": "how" }, { "option": "which" } ], "answer": [ 0 ] }, { "mode": "preset", "desc": "Will you come to Wander Port some day? " }, { "mode": "fillingInput", "desc": " ___ you arrive?", "optionList": [ { "option": "When will" }, { "option": "When is" }, { "option": "How is" } ], "answer": [ 0 ] } ] }
kpInfo JSON
{ "pushType": "relationKp", "cType": "core_writing_questionMakeSentence", "cId": "0000800", "kpInfo": [ { "kpId": "0328017", "kpType": "sentence", "kpTitle": "The job is...", "kpSkill": "sentence_meaning", "kpSkillName": "语义", "candidates": [ { "kp_id": "0328017", "type": "sentence", "title": "The job is...", "vala_level": "L2", "en_desc": "" } ] }, { "kpId": null, "kpType": "sentence", "kpTitle": "这份工作......", "kpSkill": "sentence_meaning", "kpSkillName": "语义", "candidates": [] }, { "kpId": "0328016", "kpType": "sentence", "kpTitle": "That's why we have to...", "kpSkill": "sentence_meaning", "kpSkillName": "语义", "candidates": [ { "kp_id": "0328016", "type": "sentence", "title": "That's why we have to...", "vala_level": "L2", "en_desc": "" } ] }, { "kpId": null, "kpType": "vocab", "kpTitle": "这就是为什么我们必须……", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] }, { "kpId": "0328014", "kpType": "sentence", "kpTitle": "When will you arrive?", "kpSkill": "sentence_meaning", "kpSkillName": "语义", "candidates": [ { "kp_id": "0328014", "type": "sentence", "title": "When will you arrive?", "vala_level": "L2", "en_desc": "" } ] }, { "kpId": null, "kpType": "vocab", "kpTitle": "你什么时候会到？", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] } ] }
kpInfo (6个知识点)

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

中间结果: 学习流程配置

    ```
    # 问题1：
    Brainy: 你在邮件中向Rebecca解释留下的原因，提到这份工作对你们很重要，现在需要补全句子"The ___ is important for us."
    用户选项:
    （选项 A）job [正确]
      Brainy: 太棒啦！句子谓语是单数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是否会来Wander Port后，想进一步问她什么时候会抵达，需要补全句子"___ you arrive?"
    用户选项:
    （选项 A）When will [正确]
      Brainy: 太厉害了！一般将来时的特殊疑问句结构是“特殊疑问词+will+主语+动词原形”，这个选项正好符合语法和询问抵达时间的语境。
    （选项 B）When is
      Brainy: 不对哦，句子里已经有实义动词原形"arrive"了，不能用be动词"is"来构成疑问句，不符合一般将来时的结构，再试试吧。
    （选项 C）How is
      Brainy: 不对哦，首先你要问的是抵达的时间，不是方式，而且"is"也不能和动词原形"arrive"搭配使用，不符合语法规则，再想想吧。
    ```

中间结果: 互动描述

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

29 核心邮件撰写 cId: 0000800 core_writing_questionWrite
已保存 ▶
taskInfo
{ "cId": "0000800", "cType": "core_writing_questionWrite", "title": "编写给 Rebecca 的邮件", "taskDesc": "请根据提示问题，用英文组句完成这封邮件。", "sceneDesc": "Rebecca听上去十分担心你们的安全，你们刚刚做出了决定，要继续留在 Wander Port 进行学院的探索任务，你需要回一封邮件给她，告诉她你们的决定以及原因，顺便询问她何时会来。", "img": "", "plotSummary": "", "stemDesc": [ "Tell her your decision and why.", "Ask her when she will arrive." ], "key": [ { "keyList": [ { "type": "default", "content": "The job is...", "desc": "这份工作......" }, { "type": "default", "content": "That's why we have to...", "desc": "这就是为什么我们必须……" }, { "type": "default", "content": "When will you arrive?", "desc": "你什么时候会到？" } ] } ], "cDesc": "Dear Rebecca, I know you are worried. But this is our best chance to explore Wander Port. The job is important for us. That's why we have to stay. Will you come to Wander Port some day? If so, when will you arrive?\n（亲爱的丽贝卡：我知道你很担心。但这是我们探索漫游港的最佳机会。这项工作对我们来说很重要。这就是我们必须留下来的原因。你会来漫游港吗？如果会的话，你什么时候到呢？）" }
textInfo
{ "inputType": "write", "passCondition": "1. 这份工作很重要。2. 这就是我们为什么要留下。3. 你什么时候将会到达？", "textList": [ { "mode": "preset", "desc": "Dear Rebecca,", "answerText": "" }, { "mode": "preset", "desc": "I know you are worried. But this is our best chance to explore Wander Port.", "answerText": "" }, { "mode": "fillingInput", "desc": "The ____ is important for us.", "answerText": "job", "hint": "这份工作（job）对我们来说很重要。" }, { "mode": "fillingInput", "desc": "That's ____ we have to stay.", "answerText": "why", "hint": "这就是为什么（why）我们必须留下。" }, { "mode": "preset", "desc": "Will you come to Wander Port some day?", "answerText": "" }, { "mode": "fillingInput", "desc": "If so, _________ you arrive?", "answerText": "when will", "hint": "如果是这样的话，你什么时候将会（when will）到达？" } ] }
studyInfo
{ "learningPart": [ { "leadIn": { "desc": "Tell her your decision and why." }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你打算给担心你们安全的Rebecca回邮件，首先需要写邮件的称呼，你会怎么开头？" }, "optionList": [ { "option": "Dear Rebecca,", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！这是邮件开头称呼对方的标准正确表达，很合适。" } }, { "option": "Hello Rebecca, is that you?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这是日常打招呼的口语表达，一般不会用在正式邮件的开头哦，再试试吧。" } }, { "option": "Rebecca, listen to me.", "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 worried. But this is our best chance to explore Wander Port.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "非常好！这句话既回应了Rebecca的担心，也说明了你们想要留下探索Wander Port的原因，完全符合语境。" } }, { "option": "I don't care about your worries. We will stay here.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话语气太生硬不礼貌，完全没有顾及Rebecca的关心，不符合回复的要求哦，再试试。" } }, { "option": "We are not scared, so don't contact us anymore.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个表达既不礼貌，也没有说明你们留下的原因，反而让对方不要联系，不符合回信的目的，再试一次吧。" } } ], "answer": [ 0 ], "write": { "desc": "I know you are worried. But this is our best chance to explore Wander Port.", "trans": "我知道你很担心。但这是我们探索漫游港的最佳机会。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "desc": "Tell her your decision and why." }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你想要说明这份工作对你们很重要，句子“The ____ is important for us.”的横线处应该填什么单词？" }, "optionList": [ { "option": "job", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！句子里的be动词是is，说明主语是单数，job作为单数名词符合句子的语法和语义要求。" } }, { "option": "jobs", "feedback": { "type": "npc", "npcName": "Brainy", "content": "jobs是复数形式，后面应该搭配be动词are，和句中的is不匹配哦，再想想吧。" } }, { "option": "projects", "feedback": { "type": "npc", "npcName": "Brainy", "content": "projects是“项目”的复数形式，不仅意思不符合这里“工作”的语境，也和句中的is不搭配，再试一下吧。" } } ], "answer": [ 0 ], "write": { "desc": "The job is important for us.", "trans": "这项工作对我们来说很重要。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "desc": "Tell her your decision and why." }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你想要表达“这就是我们必须留下的原因”，句子“That's ____ we have to stay.”的横线处应该填什么词？" }, "optionList": [ { "option": "why", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！“That's why...”是固定表达，意思是“这就是……的原因”，完全符合句子的语义逻辑。" } }, { "option": "how", "feedback": { "type": "npc", "npcName": "Brainy", "content": "how是询问方式的疑问词，填进去句子会变成“这就是我们必须如何留下”，语义不通顺，不符合你想表达原因的需求哦。" } }, { "option": "which", "feedback": { "type": "npc", "npcName": "Brainy", "content": "which是“哪一个”的意思，填入后句子逻辑不通，没法表达“留下的原因”这个含义，再试试吧。" } } ], "answer": [ 0 ], "write": { "desc": "That's why we have to stay.", "trans": "这就是我们必须留下来的原因。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "desc": "Ask her when she will arrive." }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你想要询问Rebecca未来会不会来Wander Port，以下哪个句子是正确的表达？" }, "optionList": [ { "option": "Will you come to Wander Port some day?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "非常好！这是询问对方未来是否会做某事的正确一般疑问句结构，完全符合你想问对方会不会来的需求。" } }, { "option": "Do you come to Wander Port some day?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个是一般现在时的结构，用来描述经常性的动作，不能用来询问将来的计划哦，再想想。" } }, { "option": "Are you come to Wander Port some day?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个句子语法结构是错误的，be动词不能直接和动词原形come搭配使用，再试一下吧。" } } ], "answer": [ 0 ], "write": { "desc": "Will you come to Wander Port some day?", "trans": "你会来漫游港吗？" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "desc": "Ask her when she will arrive." }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你接着想问如果Rebecca来的话，她什么时候会到，句子“If so, _________ you arrive?”的横线处应该填什么？" }, "optionList": [ { "option": "when will", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！询问将来的时间要用一般将来时，“when will you arrive”是询问对方何时到达的正确表达，符合语境。" } }, { "option": "when is", "feedback": { "type": "npc", "npcName": "Brainy", "content": "arrive是实义动词，疑问句里需要用助动词will/do等，不能用be动词is来搭配哦，句子结构不正确。" } }, { "option": "how is", "feedback": { "type": "npc", "npcName": "Brainy", "content": "how是询问方式的疑问词，不符合你想问“到达时间”的需求，同时be动词is也不能和实义动词arrive直接搭配，再试试吧。" } } ], "answer": [ 0 ], "write": { "desc": "If so, when will you arrive?", "trans": "如果会的话，你什么时候到呢？" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "恭喜你，你已经掌握了邮件的正确称呼格式、回应他人关心并说明理由的表达、“The job is important for us.”“That's why we have to stay.”等核心句型，以及询问对方未来计划和到达时间的正确句式，完成了给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 JSON
{ "pushType": "relationKp", "cType": "core_writing_questionWrite", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "The job is... 这份工作......That's why we have to... 这就是为什么我们必须……When will you arrive? 你什么时候会到？", "kpSkill": "sentence_meaning", "kpSkillName": "语义", "candidates": [] } ] }
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, is that you?
      Brainy: 这是日常打招呼的口语表达，一般不会用在正式邮件的开头哦，再试试吧。
    （选项 C）Rebecca, listen to me.
      Brainy: 这个表达语气比较生硬，不符合邮件礼貌开头的要求，而且也不是标准的邮件称呼格式，再试一下吧。

    # 问题2：
    Brainy: 你首先要回应Rebecca的担心，同时说明你们留下的理由，以下哪句话最适合用来表达这个意思？
    用户选项:
    （选项 A）I know you are worried. But this is our best chance to explore Wander Port. [正确]
      Brainy: 非常好！这句话既回应了Rebecca的担心，也说明了你们想要留下探索Wander Port的原因，完全符合语境。
    （选项 B）I don't care about your worries. We will stay here.
      Brainy: 这句话语气太生硬不礼貌，完全没有顾及Rebecca的关心，不符合回复的要求哦，再试试。
    （选项 C）We are not scared, so don't contact us anymore.
      Brainy: 这个表达既不礼貌，也没有说明你们留下的原因，反而让对方不要联系，不符合回信的目的，再试一次吧。

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

    # 问题4：
    Brainy: 你想要表达“这就是我们必须留下的原因”，句子“That's ____ we have to stay.”的横线处应该填什么词？
    用户选项:
    （选项 A）why [正确]
      Brainy: 太棒了！“That's why...”是固定表达，意思是“这就是……的原因”，完全符合句子的语义逻辑。
    （选项 B）how
      Brainy: how是询问方式的疑问词，填进去句子会变成“这就是我们必须如何留下”，语义不通顺，不符合你想表达原因的需求哦。
    （选项 C）which
      Brainy: which是“哪一个”的意思，填入后句子逻辑不通，没法表达“留下的原因”这个含义，再试试吧。

    # 问题5：
    Brainy: 你想要询问Rebecca未来会不会来Wander Port，以下哪个句子是正确的表达？
    用户选项:
    （选项 A）Will you come to Wander Port some day? [正确]
      Brainy: 非常好！这是询问对方未来是否会做某事的正确一般疑问句结构，完全符合你想问对方会不会来的需求。
    （选项 B）Do you come to Wander Port some day?
      Brainy: 这个是一般现在时的结构，用来描述经常性的动作，不能用来询问将来的计划哦，再想想。
    （选项 C）Are you come to Wander Port some day?
      Brainy: 这个句子语法结构是错误的，be动词不能直接和动词原形come搭配使用，再试一下吧。

    # 问题6：
    Brainy: 你接着想问如果Rebecca来的话，她什么时候会到，句子“If so, _________ you arrive?”的横线处应该填什么？
    用户选项:
    （选项 A）when will [正确]
      Brainy: 答对啦！询问将来的时间要用一般将来时，“when will you arrive”是询问对方何时到达的正确表达，符合语境。
    （选项 B）when is
      Brainy: arrive是实义动词，疑问句里需要用助动词will/do等，不能用be动词is来搭配哦，句子结构不正确。
    （选项 C）how is
      Brainy: how是询问方式的疑问词，不符合你想问“到达时间”的需求，同时be动词is也不能和实义动词arrive直接搭配，再试试吧。
    ```

中间结果: 互动描述

    Dear Rebecca, I know you are worried. But this is our best chance to explore Wander Port. The job is important for us. That's why we have to stay. Will you come to Wander Port some day? 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 JSON
{ "pushType": "relationKp", "cType": "mid_dialog_express", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "spring", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] } ] }
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 JSON
{ "pushType": "relationKp", "cType": "mid_dialog_choose", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "home", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] } ] }
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 JSON
{ "pushType": "relationKp", "cType": "mid_dialog_select", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "healthy(词义)", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] } ] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] | (无候选) ▼ 无候选知识点 |  | healthy(词义) |  |

33 信息描写 cId: 0000800 mid_message_trace
已保存 ▶
jsonData
{ "cType": "mid_message_trace", "cId": "0000800", "title": "购买葡萄", "resourceMapping": { "Vicky": 658 }, "cDesc": "You bought the grapes you needed. (你购买了你需要的葡萄。)", "question": { "desc": "请描写你需要的水果" }, "trace": "grape", "img": "0000800.png", "inputSet": [] }
kpInfo JSON
{ "pushType": "relationKp", "cType": "mid_message_trace", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义", "candidates": [] } ] }
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 JSON
{ "pushType": "relationKp", "cType": "mid_message_spell", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义", "candidates": [] } ] }
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 JSON
{ "pushType": "relationKp", "cType": "mid_message_combine", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义", "candidates": [] } ] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] | (无候选) ▼ 无候选知识点 |  | Grape (词形 - 拼写规律) |  |

36 信息补词 cId: 0000800 mid_message_fillin
已保存 ▶
jsonData
{ "cType": "mid_message_fillin", "cId": "0000800", "title": "填写信息表", "resourceMapping": { "Vicky": 658 }, "cDesc": "You filled in \"now\" to form \"knowledge\".（你填入“now”组成了单词“knowledge”。）", "question": { "desc": "请在空白处填入正确的字母，组成完整单词" }, "tip": "需要填入的单词的中文释义是“知识”", "inputConfig": [ { "stem": "K(3)ledge", "value": "now" } ], "img": "0000800.png", "inputSet": [] }
kpInfo JSON
{ "pushType": "relationKp", "cType": "mid_message_fillin", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义", "candidates": [] } ] }
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 \"knowledge\" and \"information\" in the blanks. (你在空白处填上了“知识”对应的单词。)", "question": { "desc": "请在空白处填入合适的单词，使句意完整" }, "tip": "需要填入的单词的中文释义是“知识”", "answer": [ "knowledge", "information" ], "img": "0000800.png", "inputSet": [] }
kpInfo JSON
{ "pushType": "relationKp", "cType": "mid_message_word", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义", "candidates": [] } ] }
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 out the 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 JSON
{ "pushType": "relationKp", "cType": "mid_message_sentence", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义", "candidates": [] } ] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] | (无候选) ▼ 无候选知识点 |  | Grape (词形 - 拼写规律) |  |

39 图片单选 cId: 0000800 mid_image_choose
已保存 ▶
jsonData
{ "cType": "mid_image_choose", "cId": "0000800", "title": "选择合适的河段取水", "meaning": "", "resourceMapping": { "Vicky": 658 }, "question": { "desc": "Find $warm$ water.", "content": "Find $warm$ water." }, "imageInfo": { "questionImg": "0000800_question.png", "answerImg": "0000800_answer.png" }, "optionList": [ { "option": "0000800_option_00.png" }, { "option": "0000800_option_01.png" }, { "option": "0000800_option_02.png" } ], "answer": [ 2 ], "preDialog": [ { "type": "user", "content": "Look!" } ], "tip": "warm 指“温暖的”。", "corFeedback": { "type": "user", "npcName": "User", "content": "Warm water here!" }, "errFeedback": { "type": "user", "npcName": "User", "content": "It doesn't seem like there's warm water." }, "postDialog": [], "cDesc": "You found the warm water section. (你找到了温暖的水域。)" }
kpInfo JSON
{ "pushType": "relationKp", "cType": "mid_image_choose", "cId": "0000800", "kpInfo": [ { "kpId": "0220004", "kpType": "vocab", "kpTitle": "warm", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [ { "kp_id": "0220004", "type": "vocab", "title": "warm", "vala_level": "L2", "en_desc": "having a comfortable and pleasant temperature that is not too cold" } ] } ] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] | 0220004 ▼ 0220004 vocab L2 warm having a comfortable and pleasant temperature that is not too cold |  | 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 broken parts of the house. (你找到了房子需要修复的部分。)" }
kpInfo JSON
{ "pushType": "relationKp", "cType": "mid_image_multiple", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "house", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] } ] }
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": {}, "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 order $one by one$. (你一个接一个排列跳格子的顺序。)" }
kpInfo JSON
{ "pushType": "relationKp", "cType": "mid_image_sequence", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "... one by one.", "kpSkill": "sentence_meaning", "kpSkillName": "语义", "candidates": [] } ] }
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 picked fish, crab and octopus in order. (你按顺序选出了鱼、螃蟹和章鱼。)" }
kpInfo JSON
{ "pushType": "relationKp", "cType": "mid_image_drag", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "hammer （词义）", "kpSkill": "vocab_meaning", "kpSkillName": "词义", "candidates": [] } ] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] | (无候选) ▼ 无候选知识点 |  | hammer （词义） |  |