就绪
成功: 0 失败: 0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

中间结果: 学习过程配置

    ```
    # 段落1
    ## 段落内容
    ---
    At Vala Academy, Pioneers don't have exams. But you need points to level up!
    ---
    ## 互动题目
    Brainy：我们先来认识这段话里的重点单词exam，exam的意思是考试，参加考试可以说take an exam。还有重点单词point，在这里的意思是积分、分数，获取积分可以说get points。
    1. 句意选择题
    Brainy：我们来看包含重点单词exam的句子At Vala Academy, Pioneers don't have exams.是什么意思呢？
    - 在瓦拉学院，先锋们不用考试。[正确]
      Brainy：答对啦！你准确掌握了exam的意思，很棒哦~
    - 在瓦拉学院，先锋们没有俱乐部。
      Brainy：不对哦，俱乐部的英文是club，不是我们这里讲的exam，再回忆一下这个单词的意思吧。
    2. 句意选择题
    Brainy：接下来看看包含重点单词point的句子But you need points to level up!是什么意思呢？
    - 但是你需要完成任务才能升级。
      Brainy：不对哦，任务的英文是task，这里说的是points积分，再看看正确的意思吧。
    - 但是你需要积分才能升级。[正确]
      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：我们来学习这段话里的重点单词club，club的意思是俱乐部，加入俱乐部可以说join a club。还有重点单词choose，意思是选择，选择喜欢的东西可以说choose something you like。
    1. 句意选择题
    Brainy：我们先看包含choose的句子You can choose your favourite club to join.是什么意思呢？
    - 你可以创建你最喜欢的俱乐部。
      Brainy：不对哦，创建的英文是start，这里的choose是选择的意思，再回忆一下这个单词的含义吧。
    - 你可以选择你最喜欢的俱乐部加入。[正确]
      Brainy：回答正确！你已经掌握了choose和club这两个单词的意思啦~
    2. 句意选择题
    Brainy：接下来看看包含interested的句子If you are interested in something, you can find a club for it.是什么意思呢？
    - 如果你对某件事感兴趣，你可以找到对应的俱乐部。[正确]
      Brainy：太棒啦！你准确理解了interested的意思和整个句子的含义~
    - 如果你擅长某件事，你可以找到对应的俱乐部。
      Brainy：不对哦，擅长的英文是be good at，这里的be interested in是对……感兴趣的意思，再确认一下吧。
    3. 段落大意题
    Brainy：我们来看看这段主要想告诉我们什么内容吧？
    - 你可以根据自己的兴趣选择对应的俱乐部加入。[正确]
      Brainy：答对了！你完全理解了这段的核心意思，真厉害！
    - 所有的俱乐部都非常受大家的欢迎。
      Brainy：不对哦，这段并没有提到俱乐部是否受欢迎的相关内容，再仔细看看段落内容吧。
    # 完结反馈
    Brainy：太棒啦！你已经完成了这两段内容的全部学习，知识点都掌握得很牢固哦，继续加油吧！
    ```

18 核心看图选词 cId: 0000800 core_reading_imageDrag
已保存 ▶
taskInfo
{ "cId": "0000800", "cType": "core_reading_imageDrag", "title": "将单词拖拽到对应句子空白处补全句子", "taskDesc": "观察主图内容，将下方选项池中的单词拖拽到对应句子的空白处，补全所有句子。", "sceneDesc": "你来到了神奇的单词城堡，城堡的墙上有很多缺了单词的句子，你需要找到正确的单词把它们补全，才能打开城堡的大门哦！", "key": [ { "desc": "", "keyList": [ { "type": "default", "content": "lake", "desc": "n. 湖" }, { "type": "default", "content": "monkey", "desc": "n. 猴子" }, { "type": "default", "content": "three", "desc": "num. 三" }, { "type": "default", "content": "How many ...?", "desc": "多少……？" }, { "type": "default", "content": "There be ...", "desc": "有……" } ] } ], "resourceMapping": { "Eva": 738, "Peter": 739 }, "cDesc": "你和本交流河马的栖息地，得知河马生活在湖里，顺利填好了句子空白，离打开城堡大门更近了一步。你和布莱尼聊起动物园里的其他存在，了解到树也是动物园环境的一部分，帮你完成了相关内容，继续探索单词城堡。" }
questionGroup
[{'image': '1201001_02.png', 'questionList': [{'type': 'npc', 'npcName': 'Brainy', 'content': 'Ben: Where do hippos live？', 'desc': 'in the ___', 'optionList': [{'option': 'lake'}, {'option': 'tree'}, {'option': 'grass'}], 'answer': [0]}, {'type': 'npc', 'npcName': 'Brainy', 'title': 'Brainy: What other animals are there in the zoo？', 'desc': '___', 'optionList': [{'option': 'lake'}, {'option': 'tree'}, {'option': 'grass'}], 'answer': [1]}]}]
studyInfo
{ "learningPart": [ { "image": "1201001_02.png", "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "这道题我们要学习表示地点的名词哦，先考考你哪个单词是“湖”的意思吧~" }, "optionList": [ { "option": "tree", "feedback": { "type": "npc", "npcName": "Brainy", "content": "tree的意思是树，不是我们要找的“湖”哦，再试试吧~" } }, { "option": "lake", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！lake就是湖的意思，你掌握得很棒~" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "grass的意思是草，和“湖”的意思不一样，再选一次吧~" } } ], "answer": [ 1 ] }, { "question": { "type": "npc", "npcName": "Brainy", "content": "Ben问“河马生活在哪里呀？”，你要选一个合适的地点填到横线里，回答“在____里”哦。" }, "optionList": [ { "option": "lake", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！河马是生活在湖里的，这句话的意思是“在湖里”，快大声把这个回答读出来吧~" } }, { "option": "tree", "feedback": { "type": "npc", "npcName": "Brainy", "content": "tree是树，河马不会住在树上哦，结合河马的生活习性再想想吧~" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "grass是草，河马不是住在草里的哦，再试一次吧~" } } ], "answer": [ 0 ] } ] }, { "image": "1201001_02.png", "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "这道题我们要找表示植物的名词哦，你知道哪个单词是“树”的意思吗？" }, "optionList": [ { "option": "lake", "feedback": { "type": "npc", "npcName": "Brainy", "content": "lake的意思是湖，不是植物哦，再试试吧~" } }, { "option": "tree", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！tree就是树的意思，你记得很准确哦~" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "grass的意思是草，不是我们要找的“树”哦，再选一次吧~" } } ], "answer": [ 1 ] }, { "question": { "type": "npc", "npcName": "Brainy", "content": "Brainy问“动物园里还有什么其他的东西？”，这里要选一个动物园里存在的事物哦。" }, "optionList": [ { "option": "lake", "feedback": { "type": "npc", "npcName": "Brainy", "content": "lake是湖，题目问的是动物相关的其他事物哦，再想想吧~" } }, { "option": "tree", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！动物园里会有树木给动物们提供阴凉，你选对了，快把这个答案读出来吧~" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "grass是草，不是这里要选的哦，再试一次吧~" } } ], "answer": [ 1 ] } ] } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你已经完成了所有的题目，还学会了lake、tree这些单词的用法，也知道了怎么回答关于地点和事物的问题，你的英语又进步啦！" } }
kpInfo (5个知识点)

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

中间结果: 学习流程配置

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

    ## 互动题目
    ### 1. 句意选词题
    Brainy：这道题我们要学习表示地点的名词哦，先考考你哪个单词是“湖”的意思吧~
    - 选项 A：tree
      Brainy：tree的意思是树，不是我们要找的“湖”哦，再试试吧~
    - 选项 B：lake
      Brainy：答对啦！lake就是湖的意思，你掌握得很棒~
    - 选项 C：grass
      Brainy：grass的意思是草，和“湖”的意思不一样，再选一次吧~

    ### 2. 原题降级
    Brainy：Ben问“河马生活在哪里呀？”，你要选一个合适的地点填到横线里，回答“在____里”哦。
    - 选项 A：lake [正确]
      Brainy：答对啦！河马是生活在湖里的，这句话的意思是“在湖里”，快大声把这个回答读出来吧~
    - 选项 B：tree
      Brainy：tree是树，河马不会住在树上哦，结合河马的生活习性再想想吧~
    - 选项 C：grass
      Brainy：grass是草，河马不是住在草里的哦，再试一次吧~

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

    ## 互动题目
    ### 1. 句意选词题
    Brainy：这道题我们要找表示植物的名词哦，你知道哪个单词是“树”的意思吗？
    - 选项 A：lake
      Brainy：lake的意思是湖，不是植物哦，再试试吧~
    - 选项 B：tree [正确]
      Brainy：答对啦！tree就是树的意思，你记得很准确哦~
    - 选项 C：grass
      Brainy：grass的意思是草，不是我们要找的“树”哦，再选一次吧~

    ### 2. 原题降级
    Brainy：Brainy问“动物园里还有什么其他的东西？”，这里要选一个动物园里存在的事物哦。
    - 选项 A：lake
      Brainy：lake是湖，题目问的是动物相关的其他事物哦，再想想吧~
    - 选项 B：tree [正确]
      Brainy：答对啦！动物园里会有树木给动物们提供阴凉，你选对了，快把这个答案读出来吧~
    - 选项 C：grass
      Brainy：grass是草，不是这里要选的哦，再试一次吧~

    ---
    # 完结反馈
    Brainy：太棒了！你已经完成了所有的题目，还学会了lake、tree这些单词的用法，也知道了怎么回答关于地点和事物的问题，你的英语又进步啦！
    ```

中间结果: 互动描述

    You chat with Ben about hippos' home, and figure out that hippos live in the lake, which fills the blank in the sentence smoothly to get closer to opening the castle gate.（你和本交流河马的栖息地，得知河马生活在湖里，顺利填好了句子空白，离打开城堡大门更近了一步。）
    You talk with Brainy about zoo animals, and learn that trees are also part of the zoo environment, which helps you complete the relevant content to continue exploring the word castle.（你和布莱尼聊起动物园里的其他存在，了解到树也是动物园环境的一部分，帮你完成了相关内容，继续探索单词城堡。）

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,Wander Port,banana", "promptInfo": { "default": "\n# 1. 角色（你要扮演谁）\n你是Logan，在Wander Port的清洁站工作。你的语言风格亲切易懂，适合儿童理解。\n# 2. 任务（你如何参与对话）\n1. 开场白首先询问用户大象遇到了什么情况，确认大象是不是需要洗澡。\n2. 得到大象需要洗澡的回答后，你要表达惊讶，询问是不是还没人给她洗澡，接着告知用户可以稍等一会，也许饲养员很快就会过来。\n3. 之后询问用户是否愿意帮忙给大象洗澡。\n4. 如果用户表示愿意帮忙，要先对用户表示感谢，接着告知对方你会立刻送干净的水过去，友好结束对话。\n5. 如果用户没有直接说愿意帮忙，可以再重复一次问题引导用户回答，最多重复2次。\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": "太棒啦，你回答得完全正确！跟着我把这句话大声读出来吧：The elephant needs a shower. Let's set up a shower for her." } }, { "option": "The elephant is eating bananas happily.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个句子说的是大象正在开心地吃香蕉，和现在要表达大象需要洗澡的情境不匹配哦，再选一次试试吧~" } }, { "option": "We want to borrow some bananas for the elephant.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话的意思是我们想给大象借一些香蕉，现在我们要和对方说的是大象需要洗澡的事，不是要香蕉哦，再选一次吧~" } } ], "answer": [ 0 ], "read": { "type": "user", "content": "The elephant needs a shower. Let's set up a shower for her." }, "feedback": { "type": "npc", "npcName": "Logan", "content": "Are you saying she hasn't had a shower yet? Maybe someone will probably come soon." } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "Logan说“你是说她还没洗澡吗？可能很快就会有人过来了”，现在你要回应说与其在这儿等，我们最好先去给她拿点水。" }, "optionList": [ { "option": "We can wait for the keepers to come and help.", "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": "你选对啦！太厉害啦，跟着我把这句话读一遍吧：Instead of waiting here, we'd better get some water for her first." } }, { "option": "We don't have time to help the elephant today.", "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": "完全正确！你表现得超棒，跟着我读出这句话吧：We'd love to help." } }, { "option": "We are too busy to help her.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是说我们太忙了帮不了她，和我们要表达的乐意帮忙的意思不一样哦，再选一次吧~" } }, { "option": "We don't know how to take a shower.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话的意思是我们不知道怎么洗澡，现在是要回应能不能帮大象洗澡，不是说我们自己会不会洗澡哦，再试一次吧~" } } ], "answer": [ 0 ], "read": { "type": "user", "content": "We'd love to help." }, "feedback": { "type": "npc", "npcName": "Logan", "content": "Great. We will send some water to her right away." } } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "恭喜你完成了本次对话任务！你成功和Logan沟通好了帮大象洗澡的事，还学会了好几个实用的英语表达，太优秀啦~" } } }
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：太棒啦，你回答得完全正确！跟着我把这句话大声读出来吧：The elephant needs a shower. Let's set up a shower for her.
    （B）The elephant is eating bananas happily.
      Brainy：这个句子说的是大象正在开心地吃香蕉，和现在要表达大象需要洗澡的情境不匹配哦，再选一次试试吧~
    （C）We want to borrow some bananas for the elephant.
      Brainy：这句话的意思是我们想给大象借一些香蕉，现在我们要和对方说的是大象需要洗澡的事，不是要香蕉哦，再选一次吧~
    Logan：Are you saying she hasn't had a shower yet? Maybe someone will probably come soon.

    # 中间回合2
    Brainy：Logan说“你是说她还没洗澡吗？可能很快就会有人过来了”，现在你要回应说与其在这儿等，我们最好先去给她拿点水。
    用户选项:
    （A）We can wait for the keepers to come and help.
      Brainy：这句话的意思是我们可以等饲养员过来帮忙，和我们要表达“不等了先去拿水”的意思正好相反哦，再选一次吧~
    （B）Instead of waiting here, we'd better get some water for her first. ✅
      Brainy：你选对啦！太厉害啦，跟着我把这句话读一遍吧：Instead of waiting here, we'd better get some water for her first.
    （C）We don't have time to help the elephant today.
      Brainy：这句话是说我们今天没时间帮大象，但是我们本来是想要帮忙给大象洗澡的，意思不对哦，再试试吧~
    Logan：The keepers are too careless! Thank you! Can you help her shower?

    # 中间回合3
    Brainy：Logan说“饲养员太粗心了！谢谢你们！你们能帮她洗澡吗？”，现在你要告诉他我们很乐意帮忙哦。
    用户选项:
    （A）We'd love to help. ✅
      Brainy：完全正确！你表现得超棒，跟着我读出这句话吧：We'd love to help.
    （B）We are too busy to help her.
      Brainy：这句话是说我们太忙了帮不了她，和我们要表达的乐意帮忙的意思不一样哦，再选一次吧~
    （C）We don't know how to take a shower.
      Brainy：这句话的意思是我们不知道怎么洗澡，现在是要回应能不能帮大象洗澡，不是说我们自己会不会洗澡哦，再试一次吧~
    Logan：Great. We will send some water to her right away.

    # 结尾回合
    Brainy：恭喜你完成了本次对话任务！你成功和Logan沟通好了帮大象洗澡的事，还学会了好几个实用的英语表达，太优秀啦~
    ```

中间结果: promptInfo配置

    ```
    # 1. 角色（你要扮演谁）
    你是Logan，在Wander Port的清洁站工作。你的语言风格亲切易懂，适合儿童理解。
    # 2. 任务（你如何参与对话）
    1. 开场白首先询问用户大象遇到了什么情况，确认大象是不是需要洗澡。
    2. 得到大象需要洗澡的回答后，你要表达惊讶，询问是不是还没人给她洗澡，接着告知用户可以稍等一会，也许饲养员很快就会过来。
    3. 之后询问用户是否愿意帮忙给大象洗澡。
    4. 如果用户表示愿意帮忙，要先对用户表示感谢，接着告知对方你会立刻送干净的水过去，友好结束对话。
    5. 如果用户没有直接说愿意帮忙，可以再重复一次问题引导用户回答，最多重复2次。
    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,Wander Port,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,relax,walkway", "promptInfo": { "default": "# 1. 角色（你要扮演谁）\n- 你是Chloe，是Twilight的空乘，服务好每一位乘客是你的使命。\n- 你对曾经帮你解围的用户格外友善热情，回答问题耐心温和。\n# 2. 任务（你如何参与到整个对话）\n- 你只在用户提问时提供特定信息，不主动透露知识库中的信息。\n- 如果用户提问的内容在知识库范围内，你会准确回答。\n- 如果用户的问题不清晰，你会尝试确认问题。\n- 一般情况下，一次最多只回答知识库中的一条信息，除非用户明确地分别提问到多条信息。\n- 如果用户不提问，你会温和、自然地进行交谈。\n# 3. 背景信息\n你是 Chloe，是 Twilight 的空乘，服务好每一位乘客是你的使命。用户之前帮你在另一位乘客面前解了围，你很感谢用户的帮忙，对用户的态度也格外友善热情。你发现用完餐的用户正在东张西望，似乎在寻找什么，你确认用户需要帮助，于是上前询问。你发现用户想去健身房消消食，但是不知道方向，于是回答了用户的问题，提供了你的帮助。\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 can I do in the gym?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是询问健身房里可以做什么的，现在你先要问清楚健身房在哪里哦，再试一次吧。" } } ], "answer": [ 0 ], "read": { "type": "user", "content": "Where can I find the gym?" }, "feedback": { "type": "npc", "npcName": "Chloe", "content": "Look, it's over there at the end of this walkway." } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "Chloe已经告诉你健身房在这条走道的尽头，现在你需要向她索要毛巾，为运动做准备。" }, "optionList": [ { "option": "Where is the restroom?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是询问洗手间位置的，你现在需要的是索要毛巾哦，再试一次吧。" } }, { "option": "Can I have a towel please?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你正确地表达了想要毛巾的需求。请大声朗读这句话！" } }, { "option": "How much is the towel?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这里是航班上的服务，不需要询问毛巾的价格哦，你只需要提出要毛巾的需求就可以啦，再试一次吧。" } } ], "answer": [ 1 ], "read": { "type": "user", "content": "Can I have a towel please?" }, "feedback": { "type": "npc", "npcName": "Chloe", "content": "Of course! I'll bring a new one for you soon." } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "Chloe答应会马上给你拿一条新毛巾，现在你可以问问她在健身房还能做些什么，更了解那里的功能哦。" }, "optionList": [ { "option": "What else can I do there?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你正确地问出了在健身房还可以做的事。请大声朗读这句话！" } }, { "option": "When does the gym close?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是询问健身房关门时间的，现在你要问的是在健身房里可以做什么哦，再试一次吧。" } }, { "option": "How many people are there in the gym?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是问健身房里有多少人的，和当前你要问的内容不符哦，再试一次吧。" } } ], "answer": [ 0 ], "read": { "type": "user", "content": "What else can I do there?" }, "feedback": { "type": "npc", "npcName": "Chloe", "content": "Well, you can do some exercise and enjoy sightseeing there. Or you can just relax." } } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "Chloe已经告诉你在健身房可以运动、欣赏风景，也可以放松休息，你已经问清楚了健身房位置、要到了毛巾，也了解了健身房的功能，任务成功完成！" } } }
kpInfo (3个知识点)

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

中间结果: 学习流程配置

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

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

    # 中间回合2
    Brainy：Chloe已经告诉你健身房在这条走道的尽头，现在你需要向她索要毛巾，为运动做准备。
    用户选项:
    （选项 A）Where is the restroom?
      Brainy：这句话是询问洗手间位置的，你现在需要的是索要毛巾哦，再试一次吧。
    （选项 B）Can I have a towel please? [正确]
      Brainy：太棒了！你正确地表达了想要毛巾的需求。请大声朗读这句话！
    （选项 C）How much is the towel?
      Brainy：这里是航班上的服务，不需要询问毛巾的价格哦，你只需要提出要毛巾的需求就可以啦，再试一次吧。
    Chloe：Of course! I'll bring a new one for you soon.

    # 中间回合3
    Brainy：Chloe答应会马上给你拿一条新毛巾，现在你可以问问她在健身房还能做些什么，更了解那里的功能哦。
    用户选项:
    （选项 A）What else can I do there? [正确]
      Brainy：太棒了！你正确地问出了在健身房还可以做的事。请大声朗读这句话！
    （选项 B）When does the gym close?
      Brainy：这句话是询问健身房关门时间的，现在你要问的是在健身房里可以做什么哦，再试一次吧。
    （选项 C）How many people are there in the gym?
      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,relax,walkway

22 核心看图说话 cId: 0000800 core_speaking_image
已保存 ▶
taskInfo
{ "cType": "core_speaking_image", "cId": "0000800", "title": "回答Mr Rock的问题", "taskDesc": "回答 Mr Rock 的问题", "sceneDesc": "Mr Rock 要给我们煮东西吃，看着暖腾腾的热气，听着咕咚咚的水声，闻着香飘飘的味道，心里美滋滋。等待开饭的时间里，和 Mr Rock 聊聊天吧。", "key": [ { "desc": "", "keyList": [ { "type": "default", "content": "winter", "desc": "n. 冬天" }, { "type": "default", "content": "cold", "desc": "adj. 冷的" }, { "type": "default", "content": "snow", "desc": "n. 雪" } ] } ], "resourceMapping": { "Eva": 738, "Peter": 739 }, "cDesc": "NPC: What season is it?\nUser: Winter.\nNPC: Is it hot or cold?\nUser: Cold.\nNPC: What do you see in winter?\nUser: Snow." }
dialogConfig
{ "config": { "asrPrompt": "winter,cold,snow,season,hot", "promptInfo": { "user_scene": "Mr Rock 要给我们煮东西吃，看着暖腾腾的热气，听着咕咚咚的水声，闻着香飘飘的味道，心里美滋滋。等待开饭的时间里，和 Mr Rock 聊聊天吧。", "user_task": "回答 Mr Rock 的问题", "user_knowledge": "winter 冬天\ncold 冷的\nsnow 雪", "pass_condition": "用户说出：\n1. 冬天\n2. 冷的\n3. 雪", "reference_dialog": "NPC: What season is it?\nUser: Winter.\nNPC: Is it hot or cold?\nUser: Cold.\nNPC: What do you see in winter?\nUser: Snow.", "questionList": [ { "type": "npc", "npcName": "Rock", "content": "What season is it?", "index": 0, "answerText": "Winter." }, { "type": "npc", "npcName": "Rock", "content": "Is it hot or cold?", "index": 1, "answerText": "Cold." }, { "type": "npc", "npcName": "Rock", "content": "What do you see in winter?", "index": 2, "answerText": "Snow." } ] } } }
studyInfo
{ "learningPart": [ { "leadIn": { "type": "npc", "npcName": "Rock", "content": "What season is it?" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "Rock 问你现在是什么季节，你需要告诉他当下的季节哦。", "index": 0 }, "optionList": [ { "option": "Winter.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你正确回答了现在是冬天。请大声朗读这个单词！" } }, { "option": "Cold.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话的意思是“寒冷的”，是用来描述天气感受的，而 Rock 现在问的是季节是什么。请再仔细听清问题，告诉 Rock 现在的季节。" } }, { "option": "Snow.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话的意思是“雪”，是冬天会出现的事物，而 Rock 现在问的是季节是什么。请再仔细听清问题，告诉 Rock 现在的季节。" } } ], "answer": [ 0 ], "read": { "type": "npc", "npcName": "User", "content": "Winter." } } ] }, { "leadIn": { "type": "npc", "npcName": "Rock", "content": "Is it hot or cold?" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "Rock 现在问你天气是热还是冷，你需要告诉他冬天的天气感受哦。", "index": 1 }, "optionList": [ { "option": "Winter.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话的意思是“冬天”，是季节的名称，而 Rock 现在问的是冬天的天气是热还是冷。请再仔细听清问题，告诉 Rock 冬天的天气感受。" } }, { "option": "Cold.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你正确回答了冬天天气很冷。请大声朗读这个单词！" } }, { "option": "Snow.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话的意思是“雪”，是冬天会出现的事物，而 Rock 现在问的是冬天的天气是热还是冷。请再仔细听清问题，告诉 Rock 冬天的天气感受。" } } ], "answer": [ 1 ], "read": { "type": "npc", "npcName": "User", "content": "Cold." } } ] }, { "leadIn": { "type": "npc", "npcName": "Rock", "content": "What do you see in winter?" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "Rock 问你在冬天能看到什么，你需要告诉他冬天特有的事物哦。", "index": 2 }, "optionList": [ { "option": "Winter.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话的意思是“冬天”，是季节的名称，而 Rock 现在问的是在冬天能看到什么东西。请再仔细听清问题，告诉 Rock 冬天会出现的事物。" } }, { "option": "Cold.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话的意思是“寒冷的”，是描述天气感受的词，而 Rock 现在问的是在冬天能看到什么东西。请再仔细听清问题，告诉 Rock 冬天会出现的事物。" } }, { "option": "Snow.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你正确回答了冬天能看到雪。请大声朗读这个单词！" } } ], "answer": [ 2 ], "read": { "type": "npc", "npcName": "User", "content": "Snow." }, "feedback": { "type": "npc", "npcName": "Rock", "content": "You know a lot about winter! Great job!" } } ] } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "你已经顺利完成了和Rock的所有互动，准确回答了关于冬天的季节、天气以及特有事物的相关问题，掌握了这些和冬天相关的常用表达，学习任务圆满完成啦！" } }
imageInfo
{ "questionImg": "0000800_question.png" }
questionList
[{'type': 'npc', 'npcName': 'Rock', 'content': 'What season is it?', 'index': 0, 'answerText': 'Winter.'}, {'type': 'npc', 'npcName': 'Rock', 'content': 'Is it hot or cold?', 'index': 1, 'answerText': 'Cold.'}, {'type': 'npc', 'npcName': 'Rock', 'content': 'What do you see in winter?', 'index': 2, 'answerText': 'Snow.'}]
optionList
[{'option': '0000800_option_00.png'}, {'option': '0000800_option_01.png'}, {'option': '0000800_option_02.png'}]
kpInfo (3个知识点)

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

中间结果: 学习流程配置

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

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

    # 中间回合3
    Rock: What do you see in winter?
    Brainy: Rock 问你在冬天能看到什么，你需要告诉他冬天特有的事物哦。
    用户选项:
    （选项 A）Winter.
      Brainy: 这句话的意思是“冬天”，是季节的名称，而 Rock 现在问的是在冬天能看到什么东西。请再仔细听清问题，告诉 Rock 冬天会出现的事物。
    （选项 B）Cold.
      Brainy: 这句话的意思是“寒冷的”，是描述天气感受的词，而 Rock 现在问的是在冬天能看到什么东西。请再仔细听清问题，告诉 Rock 冬天会出现的事物。
    （选项 C）Snow. [正确]
      Brainy: 太棒了！你正确回答了冬天能看到雪。请大声朗读这个单词！

    # 结尾回合
    Brainy: 你已经顺利完成了和 Rock 的聊天，回答了所有关于冬天的问题，太棒啦！等食物煮熟就可以享用美味咯~
    ```

中间结果: 语音识别热词

    winter,cold,snow,season,hot

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

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

中间结果: 学习过程配置

    ```
    # 重点句子 1
    音频文本：When you really want sweet food, like biscuits or cake, you can bake at home.
    讲解文本：刚刚听到的音频中，包含了一个关键短语 bake at home，意思是在家烘焙。正确的发音是 /beɪk æt həʊm/。
    1. 听音选句
    Brainy：接下来，我们来试试，你能不能听出以下哪一句话和播放的音频内容一致呢？
    - When you really want sweet food, like biscuits or cake, you can bake at home. [正确]
      - Brainy：太棒了！你准确听出了句子里的重点短语 bake at home，听力能力超棒哦！
    - When you really want sweet food, like biscuits or cake, you can buy at the shop.
      - Brainy：Oops，这句话说到了 buy at the shop，并没有我们听到的 bake at home 哦，再仔细听一遍音频试试看吧！

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

中间结果: 互动描述

    You listened to the audio clip How to live a healthy life? and learned that we should go to bed on time and get up early, and stay away from smoking and alcohol.（你听了《如何健康生活》的音频片段，了解到我们应该按时早睡早起，并且远离烟酒。）
    You also got to know that keeping healthy does not need much money or expensive things, and good habits are the most important for a healthy body.（你还了解到保持健康不需要很多钱或者昂贵的物品，好习惯对健康的身体来说才是最重要的。）

24 听力拖拽 cId: 0000800 ? 失败 ▶
错误: LLM返回内容不是合法JSON: Expecting value: line 1 column 1 (char 0) 内容: 无
25 核心听力选择 cId: 0000800 core_listening_choose
已保存 ▶
taskInfo
{ "cType": "core_listening_choose", "cId": "0000800", "title": "", "sceneDesc": "心心念念的短裤原来卡在石头间了，快抓紧时间请钓鱼叔叔帮忙钓上来吧！", "key": [ { "desc": "", "keyList": [ { "type": "default", "content": "summer", "desc": "n. 夏天" }, { "type": "default", "content": "hot", "desc": "adj. 热的" }, { "type": "default", "content": "trousers", "desc": "n. 长裤" }, { "type": "default", "content": "shorts", "desc": "n. 短裤" }, { "type": "default", "content": "It feels...", "desc": "感觉......" }, { "type": "default", "content": "Could you...", "desc": "可以请你......吗？" } ] } ], "resourceMapping": { "Vicky": 658 }, "cDesc": "请提供具体的题目材料内容哦，没有对应的听力材料、核心信息等内容，我没办法生成符合要求的叙事描述~" }
questionGroup
无
studyInfo
{ "learningPart": [ { "type": "npc", "npcName": "Brainy", "content": "This summer!", "learning": [ { "question": { "content": "刚刚听到的音频中，包含了关键短语 summer，意思是夏天，是一年里天气最热、可以去度假玩耍的季节哦。", "type": "npc", "npcName": "Brainy" }, "extendQuestion": { "content": "仔细听音频，哪一个句子和你听到的内容一致呀？", "type": "npc", "npcName": "Brainy" }, "optionList": [ { "option": "This summer!", "feedback": { "type": "npc", "content": "太厉害啦！你准确听出了句子里的summer哦！", "npcName": "Brainy" } }, { "option": "This winter!", "feedback": { "type": "npc", "content": "哎呀，这句话里的是winter（冬天），不是我们听到的summer哦，再仔细听听看吧！", "npcName": "Brainy" } } ], "answer": [ 0 ] }, { "question": { "content": "This summer!", "type": "npc", "npcName": "Brainy" }, "extendQuestion": { "content": "这句话的中文意思是“这个冬天！”，你觉得对不对呀？", "type": "npc", "npcName": "Brainy" }, "optionList": [ { "option": "对 / Yes", "feedback": { "type": "npc", "content": "summer是夏天的意思，不是冬天哦，再想想看吧~", "npcName": "Brainy" } }, { "option": "错 / No", "feedback": { "type": "npc", "content": "太棒啦！你完全搞懂啦，summer就是夏天，这句话的意思是“这个夏天！”哦。", "npcName": "Brainy" } } ], "answer": [ 1 ] } ] } ], "closing": { "type": "npc", "content": "很好！你已经回答完了全部问题，相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!", "npcName": "Brainy" } }
kpInfo (6个知识点)

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

中间结果: 学习过程配置

    ```
    # 重点句子 1
    音频文本：This summer!
    讲解文本：刚刚听到的音频中，包含了关键短语 summer，意思是夏天，是一年里天气最热、可以去度假玩耍的季节哦。
    1. 听音选句
    Brainy：仔细听音频，哪一个句子和你听到的内容一致呀？
    - This summer! [正确]
      - Brainy：太厉害啦！你准确听出了句子里的summer哦！
    - This winter!
      - Brainy：哎呀，这句话里的是winter（冬天），不是我们听到的summer哦，再仔细听听看吧！

    2. 听音选意
    Brainy：这句话的中文意思是“这个冬天！”，你觉得对不对呀？
    - 对 / Yes
      - Brainy：summer是夏天的意思，不是冬天哦，再想想看吧~
    - 错 / No [正确]
      - Brainy：太棒啦！你完全搞懂啦，summer就是夏天，这句话的意思是“这个夏天！”哦。
    ---
    # 完成反馈
    Brainy：很好！你已经回答完了全部问题，相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!
    ```

中间结果: 互动描述

    请提供具体的题目材料内容哦，没有对应的听力材料、核心信息等内容，我没办法生成符合要求的叙事描述~

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

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

中间结果: 学习流程配置

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

    # 问题2：
    Brainy: 你接着要在邮件里说明这就是你们必须留下来的原因，现在需要补全句子"That's ___ we have to stay."
    用户选项:
    （选项 A）why [正确]
      Brainy: 太棒了！"That's why..."是固定句式，用来引出原因，正好符合这里要表达“这就是我们必须留下来的原因”的语境。
    （选项 B）how
      Brainy: 不对哦，"how"是用来询问方式的，这里是要说明留下来的原因，语义不匹配，再试一次吧。
    （选项 C）which
      Brainy: 不对哦，"which"通常用来指代事物，放在这里句子逻辑不通，无法表达说明原因的意思，再想想吧。

    # 问题3：
    Brainy: 邮件最后你想询问Rebecca什么时候会到，现在需要补全句子"___ you arrive?"
    用户选项:
    （选项 A）When will [正确]
      Brainy: 答对啦！询问将来的时间要用一般将来时，"When will you arrive?"是正确的表达，准确问出了“你什么时候会到？”。
    （选项 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?（亲爱的丽贝卡：我知道你很担心。但这是我们探索漫游港的最佳机会。这项工作对我们来说很重要。这就是我们必须留下来的原因。你会有一天来漫游港吗？如果会的话，你什么时候到呀？）" }
textInfo
{ "inputType": "write", "passCondition": "1. 这份工作很重要 2. 这就是我们为什么要留下 3. 你什么时候将会到达？", "textList": [ { "mode": "preset", "desc": "Dear Rebecca,", "answerText": "Dear Rebecca," }, { "mode": "preset", "desc": "I know you are worried. But this is our best chance to explore Wander Port.", "answerText": "I know you are worried. But this is our best chance to explore Wander Port." }, { "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": "Will you come to Wander Port some day?" }, { "mode": "fillingInput", "desc": "If so, _________ you arrive?", "answerText": "when will", "hint": "如果是这样的话，你什么时候（when will）将会到达？" } ] }
studyInfo
{ "learningPart": [ { "leadIn": { "desc": "Tell her your decision and why.Ask her when she will arrive." }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你打算给Rebecca回邮件，首先需要写合适的称呼，以下哪个是正确的开头？" }, "optionList": [ { "option": "Dear Rebecca,", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒啦！这是英文邮件非常标准的称呼写法，很适合写给Rebecca的开头哦。" } }, { "option": "Hello Rebecca is:", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个表达有语法错误，英文称呼不需要加be动词，也不用冒号在名字后面哦，再试试吧。" } }, { "option": "Rebecca you know:", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个不是正确的邮件称呼格式，开头应该先用礼貌的称呼引导，再写正文内容哦。" } } ], "answer": [ 0 ], "write": { "desc": "Dear Rebecca,", "trans": "亲爱的丽贝卡：" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "你想先回应Rebecca的担心，同时说明留在Wander Port的原因，以下哪句话表达最准确？" }, "optionList": [ { "option": "I know you are worried. But this is our best chance to explore Wander Port.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太对了！这句话既回应了Rebecca的担忧，也清晰说明了你们想要留下探索的理由，表述十分准确。" } }, { "option": "I know you are happy. But we don't want to explore Wander Port.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，Rebecca是担心你们的安全，而且你们是想要留下探索，和这个选项的意思完全相反啦。" } }, { "option": "You are worried. So we can't explore Wander Port.", "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": "你写的很好！" } }, { "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": "你写的很好！" } }, { "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是用来询问方式的，\"That's 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": "你写的很好！" } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "你想询问Rebecca未来会不会来Wander Port，以下哪句话是正确的问法？" }, "optionList": [ { "option": "Will you come to Wander Port some day?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "完全正确！这句话用将来时询问对方未来会不会来Wander Port，表达非常地道准确。" } }, { "option": "Are you come to Wander Port some day?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话有语法错误哦，be动词不能直接和动词原形come搭配使用，询问将来的动作应该用will来引导哦。" } }, { "option": "Do you come to Wander Port yesterday?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，yesterday是昨天，是过去的时间，和你想询问未来的情况不符，时态和语义都不对哦。" } } ], "answer": [ 0 ], "write": { "desc": "Will you come to Wander Port some day?", "trans": "你会有一天来漫游港吗？" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "你想接着问如果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了，不能再用be动词is来构成疑问句哦。" } }, { "option": "how is", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，how是询问方式的，这里你想问的是到达的时间，而且同样不能和arrive搭配使用哦。" } } ], "answer": [ 0 ], "write": { "desc": "If so, when will you arrive?", "trans": "如果会的话，你什么时候到呀？" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "恭喜你，你已经掌握了英文邮件的正确称呼写法，还学会了用固定搭配\"That's why...\"说明原因，以及用一般将来时询问对方未来的计划，成功完成了给Rebecca的邮件编写！" } }
evalInfo
{ "title": "编写给 Rebecca 的邮件", "taskDesc": "请根据提示问题，用英文组句完成这封邮件。", "sceneDesc": "Rebecca听上去十分担心你们的安全，你们刚刚做出了决定，要继续留在 Wander Port 进行学院的探索任务，你需要回一封邮件给她，告诉她你们的决定以及原因，顺便询问她何时会来。", "knowledge": "The job is... 这份工作......That's why we have to... 这就是为什么我们必须……When will you arrive? 你什么时候会到？", "passCondition": "1. 这份工作很重要 2. 这就是我们为什么要留下 3. 你什么时候将会到达？", "textList": [ { "mode": "preset", "desc": "Dear Rebecca,", "answerText": "Dear Rebecca," }, { "mode": "preset", "desc": "I know you are worried. But this is our best chance to explore Wander Port.", "answerText": "I know you are worried. But this is our best chance to explore Wander Port." }, { "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": "Will you come to Wander Port some day?" }, { "mode": "fillingInput", "desc": "If so, _________ you arrive?", "answerText": "when will", "hint": "如果是这样的话，你什么时候（when will）将会到达？" } ] }
kpInfo (1个知识点)

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

中间结果: 学习流程配置

    ```
    # 问题1：
    Brainy: 你打算给Rebecca回邮件，首先需要写合适的称呼，以下哪个是正确的开头？
    用户选项:
    （选项 A）Dear Rebecca, [正确]
      Brainy: 太棒啦！这是英文邮件非常标准的称呼写法，很适合写给Rebecca的开头哦。
    （选项 B）Hello Rebecca is:
      Brainy: 这个表达有语法错误，英文称呼不需要加be动词，也不用冒号在名字后面哦，再试试吧。
    （选项 C）Rebecca you know:
      Brainy: 这个不是正确的邮件称呼格式，开头应该先用礼貌的称呼引导，再写正文内容哦。

    # 问题2：
    Brainy: 你想先回应Rebecca的担心，同时说明留在Wander Port的原因，以下哪句话表达最准确？
    用户选项:
    （选项 A）I know you are worried. But this is our best chance to explore Wander Port. [正确]
      Brainy: 太对了！这句话既回应了Rebecca的担忧，也清晰说明了你们想要留下探索的理由，表述十分准确。
    （选项 B）I know you are happy. But we don't want to explore Wander Port.
      Brainy: 不对哦，Rebecca是担心你们的安全，而且你们是想要留下探索，和这个选项的意思完全相反啦。
    （选项 C）You are worried. So we can't explore Wander Port.
      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是用来询问方式的，"That's how..."表示“这就是如何做……的方式”，不符合这里要说明原因的语境哦。
    （选项 C）which
      Brainy: 不对哦，which通常用来指代“哪一个”，放在这里句子逻辑不通顺，无法表达说明原因的意思哦。

    # 问题5：
    Brainy: 你想询问Rebecca未来会不会来Wander Port，以下哪句话是正确的问法？
    用户选项:
    （选项 A）Will you come to Wander Port some day? [正确]
      Brainy: 完全正确！这句话用将来时询问对方未来会不会来Wander Port，表达非常地道准确。
    （选项 B）Are you come to Wander Port some day?
      Brainy: 这句话有语法错误哦，be动词不能直接和动词原形come搭配使用，询问将来的动作应该用will来引导哦。
    （选项 C）Do you come to Wander Port yesterday?
      Brainy: 不对哦，yesterday是昨天，是过去的时间，和你想询问未来的情况不符，时态和语义都不对哦。

    # 问题6：
    Brainy: 你想接着问如果Rebecca来的话，会什么时候到达，句子"If so, _________ you arrive?"的空格里应该填什么内容呢？
    用户选项:
    （选项 A）when will [正确]
      Brainy: 答对啦！询问将来的时间要用一般将来时，"when will you arrive"是正确的询问到达时间的表达哦。
    （选项 B）when is
      Brainy: 不对哦，句子里已经有实义动词arrive了，不能再用be动词is来构成疑问句哦。
    （选项 C）how is
      Brainy: 不对哦，how是询问方式的，这里你想问的是到达的时间，而且同样不能和arrive搭配使用哦。
    ```

中间结果: 互动描述

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

37 信息填词 cId: 0000800 mid_message_word
已保存 ▶
jsonData
{ "cType": "mid_message_word", "cId": "0000800", "title": "填写信息表", "resourceMapping": { "Vicky": 658 }, "cDesc": "You filled in \"knowledge\" and \"information\" correctly. (你正确填入了“知识”对应的单词。)", "question": { "desc": "请在空白处填入合适的单词，使句意完整" }, "tip": "需要填入的单词的中文释义是“知识”", "answer": [ "knowledge", "information" ], "img": "0000800.png", "inputSet": [] }
kpInfo (1个知识点)

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

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

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

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

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

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

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

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

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

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

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