就绪
成功: 0 失败: 0

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

生成时间: 2026-05-07 10:42:29 模型: doubao-seed-2.0-pro Wiki: AEPJwf0DUiDkWska4SbceSAbnyc
42
总组件
38
成功
3
失败
1
跳过
1 对话朗读 cId: 0000800 mid_dialog_repeat
已保存 ▶
jsonData

cType |
cId |
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 |
question | { "type": "user", "content": "Let's go to school now." }
postDialog | []

{ "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 |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "vocab", "kpTitle": "school", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_repeat", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "school", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
2 对话挖空 cId: 0000801 mid_dialog_fillin
已保存 ▶
jsonData

cType |
cId |
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 | []

{ "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 |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "vocab", "kpTitle": "school", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_fillin", "cId": "0000801", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "school", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
3 对话朗读 cId: 0000802 mid_dialog_repeat
已保存 ▶
jsonData

cType |
cId |
title |
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!" } ]

{ "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 |
cType |
cId |
kpInfo | [ { "kpId": "0107009", "kpType": "sentence", "kpTitle": "You need to...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": "0112033", "kpType": "vocab", "kpTitle": "study", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "play", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_repeat", "cId": "0000802", "kpInfo": [ { "kpId": "0107009", "kpType": "sentence", "kpTitle": "You need to...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": "0112033", "kpType": "vocab", "kpTitle": "study", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "play", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
4 对话朗读 cId: 0000803 mid_dialog_repeat
已保存 ▶
jsonData

cType |
cId |
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!" } ]

{ "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 |
cType |
cId |
kpInfo | [ { "kpId": "0112016", "kpType": "sentence", "kpTitle": "We can...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "play", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "school", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_repeat", "cId": "0000803", "kpInfo": [ { "kpId": "0112016", "kpType": "sentence", "kpTitle": "We can...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "play", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "school", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
5 对话朗读 cId: 0000804 mid_dialog_repeat
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Eva": 663, "Peter": 653, "Vicky": 658 }
preDialog | []
imgShowTimingList | []
question | { "type": "user", "content": "Do you want to be a student?" }
postDialog | []

{ "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 |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "vocab", "kpTitle": "student", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_repeat", "cId": "0000804", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "student", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
6 对话组句 cId: 0000805 mid_dialog_sentence
已保存 ▶
jsonData

cType |
cId |
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 |
corFeedback | {}
errFeedback | { "type": "npc", "npcName": "Vicky", "content": "Try again." }
postDialog | []

{ "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 |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "vocab", "kpTitle": "student", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_sentence", "cId": "0000805", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "student", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
7 对话朗读 cId: 0000806 mid_dialog_repeat
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Eva": 663, "Peter": 653, "Vicky": 658 }
preDialog | []
imgShowTimingList | [ "content" ]
img |
question | { "type": "user", "content": "I study at school." }
postDialog | []

{ "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 |
cId |
title |
resourceMapping | { "Eva": 663, "Peter": 653, "Vicky": 658 }
preDialog | []
imgShowTimingList | [ "content" ]
img |
question | { "type": "user", "content": "And I play too." }
postDialog | []

{ "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 |
cId |
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 | []

{ "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 |
cType |
cId |
kpInfo | [ { "kpId": "0112033", "kpType": "vocab", "kpTitle": "study", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_fillin", "cId": "0000808", "kpInfo": [ { "kpId": "0112033", "kpType": "vocab", "kpTitle": "study", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
10 对话朗读 cId: 0000809 mid_dialog_repeat
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Eva": 663, "Peter": 653, "Vicky": 658 }
preDialog | []
imgShowTimingList | [ "content" ]
img |
question | { "type": "user", "content": "It's \"Go to School\"." }
postDialog | []

{ "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) 内容: 无
原始组件配置

    Where are Kimi and Jimmy going?
    0：学校
    1：动物园
    2：烘焙坊

12 对话组句 cId: 0000811 mid_dialog_sentence
已保存 ▶
jsonData

cType |
cId |
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 |
corFeedback | {}
errFeedback | { "type": "npc", "npcName": "Peter", "content": "Huh?" }
postDialog | []

{ "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 |
cType |
cId |
kpInfo | [ { "kpId": "0107009", "kpType": "sentence", "kpTitle": "You need to...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": "0112033", "kpType": "vocab", "kpTitle": "study", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_sentence", "cId": "0000811", "kpInfo": [ { "kpId": "0107009", "kpType": "sentence", "kpTitle": "You need to...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": "0112033", "kpType": "vocab", "kpTitle": "study", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
13 对话组句 cId: 0000812 mid_dialog_sentence
已保存 ▶
jsonData

cType |
cId |
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 |
corFeedback | {}
errFeedback | { "type": "npc", "npcName": "Grace", "content": "Try again." }
postDialog | []

{ "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 |
cType |
cId |
kpInfo | [ { "kpId": "0107009", "kpType": "sentence", "kpTitle": "You need to...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "school", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_sentence", "cId": "0000812", "kpInfo": [ { "kpId": "0107009", "kpType": "sentence", "kpTitle": "You need to...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "school", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
14 对话挖空 cId: 0000813 mid_dialog_fillin
已保存 ▶
jsonData

cType |
cId |
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 | []

{ "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 |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "vocab", "kpTitle": "play", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_fillin", "cId": "0000813", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "play", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
15 对话组句 cId: 0000814 mid_dialog_sentence
已保存 ▶
jsonData

cType |
cId |
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 |
corFeedback | {}
errFeedback | { "type": "npc", "npcName": "Vicky", "content": "No, try again." }
postDialog | []

{ "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 |
cType |
cId |
kpInfo | [ { "kpId": "0112016", "kpType": "sentence", "kpTitle": "We can...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_sentence", "cId": "0000814", "kpInfo": [ { "kpId": "0112016", "kpType": "sentence", "kpTitle": "We can...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
16 对话挖空 cId: 0000815 mid_dialog_fillin
已保存 ▶
jsonData

cType |
cId |
title |
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 | []

{ "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 |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "vocab", "kpTitle": "student", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_fillin", "cId": "0000815", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "student", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
17 核心合作阅读 cId: 0000800 core_reading_order
已保存 ▶
taskInfo

cType |
cId |
title |
sceneDesc | 你们听说 Vala 学院没有考试，正在欢呼雀跃。突然发现 Pioneer 的一项重要任务：加入社团！为什么 Pioneer 一定要加入社团呢？快来阅读 Brainy 的介绍吧。
img |

key

[ { "desc": "单词类", "keyList": [ { "type": "default", "content": "plant", "desc": "n. 植物" }, { "type": "default", "content": "club", "desc": "n. 俱乐部" }, { "type": "default", "content": "join", "desc": "v. 加入" }, { "type": "default", "content": "member", "desc": "n. 成员" }, { "type": "default", "content": "choose", "desc": "v. 选择" }, { "type": "default", "content": "interested", "desc": "adj. 感兴趣的" } ] } ]

resourceMapping | { "Eva": 738, "Peter": 739 }

{ "cType": "core_reading_order", "cId": "0000800", "title": "加入社团", "sceneDesc": "你们听说 Vala 学院没有考试，正在欢呼雀跃。突然发现 Pioneer 的一项重要任务：加入社团！为什么 Pioneer 一定要加入社团呢？快来阅读 Brainy 的介绍吧。", "img": "", "key": [ { "desc": "单词类", "keyList": [ { "type": "default", "content": "plant", "desc": "n. 植物" }, { "type": "default", "content": "club", "desc": "n. 俱乐部" }, { "type": "default", "content": "join", "desc": "v. 加入" }, { "type": "default", "content": "member", "desc": "n. 成员" }, { "type": "default", "content": "choose", "desc": "v. 选择" }, { "type": "default", "content": "interested", "desc": "adj. 感兴趣的" } ] } ], "resourceMapping": { "Eva": 738, "Peter": 739 } }
materialInfo

text

[ { "textType": "Lcd", "textTitle": "How to Join Clubs?", "textBody": "<sp>You can choose your favourite club to join. If you are interested in something, you can find a club for it. The robot club, the plant club, the sports club, and the reading club are all popular choices.<br>If you are not interested in any club, you can start a new one with friends!<br><sp>图片:[0101106_core reading2]" } ]

question

[ { "type": "npc", "npcName": "Brainy", "content": "At Vala Academy, how can Pioneers get points?", "optionList": [ { "option": "Take many exams.", "feedback": { "type": "npc", "npcName": "Otis", "content": "No! We have no exams!" } }, { "option": "Join clubs.", "feedback": { "type": "npc", "npcName": "Otis", "content": "Right. We need to join a club to get points." } }, { "option": "Level up.", "feedback": { "type": "npc", "npcName": "Otis", "content": "We have to get points first, then we can level up." } } ], "answer": [ 1 ], "meaning": "", "explain": "" }, { "type": "npc", "npcName": "Brainy", "content": "What can you do in a club?", "optionList": [ { "option": "We can earn some money.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "No, that's not right." } }, { "option": "We can play, study and work together.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "That's right! That's what clubs are for!" } }, { "option": "We can only play.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "Hmm… We play, but we also study and work." } } ], "answer": [ 1 ], "meaning": "", "explain": "" }, { "type": "npc", "npcName": "Otis", "content": "How can we choose a club?", "optionList": [ { "option": "We can only choose the plant club and the robot club.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "Nope! We can choose from many clubs." } }, { "option": "We can choose a club we are interested in.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "Yes, exactly! Choose what you like!" } }, { "option": "We must start a new club.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "No, not must. Only if you want to." } } ], "answer": [ 1 ], "meaning": "", "explain": "" }, { "type": "npc", "npcName": "Skylar", "content": "If we are not interested in any club, what should we do?", "optionList": [ { "option": "We can't join any clubs.", "feedback": { "type": "npc", "npcName": "Otis", "content": "Uh… That sounds bad." } }, { "option": "We can start a new club.", "feedback": { "type": "npc", "npcName": "Otis", "content": "Yes! That sounds okay." } }, { "option": "We can only join the plant club.", "feedback": { "type": "npc", "npcName": "Otis", "content": "I don't think so… We have other choices." } } ], "answer": [ 1 ], "meaning": "", "explain": "" } ]

{ "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 ] } ]

{ "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，意思是考试，我们平时说的“参加考试”就可以说take an exam。第二个是point，在这里的意思是积分、分数，攒积分就可以说collect points。", "npcName": "Brainy", "learning": [ { "answer": [ 0 ], "meaning": "句意选择题", "optionList": [ { "option": "在瓦拉学院，开拓者们不需要参加考试。", "feedback": { "type": "npc", "content": "太厉害啦！你准确理解了exam的意思，完全掌握了这个句子的含义~", "npcName": "Brainy" } }, { "option": "在瓦拉学院，开拓者们不需要参加俱乐部活动。", "feedback": { "type": "npc", "content": "不对哦，club才是俱乐部的意思，我们这里的重点单词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": "任务的英文是task哦，我们这里的重点单词point是积分的意思，再仔细想想呀。", "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": [ 0 ], "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 something you like。第二个是club，意思是俱乐部，加入俱乐部就是join a club。第三个是interested，意思是感兴趣的，对某件事感兴趣可以说be interested in something。", "npcName": "Brainy", "learning": [ { "answer": [ 1 ], "meaning": "句意选择题", "optionList": [ { "option": "你可以创建你最喜欢的俱乐部。", "feedback": { "type": "npc", "content": "创建的英文是start哦，我们这里的重点单词choose是选择的意思，再回忆一下释义吧。", "npcName": "Brainy" } }, { "option": "你可以选择你最喜欢的俱乐部加入。", "feedback": { "type": "npc", "content": "完美回答！你已经掌握了choose和club这两个单词的意思，也读懂了这个句子~", "npcName": "Brainy" } } ], "question": { "type": "npc", "npcName": "Brainy", "content": "先看包含choose和club的句子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": "好奇的英文是curious哦，我们这里的重点单词interested是感兴趣的意思，再认真看看呀。", "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": "现在你知道这一段主要想表达什么意思吗？" } } ] } ]

{ "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，意思是考试，我们平时说的“参加考试”就可以说take an exam。第二个是point，在这里的意思是积分、分数，攒积分就可以说collect points。", "npcName": "Brainy", "learning": [ { "answer": [ 0 ], "meaning": "句意选择题", "optionList": [ { "option": "在瓦拉学院，开拓者们不需要参加考试。", "feedback": { "type": "npc", "content": "太厉害啦！你准确理解了exam的意思，完全掌握了这个句子的含义~", "npcName": "Brainy" } }, { "option": "在瓦拉学院，开拓者们不需要参加俱乐部活动。", "feedback": { "type": "npc", "content": "不对哦，club才是俱乐部的意思，我们这里的重点单词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": "任务的英文是task哦，我们这里的重点单词point是积分的意思，再仔细想想呀。", "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": [ 0 ], "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 something you like。第二个是club，意思是俱乐部，加入俱乐部就是join a club。第三个是interested，意思是感兴趣的，对某件事感兴趣可以说be interested in something。", "npcName": "Brainy", "learning": [ { "answer": [ 1 ], "meaning": "句意选择题", "optionList": [ { "option": "你可以创建你最喜欢的俱乐部。", "feedback": { "type": "npc", "content": "创建的英文是start哦，我们这里的重点单词choose是选择的意思，再回忆一下释义吧。", "npcName": "Brainy" } }, { "option": "你可以选择你最喜欢的俱乐部加入。", "feedback": { "type": "npc", "content": "完美回答！你已经掌握了choose和club这两个单词的意思，也读懂了这个句子~", "npcName": "Brainy" } } ], "question": { "type": "npc", "npcName": "Brainy", "content": "先看包含choose和club的句子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": "好奇的英文是curious哦，我们这里的重点单词interested是感兴趣的意思，再认真看看呀。", "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 |
cType |
cId |

kpInfo

[ { "kpId": null, "kpType": "vocab", "kpTitle": "plant n. 植物", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "club n. 俱乐部", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "join v. 加入", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "member n. 成员", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "choose v. 选择", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "interested adj. 感兴趣的", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "core_reading_order", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "plant n. 植物", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "club n. 俱乐部", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "join v. 加入", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "member n. 成员", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "choose v. 选择", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "interested adj. 感兴趣的", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
中间结果: 阅读材料格式化

    ```
    # 材料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，意思是考试，我们平时说的“参加考试”就可以说take an exam。第二个是point，在这里的意思是积分、分数，攒积分就可以说collect points。
    1. 句意选择题
    Brainy：我们来看包含exam的句子At Vala Academy, Pioneers don't have exams. 是什么意思呢？
    - 在瓦拉学院，开拓者们不需要参加考试。[正确]
      Brainy：太厉害啦！你准确理解了exam的意思，完全掌握了这个句子的含义~
    - 在瓦拉学院，开拓者们不需要参加俱乐部活动。
      Brainy：不对哦，club才是俱乐部的意思，我们这里的重点单词exam是考试的意思，再回忆一下释义吧。

    Brainy：接下来看包含point的句子But you need points to level up! 是什么意思呢？
    - 但是你需要完成任务才能升级。
      Brainy：任务的英文是task哦，我们这里的重点单词point是积分的意思，再仔细想想呀。
    - 但是你需要积分才能升级。[正确]
      Brainy：回答正确！你已经搞懂point在这句话里的意思啦，真棒~

    2. 段落大意题
    Brainy：了解了关键单词和句子，你知道这一段主要讲了什么内容吗？
    - 瓦拉学院的开拓者不需要考试，但需要攒积分来升级。[正确]
      Brainy：太棒了！你精准抓住了段落的两个核心信息，完全理解了段落内容~
    - 瓦拉学院的开拓者既需要参加考试，也需要攒积分升级。
      Brainy：不对哦，段落里明确说了开拓者们是没有考试的，再回去读读段落内容吧。
    # 段落2
    ## 段落内容
    ---
    You can choose your favourite club to join. If you are interested in something, you can find a club for it.
    ---
    ## 互动题目
    Brainy: 我们来看看这段话里的重点词汇。第一个是choose，意思是选择、挑选，挑选你喜欢的东西就可以说choose something you like。第二个是club，意思是俱乐部，加入俱乐部就是join a club。第三个是interested，意思是感兴趣的，对某件事感兴趣可以说be interested in something。
    1. 句意选择题
    Brainy：先看包含choose和club的句子You can choose your favourite club to join. 是什么意思呢？
    - 你可以创建你最喜欢的俱乐部。
      Brainy：创建的英文是start哦，我们这里的重点单词choose是选择的意思，再回忆一下释义吧。
    - 你可以选择你最喜欢的俱乐部加入。[正确]
      Brainy：完美回答！你已经掌握了choose和club这两个单词的意思，也读懂了这个句子~

    Brainy：再看包含interested的句子If you are interested in something, you can find a club for it. 是什么意思呢？
    - 如果你对某件事感兴趣，你可以找到对应的俱乐部。[正确]
      Brainy：太优秀啦！你准确理解了interested的意思，完全搞懂了这个句子的含义~
    - 如果你对某件事感到好奇，你可以和朋友一起研究。
      Brainy：好奇的英文是curious哦，我们这里的重点单词interested是感兴趣的意思，再认真看看呀。

    2. 段落大意题
    Brainy：现在你知道这一段主要想表达什么意思吗？
    - 你可以选择喜欢的俱乐部加入，如果有感兴趣的事也能找到对应的俱乐部。[正确]
      Brainy：答得太好了！你把段落的两层意思都完整抓住了，理解得非常到位~
    - 所有的俱乐部都非常受欢迎，你必须加入一个。
      Brainy：不对哦，段落里没有说必须加入俱乐部，也没提到俱乐部受欢迎的内容，再回去读读段落吧。
    # 完结反馈
    Brainy: 恭喜你完成了本次所有内容的学习！你已经掌握了这些重点词汇和段落的意思啦，继续加油哦~
    ```

18 核心看图选词 cId: 0000800 core_reading_imageDrag
已保存 ▶
taskInfo

cType |
cId |
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 | 我们回答了本提出的河马住在哪里的问题，知道了河马生活在湖里，离打开单词城堡的大门更近了一步。我们回答了布莱尼提出的动物园里还有什么其他相关事物的问题，知道了树是动物园里动物栖息地的一部分，完成了这部分挑战。

{ "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": "我们回答了本提出的河马住在哪里的问题，知道了河马生活在湖里，离打开单词城堡的大门更近了一步。我们回答了布莱尼提出的动物园里还有什么其他相关事物的问题，知道了树是动物园里动物栖息地的一部分，完成了这部分挑战。" }
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是湖，tree是树，grass是草，你觉得哪个是河马的家呀？" }, "optionList": [ { "option": "tree", "feedback": { "type": "npc", "npcName": "Brainy", "content": "tree是树的意思哦，河马体型很大，没办法住在树上呀，再想想看？" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "grass是草的意思哦，河马大部分时间都待在水里，不会住在草地上，再试一次吧~" } }, { "option": "lake", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！lake就是湖的意思，河马平时就生活在湖里，你掌握得很棒哦！" } } ], "answer": [ 2 ] }, { "question": { "type": "npc", "npcName": "Brainy", "content": "现在来完成这道题哦，Ben问“河马住在哪里？”，我们需要选对单词填到句子里，补全回答“在____里”。" }, "optionList": [ { "option": "lake", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！回答“in the lake”就是说河马住在湖里，完全正确~ 现在试着大声把这个回答读出来吧！" } }, { "option": "tree", "feedback": { "type": "npc", "npcName": "Brainy", "content": "tree是树哦，河马没法住在树上，结合图片里的场景再想想，重新选一次吧~" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "grass是草，河马不是住在草地上的哦，再想想河马的生活环境，试试看再选一次吧~" } } ], "answer": [ 0 ] } ] }, { "image": "1201001_02.png", "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "这道题我们要回答Brainy提出的“动物园里还有什么其他的？”这个问题，先来认识三个单词：lake是湖，tree是树，grass是草，你觉得哪个是动物园里会有的事物呀？" }, "optionList": [ { "option": "lake", "feedback": { "type": "npc", "npcName": "Brainy", "content": "lake是湖哦，一般动物园里不会有湖作为常见的景观/事物哦，不符合场景，再想想看~" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "grass是草，虽然动物园里有草，但不是我们这道题要选的答案哦，再试一次吧~" } }, { "option": "tree", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！tree是树，动物园里有很多树木，是动物园里常见的事物哦，你选对啦！" } } ], "answer": [ 2 ] }, { "question": { "type": "npc", "npcName": "Brainy", "content": "现在来完成这道题哦，Brainy问“动物园里还有什么其他的？”，我们要从三个选项里选出合适的回答。" }, "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": [ 0 ] } ] } ]

closing | { "type": "npc", "npcName": "Brainy", "content": "太棒了！你已经完成了所有的题目，还复习了lake、tree、grass这些重点单词，知道了河马住在湖里，也了解了动物园里的常见事物，你的英语越来越棒啦，继续加油哦！" }

{ "learningPart": [ { "image": "1201001_02.png", "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "小朋友，这道题我们要选河马居住的地方哦，先来认识三个核心单词吧~ lake是湖，tree是树，grass是草，你觉得哪个是河马的家呀？" }, "optionList": [ { "option": "tree", "feedback": { "type": "npc", "npcName": "Brainy", "content": "tree是树的意思哦，河马体型很大，没办法住在树上呀，再想想看？" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "grass是草的意思哦，河马大部分时间都待在水里，不会住在草地上，再试一次吧~" } }, { "option": "lake", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！lake就是湖的意思，河马平时就生活在湖里，你掌握得很棒哦！" } } ], "answer": [ 2 ] }, { "question": { "type": "npc", "npcName": "Brainy", "content": "现在来完成这道题哦，Ben问“河马住在哪里？”，我们需要选对单词填到句子里，补全回答“在____里”。" }, "optionList": [ { "option": "lake", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！回答“in the lake”就是说河马住在湖里，完全正确~ 现在试着大声把这个回答读出来吧！" } }, { "option": "tree", "feedback": { "type": "npc", "npcName": "Brainy", "content": "tree是树哦，河马没法住在树上，结合图片里的场景再想想，重新选一次吧~" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "grass是草，河马不是住在草地上的哦，再想想河马的生活环境，试试看再选一次吧~" } } ], "answer": [ 0 ] } ] }, { "image": "1201001_02.png", "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "这道题我们要回答Brainy提出的“动物园里还有什么其他的？”这个问题，先来认识三个单词：lake是湖，tree是树，grass是草，你觉得哪个是动物园里会有的事物呀？" }, "optionList": [ { "option": "lake", "feedback": { "type": "npc", "npcName": "Brainy", "content": "lake是湖哦，一般动物园里不会有湖作为常见的景观/事物哦，不符合场景，再想想看~" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "grass是草，虽然动物园里有草，但不是我们这道题要选的答案哦，再试一次吧~" } }, { "option": "tree", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！tree是树，动物园里有很多树木，是动物园里常见的事物哦，你选对啦！" } } ], "answer": [ 2 ] }, { "question": { "type": "npc", "npcName": "Brainy", "content": "现在来完成这道题哦，Brainy问“动物园里还有什么其他的？”，我们要从三个选项里选出合适的回答。" }, "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": [ 0 ] } ] } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你已经完成了所有的题目，还复习了lake、tree、grass这些重点单词，知道了河马住在湖里，也了解了动物园里的常见事物，你的英语越来越棒啦，继续加油哦！" } }
kpInfo JSON

pushType |
cType |
cId |

kpInfo

[ { "kpId": null, "kpType": "vocab", "kpTitle": "lake n. 湖", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "monkey n. 猴子", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "three num. 三", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "How many ...? 多少……？", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "There be ... 有……", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "core_reading_imageDrag", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "lake n. 湖", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "monkey n. 猴子", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "three num. 三", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "How many ...? 多少……？", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "There be ... 有……", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
中间结果: 学习流程配置

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

    ## 互动题目
    ### 1. 句意选词题
    Brainy：小朋友，这道题我们要选河马居住的地方哦，先来认识三个核心单词吧~ lake是湖，tree是树，grass是草，你觉得哪个是河马的家呀？
    - 选项 A：tree
      Brainy：tree是树的意思哦，河马体型很大，没办法住在树上呀，再想想看？
    - 选项 B：grass
      Brainy：grass是草的意思哦，河马大部分时间都待在水里，不会住在草地上，再试一次吧~
    - 选项 C：lake[正确]
      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：grass
      Brainy：grass是草，是植物，也不是动物哦，不符合问题的要求，再试一次吧~
    - 选项 C：tree[正确]
      Brainy：哦不对，这里是不是题目设置有点问题？哦不对，结合任务哦，哦对，正确选项是tree，哦不对，等下，用户给的题目5正确选项是tree？哦不对，可能输入的题目5的选项是不是打错了？哦不对，用户给的题目5的选项是lake、tree（正确）、grass，那我们按给定的来。哦不对，可能题目是问动物园里还有什么？哦不管，按给定的内容来。哦重新组织：
    哦正确的知识点：Brainy：这道题我们要回答Brainy提出的“动物园里还有什么其他的？”这个问题，先来认识三个单词：lake是湖，tree是树，grass是草，你觉得哪个是动物园里会有的事物呀？
    - 选项 A：lake
      Brainy：lake是湖哦，一般动物园里不会有湖作为常见的景观/事物哦，不符合场景，再想想看~
    - 选项 B：grass
      Brainy：grass是草，虽然动物园里有草，但不是我们这道题要选的答案哦，再试一次吧~
    - 选项 C：tree[正确]
      Brainy：答对啦！tree是树，动物园里有很多树木，是动物园里常见的事物哦，你选对啦！

    ### 2. 原题降级
    Brainy：现在来完成这道题哦，Brainy问“动物园里还有什么其他的？”，我们要从三个选项里选出合适的回答。
    - 选项 A：tree[正确]
      Brainy：答对啦！回答tree就表示动物园里还有树，是符合场景的答案哦~ 现在试着大声把这个回答读出来吧！
    - 选项 B：lake
      Brainy：lake是湖，动物园里一般不会有湖哦，不符合实际的场景，再想想看重新选一次吧~
    - 选项 C：grass
      Brainy：grass是草，不是这道题的正确答案哦，结合你对动物园的印象再选一次吧~

    ---
    # 完结反馈
    Brainy：太棒了！你已经完成了所有的题目，还复习了lake、tree、grass这些重点单词，知道了河马住在湖里，也了解了动物园里的常见事物，你的英语越来越棒啦，继续加油哦！
    ```

中间结果: 互动描述

    Ben asks where hippos live, and we work out they live in the lake as we fill the blank, getting one step closer to unlocking the word castle’s gate.（我们回答了本提出的河马住在哪里的问题，知道了河马生活在湖里，离打开单词城堡的大门更近了一步。）
    Brainy wonders what other animals are in the zoo, and we figure out trees are part of the zoo’s animal habitat to complete this part of the challenge.（我们回答了布莱尼提出的动物园里还有什么其他相关事物的问题，知道了树是动物园里动物栖息地的一部分，完成了这部分挑战。）

19 核心口语快答 cId: 0000800 core_speaking_reply
已保存 ▶
taskInfo

cType |
cId |
title |
taskDesc |
sceneDesc | 你是Logan，在 Wander Port 的清洁站工作。清洁站附近有一只大象，人们都很喜欢她，喂她吃香蕉，帮她洗澡。这天你接到电话，几个孩子说大象需要洗澡，你意识到一定是饲养员粗心忘记了！孩子们说愿意帮助大象洗澡，需要借一些干净的水，你立刻答应。
img |
key | [ { "desc": "类型1的描述", "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 }

{ "cType": "core_speaking_reply", "cId": "0000800", "title": "告诉清洁站的工人，大象需要洗澡，你们乐意帮助，希望送一些干净的水过来", "taskDesc": "请你告诉清洁站的工人，大象需要洗澡，你们乐意帮助，希望送一些干净的水过来。", "sceneDesc": "你是Logan，在 Wander Port 的清洁站工作。清洁站附近有一只大象，人们都很喜欢她，喂她吃香蕉，帮她洗澡。这天你接到电话，几个孩子说大象需要洗澡，你意识到一定是饲养员粗心忘记了！孩子们说愿意帮助大象洗澡，需要借一些干净的水，你立刻答应。", "img": "", "key": [ { "desc": "类型1的描述", "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 }

{ "setting": { "npcName": "Logan", "round": 5, "checkRound": 3 } }
dialogConfig

config

{ "asrPrompt": "elephant,shower,water,keepers,help,Wander Port", "promptInfo": { "default": "# 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- 除开场轮次外，每次回应，可以先基于用户的话给一句反馈。然后再推进你的任务。", "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... ……很乐意……" } }

{ "config": { "asrPrompt": "elephant,shower,water,keepers,help,Wander Port", "promptInfo": { "default": "# 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- 除开场轮次外，每次回应，可以先基于用户的话给一句反馈。然后再推进你的任务。", "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": "现在我们要说明的是大象需要洗澡的情况哦，这个选项说的是大象饿了要给香蕉，和当前情境不匹配，再试一次吧。" } }, { "option": "The keepers forgot to feed the elephant.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "我们现在首先要告诉Logan大象需要洗澡的情况，这个选项说的是饲养员忘了喂大象，不符合当前要表达的内容，再选一次哦。" } } ], "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 need to wait for the keepers to come.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这里我们要表达的是不等了，先去拿水的想法，这个选项说要等饲养员来，和我们要表达的意思正好相反哦，再试试吧。" } }, { "option": "Instead of waiting here, we'd better get some water for her first.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦，你太棒了！请你把这句话朗读出来吧~" } }, { "option": "We can go home and wait for someone to help.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "我们是要主动帮忙给大象拿水，不是回家等别人帮忙哦，这个选项不符合情境，再选一次吧。" } } ], "answer": [ 1 ], "read": { "type": "user", "content": "Instead of waiting here, we'd better get some water for her first." }, "feedback": { "type": "npc", "npcName": "Logan", "content": "The keepers are too careless! Thank you! Can you help her shower?" } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "Logan说饲养员太粗心了，还感谢了你，问你能不能帮忙给大象洗澡，你要表达你们很乐意帮忙哦。" }, "optionList": [ { "option": "We'd love to help.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "回答正确！真厉害，请你大声把这句话读出来吧~" } }, { "option": "We have no time to help her.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "我们是愿意帮忙给大象洗澡的哦，这个选项说没时间帮忙，和我们要表达的意思不一样，再试一次吧。" } }, { "option": "We need to ask our parents first.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这里要直接告诉Logan你们乐意帮忙，这个选项说要先问父母，不符合当前要回应的内容哦，再选一次吧。" } } ], "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": "恭喜你完成了本次对话任务！你成功告诉了清洁站工人大象的情况，也表达了帮忙的意愿，顺利让对方同意送水过来，表现超棒哦！" } }

{ "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": "现在我们要说明的是大象需要洗澡的情况哦，这个选项说的是大象饿了要给香蕉，和当前情境不匹配，再试一次吧。" } }, { "option": "The keepers forgot to feed the elephant.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "我们现在首先要告诉Logan大象需要洗澡的情况，这个选项说的是饲养员忘了喂大象，不符合当前要表达的内容，再选一次哦。" } } ], "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 need to wait for the keepers to come.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这里我们要表达的是不等了，先去拿水的想法，这个选项说要等饲养员来，和我们要表达的意思正好相反哦，再试试吧。" } }, { "option": "Instead of waiting here, we'd better get some water for her first.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦，你太棒了！请你把这句话朗读出来吧~" } }, { "option": "We can go home and wait for someone to help.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "我们是要主动帮忙给大象拿水，不是回家等别人帮忙哦，这个选项不符合情境，再选一次吧。" } } ], "answer": [ 1 ], "read": { "type": "user", "content": "Instead of waiting here, we'd better get some water for her first." }, "feedback": { "type": "npc", "npcName": "Logan", "content": "The keepers are too careless! Thank you! Can you help her shower?" } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "Logan说饲养员太粗心了，还感谢了你，问你能不能帮忙给大象洗澡，你要表达你们很乐意帮忙哦。" }, "optionList": [ { "option": "We'd love to help.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "回答正确！真厉害，请你大声把这句话读出来吧~" } }, { "option": "We have no time to help her.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "我们是愿意帮忙给大象洗澡的哦，这个选项说没时间帮忙，和我们要表达的意思不一样，再试一次吧。" } }, { "option": "We need to ask our parents first.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这里要直接告诉Logan你们乐意帮忙，这个选项说要先问父母，不符合当前要回应的内容哦，再选一次吧。" } } ], "answer": [ 0 ], "read": { "type": "user", "content": "We'd love to help." }, "feedback": { "type": "npc", "npcName": "Logan", "content": "Great. We will send some water to her right away." } } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "恭喜你完成了本次对话任务！你成功告诉了清洁站工人大象的情况，也表达了帮忙的意愿，顺利让对方同意送水过来，表现超棒哦！" } } }
kpInfo JSON

pushType |
cType |
cId |

kpInfo

[ { "kpId": null, "kpType": "sentence", "kpTitle": "Let's... 让我们……", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "Instead of..., we'd better... 与其……，我们不如……", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "... love(s) to... ……很乐意……", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "core_speaking_reply", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "Let's... 让我们……", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "Instead of..., we'd better... 与其……，我们不如……", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "... love(s) to... ……很乐意……", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
中间结果: 学习流程配置

    ```
    # 开场回合
    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：现在我们要说明的是大象需要洗澡的情况哦，这个选项说的是大象饿了要给香蕉，和当前情境不匹配，再试一次吧。
    （C）The keepers forgot to feed the elephant.
      Brainy：我们现在首先要告诉Logan大象需要洗澡的情况，这个选项说的是饲养员忘了喂大象，不符合当前要表达的内容，再选一次哦。
    Logan：Are you saying she hasn't had a shower yet? Maybe someone will probably come soon.

    # 中间回合2
    Brainy：Logan问你是不是说大象还没洗澡，还说可能很快就会有人来啦，你要表达与其在这里等，不如先去给她拿点水哦。
    用户选项:
    （A）We need to wait for the keepers to come.
      Brainy：这里我们要表达的是不等了，先去拿水的想法，这个选项说要等饲养员来，和我们要表达的意思正好相反哦，再试试吧。
    （B）Instead of waiting here, we'd better get some water for her first.
      Brainy：答对啦，你太棒了！请你把这句话朗读出来吧~
    （C）We can go home and wait for someone to help.
      Brainy：我们是要主动帮忙给大象拿水，不是回家等别人帮忙哦，这个选项不符合情境，再选一次吧。
    Logan：The keepers are too careless! Thank you! Can you help her shower?

    # 中间回合3
    Brainy：Logan说饲养员太粗心了，还感谢了你，问你能不能帮忙给大象洗澡，你要表达你们很乐意帮忙哦。
    用户选项:
    （A）We'd love to help.
      Brainy：回答正确！真厉害，请你大声把这句话读出来吧~
    （B）We have no time to help her.
      Brainy：我们是愿意帮忙给大象洗澡的哦，这个选项说没时间帮忙，和我们要表达的意思不一样，再试一次吧。
    （C）We need to ask our parents first.
      Brainy：这里要直接告诉Logan你们乐意帮忙，这个选项说要先问父母，不符合当前要回应的内容哦，再选一次吧。
    Logan：Great. We will send some water to her right away.

    # 结尾回合
    Brainy：恭喜你完成了本次对话任务！你成功告诉了清洁站工人大象的情况，也表达了帮忙的意愿，顺利让对方同意送水过来，表现超棒哦！
    ```

中间结果: promptInfo配置

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

中间结果: 语音识别热词

    elephant,shower,water,keepers,help,Wander Port

20 口语独白 cId: 0000800 ? 跳过 ▶
跳过: 类型 '口语独白' 尚未实现生成器
原始组件配置

    【任务标题】
    向朋友们讲述你最难忘的经历
    【任务背景】
    在 Skylar 的生日聚会上，大家提议玩一个分享最难忘经历的小游戏。Skylar 和 Otis 都分享完了，现在轮到你啦。快和朋友们说说你最难忘的经历吧！
    【任务描述】
    当你分享时，可以这样做：
    1. 先告诉大家，你要讲述一段最难忘的经历
    2. 再说说这段经历发生的时间和地点
    3. 然后说说你都做了什么
    4. 最后说说为什么让你难以忘怀
    【知识】
    Last summer, I went to... 去年夏天，我去了......
    I taught... 我教了……
    That day made me feel... 那一天，我感到......

    【切分句数设定】
    句数下限：3
    句数上限：6
    【通过规则】
    用户说出：
    1. 一件难忘的经历
    2. 描述了1-2件具体的事情
    3. 表达了自己的感受
    【示例独白】
    Hello everyone! I have an unforgettable story to share.
    Last summer, I went to a small school in the countryside.
    I taught kids easy English words about animals.
    A little boy gave me a nice drawing on my last day there.
    That day made me feel really warm and happy.

21 核心口语妙问 cId: 0000800 core_speaking_inquiry
已保存 ▶
taskInfo

cType |
cId |
title |
taskDesc |
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 }

{ "cType": "core_speaking_inquiry", "cId": "0000800", "title": "向Chloe询问健身房位置并讨要毛巾", "taskDesc": "你要向 Chloe 询问健身房的位置，以及讨要毛巾，做好开始运动的准备。", "sceneDesc": "你是 Chloe，是 Twilight 的空乘，服务好每一位乘客是你的使命。用户之前帮你在另一位乘客面前解了围，你很感谢用户的帮忙，对用户的态度也格外友善热情。你发现用完餐的用户正在东张西望，似乎在寻找什么，你确认用户需要帮助，于是上前询问。你发现用户想去健身房消消食，但是不知道方向，于是回答了用户的问题，提供了你的帮助。", "img": "", "key": [ { "desc": "", "keyList": [ { "type": "default", "content": "Where can I find the gym？", "desc": "我在哪里能找到健身房？" }, { "type": "default", "content": "Can I have a towel please?？", "desc": "我能要一条毛巾吗？" }, { "type": "default", "content": "What else can I do there? ", "desc": "我在那儿还能做些什么？" } ] } ], "resourceMapping": { "Eva": 738, "Peter": 739 } }
dialogSetting

setting | { "npcName": "Chloe", "round": 5, "checkRound": 3 }

{ "setting": { "npcName": "Chloe", "round": 5, "checkRound": 3 } }
dialogConfig

config

{ "asrPrompt": "gym,towel,exercise,sightseeing,walkway,relax", "promptInfo": { "default": "# 1. 角色（你要扮演谁）\n- 你是Chloe，是Twilight的空乘，服务好每一位乘客是你的使命。\n- 你对帮过你的用户格外友善热情，会耐心回答对方的问题。\n\n# 2. 任务（你如何参与到整个对话）\n- 你只在用户提问时提供特定信息，不主动透露知识库中的信息。\n- 如果用户提问的内容在知识库范围内，你会准确回答。\n- 如果用户的问题不清晰，你会尝试确认问题。\n- 一般情况下，一次最多只回答知识库中的一条信息，除非用户明确地分别提问到多条信息。\n- 如果用户不提问，你会温和、自然地进行交谈。\n\n# 3. 背景信息\n你是Chloe，是Twilight的空乘，服务好每一位乘客是你的使命。用户之前帮你在另一位乘客面前解了围，你很感谢用户的帮忙，对用户的态度也格外友善热情。你发现用完餐的用户正在东张西望，似乎在寻找什么，你确认用户需要帮助，于是上前询问。你发现用户想去健身房消消食，但是不知道方向，于是回答了用户的问题，提供了你的帮助。\n\n# 4. 知识库（你知道的信息）\n- 健身房就在前方过道的尽头。\n- 你会为有需要的用户准备一条新毛巾。\n- 健身房可以进行的活动：运动、看宇宙风光（sightseeing），或者可以拉伸放松、进行休息。\n- 对用户的任何提问，你都耐心安抚并一一回答。\n\n# 5. 语言风格\n- 使用 CEFR A1-A2 等级英语，避免复杂句，每句话不超过 10 个词，比如\n \"我要去...\" 可以用句子 I am going to ...，不用 My destination is ...，确保小学2-4年级的孩子能听懂\n- 回答一般不超过两句话\n- 避免重复表达，适当变换措辞\n\n# 6. 开场白\n你由你开始对话，你会说：\"Can I help you?\"\n\n# 7. 回应方式（固定内容）\n- 你只在用户提问时才根据知识库中的信息回答。其他时候，以符合你身份的方式，自然地进行交谈。\n- 不主动提供知识库的信息\n- 不主动提问题", "scene": "你是 Chloe，是 Twilight 的空乘，服务好每一位乘客是你的使命。\n用户之前帮你在另一位乘客面前解了围，你很感谢用户的帮忙，对用户的态度也格外友善热情。\n你发现用完餐的用户正在东张西望，似乎在寻找什么，你确认用户需要帮助，于是上前询问。你发现用户想去健身房消消食，但是不知道方向，于是回答了用户的问题，提供了你的帮助。", "in_progress_goal": "用户成功问出“健身房在哪里”、“可以给我一条毛巾吗”以及“在哪儿我还能做什么”的三个问题。", "final_goal": "Chloe回答了用户关于健身房的问题，提供了耐心友好的帮助。", "reference_dialog": "Chloe: Can I help you?\nUser: Where can I find the gym?\nChloe: Look, it's over there at the end of this walkway.\nUser: Oh, and can I have a towel please? \nChloe: Of course! I'll bring a new one for you soon.\nUser: What else can I do there? \nChloe: Well, you can do some exercise and enjoy sightseeing there. Or you can just relax.", "user_task": "你要向 Chloe 询问健身房的位置，以及讨要毛巾，做好开始运动的准备。", "user_scene": "你是 Chloe，是 Twilight 的空乘，服务好每一位乘客是你的使命。\n用户之前帮你在另一位乘客面前解了围，你很感谢用户的帮忙，对用户的态度也格外友善热情。\n你发现用完餐的用户正在东张西望，似乎在寻找什么，你确认用户需要帮助，于是上前询问。你发现用户想去健身房消消食，但是不知道方向，于是回答了用户的问题，提供了你的帮助。", "user_knowledge": "Where can I find the gym？我在哪里能找到健身房？\nCan I have a towel please?？我能要一条毛巾吗？\nWhat else can I do there? 我在那儿还能做些什么？" } }

{ "config": { "asrPrompt": "gym,towel,exercise,sightseeing,walkway,relax", "promptInfo": { "default": "# 1. 角色（你要扮演谁）\n- 你是Chloe，是Twilight的空乘，服务好每一位乘客是你的使命。\n- 你对帮过你的用户格外友善热情，会耐心回答对方的问题。\n\n# 2. 任务（你如何参与到整个对话）\n- 你只在用户提问时提供特定信息，不主动透露知识库中的信息。\n- 如果用户提问的内容在知识库范围内，你会准确回答。\n- 如果用户的问题不清晰，你会尝试确认问题。\n- 一般情况下，一次最多只回答知识库中的一条信息，除非用户明确地分别提问到多条信息。\n- 如果用户不提问，你会温和、自然地进行交谈。\n\n# 3. 背景信息\n你是Chloe，是Twilight的空乘，服务好每一位乘客是你的使命。用户之前帮你在另一位乘客面前解了围，你很感谢用户的帮忙，对用户的态度也格外友善热情。你发现用完餐的用户正在东张西望，似乎在寻找什么，你确认用户需要帮助，于是上前询问。你发现用户想去健身房消消食，但是不知道方向，于是回答了用户的问题，提供了你的帮助。\n\n# 4. 知识库（你知道的信息）\n- 健身房就在前方过道的尽头。\n- 你会为有需要的用户准备一条新毛巾。\n- 健身房可以进行的活动：运动、看宇宙风光（sightseeing），或者可以拉伸放松、进行休息。\n- 对用户的任何提问，你都耐心安抚并一一回答。\n\n# 5. 语言风格\n- 使用 CEFR A1-A2 等级英语，避免复杂句，每句话不超过 10 个词，比如\n \"我要去...\" 可以用句子 I am going to ...，不用 My destination is ...，确保小学2-4年级的孩子能听懂\n- 回答一般不超过两句话\n- 避免重复表达，适当变换措辞\n\n# 6. 开场白\n你由你开始对话，你会说：\"Can I help you?\"\n\n# 7. 回应方式（固定内容）\n- 你只在用户提问时才根据知识库中的信息回答。其他时候，以符合你身份的方式，自然地进行交谈。\n- 不主动提供知识库的信息\n- 不主动提问题", "scene": "你是 Chloe，是 Twilight 的空乘，服务好每一位乘客是你的使命。\n用户之前帮你在另一位乘客面前解了围，你很感谢用户的帮忙，对用户的态度也格外友善热情。\n你发现用完餐的用户正在东张西望，似乎在寻找什么，你确认用户需要帮助，于是上前询问。你发现用户想去健身房消消食，但是不知道方向，于是回答了用户的问题，提供了你的帮助。", "in_progress_goal": "用户成功问出“健身房在哪里”、“可以给我一条毛巾吗”以及“在哪儿我还能做什么”的三个问题。", "final_goal": "Chloe回答了用户关于健身房的问题，提供了耐心友好的帮助。", "reference_dialog": "Chloe: Can I help you?\nUser: Where can I find the gym?\nChloe: Look, it's over there at the end of this walkway.\nUser: Oh, and can I have a towel please? \nChloe: Of course! I'll bring a new one for you soon.\nUser: What else can I do there? \nChloe: Well, you can do some exercise and enjoy sightseeing there. Or you can just relax.", "user_task": "你要向 Chloe 询问健身房的位置，以及讨要毛巾，做好开始运动的准备。", "user_scene": "你是 Chloe，是 Twilight 的空乘，服务好每一位乘客是你的使命。\n用户之前帮你在另一位乘客面前解了围，你很感谢用户的帮忙，对用户的态度也格外友善热情。\n你发现用完餐的用户正在东张西望，似乎在寻找什么，你确认用户需要帮助，于是上前询问。你发现用户想去健身房消消食，但是不知道方向，于是回答了用户的问题，提供了你的帮助。", "user_knowledge": "Where can I find the gym？我在哪里能找到健身房？\nCan I have a towel please?？我能要一条毛巾吗？\nWhat else can I do there? 我在那儿还能做些什么？" } } }
studyInfo

learningPart

{ "opening": { "type": "npc", "npcName": "Chloe", "content": "Can I help you?" }, "wrongReadLeadIn": { "type": "npc", "content": "请根据提词框内的内容大声地朗读这句话", "npcName": "Brainy" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "空乘Chloe问你是否需要帮助，你现在想要找健身房，所以需要向她询问健身房的位置。" }, "optionList": [ { "option": "Where can I find the gym?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你正确地问出了健身房的位置。请大声朗读这句话！" } }, { "option": "Oh, and can I have a towel please?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是用来索要毛巾的，现在你还没问健身房的位置哦，再试一次吧。" } }, { "option": "What else can I do there?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是询问在健身房还能做什么的，不是用来问位置的，再选一次吧。" } } ], "answer": [ 0 ], "read": { "type": "user", "content": "Where can I find the gym?" }, "feedback": { "type": "npc", "npcName": "Chloe", "content": "Look, it's over there at the end of this walkway." } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "Chloe已经告诉你健身房在这条走道的尽头啦，现在你还需要向她要一条毛巾，方便之后运动使用。" }, "optionList": [ { "option": "Where can I find the gym?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "你已经问过健身房的位置啦，现在你需要索要毛巾，再试一次吧。" } }, { "option": "Oh, and can I have a towel please?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太对啦！你正确地向Chloe提出了要毛巾的请求。请大声朗读这句话！" } }, { "option": "What else can I do there?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是询问在健身房还能做什么的，不是用来要毛巾的，再选一次哦。" } } ], "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": "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": "太棒了！你正确地问出了在健身房还能做的事。请大声朗读这句话！" } } ], "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": "你已经问清楚了健身房的位置、要到了毛巾，也知道了在健身房可以做的事，任务圆满完成啦！" } }

{ "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": "Oh, and can I have a towel please?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是用来索要毛巾的，现在你还没问健身房的位置哦，再试一次吧。" } }, { "option": "What else can I do there?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是询问在健身房还能做什么的，不是用来问位置的，再选一次吧。" } } ], "answer": [ 0 ], "read": { "type": "user", "content": "Where can I find the gym?" }, "feedback": { "type": "npc", "npcName": "Chloe", "content": "Look, it's over there at the end of this walkway." } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "Chloe已经告诉你健身房在这条走道的尽头啦，现在你还需要向她要一条毛巾，方便之后运动使用。" }, "optionList": [ { "option": "Where can I find the gym?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "你已经问过健身房的位置啦，现在你需要索要毛巾，再试一次吧。" } }, { "option": "Oh, and can I have a towel please?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太对啦！你正确地向Chloe提出了要毛巾的请求。请大声朗读这句话！" } }, { "option": "What else can I do there?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是询问在健身房还能做什么的，不是用来要毛巾的，再选一次哦。" } } ], "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": "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": "太棒了！你正确地问出了在健身房还能做的事。请大声朗读这句话！" } } ], "answer": [ 2 ], "read": { "type": "user", "content": "What else can I do there?" }, "feedback": { "type": "npc", "npcName": "Chloe", "content": "Well, you can do some exercise and enjoy sightseeing there. Or you can just relax." } } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "你已经问清楚了健身房的位置、要到了毛巾，也知道了在健身房可以做的事，任务圆满完成啦！" } } }
kpInfo JSON

pushType |
cType |
cId |

kpInfo

[ { "kpId": null, "kpType": "sentence", "kpTitle": "Where can I find the gym？我在哪里能找到健身房？", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "Can I have a towel please?？我能要一条毛巾吗？", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "What else can I do there? 我在那儿还能做些什么？", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "core_speaking_inquiry", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "Where can I find the gym？我在哪里能找到健身房？", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "Can I have a towel please?？我能要一条毛巾吗？", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "What else can I do there? 我在那儿还能做些什么？", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
中间结果: 学习流程配置

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

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

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

    # 中间回合3
    Brainy：Chloe同意给你拿一条新毛巾啦，现在你可以问问在健身房里还能做些什么，提前了解一下。
    用户选项:
    （选项A）Where can I find the gym?
      Brainy：你已经知道健身房的位置啦，现在你可以问问健身房的其他相关信息，再试一次吧。
    （选项B）Oh, and can I have a towel please?
      Brainy：你已经要过毛巾啦，Chloe也答应给你拿了，换个问题问问吧。
    （选项C）What else can I do there? [正确]
      Brainy：太棒了！你正确地问出了在健身房还能做的事。请大声朗读这句话！
    Chloe：Well, you can do some exercise and enjoy sightseeing there. Or you can just relax.

    # 结尾回合
    Brainy：你已经问清楚了健身房的位置、要到了毛巾，也知道了在健身房可以做的事，任务圆满完成啦！
    ```

中间结果: promptInfo配置

    ```
    # 1. 角色（你要扮演谁）
    - 你是Chloe，是Twilight的空乘，服务好每一位乘客是你的使命。
    - 你对帮过你的用户格外友善热情，会耐心回答对方的问题。

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

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

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

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

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

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

中间结果: 语音识别热词

    gym,towel,exercise,sightseeing,walkway,relax

22 核心看图说话 cId: 0000800 core_speaking_image
已保存 ▶
taskInfo

cType |
cId |
title |
taskDesc |
sceneDesc |
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? User: Winter. NPC: Is it hot or cold? User: Cold. NPC: What do you see in winter? User: Snow.

{ "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." } ] } }

{ "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老师的所有问题，既掌握了冬天相关的英文表达，也完成了本次的交流任务，接下来就等着享用热腾腾的食物吧！" }

{ "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 |

{ "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 |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "vocab", "kpTitle": "winter 冬天", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "cold 冷的", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "snow 雪", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "core_speaking_image", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "winter 冬天", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "cold 冷的", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "snow 雪", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
中间结果: 学习流程配置

    ```
    # 中间回合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 |
cId |
title |
sceneDesc |
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 }

{ "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": "无" } ]

{ "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 ] } ]

{ "sequence": [ { "audio": [ 0 ] }, { "question": [ 0 ] }, { "audio": [ 1 ] }, { "question": [ 1, 2, 3 ] } ] }
studyInfo

closing | { "type": "npc", "content": "很好！你已经回答完了全部问题，相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!", "npcName": "Brainy" }

learningPart

[ { "leadIn": { "type": "npc", "content": "When you really want sweet food, like biscuits or cake, you can bake at home.", "npcName": "Brainy" }, "content": "刚刚听到的音频中，包含了关键短语 bake at home，意思是在家烘焙。bake 是动词，表示烘焙、烤制食物，at home 是固定短语，意思是在家。", "type": "npc", "npcName": "Brainy", "learning": [ { "answer": [ 1 ], "meaning": "听音选句", "optionList": [ { "feedback": { "type": "npc", "content": "不对哦，这句话里说的是 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." }, { "feedback": { "type": "npc", "content": "太厉害啦！你准确听出了句子里的重点短语 bake at home！", "npcName": "Brainy" }, "option": "When you really want sweet food, like biscuits or cake, you can bake at home." } ], "question": { "type": "npc", "content": "仔细听音频，选出你听到的那句话哦。", "npcName": "Brainy" } }, { "answer": [ 0 ], "meaning": "听音选意", "optionList": [ { "feedback": { "type": "npc", "content": "完全正确！你已经掌握了 bake at home 这个短语的意思，太棒啦！", "npcName": "Brainy" }, "option": "当你很想吃甜食，比如饼干或者蛋糕时，你可以在家烘焙。" }, { "feedback": { "type": "npc", "content": "这句话说的是去外面的餐厅吃，和句子里的 bake at home 意思不一样哦，再想想看吧！", "npcName": "Brainy" }, "option": "当你很想吃甜食，比如饼干或者蛋糕时，你可以去外面的餐厅吃。" } ], "question": { "type": "npc", "content": "那这句话的意思是什么呢？来选选看吧！", "npcName": "Brainy" } } ] } ]

{ "closing": { "type": "npc", "content": "很好！你已经回答完了全部问题，相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!", "npcName": "Brainy" }, "learningPart": [ { "leadIn": { "type": "npc", "content": "When you really want sweet food, like biscuits or cake, you can bake at home.", "npcName": "Brainy" }, "content": "刚刚听到的音频中，包含了关键短语 bake at home，意思是在家烘焙。bake 是动词，表示烘焙、烤制食物，at home 是固定短语，意思是在家。", "type": "npc", "npcName": "Brainy", "learning": [ { "answer": [ 1 ], "meaning": "听音选句", "optionList": [ { "feedback": { "type": "npc", "content": "不对哦，这句话里说的是 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." }, { "feedback": { "type": "npc", "content": "太厉害啦！你准确听出了句子里的重点短语 bake at home！", "npcName": "Brainy" }, "option": "When you really want sweet food, like biscuits or cake, you can bake at home." } ], "question": { "type": "npc", "content": "仔细听音频，选出你听到的那句话哦。", "npcName": "Brainy" } }, { "answer": [ 0 ], "meaning": "听音选意", "optionList": [ { "feedback": { "type": "npc", "content": "完全正确！你已经掌握了 bake at home 这个短语的意思，太棒啦！", "npcName": "Brainy" }, "option": "当你很想吃甜食，比如饼干或者蛋糕时，你可以在家烘焙。" }, { "feedback": { "type": "npc", "content": "这句话说的是去外面的餐厅吃，和句子里的 bake at home 意思不一样哦，再想想看吧！", "npcName": "Brainy" }, "option": "当你很想吃甜食，比如饼干或者蛋糕时，你可以去外面的餐厅吃。" } ], "question": { "type": "npc", "content": "那这句话的意思是什么呢？来选选看吧！", "npcName": "Brainy" } } ] } ] }
kpInfo JSON

pushType |
cType |
cId |

kpInfo

[ { "kpId": null, "kpType": "vocab", "kpTitle": "bake v. 烘焙；烤制", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "healthy adj. 健康的", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "money n. 钱", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "cake n. 蛋糕", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "alcohol n. 含酒精饮料", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "core_listening_order", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "bake v. 烘焙；烤制", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "healthy adj. 健康的", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "money n. 钱", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "cake n. 蛋糕", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "alcohol n. 含酒精饮料", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
中间结果: 学习过程配置

    ```
    # 重点句子 1
    音频文本：When you really want sweet food, like biscuits or cake, you can bake at home.
    讲解文本：刚刚听到的音频中，包含了关键短语 bake at home，意思是在家烘焙。bake 是动词，表示烘焙、烤制食物，at home 是固定短语，意思是在家。
    1. 听音选句
    Brainy：仔细听音频，选出你听到的那句话哦。
    - When you really want sweet food, like biscuits or cake, you can buy at the shop.
      - Brainy：不对哦，这句话里说的是 buy at the 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：这句话说的是去外面的餐厅吃，和句子里的 bake at home 意思不一样哦，再想想看吧！
    ---
    # 完成反馈
    Brainy：很好！你已经回答完了全部问题，相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!
    ```

中间结果: 互动描述

    You listened to the audio about how to live a healthy life, learning you should sleep and get up on time, avoid smoking and alcohol, and good habits matter more than money for health.（你听了关于如何健康生活的音频，了解到应该按时作息，远离烟酒，对于健康来说好习惯比金钱更重要。）

24 听力拖拽 cId: 0000800 ? 失败 ▶
错误: LLM返回内容不是合法JSON: Expecting value: line 1 column 1 (char 0) 内容: 无
原始组件配置

    【任务标题】
    指挥大家赶鸭子
    【任务背景】
    鸭子大乱斗！手忙脚乱没有用，你现在得和伙伴们一起协作，把到处跑的鸭子赶进水里。快说说你的计划吧！
    【通关知识】
    between prep. 在……中间
    next to prep.        紧邻
    duck n. 鸭子
    【开场语】
    无
    【听力文本】
    # 文本 1
    Matt: Where should I go?
    User: Go between the red duck and the blue duck.
    User: Don't let them fight.
    # 文本 2
    Ben: What about me?
    User: You are next to the blue duck.
    # 文本 3
    Amber: And me? Where should I be?
    User: You are next to the red duck.
    User: Get it into the water!
    【题目信息】
    #单空选择
    选项图片编号：00, 01,02
    答案图片编号：00, 01,02

    【学习过程】
    句子 1
    Go between the red duck and the blue duck.【between】
    句子 2
    You are next to the blue duck.【next to】
    句子 3
    You are next to the red duck.【next to】

25 核心听力选择 cId: 0000800 core_listening_choose
已保存 ▶
taskInfo

cType |
cId |
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 |

{ "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，意思是夏天，正确的发音是/ˈsʌmə(r)/。", "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": "再想想哦，这句话里的核心单词和季节有关，再试着判断一下吧~", "npcName": "Brainy" } } ], "answer": [ 0 ] } ] } ]

closing | { "type": "npc", "content": "很好！你已经回答完了全部问题，相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!", "npcName": "Brainy" }

{ "learningPart": [ { "type": "npc", "npcName": "Brainy", "content": "This summer!", "learning": [ { "question": { "content": "刚刚听到的音频中，包含了关键短语 summer，意思是夏天，正确的发音是/ˈsʌmə(r)/。", "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": "再想想哦，这句话里的核心单词和季节有关，再试着判断一下吧~", "npcName": "Brainy" } } ], "answer": [ 0 ] } ] } ], "closing": { "type": "npc", "content": "很好！你已经回答完了全部问题，相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!", "npcName": "Brainy" } }
kpInfo JSON

pushType |
cType |
cId |

kpInfo

[ { "kpId": null, "kpType": "vocab", "kpTitle": "summer n. 夏天", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "hot adj. 热的", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "trousers n. 长裤", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "shorts n. 短裤", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "It feels... 感觉......", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "Could you... 可以请你......吗？", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "core_listening_choose", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "summer n. 夏天", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "hot adj. 热的", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "trousers n. 长裤", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "shorts n. 短裤", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "It feels... 感觉......", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "Could you... 可以请你......吗？", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
中间结果: 学习过程配置

    ```
    # 重点句子 1
    音频文本：This summer!
    讲解文本：刚刚听到的音频中，包含了关键短语 summer，意思是夏天，正确的发音是/ˈsʌmə(r)/。
    1. 听音选句
    Brainy：仔细听音频，选出你听到的句子哦。
    - This summer! [正确]
      - Brainy：太厉害啦！你准确听出了短语summer，很棒哦！
    - This winter!
      - Brainy：哎呀，这句话里的是winter（冬天），不是我们听到的summer哦，再仔细听一遍试试吧~

    2. 听音选意
    Brainy：这句话的中文意思是“这个夏天！”，对不对呀？
    - 对 / Yes [正确]
      - Brainy：完全正确！你已经掌握了summer这个单词的意思啦，真优秀！
    - 错 / No
      - Brainy：再想想哦，这句话里的核心单词和季节有关，再试着判断一下吧~
    ---
    # 完成反馈
    Brainy：很好！你已经回答完了全部问题，相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!
    ```

中间结果: 互动描述

    请提供完整的任务名称、具体题目材料以及对应正确答案内容，我会按照要求为你生成符合规范的叙事化描述。

26 看图组句 cId: 0000800 ? 失败 ▶
错误: LLM返回内容不是合法JSON: Expecting value: line 1 column 1 (char 0) 内容: 无
原始组件配置

    【任务名称】
    报告飞船坠毁事件
    【任务背景】
    在森林中，Otis、Skylar 和你通过小熊猫 Bam 和无人机照片搜集到了关于飞船坠落的重要线索。你们需要将这些信息整理并汇报给 Luisa 教授，以便确定飞船的具体坠落位置。
    【任务描述】
    请根据图片内容，用英文写一段求救报告，说明你们现在的处境、遇到的困难和需要的帮助。
    【剧情提要】
    *可选配置* I saw a very cute kitten in the pet shop yesterday. The pattern on his body is black and white, like a cow. It's a month old and perfect for breeding.
    【题干类型】
    图片
    【题干描述】
    3
    【知识】
    - 地点描述
    I think the spaceship fell...  我认为飞船坠落在……
    I saw trees with...  我看到有…… 的树。
    I heard a loud noise in...  我听到…… 方向有巨大的声音。

    【写作类型】
    组句
    【写作材料】
    # 句子 1
    ## 句子类型
    全句预置
    ## 句子内容
    1. 句子主干
    Dear Alex,
    2. 选项
    /
    3. 答案
    /
    # 句子 2
    ## 句子类型
    全句录入
    ## 句子内容
    1. 句子主干
    /
    2. 选项
    - well
    - this email
    - you
    - finds
    - I hope
    - [干扰]：fine
    3. 答案
    I hope this email finds you well.
    ## 图片编号
    01
    # 句子 3
    ## 句子类型
    挖空录入
    ## 句子内容
    ```
    1. 句子主干
    We can ___ each other.
    2. 选项
    - of
    - take
    - care
    - [干扰]：look
    - [干扰]：for
    3. 答案
    take care of
    ```
    ## 图片编号
    00
    【通过规则】
    用户写出：
    1. 坠机在一个湖附近
    2. 湖周边树木有红黄色的叶子
    3. Bam 听到东北方向的噪音

27 核心看图撰写 cId: 0000800 core_writing_imgWrite
已保存 ▶
taskInfo

cId |
cType |
title |
taskDesc |
sceneDesc |
img |
plotSummary |
stemDesc | [ "0000800-00.png", "0000800-01.png", "0000800-02.png" ]
key | [ { "keyList": [ { "type": "default", "content": "elephant", "desc": "n. 大象" }, { "type": "default", "content": "banana", "desc": "n. 香蕉" }, { "type": "default", "content": "shower", "desc": "n. 淋浴、洗澡" }, { "type": "default", "content": "... love(s) to...", "desc": "……喜爱……" } ] } ]
cDesc | Animal Keeper's Record Animal type: Elephant Food: She ate bananas. Cleaning: She had a shower today. What does she love? The elephant loves showers and bananas!（动物饲养员记录 动物种类：大象 食物：她吃了香蕉。 清洁：她今天洗了澡。 她喜欢什么呢？ 这头大象喜欢洗澡和香蕉！）

{ "cId": "0000800", "cType": "core_writing_imgWrite", "title": "填写大象护理记录", "taskDesc": "根据图片内容，填写大象护理报告。", "sceneDesc": "粗心的大象饲养员忘记给大象洗澡了！真是照顾不周。你们给大象洗了澡，还喂了香蕉，现在把这些都记在护理记录上吧！", "img": "", "plotSummary": "", "stemDesc": [ "0000800-00.png", "0000800-01.png", "0000800-02.png" ], "key": [ { "keyList": [ { "type": "default", "content": "elephant", "desc": "n. 大象" }, { "type": "default", "content": "banana", "desc": "n. 香蕉" }, { "type": "default", "content": "shower", "desc": "n. 淋浴、洗澡" }, { "type": "default", "content": "... love(s) to...", "desc": "……喜爱……" } ] } ], "cDesc": "Animal Keeper's Record Animal type: Elephant Food: She ate bananas. Cleaning: She had a shower today. What does she love? The elephant loves showers and bananas!（动物饲养员记录\n动物种类：大象\n食物：她吃了香蕉。\n清洁：她今天洗了澡。\n她喜欢什么呢？\n这头大象喜欢洗澡和香蕉！）" }
textInfo

inputType |
passCondition |

textList

[ { "mode": "preset", "desc": "Animal Keeper's Record", "answerText": "" }, { "mode": "fillingInput", "desc": "Animal type: ___ ", "answerText": "Elephant", "hint": "动物种类：大象（Elephant）" }, { "mode": "fillingInput", "desc": "Food: She ate ___ .", "answerText": "bananas", "hint": "食物：她吃了香蕉（bananas）。" }, { "mode": "fillingInput", "desc": "Cleaning: She had ___ today. ", "answerText": "a shower", "hint": "清洁：她今天洗了澡（a shower）。" }, { "mode": "preset", "desc": "What does she love?", "answerText": "" }, { "mode": "universalInput", "answerText": "The elephant loves showers and bananas!", "hint": "这头大象喜欢洗澡和香蕉！（The elephant loves showers and bananas!）" } ]

{ "inputType": "write", "passCondition": "说明动物类型是大象。说明大象吃了香蕉。说明大象洗了澡。表达大象喜欢香蕉和洗澡。", "textList": [ { "mode": "preset", "desc": "Animal Keeper's Record", "answerText": "" }, { "mode": "fillingInput", "desc": "Animal type: ___ ", "answerText": "Elephant", "hint": "动物种类：大象（Elephant）" }, { "mode": "fillingInput", "desc": "Food: She ate ___ .", "answerText": "bananas", "hint": "食物：她吃了香蕉（bananas）。" }, { "mode": "fillingInput", "desc": "Cleaning: She had ___ today. ", "answerText": "a shower", "hint": "清洁：她今天洗了澡（a shower）。" }, { "mode": "preset", "desc": "What does she love?", "answerText": "" }, { "mode": "universalInput", "answerText": "The elephant loves showers and bananas!", "hint": "这头大象喜欢洗澡和香蕉！（The elephant loves showers and bananas!）" } ] }
studyInfo

learningPart

[ { "leadIn": { "image": "0000800-00.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你要开始填写大象护理记录了，首先需要在最上方写上这份记录的标题，应该选择哪一项呢？" }, "optionList": [ { "option": "Animal Keeper's Record", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！这就是护理记录的标准标题，写在最顶部非常合适~" } }, { "option": "Elephant Health Report", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个是“大象健康报告”的意思，我们要写的是饲养员护理记录，不是健康报告哦，再试试吧。" } }, { "option": "Daily Food Note", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个是“日常食物记录”的意思，我们的记录不仅包含食物，还有清洁等内容，不符合标题要求，再想想看。" } } ], "answer": [ 0 ], "write": { "desc": "Animal Keeper's Record", "trans": "动物饲养员记录" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "image": "0000800-00.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "现在要填写动物类型这一栏，你需要填上对应的动物名称，应该选哪个呢？" }, "optionList": [ { "option": "Tiger", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，我们今天护理的是大象，不是老虎，再选选看吧。" } }, { "option": "Elephant", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！我们今天照顾的动物就是大象，这一栏填写完全正确~" } }, { "option": "Panda", "feedback": { "type": "npc", "npcName": "Brainy", "content": "熊猫不是我们今天的护理对象哦，这一栏需要填大象对应的英文单词，再试一次吧。" } } ], "answer": [ 1 ], "write": { "desc": "Elephant", "trans": "大象" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "image": "0000800-01.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "接下来要填写食物部分，记录里写了“She ate ___”，你要填上今天大象吃的食物，应该选哪个？" }, "optionList": [ { "option": "apples", "feedback": { "type": "npc", "npcName": "Brainy", "content": "我们今天喂给大象的是香蕉，不是苹果哦，回忆一下刚才的护理过程再选吧。" } }, { "option": "carrots", "feedback": { "type": "npc", "npcName": "Brainy", "content": "胡萝卜不是这次大象吃的食物呀，再想想我们喂了它什么~" } }, { "option": "bananas", "feedback": { "type": "npc", "npcName": "Brainy", "content": "完全正确！我们今天喂大象吃了香蕉，填在这里刚刚好。" } } ], "answer": [ 2 ], "write": { "desc": "She ate bananas.", "trans": "她吃了香蕉。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "image": "0000800-01.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "现在到了清洁情况的填写栏，句子是“She had ___ today”，要填上今天给大象做的清洁项目，选哪个合适呢？" }, "optionList": [ { "option": "a shower", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太对啦！我们今天给大象洗了澡，也就是它今天冲了淋浴，填写正确~" } }, { "option": "a haircut", "feedback": { "type": "npc", "npcName": "Brainy", "content": "我们没有给大象剪头发哦，这个选项不符合今天的清洁内容，再试试吧。" } }, { "option": "a nail trim", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这次护理没有给大象剪指甲哦，回忆一下我们做的清洁工作是什么，再选选看。" } } ], "answer": [ 0 ], "write": { "desc": "She had a shower today.", "trans": "她今天洗了澡。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "image": "0000800-02.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "记录里接下来有一个问题需要你确认，问问大家这头大象喜爱的东西是什么，应该怎么提问呢？" }, "optionList": [ { "option": "What does she love?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "没错！这句话正好可以用来询问大象喜爱的事物，符合记录里的提问要求~" } }, { "option": "What does she eat?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是问“她吃什么”，不是问她喜爱什么，不符合提问需求哦，再想想。" } }, { "option": "How is she today?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是问“她今天怎么样”，我们需要的是询问她喜爱的事物的问句，再试一次吧。" } } ], "answer": [ 0 ], "write": { "desc": "What does she love?", "trans": "她喜欢什么呢？" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "image": "0000800-02.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "最后要回答上面的问题，把大象喜爱的东西写在记录里，应该选哪个句子呢？" }, "optionList": [ { "option": "The elephant loves showers and bananas!", "feedback": { "type": "npc", "npcName": "Brainy", "content": "完美！我们今天给大象洗了澡、喂了香蕉，它正好喜爱这两样，这句话写得非常准确~" } }, { "option": "The elephant loves apples and running!", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，大象喜爱的是淋浴和香蕉，不是苹果和跑步，结合今天的护理内容再想想吧。" } }, { "option": "The elephant loves eating and sleeping.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个回答没有结合我们今天的护理内容哦，我们已经知道它喜欢洗澡和吃香蕉啦，选更符合的选项吧。" } } ], "answer": [ 0 ], "write": { "desc": "The elephant loves showers and bananas!", "trans": "这头大象喜欢洗澡和香蕉！" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] } ]

closing | { "type": "npc", "npcName": "Brainy", "content": "恭喜你，可以使用准确的单词 elephant、banana、shower，句型 ... love(s) to...，以及相关表达 Animal Keeper's Record、She ate bananas.、She had a shower today.、What does she love?、The elephant loves showers and bananas!，完成了大象护理记录的填写！" }

{ "learningPart": [ { "leadIn": { "image": "0000800-00.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你要开始填写大象护理记录了，首先需要在最上方写上这份记录的标题，应该选择哪一项呢？" }, "optionList": [ { "option": "Animal Keeper's Record", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！这就是护理记录的标准标题，写在最顶部非常合适~" } }, { "option": "Elephant Health Report", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个是“大象健康报告”的意思，我们要写的是饲养员护理记录，不是健康报告哦，再试试吧。" } }, { "option": "Daily Food Note", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个是“日常食物记录”的意思，我们的记录不仅包含食物，还有清洁等内容，不符合标题要求，再想想看。" } } ], "answer": [ 0 ], "write": { "desc": "Animal Keeper's Record", "trans": "动物饲养员记录" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "image": "0000800-00.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "现在要填写动物类型这一栏，你需要填上对应的动物名称，应该选哪个呢？" }, "optionList": [ { "option": "Tiger", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，我们今天护理的是大象，不是老虎，再选选看吧。" } }, { "option": "Elephant", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！我们今天照顾的动物就是大象，这一栏填写完全正确~" } }, { "option": "Panda", "feedback": { "type": "npc", "npcName": "Brainy", "content": "熊猫不是我们今天的护理对象哦，这一栏需要填大象对应的英文单词，再试一次吧。" } } ], "answer": [ 1 ], "write": { "desc": "Elephant", "trans": "大象" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "image": "0000800-01.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "接下来要填写食物部分，记录里写了“She ate ___”，你要填上今天大象吃的食物，应该选哪个？" }, "optionList": [ { "option": "apples", "feedback": { "type": "npc", "npcName": "Brainy", "content": "我们今天喂给大象的是香蕉，不是苹果哦，回忆一下刚才的护理过程再选吧。" } }, { "option": "carrots", "feedback": { "type": "npc", "npcName": "Brainy", "content": "胡萝卜不是这次大象吃的食物呀，再想想我们喂了它什么~" } }, { "option": "bananas", "feedback": { "type": "npc", "npcName": "Brainy", "content": "完全正确！我们今天喂大象吃了香蕉，填在这里刚刚好。" } } ], "answer": [ 2 ], "write": { "desc": "She ate bananas.", "trans": "她吃了香蕉。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "image": "0000800-01.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "现在到了清洁情况的填写栏，句子是“She had ___ today”，要填上今天给大象做的清洁项目，选哪个合适呢？" }, "optionList": [ { "option": "a shower", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太对啦！我们今天给大象洗了澡，也就是它今天冲了淋浴，填写正确~" } }, { "option": "a haircut", "feedback": { "type": "npc", "npcName": "Brainy", "content": "我们没有给大象剪头发哦，这个选项不符合今天的清洁内容，再试试吧。" } }, { "option": "a nail trim", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这次护理没有给大象剪指甲哦，回忆一下我们做的清洁工作是什么，再选选看。" } } ], "answer": [ 0 ], "write": { "desc": "She had a shower today.", "trans": "她今天洗了澡。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "image": "0000800-02.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "记录里接下来有一个问题需要你确认，问问大家这头大象喜爱的东西是什么，应该怎么提问呢？" }, "optionList": [ { "option": "What does she love?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "没错！这句话正好可以用来询问大象喜爱的事物，符合记录里的提问要求~" } }, { "option": "What does she eat?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是问“她吃什么”，不是问她喜爱什么，不符合提问需求哦，再想想。" } }, { "option": "How is she today?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是问“她今天怎么样”，我们需要的是询问她喜爱的事物的问句，再试一次吧。" } } ], "answer": [ 0 ], "write": { "desc": "What does she love?", "trans": "她喜欢什么呢？" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "image": "0000800-02.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "最后要回答上面的问题，把大象喜爱的东西写在记录里，应该选哪个句子呢？" }, "optionList": [ { "option": "The elephant loves showers and bananas!", "feedback": { "type": "npc", "npcName": "Brainy", "content": "完美！我们今天给大象洗了澡、喂了香蕉，它正好喜爱这两样，这句话写得非常准确~" } }, { "option": "The elephant loves apples and running!", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，大象喜爱的是淋浴和香蕉，不是苹果和跑步，结合今天的护理内容再想想吧。" } }, { "option": "The elephant loves eating and sleeping.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个回答没有结合我们今天的护理内容哦，我们已经知道它喜欢洗澡和吃香蕉啦，选更符合的选项吧。" } } ], "answer": [ 0 ], "write": { "desc": "The elephant loves showers and bananas!", "trans": "这头大象喜欢洗澡和香蕉！" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "恭喜你，可以使用准确的单词 elephant、banana、shower，句型 ... love(s) to...，以及相关表达 Animal Keeper's Record、She ate bananas.、She had a shower today.、What does she love?、The elephant loves showers and bananas!，完成了大象护理记录的填写！" } }
evalInfo

title |
taskDesc |
sceneDesc |
knowledge | elephant n. 大象 banana n. 香蕉 shower n. 淋浴、洗澡 ... love(s) to... ……喜爱……
passCondition |

textList

[ { "mode": "preset", "desc": "Animal Keeper's Record", "answerText": "" }, { "mode": "fillingInput", "desc": "Animal type: ___ ", "answerText": "Elephant", "hint": "动物种类：大象（Elephant）" }, { "mode": "fillingInput", "desc": "Food: She ate ___ .", "answerText": "bananas", "hint": "食物：她吃了香蕉（bananas）。" }, { "mode": "fillingInput", "desc": "Cleaning: She had ___ today. ", "answerText": "a shower", "hint": "清洁：她今天洗了澡（a shower）。" }, { "mode": "preset", "desc": "What does she love?", "answerText": "" }, { "mode": "universalInput", "answerText": "The elephant loves showers and bananas!", "hint": "这头大象喜欢洗澡和香蕉！（The elephant loves showers and bananas!）" } ]

{ "title": "填写大象护理记录", "taskDesc": "根据图片内容，填写大象护理报告。", "sceneDesc": "粗心的大象饲养员忘记给大象洗澡了！真是照顾不周。你们给大象洗了澡，还喂了香蕉，现在把这些都记在护理记录上吧！", "knowledge": "elephant n. 大象\nbanana n. 香蕉\nshower n. 淋浴、洗澡\n... love(s) to... ……喜爱……", "passCondition": "说明动物类型是大象。说明大象吃了香蕉。说明大象洗了澡。表达大象喜欢香蕉和洗澡。", "textList": [ { "mode": "preset", "desc": "Animal Keeper's Record", "answerText": "" }, { "mode": "fillingInput", "desc": "Animal type: ___ ", "answerText": "Elephant", "hint": "动物种类：大象（Elephant）" }, { "mode": "fillingInput", "desc": "Food: She ate ___ .", "answerText": "bananas", "hint": "食物：她吃了香蕉（bananas）。" }, { "mode": "fillingInput", "desc": "Cleaning: She had ___ today. ", "answerText": "a shower", "hint": "清洁：她今天洗了澡（a shower）。" }, { "mode": "preset", "desc": "What does she love?", "answerText": "" }, { "mode": "universalInput", "answerText": "The elephant loves showers and bananas!", "hint": "这头大象喜欢洗澡和香蕉！（The elephant loves showers and bananas!）" } ] }
kpInfo JSON

pushType |
cType |
cId |

kpInfo

[ { "kpId": null, "kpType": "vocab", "kpTitle": "elephant n. 大象", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "banana n. 香蕉", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "shower n. 淋浴、洗澡", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "... love(s) to... ……喜爱……", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "core_writing_imgWrite", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "elephant n. 大象", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "banana n. 香蕉", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "shower n. 淋浴、洗澡", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "... love(s) to... ……喜爱……", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
中间结果: 学习流程配置

    ```
    # 问题1：
    Brainy: 你要开始填写大象护理记录了，首先需要在最上方写上这份记录的标题，应该选择哪一项呢？
    用户选项:
    （选项 A）Animal Keeper's Record [正确]
      Brainy: 答对啦！这就是护理记录的标准标题，写在最顶部非常合适~
    （选项 B）Elephant Health Report
      Brainy: 这个是“大象健康报告”的意思，我们要写的是饲养员护理记录，不是健康报告哦，再试试吧。
    （选项 C）Daily Food Note
      Brainy: 这个是“日常食物记录”的意思，我们的记录不仅包含食物，还有清洁等内容，不符合标题要求，再想想看。

    # 问题2：
    Brainy: 现在要填写动物类型这一栏，你需要填上对应的动物名称，应该选哪个呢？
    用户选项:
    （选项 A）Tiger
      Brainy: 不对哦，我们今天护理的是大象，不是老虎，再选选看吧。
    （选项 B）Elephant [正确]
      Brainy: 太棒了！我们今天照顾的动物就是大象，这一栏填写完全正确~
    （选项 C）Panda
      Brainy: 熊猫不是我们今天的护理对象哦，这一栏需要填大象对应的英文单词，再试一次吧。

    # 问题3：
    Brainy: 接下来要填写食物部分，记录里写了“She ate ___”，你要填上今天大象吃的食物，应该选哪个？
    用户选项:
    （选项 A）apples
      Brainy: 我们今天喂给大象的是香蕉，不是苹果哦，回忆一下刚才的护理过程再选吧。
    （选项 B）carrots
      Brainy: 胡萝卜不是这次大象吃的食物呀，再想想我们喂了它什么~
    （选项 C）bananas [正确]
      Brainy: 完全正确！我们今天喂大象吃了香蕉，填在这里刚刚好。

    # 问题4：
    Brainy: 现在到了清洁情况的填写栏，句子是“She had ___ today”，要填上今天给大象做的清洁项目，选哪个合适呢？
    用户选项:
    （选项 A）a shower [正确]
      Brainy: 太对啦！我们今天给大象洗了澡，也就是它今天冲了淋浴，填写正确~
    （选项 B）a haircut
      Brainy: 我们没有给大象剪头发哦，这个选项不符合今天的清洁内容，再试试吧。
    （选项 C）a nail trim
      Brainy: 这次护理没有给大象剪指甲哦，回忆一下我们做的清洁工作是什么，再选选看。

    # 问题5：
    Brainy: 记录里接下来有一个问题需要你确认，问问大家这头大象喜爱的东西是什么，应该怎么提问呢？
    用户选项:
    （选项 A）What does she love? [正确]
      Brainy: 没错！这句话正好可以用来询问大象喜爱的事物，符合记录里的提问要求~
    （选项 B）What does she eat?
      Brainy: 这句话是问“她吃什么”，不是问她喜爱什么，不符合提问需求哦，再想想。
    （选项 C）How is she today?
      Brainy: 这句话是问“她今天怎么样”，我们需要的是询问她喜爱的事物的问句，再试一次吧。

    # 问题6：
    Brainy: 最后要回答上面的问题，把大象喜爱的东西写在记录里，应该选哪个句子呢？
    用户选项:
    （选项 A）The elephant loves showers and bananas! [正确]
      Brainy: 完美！我们今天给大象洗了澡、喂了香蕉，它正好喜爱这两样，这句话写得非常准确~
    （选项 B）The elephant loves apples and running!
      Brainy: 不对哦，大象喜爱的是淋浴和香蕉，不是苹果和跑步，结合今天的护理内容再想想吧。
    （选项 C）The elephant loves eating and sleeping.
      Brainy: 这个回答没有结合我们今天的护理内容哦，我们已经知道它喜欢洗澡和吃香蕉啦，选更符合的选项吧。
    ```

中间结果: 互动描述

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

28 核心邮件组句 cId: 0000800 core_writing_questionMakeSentence
已保存 ▶
taskInfo

cId |
cType |
title |
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?（亲爱的丽贝卡：我知道你很担心。但这是我们探索漫游港的最佳机会。这项工作对我们来说很重要。这就是我们必须留下来的原因。你将来会来漫游港吗？你什么时候会到？）

{ "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 |
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 ] } ]

{ "inputType": "sentence", "passCondition": "用户写出：这份工作很重要。这就是我们为什么要留下。你什么时候将会到达？", "textList": [ { "mode": "preset", "desc": "Dear Rebecca," }, { "mode": "preset", "desc": "I know you are worried. But this is our best chance to explore Wander Port. " }, { "mode": "fillingInput", "desc": "The ___ is important for us.", "optionList": [ { "option": "job" }, { "option": "jobs" }, { "option": "projects" } ], "answer": [ 0 ] }, { "mode": "fillingInput", "desc": "That's ___ we have to stay.", "optionList": [ { "option": "why" }, { "option": "how" }, { "option": "which" } ], "answer": [ 0 ] }, { "mode": "preset", "desc": "Will you come to Wander Port some day? " }, { "mode": "fillingInput", "desc": " ___ you arrive?", "optionList": [ { "option": "When will" }, { "option": "When is" }, { "option": "How is" } ], "answer": [ 0 ] } ] }
studyInfo

learningPart

[ { "leadIn": { "desc": "What is your opinion on the job?" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你正在写邮件的正文部分，想要表达这项工作对你们很重要，现在需要补全句子\"The ___ is important for us.\"的空缺处。" }, "optionList": [ { "option": "job", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒啦！你选对了！句子中be动词是is，说明主语是单数，\"job\"作为单数名词符合语法要求，准确表达了“这项工作对我们很重要”的含义。" } }, { "option": "jobs", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦~你看句子里的be动词是\"is\"，要搭配单数主语，\"jobs\"是复数形式，不符合这里的语法规则，再试试吧。" } }, { "option": "projects", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦~首先\"projects\"是复数形式，和句子里的单数be动词\"is\"不匹配，而且\"project\"的意思是“项目”，这里要表达的是“工作”的含义，不符合语境，再想想呀。" } } ], "answer": [ 0 ], "write": { "desc": "The job is important for us.", "trans": "这项工作对我们来说很重要。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "desc": "Why do you want to stay?" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你说完工作的重要性后，想要说明这就是你们必须留下来的原因，现在要补全句子\"That's ___ we have to stay.\"的空缺处。" }, "optionList": [ { "option": "why", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太厉害了！你选对了！\"That's why...\"是固定句式，用来引出原因，正好对应前面说的工作重要性，表达“这就是我们必须留下来的原因”，完全符合语境。" } }, { "option": "how", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦~\"how\"是用来询问方式的，这里前面说的是留下来的原因，不是留下来的方式，语义不匹配，再试一次呀。" } }, { "option": "which", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦~\"which\"的意思是“哪一个”，放在这个句子里语义不通顺，这里需要引出原因，所以不合适，再想想吧。" } } ], "answer": [ 0 ], "write": { "desc": "That's why we have to stay.", "trans": "这就是为什么我们必须留下来。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "desc": "Ask her when to come." }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你在邮件末尾询问Rebecca的行程，想要知道她什么时候会到，现在需要补全句子\"___ you arrive?\"的空缺处。" }, "optionList": [ { "option": "When will", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒啦！你选对了！询问将来的时间要用一般将来时，\"When will you arrive?\"是正确的表达，意思是“你什么时候会到？”，正好符合你想询问她到达时间的需求。" } }, { "option": "When is", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦~句子里的动词\"arrive\"是实义动词原形，不能和be动词\"is\"搭配使用，语法是错误的，再试试吧。" } }, { "option": "How is", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦~首先\"how\"是询问方式的，你这里想要问的是到达的时间，语义不符；而且be动词\"is\"也不能和实义动词原形\"arrive\"搭配，语法也不对，再想想呀。" } } ], "answer": [ 0 ], "write": { "desc": "When will you arrive?", "trans": "你什么时候会到？" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] } ]

closing | { "type": "npc", "npcName": "Brainy", "content": "恭喜你，你已经掌握了单词job，固定句式That's why...，以及询问时间的将来时句型When will you arrive?，顺利完成了给Rebecca的邮件编写！" }

{ "learningPart": [ { "leadIn": { "desc": "What is your opinion on the job?" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你正在写邮件的正文部分，想要表达这项工作对你们很重要，现在需要补全句子\"The ___ is important for us.\"的空缺处。" }, "optionList": [ { "option": "job", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒啦！你选对了！句子中be动词是is，说明主语是单数，\"job\"作为单数名词符合语法要求，准确表达了“这项工作对我们很重要”的含义。" } }, { "option": "jobs", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦~你看句子里的be动词是\"is\"，要搭配单数主语，\"jobs\"是复数形式，不符合这里的语法规则，再试试吧。" } }, { "option": "projects", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦~首先\"projects\"是复数形式，和句子里的单数be动词\"is\"不匹配，而且\"project\"的意思是“项目”，这里要表达的是“工作”的含义，不符合语境，再想想呀。" } } ], "answer": [ 0 ], "write": { "desc": "The job is important for us.", "trans": "这项工作对我们来说很重要。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "desc": "Why do you want to stay?" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你说完工作的重要性后，想要说明这就是你们必须留下来的原因，现在要补全句子\"That's ___ we have to stay.\"的空缺处。" }, "optionList": [ { "option": "why", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太厉害了！你选对了！\"That's why...\"是固定句式，用来引出原因，正好对应前面说的工作重要性，表达“这就是我们必须留下来的原因”，完全符合语境。" } }, { "option": "how", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦~\"how\"是用来询问方式的，这里前面说的是留下来的原因，不是留下来的方式，语义不匹配，再试一次呀。" } }, { "option": "which", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦~\"which\"的意思是“哪一个”，放在这个句子里语义不通顺，这里需要引出原因，所以不合适，再想想吧。" } } ], "answer": [ 0 ], "write": { "desc": "That's why we have to stay.", "trans": "这就是为什么我们必须留下来。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "desc": "Ask her when to come." }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你在邮件末尾询问Rebecca的行程，想要知道她什么时候会到，现在需要补全句子\"___ you arrive?\"的空缺处。" }, "optionList": [ { "option": "When will", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒啦！你选对了！询问将来的时间要用一般将来时，\"When will you arrive?\"是正确的表达，意思是“你什么时候会到？”，正好符合你想询问她到达时间的需求。" } }, { "option": "When is", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦~句子里的动词\"arrive\"是实义动词原形，不能和be动词\"is\"搭配使用，语法是错误的，再试试吧。" } }, { "option": "How is", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦~首先\"how\"是询问方式的，你这里想要问的是到达的时间，语义不符；而且be动词\"is\"也不能和实义动词原形\"arrive\"搭配，语法也不对，再想想呀。" } } ], "answer": [ 0 ], "write": { "desc": "When will you arrive?", "trans": "你什么时候会到？" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "恭喜你，你已经掌握了单词job，固定句式That's why...，以及询问时间的将来时句型When will you arrive?，顺利完成了给Rebecca的邮件编写！" } }
evalInfo

title |
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 ] } ]

{ "title": "编写给 Rebecca 的邮件", "taskDesc": "请根据提示问题，用英文组句完成这封邮件。", "sceneDesc": "Rebecca听上去十分担心你们的安全，你们刚刚做出了决定，要继续留在 Wander Port 进行学院的探索任务，你需要回一封邮件给她，告诉她你们的决定以及原因，顺便询问她何时会来。", "knowledge": "The job is... \n这份工作......\nThat's why we have to... \n这就是为什么我们必须……\nWhen will you arrive? \n你什么时候会到？", "passCondition": "用户写出：这份工作很重要。这就是我们为什么要留下。你什么时候将会到达？", "textList": [ { "mode": "preset", "desc": "Dear Rebecca," }, { "mode": "preset", "desc": "I know you are worried. But this is our best chance to explore Wander Port. " }, { "mode": "fillingInput", "desc": "The ___ is important for us.", "optionList": [ { "option": "job" }, { "option": "jobs" }, { "option": "projects" } ], "answer": [ 0 ] }, { "mode": "fillingInput", "desc": "That's ___ we have to stay.", "optionList": [ { "option": "why" }, { "option": "how" }, { "option": "which" } ], "answer": [ 0 ] }, { "mode": "preset", "desc": "Will you come to Wander Port some day? " }, { "mode": "fillingInput", "desc": " ___ you arrive?", "optionList": [ { "option": "When will" }, { "option": "When is" }, { "option": "How is" } ], "answer": [ 0 ] } ] }
kpInfo JSON

pushType |
cType |
cId |

kpInfo

[ { "kpId": "0328017", "kpType": "sentence", "kpTitle": "The job is...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "这份工作......", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": "0328016", "kpType": "sentence", "kpTitle": "That's why we have to...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "这就是为什么我们必须……", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": "0328014", "kpType": "sentence", "kpTitle": "When will you arrive?", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "你什么时候会到？", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "core_writing_questionMakeSentence", "cId": "0000800", "kpInfo": [ { "kpId": "0328017", "kpType": "sentence", "kpTitle": "The job is...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "这份工作......", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": "0328016", "kpType": "sentence", "kpTitle": "That's why we have to...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "这就是为什么我们必须……", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": "0328014", "kpType": "sentence", "kpTitle": "When will you arrive?", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "你什么时候会到？", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
中间结果: 学习流程配置

    ```
    # 问题1：
    Brainy: 你正在写邮件的正文部分，想要表达这项工作对你们很重要，现在需要补全句子"The ___ is important for us."的空缺处。
    用户选项:
    （选项 A）job [正确]
      Brainy: 太棒啦！你选对了！句子中be动词是is，说明主语是单数，"job"作为单数名词符合语法要求，准确表达了“这项工作对我们很重要”的含义。
    （选项 B）jobs
      Brainy: 不对哦~你看句子里的be动词是"is"，要搭配单数主语，"jobs"是复数形式，不符合这里的语法规则，再试试吧。
    （选项 C）projects
      Brainy: 不对哦~首先"projects"是复数形式，和句子里的单数be动词"is"不匹配，而且"project"的意思是“项目”，这里要表达的是“工作”的含义，不符合语境，再想想呀。

    # 问题2：
    Brainy: 你说完工作的重要性后，想要说明这就是你们必须留下来的原因，现在要补全句子"That's ___ we have to stay."的空缺处。
    用户选项:
    （选项 A）why [正确]
      Brainy: 太厉害了！你选对了！"That's why..."是固定句式，用来引出原因，正好对应前面说的工作重要性，表达“这就是我们必须留下来的原因”，完全符合语境。
    （选项 B）how
      Brainy: 不对哦~"how"是用来询问方式的，这里前面说的是留下来的原因，不是留下来的方式，语义不匹配，再试一次呀。
    （选项 C）which
      Brainy: 不对哦~"which"的意思是“哪一个”，放在这个句子里语义不通顺，这里需要引出原因，所以不合适，再想想吧。

    # 问题3：
    Brainy: 你在邮件末尾询问Rebecca的行程，想要知道她什么时候会到，现在需要补全句子"___ you arrive?"的空缺处。
    用户选项:
    （选项 A）When will [正确]
      Brainy: 太棒啦！你选对了！询问将来的时间要用一般将来时，"When will you arrive?"是正确的表达，意思是“你什么时候会到？”，正好符合你想询问她到达时间的需求。
    （选项 B）When is
      Brainy: 不对哦~句子里的动词"arrive"是实义动词原形，不能和be动词"is"搭配使用，语法是错误的，再试试吧。
    （选项 C）How is
      Brainy: 不对哦~首先"how"是询问方式的，你这里想要问的是到达的时间，语义不符；而且be动词"is"也不能和实义动词原形"arrive"搭配，语法也不对，再想想呀。
    ```

中间结果: 互动描述

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

29 核心邮件撰写 cId: 0000800 core_writing_questionWrite
已保存 ▶
taskInfo

cId |
cType |
title |
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?（亲爱的丽贝卡：我知道你很担心。但这是我们探索漫游港的最佳机会。这项工作对我们来说很重要。这就是我们必须留下来的原因。你会不会哪天来漫游港呀？如果会的话，你什么时候到呢？）

{ "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 |
passCondition |

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）什么时候将会到达？" } ]

{ "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": "非常好！英文邮件写给特定对象的标准称呼就是“Dear + 姓名”，这个开头很合适。" } }, { "option": "Hello Rebecca,", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个表达虽然也可以用于日常打招呼，但正式邮件的称呼通常用Dear更规范哦，再试试吧。" } }, { "option": "Hi Rebecca,", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个表达更偏向非正式的日常对话，给对方写正式说明情况的邮件用这个称呼不够合适，再想想哦。" } } ], "answer": [ 0 ], "write": { "desc": "Dear Rebecca,", "trans": "亲爱的丽贝卡：" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "desc": "Tell her your decision and why." }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你需要先回应Rebecca的担心，同时说明你们留在Wander Port的原因，下列哪句话最符合这个语境？" }, "optionList": [ { "option": "I know you are worried. But this is our best chance to explore Wander Port.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒啦！这句话既回应了Rebecca的担心，也清晰说明了你们想要留下探索Wander Port的理由，完全符合语境。" } }, { "option": "I know you are worried. But we don't want to go home now.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话只说了你们不想回家，没有说明留下和探索Wander Port的关联，没有把原因讲清楚哦，再试一次。" } }, { "option": "I know you are worried. We will be careful, don't worry.", "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": "非常棒！这是询问对方未来是否会做某事的标准一般疑问句，完全符合你询问Rebecca是否会来的需求。" } }, { "option": "Do you come to Wander Port some day?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个句子是一般现在时，用来询问经常性、习惯性的动作，而你要问的是将来的情况，时态不匹配哦，再试试。" } }, { "option": "Are you coming to Wander Port some day?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "现在进行时表将来通常用于已经计划好的安排，你还不确定Rebecca有没有这个计划，用这个表达不够准确哦，再想想。" } } ], "answer": [ 0 ], "write": { "desc": "Will you come to Wander Port some day?", "trans": "你会不会哪天来漫游港呀？" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "desc": "Ask her when she will arrive." }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你想问对方如果来的话，什么时候会到，句子“If so, _________ you arrive?”的空格处应该填什么？" }, "optionList": [ { "option": "when 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是询问方式的疑问词，而你这里要询问的是到达的时间，疑问词和语法都不符合要求哦，再想想。" } } ], "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的邮件编写！" }

{ "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": "非常好！英文邮件写给特定对象的标准称呼就是“Dear + 姓名”，这个开头很合适。" } }, { "option": "Hello Rebecca,", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个表达虽然也可以用于日常打招呼，但正式邮件的称呼通常用Dear更规范哦，再试试吧。" } }, { "option": "Hi Rebecca,", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个表达更偏向非正式的日常对话，给对方写正式说明情况的邮件用这个称呼不够合适，再想想哦。" } } ], "answer": [ 0 ], "write": { "desc": "Dear Rebecca,", "trans": "亲爱的丽贝卡：" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "desc": "Tell her your decision and why." }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你需要先回应Rebecca的担心，同时说明你们留在Wander Port的原因，下列哪句话最符合这个语境？" }, "optionList": [ { "option": "I know you are worried. But this is our best chance to explore Wander Port.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒啦！这句话既回应了Rebecca的担心，也清晰说明了你们想要留下探索Wander Port的理由，完全符合语境。" } }, { "option": "I know you are worried. But we don't want to go home now.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话只说了你们不想回家，没有说明留下和探索Wander Port的关联，没有把原因讲清楚哦，再试一次。" } }, { "option": "I know you are worried. We will be careful, don't worry.", "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": "非常棒！这是询问对方未来是否会做某事的标准一般疑问句，完全符合你询问Rebecca是否会来的需求。" } }, { "option": "Do you come to Wander Port some day?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个句子是一般现在时，用来询问经常性、习惯性的动作，而你要问的是将来的情况，时态不匹配哦，再试试。" } }, { "option": "Are you coming to Wander Port some day?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "现在进行时表将来通常用于已经计划好的安排，你还不确定Rebecca有没有这个计划，用这个表达不够准确哦，再想想。" } } ], "answer": [ 0 ], "write": { "desc": "Will you come to Wander Port some day?", "trans": "你会不会哪天来漫游港呀？" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "desc": "Ask her when she will arrive." }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你想问对方如果来的话，什么时候会到，句子“If so, _________ you arrive?”的空格处应该填什么？" }, "optionList": [ { "option": "when 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是询问方式的疑问词，而你这里要询问的是到达的时间，疑问词和语法都不符合要求哦，再想想。" } } ], "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 |
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,", "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）什么时候将会到达？" } ]

{ "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 |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "sentence", "kpTitle": "The job is... 这份工作......That's why we have to... 这就是为什么我们必须……When will you arrive? 你什么时候会到？", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "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": "语义" } ] }
中间结果: 学习流程配置

    ```
    # 问题1：
    Brainy: 你准备给担心你们安全的Rebecca写邮件，首先需要写邮件的称呼，你应该怎么开头？
    用户选项:
    （选项 A）Dear Rebecca, [正确]
      Brainy: 非常好！英文邮件写给特定对象的标准称呼就是“Dear + 姓名”，这个开头很合适。
    （选项 B）Hello Rebecca,
      Brainy: 这个表达虽然也可以用于日常打招呼，但正式邮件的称呼通常用Dear更规范哦，再试试吧。
    （选项 C）Hi Rebecca,
      Brainy: 这个表达更偏向非正式的日常对话，给对方写正式说明情况的邮件用这个称呼不够合适，再想想哦。

    # 问题2：
    Brainy: 你需要先回应Rebecca的担心，同时说明你们留在Wander Port的原因，下列哪句话最符合这个语境？
    用户选项:
    （选项 A）I know you are worried. But this is our best chance to explore Wander Port. [正确]
      Brainy: 太棒啦！这句话既回应了Rebecca的担心，也清晰说明了你们想要留下探索Wander Port的理由，完全符合语境。
    （选项 B）I know you are worried. But we don't want to go home now.
      Brainy: 这句话只说了你们不想回家，没有说明留下和探索Wander Port的关联，没有把原因讲清楚哦，再试一次。
    （选项 C）I know you are worried. We will be careful, don't worry.
      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: 非常棒！这是询问对方未来是否会做某事的标准一般疑问句，完全符合你询问Rebecca是否会来的需求。
    （选项 B）Do you come to Wander Port some day?
      Brainy: 这个句子是一般现在时，用来询问经常性、习惯性的动作，而你要问的是将来的情况，时态不匹配哦，再试试。
    （选项 C）Are you coming to Wander Port some day?
      Brainy: 现在进行时表将来通常用于已经计划好的安排，你还不确定Rebecca有没有这个计划，用这个表达不够准确哦，再想想。

    # 问题6：
    Brainy: 你想问对方如果来的话，什么时候会到，句子“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是询问方式的疑问词，而你这里要询问的是到达的时间，疑问词和语法都不符合要求哦，再想想。
    ```

中间结果: 互动描述

    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 |
cId |
title |
asrPrompt |
resourceMapping | { "Vicky": 658 }
preDialog | []
imgShowTimingList | [ "content", "feedback" ]
img |
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 | []

{ "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 |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "vocab", "kpTitle": "spring", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_express", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "spring", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
31 对话选择 cId: 0000800 mid_dialog_choose
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Vicky": 658 }
preDialog | [ { "type": "npc", "npcName": "Dad", "content": "Is it for a cat?" } ]
imgShowTimingList | [ "content", "feedback" ]
img |
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 | []

{ "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 |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "vocab", "kpTitle": "home", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_choose", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "home", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
32 对话选读 cId: 0000800 mid_dialog_select
已保存 ▶
jsonData

cType |
cId |
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!" } ]

{ "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 |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "vocab", "kpTitle": "healthy(词义)", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_select", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "healthy(词义)", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
33 信息描写 cId: 0000800 mid_message_trace
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Vicky": 658 }
cDesc |
question | { "desc": "请描写你需要的水果" }
trace |
img |
inputSet | []

{ "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 JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "mid_message_trace", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
34 信息拼词 cId: 0000800 mid_message_spell
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Vicky": 658 }
cDesc |
question | { "desc": "请填入“葡萄”的正确的英文拼写" }
tip |
inputConfig | [ { "stem": "G（2）pe", "value": "ra" } ]
stemList | [ "h", "a", "r", "l", "e", "w" ]
img |
inputSet | []

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

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "mid_message_spell", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
35 信息组句 cId: 0000800 mid_message_combine
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Vicky": 658 }
cDesc |
question | { "desc": "请在空白处填入正确的单词，组成句子" }
tip |
optionList | [ { "option": "is" }, { "option": "the visitor" }, { "option": "you invited" }, { "option": "Maeve" } ]
answer | [ 0, 3, 1, 2 ]
img |
inputSet | []

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

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "mid_message_combine", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
36 信息补词 cId: 0000800 mid_message_fillin
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Vicky": 658 }
cDesc |
question | { "desc": "请在空白处填入正确的字母，组成完整单词" }
tip |
inputConfig | [ { "stem": "K(3)ledge", "value": "now" } ]
img |
inputSet | []

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

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "mid_message_fillin", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
37 信息填词 cId: 0000800 mid_message_word
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Vicky": 658 }
cDesc |
question | { "desc": "请在空白处填入合适的单词，使句意完整" }
tip |
answer | [ "knowledge", "information" ]
img |
inputSet | []

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

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "mid_message_word", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
38 信息填句 cId: 0000800 mid_message_sentence
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Vicky": 658 }
cDesc |
question | { "desc": "请填入正确的内容，使句意完整" }
tip |
answerHint | The main purpose of this tour is to learn knowledge about local traditional crafts.
img |
inputSet | []

{ "cType": "mid_message_sentence", "cId": "0000800", "title": "填写信息表", "resourceMapping": { "Vicky": 658 }, "cDesc": "You filled in the information form correctly. (你正确填写了信息表。)", "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 |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "mid_message_sentence", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
39 图片单选 cId: 0000800 mid_image_choose
已保存 ▶
jsonData

cType |
cId |
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 | [ "02" ]
preDialog | [ { "type": "user", "content": "Look!" } ]
tip |
corFeedback | { "type": "user", "npcName": "", "content": "Warm water here!" }
errFeedback | { "type": "user", "npcName": "", "content": "It doesn't seem like there's warm water." }
postDialog | []
cDesc |

{ "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": [ "02" ], "preDialog": [ { "type": "user", "content": "Look!" } ], "tip": "warm 指“温暖的”。", "corFeedback": { "type": "user", "npcName": "", "content": "Warm water here!" }, "errFeedback": { "type": "user", "npcName": "", "content": "It doesn't seem like there's warm water." }, "postDialog": [], "cDesc": "You found the warm water to get. (你找到了要取用的温暖的水。)" }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": "0220004", "kpType": "vocab", "kpTitle": "warm", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_image_choose", "cId": "0000800", "kpInfo": [ { "kpId": "0220004", "kpType": "vocab", "kpTitle": "warm", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
40 图片多选 cId: 0000800 mid_image_multiple
已保存 ▶
jsonData

cType |
cId |
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 |
corFeedback | { "type": "user", "content": "These are all parts of the house." }
errFeedback | { "type": "user", "content": "Let's check again." }
postDialog | []
cDesc |

{ "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 damaged parts of the house. (你找到了房子需要修复的部分。)" }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "vocab", "kpTitle": "house", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_image_multiple", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "house", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
41 图片有序 cId: 0000800 mid_image_sequence
已保存 ▶
jsonData

cType |
cId |
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 |
corFeedback | {}
errFeedback | { "type": "npc", "npcName": "Dan", "content": "We can't jump like that." }
postDialog | []
cDesc |

{ "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 jump the hopscotch one by one. (你一个接一个地跳格子。)" }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "sentence", "kpTitle": "... one by one.", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "mid_image_sequence", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "... one by one.", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
42 图片拖拽 cId: 0000800 mid_image_drag
已保存 ▶
jsonData

cType |
cId |
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 | [ "00", "02", "01" ]
preDialog | [ { "type": "npc", "npcName": "Sarah", "content": "Look! So many gloves there!" } ]
tip |
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 |

{ "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": [ "00", "02", "01" ], "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 |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "vocab", "kpTitle": "hammer （词义）", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_image_drag", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "hammer （词义）", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }