diff --git a/MEMORY.md b/MEMORY.md index 946a0d5..c8c74c6 100644 --- a/MEMORY.md +++ b/MEMORY.md @@ -91,6 +91,17 @@ ## 经验教训 +### bitable写入:嵌套JSON的Shell转义陷阱(2026-05-08) +- `operate_bitable.sh` 通过 shell 变量展开传递嵌套 JSON 时,内部双引号会被 shell 提前解析,导致数据截断(如 jsonData 的 questionSet 全部清空) +- **解决方案:** 对于包含嵌套 JSON 的字段(如 jsonData),直接用 Python subprocess 调用 curl,构造完整 request body,避免经过 shell 变量展开 +- 写入后必须回读验证(不仅是 record_id 校验,还要检查 jsonData 内容的完整性) + +### 单元挑战互动组件多维表格 App Token(2026-05-08) +- **App Token:** `CMHSbUUjka3TrUsaxxEc297ongf` +- **用途:** 存储所有单元挑战互动组件配置数据 +- **包含表格:** 听力-P1~P7、阅读-P1~P7、写作-P1~P5、口语-P1~P5 等 +- **操作方式:** Bot身份通过 curl 直接调用 bitable API + (在此记录工作中总结的经验教训,供后续参考) --- diff --git a/memory/.dreams/events.jsonl b/memory/.dreams/events.jsonl index 043df2e..177ba61 100644 --- a/memory/.dreams/events.jsonl +++ b/memory/.dreams/events.jsonl @@ -1,2 +1,3 @@ {"type":"memory.recall.recorded","timestamp":"2026-05-07T08:48:55.437Z","query":"王璐辰 user_id permissions","resultCount":1,"results":[{"path":"memory/2026-05-07.md","startLine":57,"endLine":74,"score":0.6621249966506227}]} {"type":"memory.recall.recorded","timestamp":"2026-05-08T01:18:18.412Z","query":"writing_pic_qa 写作看图回答题 生产规则","resultCount":3,"results":[{"path":"memory/2026-05-07.md","startLine":215,"endLine":235,"score":1},{"path":"memory/2026-05-07.md","startLine":199,"endLine":219,"score":1},{"path":"memory/2026-05-07.md","startLine":1,"endLine":20,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-05-09T02:03:53.176Z","query":"reading_pic_judge bitable 多维表格 table_id 121301","resultCount":1,"results":[{"path":"memory/2026-05-07.md","startLine":1,"endLine":20,"score":1}]} diff --git a/memory/.dreams/short-term-recall.json b/memory/.dreams/short-term-recall.json index bce1c52..7a9fb23 100644 --- a/memory/.dreams/short-term-recall.json +++ b/memory/.dreams/short-term-recall.json @@ -1,6 +1,6 @@ { "version": 1, - "updatedAt": "2026-05-08T01:18:18.412Z", + "updatedAt": "2026-05-09T02:03:53.176Z", "entries": { "memory:memory/2026-05-07.md:57:74": { "key": "memory:memory/2026-05-07.md:57:74", @@ -102,18 +102,20 @@ "endLine": 20, "source": "memory", "snippet": "# 2026-05-07 工作日志 ## 会话记录 ### 刘彦江 (ou_5af74c1fb96042e33cc0f16b5ca02cf4) — 单元挑战新增3个题型 - **时间:** 11:19 ~ 11:28 - **需求:** 单元挑战新增3个题型:阅读看图回答题(reading_pic_qa)、阅读看图判断题(reading_pic_judge)、写作看图回答题(writing_pic_qa) - **状态:** ✅ 已完成题型规范落地 - **交付内容:** 1. 创建3个题型SKILL.md: - `reading/common/reading_pic_qa/SKILL.md` — 阅读看图回答题(共享大图+多题Yes/No判断) - `reading/common/reading_pic_judge/SKILL.md` — 阅读看图判断题(每题独立配图+Yes/No判断) - `writing/common/writing_pic_qa/SKILL.md` — 写作看图回答题(看图+提示答案开头+填空) 2. 更新 `MEMORY.md` 全题型阶段归属规则 3. 明确题型JSON结构、难度等级(A/B/C/D四级)、能力标签、校验规则 - **关键决策:** 3个题型均为 L1&L2 共用,通过难度参数区分阶段;reading_pic_qa 共享大图,reading_pic_judge 每题独立配图 ### 李应瑛 (ou_1bd7317ae2ccfeb57e1132028847279e) — 单词表对比请求", - "recallCount": 1, + "recallCount": 2, "dailyCount": 0, "groundedCount": 0, - "totalScore": 1, + "totalScore": 2, "maxScore": 1, "firstRecalledAt": "2026-05-08T01:18:18.412Z", - "lastRecalledAt": "2026-05-08T01:18:18.412Z", + "lastRecalledAt": "2026-05-09T02:03:53.176Z", "queryHashes": [ - "390d35f8d143" + "390d35f8d143", + "fd4c9b7de37b" ], "recallDays": [ - "2026-05-08" + "2026-05-08", + "2026-05-09" ], "conceptTags": [ "reading-pic-qa", diff --git a/memory/2026-05-08-reading.md b/memory/2026-05-08-reading.md index 15a45ed..bd6136a 100644 --- a/memory/2026-05-08-reading.md +++ b/memory/2026-05-08-reading.md @@ -27,6 +27,24 @@ | 111101 | earth,horse,donkey,duck,air | in front of,behind,arm,between,next to | 10q: 6Y4N | recvj0SWMKpQxG | | 111201 | lorry,garden,flower,window,these | listen,clap,night,morning | 9q: 5Y4N | recvj0SXQtpXkd | -- **111201 题组2 仅4题**(用户提供4个知识点:listen/clap/night/morning) +- **111201 题组2 仅4题**(用户提供4个知识点:listen/clap/night/morning,后补close→5题) - **设计规则:** L1 A级 1-4词极简陈述句;每题独立单物品/简单场景图;Yes题图与题干匹配、No题图与题干矛盾 - **bitable写入:** 首轮create_record未正确写入(shell参数截断),后用Python update_record逐一修复 + +### 刘彦江 (ou_5af74c1fb96042e33cc0f16b5ca02cf4) — reading_pic_judge 阶段2生产(4套 ID 121301-121601) +- **时间:** ~17:40 ~ 18:00 +- **状态:** ✅ 已完成(4套/40题,全量写入+回读验证通过) +- **目标bitable:** 阅读-P6-看图判断题 + - App: `CMHSbUUjka3TrUsaxxEc297ongf` + - Table: `tblJc60aO0T163MJ` +- **能力标签:** `["图文判断", "句图一致性"]` +- **词汇校验:** 40词中仅8词在L1词库(sofa/zoo/sock/student/school/teacher/mat/mouth),32词不在词库。已提示用户但不禁产。 + +| ID | 题组1 | 题组2 | Yes/No | record_id | +|----|------|------|--------|-----------| +| 121301 | home,house,sofa,cupboard,bedroom | zoo,hippo,bear,jeans,sock | 6Y4N | recvj5nIAxF3XG | +| 121401 | student,school,teacher,crayon,board | mat,letter,desk,schoolbag,handbag | 6Y4N | recvj5nJG33bBE | +| 121501 | body,head,mouth,ear,friend | camera,boy,girl,skateboarding,skateboard | 6Y4N | recvj5nKxhm8X6 | +| 121601 | summer,autumn,winter,cold,spring | bus,taxi,trousers,shorts,snow | 6Y4N | recvj5nLUpubaU | + +- **经验教训:** `operate_bitable.sh` 在 shell 中展开嵌套 JSON 会导致数据截断(jsonData questionSet 全部丢失,textTitle 清空)。后续写入多维表格特别是嵌套 JSON 字段时,应直接用 Python curl_post 绕过 shell 转义问题。 diff --git a/memory/2026-05-09-0941.md b/memory/2026-05-09-0941.md new file mode 100644 index 0000000..512bdb5 --- /dev/null +++ b/memory/2026-05-09-0941.md @@ -0,0 +1,5 @@ +# Session: 2026-05-09 09:41:44 GMT+8 + +- **Session Key**: agent:xiaoyan:feishu:direct:ou_5af74c1fb96042e33cc0f16b5ca02cf4 +- **Session ID**: bb724282-4006-4ad9-9d71-a5abdd685632 +- **Source**: feishu diff --git a/memory/2026-05-09-1030.md b/memory/2026-05-09-1030.md new file mode 100644 index 0000000..727c9f3 --- /dev/null +++ b/memory/2026-05-09-1030.md @@ -0,0 +1,47 @@ +# Session: 2026-05-09 10:30:50 GMT+8 + +- **Session Key**: agent:xiaoyan:feishu:direct:ou_270924c22bf8d63cf356dbd37614055f +- **Session ID**: 7dc15047-1c7b-4739-bafc-245832c64c9b +- **Source**: feishu + +## Conversation Summary + +user: 你的 workspace 自动备份任务, 还在吗? 我发现 云仓库里 最近推送一次是两周前 正常应该每天早上推送 +assistant: cron 任务还在,每天 08:10 执行。让我检查日志和脚本执行情况: +assistant: 日志目录不存在。让我手动试跑一下备份脚本看报什么错: +assistant: 脚本能正常跑,log 目录也创建了。现在来看看为什么 cron 没触发——先确认 cron 服务状态和系统日志: +assistant: Cron 每天 08:10 都在执行!但日志目录在脚本运行前不存在(shell 重定向时目录还没建),导致输出全丢了。让我确认根因: +assistant: 根因找到了。看下完整诊断: + +**cron 任务本身每天都在 08:10 准时执行**(syslog 确认 5月5/6/7/8日都有触发)。问题出在 `logs/` 目录丢失导致 shell 重定向失败,脚本输出全部丢失。 + +具体链路: +1. cron 命令里 `>> .../logs/git_backup.log` 的重定向在脚本启动**之前**由 shell 执行 +2. 脚本里的 `mkdir -p logs/` 跑在重定向之后,来不及救 +3. `logs/` 目录消失后,所有 cron 运行的输出(包括错误信息)都被丢弃 +4. 无法确认脚本是 push 失败还是根本没 commit + +**修复方案:在 cron 命令里前置创建目录。** +assistant: 现在修复。做两件事:1) 修 cron 命令确保日志目录存在;2) 确认推送已经恢复正常。 +assistant: sed 处理特殊字符有问题。让我用 Python 精确处理: +assistant: cron 已修复。刚才手动跑的时候已经推送成功了,验证一下远程: +assistant: 已确认远程仓库里最新一次推送就是刚才的 `82dc242 auto backup: 2026-05-08 19:32:05`。 + +## 诊断总结 + +| 项目 | 状态 | +|------|------| +| cron 任务 | ✅ 一直在,每天 08:10 准时触发(syslog 可查) | +| 远程最后推送 | ❌ 停在 4月23日(两周前) | +| 根因 | `logs/` 目录丢失 → shell 重定向 `>> logs/git_backup.log` 在脚本启动前失败 → 所有输出被丢弃,无法看到错误 | +| 修复 | cron 命令前置 `mkdir -p .../logs`,确保日志目录在重定向前已存在 | +| 当前状态 | ✅ 刚手动推送成功,远程已更新到最新 | + +**具体原因:** backup_workspace.sh 脚本内部有 `mkdir -p logs/`,但 cron 命令里的 `>> logs/git_backup.log` 重定向是 shell 在**启动脚本之前**执行的。`logs/` 目录不知何时被清理掉后,重定向静默失败,cron 无论成功失败都看不到输出。 + +**修复内容:** crontab 中小研的备份行改为: +``` +10 8 * * * mkdir -p /root/.openclaw/workspace-xiaoyan/logs && /bin/bash .../backup_workspace.sh >> .../logs/git_backup.log 2>&1 +``` + +明天早上 08:10 会自动跑,要不要我现在再手动跑一次确认完全没问题? diff --git a/memory/2026-05-09-1055.md b/memory/2026-05-09-1055.md new file mode 100644 index 0000000..6cb5f67 --- /dev/null +++ b/memory/2026-05-09-1055.md @@ -0,0 +1,27 @@ +# Session: 2026-05-09 10:55:15 GMT+8 + +- **Session Key**: agent:xiaoyan:feishu:direct:ou_270924c22bf8d63cf356dbd37614055f +- **Session ID**: 32e1540d-6366-4606-b2aa-7ed88688b2b1 +- **Source**: feishu + +## Conversation Summary + +user: 组件配置json https://makee-interactive.feishu.cn/wiki/AEPJwf0DUiDkWska4SbceSAbnyc +assistant: 处理完成。以下是本次组件配置JSON生成结果汇总: + +| 项目 | 数量 | +|------|------| +| 识别组件总数 | **42** | +| 成功生成 | **41** | +| 失败 | 0 | +| 跳过 | 1(口语独白,生成器尚未实现) | + +**覆盖的组件类型:** + +**中互动组件(25个):** 对话朗读、对话挖空、对话组句、对话表达、对话选择、对话选读、信息描写、信息拼词、信息组句、信息补词、信息填词、信息填句、图片单选、图片多选、图片有序、图片拖拽 + +**核心互动组件(12个全部覆盖):** 合作阅读、看图选词、口语快答、口语妙问、看图说话、合作听力、听力拖拽、听力选择、看图组句、看图撰写、邮件组句、邮件撰写 + +**文档:** L1-S2-U14-L1 到你上学啦 (组件录入测试-全量) + +📄 HTML 报告已通过飞书 Bot 发送给你,可直接在浏览器中打开查看详情并推送配置到远程数据库。 diff --git a/memory/2026-05-09-1107.md b/memory/2026-05-09-1107.md new file mode 100644 index 0000000..d2a10a3 --- /dev/null +++ b/memory/2026-05-09-1107.md @@ -0,0 +1,39 @@ +# Session: 2026-05-09 11:07:40 GMT+8 + +- **Session Key**: agent:xiaoyan:feishu:direct:ou_270924c22bf8d63cf356dbd37614055f +- **Session ID**: 88d0af85-19a7-4241-9858-b7e3e8da2947 +- **Source**: feishu + +## Conversation Summary + +user: 组件配置json https://makee-interactive.feishu.cn/wiki/AEPJwf0DUiDkWska4SbceSAbnyc +assistant: 李若松,收到。启动组件配置JSON生成流水线,处理文档: +`https://makee-interactive.feishu.cn/wiki/AEPJwf0DUiDkWska4SbceSAbnyc` +assistant: 流水线正在执行中,等待处理完成... +assistant: 流水线正在并行处理 42 个组件,进度良好。继续等待... +assistant: 进度 21/42,继续... +assistant: 进度 24/42,核心互动组件陆续完成中... +assistant: 写作组件处理中,进度 25/42... +assistant: 接近完成,39/42... +assistant: 流水线执行完毕。报告已发送到你的飞书私聊。 + +--- + +**📊 处理报告:`L1-S2-U14-L1 到你上学啦 (组件录入测试-全量)`** + +| 统计 | 数量 | +|------|------| +| 总组件 | **42** | +| 成功 | **41** | +| 跳过 | **1**(口语独白,尚未实现生成器) | +| 失败 | **0** | + +**覆盖类型:** + +中互动(16种):对话朗读×8、对话挖空×4、对话组句×4、对话表达×1、对话选择×1、对话选读×1、信息描写×1、信息拼词×1、信息组句×1、信息补词×1、信息填词×1、信息填句×1、图片单选×1、图片多选×1、图片有序×1、图片拖拽×1 + +核心互动(11种):合作阅读、看图选词、口语快答、口语妙问、看图说话、合作听力、听力拖拽、听力选择×2、看图组句、看图撰写、邮件组句、邮件撰写 + +--- + +📄 HTML 报告已通过飞书 Bot 发给你,可在浏览器中打开查看完整配置 JSON 并进行推送操作。 diff --git a/skills/interactive-component-json/SKILL.md b/skills/interactive-component-json/SKILL.md index a0868c2..85c25ae 100644 --- a/skills/interactive-component-json/SKILL.md +++ b/skills/interactive-component-json/SKILL.md @@ -74,6 +74,36 @@ python3 scripts/pipeline.py "" --send-to - pipeline 执行时自动检测并启动代理服务 - 目标接口:`POST https://api-test.valavala.com/content/feishu/notify` +### 代理服务自动管理 + +pipeline 在生成 HTML 报告前会自动管理代理服务,运行时会输出 `[代理]` 前缀的状态信息: + +| 输出信息 | 含义 | +|----------|------| +| `[代理] ✓ 中转服务正常 → ` | 代理服务运行正常,HTML 将使用中转地址 | +| `[代理] ⚠️ 端口被僵死进程占用,正在清理...` | 检测到旧进程卡死,自动 kill 并重启 | +| `[代理] ✓ 中转服务启动成功 → ` | 代理重启成功 | +| `[代理] ❌ 中转服务启动失败!` | 代理无法启动,HTML 回退为直连 HTTPS 地址 | + +**自动恢复机制**:当健康检查失败但端口被占用时(僵死进程),pipeline 会自动终止僵死进程并重新启动代理,无需人工干预。 + +**手动管理代理**: +```bash +# 查看代理进程 +ss -tlnp | grep 18080 + +# 手动启动 +python3 scripts/proxy_server.py & + +# 手动停止 +kill $(ss -tlnp | grep 18080 | grep -oP 'pid=\K\d+') + +# 健康检查 +curl http://127.0.0.1:18080/health +``` + +**注意**:如果 HTML 报告中显示的推送地址是 `https://api-test.valavala.com/...` 而非 `http://:18080/api/push`,说明生成时代理服务未能正常运行。可在 HTML 顶部地址栏手动修改为中转地址,或重新运行 pipeline 生成。 + ## 概述 本skill实现从**飞书wiki剧本文档** → **结构化组件配置JSON**的完整生产流水线。 diff --git a/skills/interactive-component-json/db/components.db b/skills/interactive-component-json/db/components.db index 088397b..bd83b2e 100644 Binary files a/skills/interactive-component-json/db/components.db and b/skills/interactive-component-json/db/components.db differ diff --git a/skills/interactive-component-json/outputs/L1-S2-U14-L1 到你上学啦 _组件录入测试-全量__20260509_103808.html b/skills/interactive-component-json/outputs/L1-S2-U14-L1 到你上学啦 _组件录入测试-全量__20260509_103808.html new file mode 100644 index 0000000..d4d2044 --- /dev/null +++ b/skills/interactive-component-json/outputs/L1-S2-U14-L1 到你上学啦 _组件录入测试-全量__20260509_103808.html @@ -0,0 +1,15886 @@ + + + + + +L1-S2-U14-L1 到你上学啦 (组件录入测试-全量) — 组件JSON报告 + + + + + +
+ + +
+
+
就绪
+
+
+ 成功: 0 + 失败: 0 +
+
+ +
+
+

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

+
+ 生成时间: 2026-05-09 10:38:08 + 模型: doubao-seed-2.0-pro + Wiki: AEPJwf0DUiDkWska4SbceSAbnyc +
+
+ +
+
+
13
核心互动
+
29
中互动
+
+
42
总组件
+
41
成功
+
0
失败
+ +
+ + +
+
+ 1 + 对话朗读 + cId: 0000800 + mid_dialog_repeat + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
img
question
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 2 + 对话挖空 + cId: 0000801 + mid_dialog_fillin + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionGroupList
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 3 + 对话朗读 + cId: 0000802 + mid_dialog_repeat + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 4 + 对话朗读 + cId: 0000803 + mid_dialog_repeat + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 5 + 对话朗读 + cId: 0000804 + mid_dialog_repeat + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 6 + 对话组句 + cId: 0000805 + mid_dialog_sentence + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionList
answer
tip
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 7 + 对话朗读 + cId: 0000806 + mid_dialog_repeat + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
img
question
postDialog
+
+ +
+
+ +
+
+ 8 + 对话朗读 + cId: 0000807 + mid_dialog_repeat + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
img
question
postDialog
+
+ +
+
+ +
+
+ 9 + 对话挖空 + cId: 0000808 + mid_dialog_fillin + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionGroupList
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 10 + 对话朗读 + cId: 0000809 + mid_dialog_repeat + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
img
question
postDialog
+
+ +
+
+ +
+
+ 11 + 核心听力选择 + cId: 0000810 + core_listening_choose + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
sceneDesc
key
resourceMapping
cDesc
+
+ +
+ +
+ +
+
+ +
+ +
请您提供具体的任务名称和题目材料内容哦,我会按照要求为您生成对应的叙事化描述~
+
+
+ +
+
+ 12 + 对话组句 + cId: 0000811 + mid_dialog_sentence + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionList
answer
tip
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 13 + 对话组句 + cId: 0000812 + mid_dialog_sentence + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionList
answer
tip
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 14 + 对话挖空 + cId: 0000813 + mid_dialog_fillin + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionGroupList
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 15 + 对话组句 + cId: 0000814 + mid_dialog_sentence + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionList
answer
tip
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 16 + 对话挖空 + cId: 0000815 + mid_dialog_fillin + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionGroupList
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 17 + 核心合作阅读 + cId: 0000800 + core_reading_order + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
sceneDesc
img
key
resourceMapping
+
+ +
+ +
+ +
+ + + + + + + +
text
question
+
+ +
+ +
+ +
+ + + +
sequence
+
+ +
+ +
+ +
+ + + + + + + +
closing
learningPart
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 材料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:我们来认识一下这段话中的关键单词 exams。exams 是考试的意思,平时我们说参加考试就可以说 take exams。
+1. 句意选择题
+Brainy:接下来,我们来看下包含 exams 的句子 At Vala Academy, Pioneers don't have exams. 是什么意思呢?
+- 在瓦拉学院,开拓者们不用参加考试。[正确]
+  Brainy:太棒了!你完全掌握了 exams 的意思和这个句子的含义啦~
+- 在瓦拉学院,开拓者们没有俱乐部。
+  Brainy:不对哦,club才是俱乐部的意思,我们这里的重点单词exams是考试的意思,再回忆一下释义吧。
+
+2. 段落大意题
+Brainy:了解了关键单词和关键句子的意思,我们一起来看看这一段主要在说什么吧?
+- 瓦拉学院的开拓者不需要考试,但是需要积分来升级。[正确]
+  Brainy:回答正确!你准确抓住了段落里的两个核心信息点,太厉害啦~
+- 瓦拉学院的开拓者既需要参加考试,也需要积分来升级。
+  Brainy:有点小失误哦,段落里明确说了开拓者们是没有考试的,再仔细读一遍段落内容吧。
+# 段落2
+## 段落内容
+---
+You can choose your favourite club to join. If you are interested in something, you can find a club for it.
+---
+## 互动题目
+Brainy:本段的重点单词是 club,它的意思是俱乐部,我们常说的足球俱乐部就是 football club。
+1. 句意选择题
+Brainy:我们来看看包含 club 的句子 You can choose your favourite club to join. 是什么意思呢?
+- 你可以选择你最喜欢的课程去上。
+  Brainy:不对哦,课程的英文是course,我们这里的club是俱乐部的意思,再想想正确的意思吧。
+- 你可以选择你最喜欢的俱乐部加入。[正确]
+  Brainy:完美!你已经牢牢记住了club的意思,也理解了这个句子的含义~
+
+2. 段落大意题
+Brainy:下面我们来看看这一段主要讲了什么内容吧?
+- 你可以选择加入喜欢的俱乐部,如果你对某件事感兴趣,就能找到对应的俱乐部。[正确]
+  Brainy:答得太对了!你完全理解了这一段的核心内容,继续加油哦~
+- 所有的俱乐部都非常受欢迎,你必须加入其中一个。
+  Brainy:这一段并没有提到俱乐部是否受欢迎,也没有要求必须加入俱乐部哦,再回顾一下段落内容吧。
+# 完结反馈
+Brainy:恭喜你完成了本次所有的学习任务,你对知识点的掌握很棒哦,继续保持呀!
+```
+
+
+ +
+
+ 18 + 核心看图选词 + cId: 0000800 + core_reading_imageDrag + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
taskDesc
sceneDesc
key
resourceMapping
cDesc
+
+ +
+ +
+ +
+
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
+ +
+
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 小题 4
+## 材料内容
+【展示该小题对应的图片 ID:1201001_02.png】
+
+## 互动题目
+### 1. 句意选词题
+Brainy:小朋友你好呀,这道题我们要学习核心名词lake,先考考你,下面哪个选项的意思是“湖”呀?
+- 选项 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:这道题我们要分辨三个名词的意思,先考考你,下面哪个选项的意思是“树”呀?
+- 选项 A:lake
+  Brainy:lake的意思是“湖”,不是我们要找的哦,再试一下吧~
+- 选项 B:tree [正确]
+  Brainy:答对啦!tree就是“树”的意思,你记得真牢,太厉害啦~
+- 选项 C:grass
+  Brainy:grass的意思是“草”,不对哦,再想想看吧~
+
+### 2. 原题降级
+Brainy:现在来看题目哦,Brainy问“动物园里还有什么其他的动物相关事物?”,需要你选出合适的答案~
+- 选项 A:lake
+  Brainy:lake是湖,不是动物相关的典型事物哦,再结合动物园里常见的东西想想看吧~
+- 选项 B:tree [正确]
+  Brainy:答对啦!动物园里有很多树,是动物生活环境里常见的事物哦,太棒了,现在可以试着说一说你在动物园里见过的其他东西哦~
+- 选项 C:grass
+  Brainy:grass是草,不是最符合的选项哦,再选一次吧~
+
+---
+
+# 完结反馈
+Brainy:太棒了!你复习了lake(湖)、tree(树)、grass(草)这些核心名词,还学会了怎么回答关于动物栖息地和动物园事物的问题,你今天的英语学习收获超丰富哦,继续加油呀~
+```
+
+ +
+ +
To open the gate of the magic word castle, you fill the blank in the sentence "in the ___" answering where hippos live, and you choose the word "lake" which is the perfect fit.(为了打开神奇单词城堡的大门,你补全了“在___里”这个回答河马栖息地的句子空缺,选了“lake”这个最合适的单词。)
+Next, to keep going on your castle exploration, you answer Brainy’s question about other animals in the zoo, and you pick the word "tree" that matches the content of the main picture perfectly.(接下来为了继续城堡探险,你回答了Brainy提出的动物园里还有什么其他动物的问题,选了和主图内容完全匹配的“tree”这个单词。)
+
+
+ +
+
+ 19 + 核心口语快答 + cId: 0000800 + core_speaking_reply + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
taskDesc
sceneDesc
img
key
resourceMapping
+
+ +
+ +
+ +
+ + + +
setting
+
+ +
+ +
+ +
+ + + +
config
+
+ +
+ +
+ +
+ + + +
learningPart
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 开场回合
+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 likes eating bananas. We want to feed her.
+  Brainy:这句的意思是“大象喜欢吃香蕉,我们想要喂她”,现在我们要和Logan说的是大象需要洗澡的事,所以这个选项不符合哦,再选一次吧。
+(C)We saw the keeper just now. He is coming here.
+  Brainy:这句的意思是“我们刚才看到饲养员了,他正往这边来”,但我们现在需要告诉Logan大象需要洗澡,这个选项和当前要表达的内容不匹配,再试试吧。
+Logan:Are you saying she hasn't had a shower yet? Maybe someone will probably come soon.
+
+# 中间回合2
+Brainy:Logan说“你是说她还没洗澡吗?可能很快就会有人过来了”,这时候你可以建议别在这等,我们先去给大象打点水。
+用户选项:
+(A)That's great. Let's wait for the keeper together.
+  Brainy:这句话的意思是“太好了,我们一起等饲养员吧”,但我们要表达的是不等了先去取水,所以这个选项不合适哦,再选一次吧。
+(B)Instead of waiting here, we'd better get some water for her first. ✅
+  Brainy:选得太对啦!现在大声把这句话读出来就好~
+(C)We need to go home now. Maybe we can help tomorrow.
+  Brainy:这句话的意思是“我们现在要回家了,也许我们明天可以帮忙”,和我们现在要主动先取水的想法不一样哦,再试试吧。
+Logan:The keepers are too careless! Thank you! Can you help her shower?
+
+# 中间回合3
+Brainy:Logan说“饲养员太粗心了!谢谢你们!你们能帮她洗澡吗?”,你要回答他你们很乐意帮忙哦。
+用户选项:
+(A)We'd love to help. ✅
+  Brainy:完全正确!快试着把这句话读出来吧~
+(B)Sorry, we are very busy now.
+  Brainy:这句话的意思是“不好意思,我们现在很忙”,但我们本来就想要帮忙给大象洗澡,所以这个选项不对哦,再选一次吧。
+(C)We don't know how to wash an elephant.
+  Brainy:这句话的意思是“我们不知道怎么给大象洗澡”,现在你要告诉Logan你愿意帮忙,所以这个选项不符合哦,再试试吧。
+Logan:Great. We will send some water to her right away.
+
+# 结尾回合
+Brainy:你太棒啦!已经顺利和Logan沟通好,他会马上送水过来,你们可以一起给大象洗澡了,本次任务完成~
+```
+
+ +
+ +
```
+# 1. 角色(你要扮演谁)
+你是Logan,在Wander Port的清洁站工作。你的语言风格亲切自然,适合儿童理解。
+# 2. 任务(你如何参与对话)
+1. 开场首先询问用户大象的情况,确认大象是不是没洗澡。
+2. 听完用户说明大象需要洗澡的内容后,告诉用户可以先等一等,或许饲养员很快就会来。
+3. 接下来询问用户是否愿意帮忙给大象洗澡。
+4. 如果用户表示愿意帮忙,先表达感谢,然后告诉用户你会马上安排送干净的水过去。
+5. 如果用户表示不愿意帮忙,你可以表达没关系,说你会自己想办法给大象洗澡,然后自然结束对话。
+6. 如果用户的回答偏离任务相关内容,你可以友好提醒用户聊聊大象洗澡的事,再把话题拉回当前的任务步骤。
+7. 确认用户愿意帮忙且你告知会送水后,简单表扬用户有爱心,自然结束对话即可。
+# 3. 背景信息
+你是Logan,在 Wander Port 的清洁站工作。清洁站附近有一只大象,人们都很喜欢她,喂她吃香蕉,帮她洗澡。这天你接到电话,几个孩子说大象需要洗澡,你意识到一定是饲养员粗心忘记了!孩子们说愿意帮助大象洗澡,需要借一些干净的水,你立刻答应。
+# 4. 语言风格
+- 使用 CEFR A1-A2 等级英语,避免复杂句,每句话不超过 10 个词,比如
+  "目的地" 可以用句子 Where are you going?,不用 destination,确保小学2-4年级的孩子能听懂
+- 回答一般不超过两句话
+- 避免重复表达,适当变换措辞
+# 5. 开场白 (仅用于首轮)
+由你开始对话,你会问用户:"Hi. What happened to the elephant?"
+# 6. 回应方式
+- 无论用户如何对话,你都应基于你的身份做出合理反应。
+- 每次最多只提问一个问题,等待用户回答后再继续。
+- 除开场轮次外,每次回应,可以先基于用户的话给一句反馈。然后再推进你的任务。
+```
+
+ +
+ +
elephant,shower,water,keepers,help,clean,Wander Port,Logan,banana
+
+
+ +
+
+ 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 + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
taskDesc
sceneDesc
img
key
resourceMapping
+
+ +
+ +
+ +
+ + + +
setting
+
+ +
+ +
+ +
+ + + +
config
+
+ +
+ +
+ +
+ + + +
learningPart
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 开场回合
+Chloe:Can I help you?
+
+# 中间回合1
+Brainy:空乘Chloe主动询问你是否需要帮助,你现在需要先向她询问健身房的位置。
+
+用户选项:
+(选项 A)Where can I find the gym? [正确]
+  Brainy:太棒了!你正确地说出了要询问健身房位置的表达。请大声朗读这句话!
+(选项 B)Can I have a towel please?
+  Brainy:这句话是询问能不能拿毛巾的,现在你需要先问健身房的位置哦,再试一下吧。
+(选项 C)What else can I do there?
+  Brainy:这句话是询问在那里还能做什么的,现在你需要先问健身房的位置哦,再试一下吧。
+
+Chloe:Look, it's over there at the end of this walkway.
+
+# 中间回合2
+Brainy:Chloe已经告诉了你健身房就在这条走道的尽头,现在你需要接着向她讨要毛巾,为运动做准备。
+
+用户选项:
+(选项 A)Where can I find the gym?
+  Brainy:你已经问过健身房的位置啦,现在需要向Chloe要毛巾哦,再试一下吧。
+(选项 B)Oh, and can I have a towel please? [正确]
+  Brainy:太棒了!你正确地说出了想要毛巾的请求。请大声朗读这句话!
+(选项 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)Can I have a towel please?
+  Brainy:你已经要过毛巾啦,现在需要询问在健身房还能做什么哦,再试一下吧。
+(选项 C)What else can I do there? [正确]
+  Brainy:太棒了!你正确地说出了询问健身房其他用途的表达。请大声朗读这句话!
+
+Chloe:Well, you can do some exercise and enjoy sightseeing there. Or you can just relax.
+
+# 结尾回合
+Brainy:Chloe已经告诉了你健身房的位置、给你准备了毛巾,还和你说了在健身房可以锻炼、观光或者放松,你已经完成了所有询问健身房相关信息的任务啦,做得很棒!
+```
+
+ +
+ +
```
+# 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,walkway,exercise,sightseeing,relax
+
+
+ +
+
+ 22 + 核心看图说话 + cId: 0000800 + core_speaking_image + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
taskDesc
sceneDesc
key
resourceMapping
cDesc
+
+ +
+ +
+ +
+ + + +
config
+
+ +
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + +
questionImg
+
+ +
+ +
+ +
+
1234567891011121314151617181920212223
+ +
+
+ +
+ +
+
1234567891011
+ +
+
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 中间回合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老师分享了在冬季岛的见闻,任务成功完成!马上就能吃到热乎乎的食物啦~
+```
+
+ +
+ +
Mr Rock,Winter Island,winter,cold,snow
+
+
+ +
+
+ 23 + 核心合作听力 + cId: 0000800 + core_listening_order + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
sceneDesc
img
key
resourceMapping
+
+ +
+ +
+ +
+ + + + + + + +
audio
question
+
+ +
+ +
+ +
+ + + +
sequence
+
+ +
+ +
+ +
+ + + + + + + +
closing
learningPart
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 重点句子 1
+音频文本:When you really want sweet food, like biscuits or cake, you can bake at home.
+讲解文本:刚刚听到的音频里,有一个很实用的短语 bake at home,bake 是“烘焙”的意思,bake at home 就是“在家烘焙”,是很健康的制作食物的方式哦。
+1. 听音选句
+Brainy:仔细听音频,哪一个句子和你听到的内容一致呢?
+- When you really want sweet food, like biscuits or cake, you can bake at home. [正确]
+  - Brainy:太厉害啦!你准确听出了句子里的重点短语 bake at home!
+- When you really want sweet food, like biscuits or cake, you can buy at the shop.
+  - Brainy:哦不对哦,这句话说的是 buy at the shop(在商店买),不是 bake at home 哦,再仔细听听音频吧!
+
+2. 听音选意
+Brainy:那你知道这句话的中文意思是什么吗?选选看吧!
+- 当你很想吃甜食,比如饼干或者蛋糕的时候,你可以在家烘焙。[正确]
+  - Brainy:太棒啦!你完全理解了这句话的意思,还掌握了 bake at home 这个实用短语哦!
+- 当你很想吃甜食,比如饼干或者蛋糕的时候,你可以去商店买。
+  - Brainy:不对哦,句子里说的不是去商店买的做法,再想想看呀。
+---
+# 完成反馈
+Brainy:很好!你已经回答完了全部问题,相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!
+```
+
+ +
+ +
You listened to the second part of Max's fitness guide, learning a healthy routine means going to bed on time and getting up early, staying away from smoking and alcohol. (你听了Max健身指南的第二部分,了解到健康的作息意味着按时睡觉早起,远离烟酒。)
+You also got to know that keeping healthy doesn't need much money or expensive items, and good habits are the most important thing for health. (你还了解到保持健康不需要很多钱或者昂贵的物品,好习惯对健康来说是最重要的。)
+
+
+ +
+
+ 24 + 核心听力拖拽 + cId: 0000800 + core_listening_drag + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
sceneDesc
key
resourceMapping
cDesc
+
+ +
+ +
+ +
+
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
+ +
+
+ +
+ +
+
12345678910111213141516171819202122232425
+ +
+
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 重点句子 1
+音频文本:Go between the red duck and the blue duck.
+讲解文本:刚刚听到的音频中,包含了一个关键短语 between...and...,意思是“在……和……之间”,用来描述两个事物中间的位置哦。
+1. 听音选句
+Brainy:仔细听音频,选一选哪一句是你刚刚听到的内容吧。
+- Go behind the red duck and the blue duck.
+  - Brainy:哎呀,这句话里用的是behind(在……后面),不是我们听到的between哦,再听一遍试试呀。
+- Go between the red duck and the blue duck. [正确]
+  - Brainy:太厉害啦!你准确听出了句子里的重点短语between...and...!
+
+2. 听音选意
+Brainy:“走到红色的鸭子和蓝色的鸭子中间去”,这句话的意思是对的吗?
+- 对 / Yes [正确]
+  - Brainy:答对啦!你完全理解了between...and...的意思,太棒啦!
+- 错 / No
+  - Brainy:再想想哦,我们句子里说的位置是两只鸭子的中间,不是别的位置哦,再试一次吧~
+---
+# 完成反馈
+Brainy:很好!你已经回答完了全部问题,相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!
+```
+
+ +
+ +
You took on the fun task of directing everyone to herd the ducks, and picked out the right pictures to guide everyone to get all the waddling little ducks back to their cozy pen smoothly.(你接下了指挥大家赶鸭子的有趣任务,选出了合适的图片引导大家顺利把所有摇摇晃晃的小鸭子赶回了舒适的鸭舍。)
+
+
+ +
+
+ 25 + 核心听力选择 + cId: 0000800 + core_listening_choose + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
sceneDesc
key
resourceMapping
cDesc
+
+ +
+ +
+ +
+
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
+ +
+
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 重点句子 1
+音频文本:This summer!
+讲解文本:刚刚听到的音频中,包含了一个关键单词summer,意思是夏天,是一年中天气很热的季节。
+1. 听音选句
+Brainy:仔细听音频,下面哪一个句子是你刚刚听到的内容呢?
+- This summer! [正确]
+  - Brainy:太厉害啦!你准确听出了句子里的重点单词summer!
+- This winter!
+  - Brainy:不对哦,这句话里的单词是winter(冬天),不是我们听到的summer,再仔细听听音频吧!
+
+2. 听音选意
+Brainy:这句话的中文意思是“这个夏天!”,对不对呀?
+- 错 / No
+  - Brainy:再想想哦,summer是夏天的意思,再试着选一次吧~
+- 对 / Yes [正确]
+  - Brainy:太棒啦!你完全掌握了summer这个单词的意思,真不错!
+---
+# 完成反馈
+Brainy:很好!你已经回答完了全部问题,相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!
+```
+
+ +
+ +
You listened to the conversation between Jack and the kid, and found it is summer now, and the weather is extremely hot.(你听了Jack和小朋友的对话,发现现在是夏天,天气非常炎热。)
+You got to know that the kid doesn't have any shorts at hand right now, and he is badly in need of a pair of shorts.(你了解到小朋友现在没有短裤,他非常需要一条短裤。)
+You learned that the kid's shorts are between the rocks, and Jack is going to help him get the shorts back.(你得知小朋友的短裤在石头中间,Jack会帮忙把短裤拿回来。)
+
+
+ +
+
+ 26 + 核心看图组句 + cId: 0000800 + core_writing_imgMakeSentence + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cId
cType
title
taskDesc
sceneDesc
img
plotSummary
stemDesc
key
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + +
inputType
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
title
taskDesc
sceneDesc
knowledge
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 问题1:
+Brainy: 你和伙伴们在森林里找到了飞船坠落的相关线索,现在要向Luisa教授汇报你的推测,你想表达“我认为飞船坠落在山脉南侧的空地上”,首先需要说出开头的推测句式,你会怎么说?
+用户选项:
+(选项 A)I think the spaceship fell... [正确]
+  Brainy: 太棒了!这个句式刚好可以用来引出你对飞船坠落地点的推测,完全符合汇报的语境。
+(选项 B)I saw trees with...
+  Brainy: 这句话是用来描述你看到的树木特征,不是用来表达对飞船坠落地点的推测哦,再试一下吧。
+(选项 C)I heard a loud noise in...
+  Brainy: 这句话是用来描述你听到声响的方位,不是用来表达对坠落地点的推测的,再试试看。
+
+# 问题2:
+Brainy: 你之前在森林里看到部分树木的树干上有烧焦的痕迹,这是和飞船坠落相关的重要线索,现在你要向教授描述这个发现,你会用哪个句式开头?
+用户选项:
+(选项 A)I think the spaceship fell...
+  Brainy: 这句话是用来表达你对坠落地点的推测,不是用来描述你看到的树木相关线索的,再试一下哦。
+(选项 B)I saw trees with... [正确]
+  Brainy: 太对啦!这个句式正好可以用来描述你观察到的树木的特征,很适合说明你找到的线索。
+(选项 C)I heard a loud noise in...
+  Brainy: 这句话是用来描述你听到的声响情况,不是用来描述你看到的树木特征的,再试试看。
+
+# 问题3:
+Brainy: 你们昨天在森林探索时,西边方向传来过巨大的爆炸声,这也是判断飞船坠落位置的重要信息,你要向教授说明这个情况,会选择哪个句式开头?
+用户选项:
+(选项 A)I think the spaceship fell...
+  Brainy: 这句话是用来表达你对坠落地点的推测,不是用来描述你听到的声响线索的,再试一下哦。
+(选项 B)I saw trees with...
+  Brainy: 这句话是用来描述你看到的树木特征,不是用来描述你听到的声响的,再试试看。
+(选项 C)I heard a loud noise in... [正确]
+  Brainy: 非常好!这个句式刚好可以用来引出你听到巨响的方位,完美符合汇报线索的语境。
+```
+
+ +
+ +
Dear Alex, I hope this email finds you well. We can take care of each other.(亲爱的亚历克斯:希望你一切都好。我们可以互相照顾。)
+
+
+ +
+
+ 27 + 核心看图撰写 + cId: 0000800 + core_writing_imgWrite + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cId
cType
title
taskDesc
sceneDesc
img
plotSummary
stemDesc
key
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + +
inputType
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
title
taskDesc
sceneDesc
knowledge
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 问题1:
+Brainy: 你要填写大象护理记录的第一栏,首先需要记录动物的种类,你应该填什么呢?
+用户选项:
+(选项 A)Elephant [正确]
+  Brainy: 答对啦!你准确写出了大象的英文单词,这正是我们要记录的动物种类~
+(选项 B)Banana
+  Brainy: 不对哦,banana是香蕉的意思,是大象吃的食物,不是动物种类,再想想吧。
+(选项 C)Shower
+  Brainy: 不对哦,shower是洗澡的意思,是我们今天给大象做的清洁项目,不是动物种类,再试试。
+
+# 问题2:
+Brainy: 接下来要记录大象今天的进食内容,护理记录里写着"Food: She ate ___",你需要填什么呢?
+用户选项:
+(选项 A)bananas [正确]
+  Brainy: 太棒了!你选对了,大象今天吃了香蕉,刚好对应我们喂它的食物哦。
+(选项 B)elephants
+  Brainy: 不对哦,elephant是大象本身,它可不会吃同类呀,再想想它今天吃了什么吧。
+(选项 C)a shower
+  Brainy: 不对哦,a shower是洗澡,属于清洁项目,不是吃的食物哦,再选一次吧。
+
+# 问题3:
+Brainy: 现在要填写清洁护理的部分,记录里写着"Cleaning: She had ___ today",这里应该填什么呢?
+用户选项:
+(选项 A)a shower [正确]
+  Brainy: 完全正确!我们今天给大象洗了澡,had a shower就是洗澡的意思,完美符合记录要求~
+(选项 B)bananas
+  Brainy: 不对哦,bananas是香蕉,属于食物类,不是清洁项目,回忆一下我们今天给大象做了什么清洁工作吧。
+(选项 C)elephant
+  Brainy: 不对哦,elephant是大象,不能填在清洁记录的内容里,再想想吧。
+
+# 问题4:
+Brainy: 最后我们要总结大象的喜好,你想表达“大象喜爱洗澡和吃香蕉”,应该怎么说呢?
+用户选项:
+(选项 A)The elephant loves showers and bananas! [正确]
+  Brainy: 太厉害了!你准确使用了love表达喜好的用法,完整说出了大象的两个爱好,完美完成了护理记录~
+(选项 B)The elephant loves showers and apples!
+  Brainy: 不对哦,我们今天喂大象的是香蕉(bananas)不是苹果(apples),不符合我们的护理内容,再调整一下吧。
+(选项 C)The elephant hates showers and bananas!
+  Brainy: 不对哦,hate是讨厌的意思,和我们要表达的“喜爱”意思相反,应该用love来描述它的喜好哦。
+```
+
+ +
+ +
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 + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cId
cType
title
taskDesc
sceneDesc
img
plotSummary
stemDesc
key
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + +
inputType
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
title
taskDesc
sceneDesc
knowledge
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 问题1:
+Brainy: 你在邮件里需要向Rebecca说明这份探索任务对你们的重要性,现在要补全句子"The ___ is important for us."
+用户选项:
+(选项 A)job [正确]
+  Brainy: 答对啦!这里用可数名词单数"job"指代这次探索任务,和后面的be动词"is"也搭配正确,准确表达了这份任务对你们的重要性~
+(选项 B)jobs
+  Brainy: 不对哦,"jobs"是可数名词复数,后面应该搭配be动词"are",和句子里的"is"不匹配,而且这里指代的是当前这一份探索任务,不需要用复数,再想想呀。
+(选项 C)projects
+  Brainy: 不对哦,"projects"是可数名词复数,后面应该搭配be动词"are",和句子里的"is"不匹配,不符合句子的语法要求,再试试吧。
+
+# 问题2:
+Brainy: 你已经说明了任务的重要性,接下来要表达这就是你们必须留下来的原因,现在要补全句子"That's ___ we have to stay."
+用户选项:
+(选项 A)why [正确]
+  Brainy: 太棒了!"That's why..."是固定表达,用来引出某个决定的原因,刚好符合你要向Rebecca解释留下来的原因的语境,用得非常准确~
+(选项 B)how
+  Brainy: 不对哦,"how"是用来询问方式的,这里你是要解释留下来的原因,不是说明留下来的方式,不符合语境,再想一想呀。
+(选项 C)which
+  Brainy: 不对哦,"which"一般用来引导定语从句指代事物,放在这里语义不通,没法表达解释原因的意思,再试试吧。
+
+# 问题3:
+Brainy: 邮件最后你想询问Rebecca什么时候会到达Wander Port,现在要补全句子"___ you arrive?"
+用户选项:
+(选项 A)When will [正确]
+  Brainy: 答对啦!询问对方将来的到达时间,用一般将来时的特殊疑问句结构"When will + 主语 + 动词原形",完全符合你想知道Rebecca什么时候来的需求~
+(选项 B)When is
+  Brainy: 不对哦,句子里的"arrive"是实义动词原形,不能和be动词"is"搭配使用,语法上是错误的,再想想正确的结构吧。
+(选项 C)How is
+  Brainy: 不对哦,首先"how"是询问方式的,你这里要问的是到达的时间,疑问词就不对,而且"is"也不能和实义动词原形"arrive"搭配,再试试吧。
+```
+
+ +
+ +
Dear Rebecca, I know you are worried. But this is our best chance to explore Wander Port. The job is important for us. That's why we have to stay. Will you come to Wander Port some day? When will you arrive?(亲爱的丽贝卡:我知道你很担心。但这是我们探索漫游港的最佳机会。这项工作对我们来说很重要。这就是我们必须留下来的原因。你将来会来漫游港吗?你什么时候会到?)
+
+
+ +
+
+ 29 + 核心邮件撰写 + cId: 0000800 + core_writing_questionWrite + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cId
cType
title
taskDesc
sceneDesc
img
plotSummary
stemDesc
key
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + +
inputType
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
title
taskDesc
sceneDesc
knowledge
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 问题1:
+Brainy: 你正在给Rebecca写邮件,已经向她说明知道她很担心,这是你们探索Wander Port最好的机会,接下来你想表达“这份工作对我们来说很重要”,你会怎么说?
+用户选项:
+(选项 A)The job is important for us. [正确]
+  Brainy: 太棒了!你准确表达了“这份工作对我们很重要”的含义,这里job用单数形式和语境匹配,完全正确。
+(选项 B)The jobs are important for us.
+  Brainy: 不对哦,jobs是job的复数形式,意思是“多份工作”,这里我们要表达的是“这份(探索的)工作”,应该用单数形式,再试一下吧。
+(选项 C)The projects are important for us.
+  Brainy: projects是“项目”的意思,和我们要表达的“工作”含义不符,不符合句子要表达的内容,再想想呀。
+
+# 问题2:
+Brainy: 你已经说明了这份工作的重要性,接下来要表达“这就是为什么我们必须留下来”,你会怎么说?
+用户选项:
+(选项 A)That's how we have to stay.
+  Brainy: how是“如何、怎样”的意思,这句话翻译过来是“这就是我们必须怎么留下的方式”,不符合我们要表达的“说明留下来的原因”的含义哦,再试一次。
+(选项 B)That's why we have to stay. [正确]
+  Brainy: 非常棒!why用来引出原因,这句话准确表达了“这就是我们必须留下来的原因”,完全符合邮件里要说明决定的语境。
+(选项 C)That's which we have to stay.
+  Brainy: which通常用来指代事物,放在这里句子逻辑不通哦,我们要表达因果关系,应该用表示原因的连接词,再想想吧。
+
+# 问题3:
+Brainy: 邮件最后你询问Rebecca是否会来Wander Port,如果她要来的话,你想知道她什么时候抵达,你会怎么问?
+用户选项:
+(选项 A)when is you arrive?
+  Brainy: 语法不对哦,arrive是实义动词,构成疑问句要借助助动词will,而不是is,而且is和第二人称you也不搭配,再试一下吧。
+(选项 B)how is you arrive?
+  Brainy: 不对哦,how是询问方式,我们这里要询问的是“到达的时间”,而且这个句子本身语法也不正确,再想想正确的表达吧。
+(选项 C)when will you arrive? [正确]
+  Brainy: 太对啦!你正确使用了一般将来时的疑问结构,准确询问了对方到达的时间,完全符合邮件里的询问需求。
+```
+
+ +
+ +
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 + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
asrPrompt
resourceMapping
preDialog
imgShowTimingList
img
tip
corFeedback
errFeedback
question
example
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 31 + 对话选择 + cId: 0000800 + mid_dialog_choose + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
img
optionList
answer
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 32 + 对话选读 + cId: 0000800 + mid_dialog_select + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
optionList
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 33 + 信息描写 + cId: 0000800 + mid_message_trace + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
cDesc
question
trace
img
inputSet
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 34 + 信息拼词 + cId: 0000800 + mid_message_spell + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
cDesc
question
tip
inputConfig
stemList
img
inputSet
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 35 + 信息组句 + cId: 0000800 + mid_message_combine + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
cDesc
question
tip
optionList
answer
img
inputSet
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 36 + 信息补词 + cId: 0000800 + mid_message_fillin + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
cDesc
question
tip
inputConfig
img
inputSet
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 37 + 信息填词 + cId: 0000800 + mid_message_word + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
cDesc
question
tip
answer
img
inputSet
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 38 + 信息填句 + cId: 0000800 + mid_message_sentence + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
cDesc
question
tip
answerHint
img
inputSet
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 39 + 图片单选 + cId: 0000800 + mid_image_choose + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
meaning
resourceMapping
question
imageInfo
optionList
answer
preDialog
tip
corFeedback
errFeedback
postDialog
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 40 + 图片多选 + cId: 0000800 + mid_image_multiple + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
meaning
resourceMapping
question
imageInfo
optionList
answer
preDialog
tip
corFeedback
errFeedback
postDialog
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 41 + 图片有序 + cId: 0000800 + mid_image_sequence + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
meaning
resourceMapping
question
imageInfo
optionList
answer
preDialog
tip
corFeedback
errFeedback
postDialog
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 42 + 图片拖拽 + cId: 0000800 + mid_image_drag + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
meaning
resourceMapping
question
imageInfo
optionList
answer
preDialog
tip
corFeedback
errFeedback
postDialog
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+ + + + + + + \ No newline at end of file diff --git a/skills/interactive-component-json/outputs/L1-S2-U14-L1 到你上学啦 _组件录入测试-全量__20260509_105913.html b/skills/interactive-component-json/outputs/L1-S2-U14-L1 到你上学啦 _组件录入测试-全量__20260509_105913.html new file mode 100644 index 0000000..824c95e --- /dev/null +++ b/skills/interactive-component-json/outputs/L1-S2-U14-L1 到你上学啦 _组件录入测试-全量__20260509_105913.html @@ -0,0 +1,15762 @@ + + + + + +L1-S2-U14-L1 到你上学啦 (组件录入测试-全量) — 组件JSON报告 + + + + + +
+ + +
+
+
就绪
+
+
+ 成功: 0 + 失败: 0 +
+
+ +
+
+

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

+
+ 生成时间: 2026-05-09 10:59:13 + 模型: doubao-seed-2.0-pro + Wiki: AEPJwf0DUiDkWska4SbceSAbnyc +
+
+ +
+
+
13
核心互动
+
29
中互动
+
+
42
总组件
+
41
成功
+
0
失败
+ +
+ + +
+
+ 1 + 对话朗读 + cId: 0000800 + mid_dialog_repeat + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
img
question
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 2 + 对话挖空 + cId: 0000801 + mid_dialog_fillin + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionGroupList
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 3 + 对话朗读 + cId: 0000802 + mid_dialog_repeat + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 4 + 对话朗读 + cId: 0000803 + mid_dialog_repeat + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 5 + 对话朗读 + cId: 0000804 + mid_dialog_repeat + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 6 + 对话组句 + cId: 0000805 + mid_dialog_sentence + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionList
answer
tip
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 7 + 对话朗读 + cId: 0000806 + mid_dialog_repeat + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
img
question
postDialog
+
+ +
+
+ +
+
+ 8 + 对话朗读 + cId: 0000807 + mid_dialog_repeat + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
img
question
postDialog
+
+ +
+
+ +
+
+ 9 + 对话挖空 + cId: 0000808 + mid_dialog_fillin + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionGroupList
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 10 + 对话朗读 + cId: 0000809 + mid_dialog_repeat + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
img
question
postDialog
+
+ +
+
+ +
+
+ 11 + 核心听力选择 + cId: 0000810 + core_listening_choose + + + + 已保存 + +
+
+
+ +
+
1
+ +
+
+ +
+ +
+
+ +
+ +
请你提供具体的题目材料内容哦,目前缺少对应的听力材料、核心信息等关键内容,我没办法生成符合要求的叙事描述~
+
+
+ +
+
+ 12 + 对话组句 + cId: 0000811 + mid_dialog_sentence + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionList
answer
tip
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 13 + 对话组句 + cId: 0000812 + mid_dialog_sentence + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionList
answer
tip
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 14 + 对话挖空 + cId: 0000813 + mid_dialog_fillin + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionGroupList
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 15 + 对话组句 + cId: 0000814 + mid_dialog_sentence + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionList
answer
tip
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 16 + 对话挖空 + cId: 0000815 + mid_dialog_fillin + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionGroupList
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 17 + 核心合作阅读 + cId: 0000800 + core_reading_order + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
sceneDesc
img
key
resourceMapping
+
+ +
+ +
+ +
+ + + + + + + +
text
question
+
+ +
+ +
+ +
+ + + +
sequence
+
+ +
+ +
+ +
+ + + + + + + +
closing
learningPart
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 材料2
+类型:电子屏
+标题:How to Join Clubs? 
+正文:
+<sp>You can choose your favourite club to join. If you are interested in something, you can find a club for it. The robot club, the plant club, the sports club, and the reading club are all popular choices.<br>If you are not interested in any club, you can start a new one with friends!<br><sp>图片:[0101106_core reading2]
+```
+
+ +
+ +
```
+# 段落1
+重点词汇: 无
+正文:
+---
+At Vala Academy, Pioneers don't have exams. But you need points to level up!
+---
+```
+```
+# 段落2
+重点词汇: 无
+正文:
+---
+You can choose your favourite club to join. If you are interested in something, you can find a club for it.
+---
+```
+
+ +
+ +
```
+# 段落1
+## 段落内容
+---
+At Vala Academy, Pioneers don't have exams. But you need points to level up!
+---
+## 互动题目
+Brainy:我们来认识一下这段话中的关键单词 points。points 在这里的意思是积分、分数,攒积分可以说 collect points。
+1. 句意选择题
+Brainy:接下来,我们来看下包含 points 的句子 But you need points to level up! 是什么意思呢?
+- 但是你需要通过考试才能升级。
+  Brainy:不对哦,句中的关键词是points积分,不是考试,再确认下正确答案吧。
+- 但是你需要积分才能升级。[正确]
+  Brainy:完美回答!你已经掌握了句中的关键单词 points 和整个句子的意思了~
+
+2. 段落大意题
+Brainy:了解了关键单词和关键句子的意思,那我们来一起看看这一段主要在说什么呢?
+- 在瓦拉学院,开拓者们不需要考试,但需要攒积分升级。[正确]
+  Brainy:太棒了!你抓住了 don't have exams 和 need points to level up 这两个重点!
+- 在瓦拉学院,开拓者们需要参加考试获得积分升级。
+  Brainy:不太对哦,文中明确说开拓者们没有考试,再读一读试试看!
+# 段落2
+## 段落内容
+---
+You can choose your favourite club to join. If you are interested in something, you can find a club for it.
+---
+## 互动题目
+Brainy:本段围绕一个关键词 club 展开,你认识这个单词吗?club 是俱乐部的意思,加入俱乐部可以说 join a club。
+1. 句意选择题
+Brainy:接下来我们看看包含 club 的句子 You can choose your favourite club to join. 你知道它是什么意思吗?
+- 你可以选择你最喜欢的课程去上。
+  Brainy:课程的英文表达是 course 哦,并不是我们讲的 club,再认真看看正确的释义吧。
+- 你可以选择你最喜欢的俱乐部加入。[正确]
+  Brainy:完美回答!你已经掌握了文中的关键单词 club 和关键句子的意思了~
+
+2. 段落大意题
+Brainy:下面,让我们来看看这一段主要在讲什么。
+- 你可以选择加入感兴趣的俱乐部,感兴趣的内容都能找到对应的俱乐部。[正确]
+  Brainy:答得好!选择偏好和俱乐部对应规则你都记住啦!
+- 所有的俱乐部都非常受欢迎,你必须加入一个。
+  Brainy:小心看哦~文中并没有说必须加入俱乐部,再仔细看看正确的释义吧!
+# 完结反馈
+Brainy:太棒了!你已经完成了全部的学习流程,对相关知识的掌握很不错哦!
+```
+
+
+ +
+
+ 18 + 核心看图选词 + cId: 0000800 + core_reading_imageDrag + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
taskDesc
sceneDesc
key
resourceMapping
cDesc
+
+ +
+ +
+ +
+
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
+ +
+
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 小题 4
+## 材料内容
+【展示该小题对应的图片 ID:1201001_02.png】
+
+## 互动题目
+### 1. 句意选词题
+Brainy:这道题我们要选河马居住的地方,先来认识核心词汇哦~lake是“湖”,tree是“树”,grass是“草”,想一想哪个是河马的家呀?
+- 选项 A:tree
+  Brainy:tree是“树”的意思,河马的体型很大,没办法住在树上哦,再想想看吧~
+- 选项 B:lake
+  Brainy:答对啦!lake就是“湖”,河马平时喜欢生活在水里,这个是正确的,你真棒~
+- 选项 C:grass
+  Brainy:grass是“草”,虽然河马会吃草,但草不是它长期居住的地方哦,再试一次吧。
+
+### 2. 原题降级
+Brainy:Ben在问“河马住在哪里呀?”,你要选合适的词补全回答“在____里”,结合刚刚学的单词,想想哪个是对的呢?
+- 选项 A:lake [正确]
+  Brainy:太聪明啦!回答“in the lake”就是“在湖里”的意思,河马就是住在湖里的,快来大声朗读这个句子: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:monkey
+  Brainy:答对啦!monkey就是“猴子”,是动物园里常见的动物,你已经掌握这个单词啦~
+- 选项 C:grass
+  Brainy:grass是“草”,是植物,不是动物哦,再试一次吧。
+
+### 2. 原题降级
+Brainy:Brainy在问“动物园里还有什么其他的动物?”,你要选出属于动物的选项来回答哦。
+- 选项 A:lake
+  Brainy:lake是湖,是地点不是动物哦,仔细看问题问的是动物,再选一次吧~
+- 选项 B:monkey [正确]
+  Brainy:答对啦!猴子就是动物园里的动物哦,快来大声朗读这个回答:Monkey.
+- 选项 C:grass
+  Brainy:grass是草,属于植物,不是动物哦,结合问题再想一想吧。
+
+---
+# 完结反馈
+Brainy:太棒了!你复习了lake、monkey这些核心单词,还学会了怎么回答关于动物居所和动物种类的问题,今天的英语对话任务完成得超出色哦,继续加油呀!
+```
+
+ +
+ +
To unlock the gate of the word castle, you first fill in the blank in Ben's question about hippos' habitat, choosing the word "lake" to complete the sentence "in the lake".(你要打开单词城堡的大门,首先填写了本关于河马栖息地问题的空白处,选择“lake”这个词完成了“in the lake”这个表述。)
+Then you answer Brainy's question about other zoo animals, picking the word "tree" as the right choice to show there are animals living in trees in the zoo.(接着你回答了布莱尼关于动物园其他动物的问题,选择“tree”这个词,说明动物园里还有栖息在树上的动物。)
+
+
+ +
+
+ 19 + 核心口语快答 + cId: 0000800 + core_speaking_reply + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
taskDesc
sceneDesc
img
key
resourceMapping
+
+ +
+ +
+ +
+ + + +
setting
+
+ +
+ +
+ +
+ + + +
config
+
+ +
+ +
+ +
+ + + +
learningPart
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 开场回合
+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, we can give her some bananas.
+  Brainy:现在我们的任务是说大象需要洗澡哦,这句话是说大象饿了要给她喂香蕉,和当前情境不匹配,再试试吧~
+C. The keeper is coming to feed the elephant now.
+  Brainy:这句话说的是饲养员现在要来喂大象啦,不是我们要表达的大象需要洗澡的内容,再选一次吧~
+Logan:Are you saying she hasn't had a shower yet? Maybe someone will probably come soon.
+
+# 中间回合2
+Brainy:Logan问你是不是说大象还没洗澡,还说可能很快就会有人来啦,你要回应说与其在这里等,我们最好先去给她拿点水哦。
+用户选项:
+A. You are right, let's wait here for the keeper.
+  Brainy:这句话是说我们在这里等饲养员,不是我们要表达的先去拿水的意思哦,再试试吧~
+B. Instead of waiting here, we'd better get some water for her first. ✓
+  Brainy:选对啦,你真厉害!来试着朗读这句话吧~
+C. We don't have enough time to help the elephant.
+  Brainy:这句话是说我们没有足够的时间帮助大象,和我们要主动帮忙的情境不符合哦,再选一次吧~
+Logan:The keepers are too careless! Thank you! Can you help her shower?
+
+# 中间回合3
+Brainy:Logan说饲养员太粗心了,还感谢你们,问你们能不能帮忙给大象洗澡,你要回应说你们很乐意帮忙哦。
+用户选项:
+A. We'd love to help. ✓
+  Brainy:回答正确!你做得真好,大声把这句话读出来吧~
+B. We are too busy to help her.
+  Brainy:这句话是说我们太忙了帮不了她,和我们愿意帮忙的想法不一样哦,再试试吧~
+C. We have to go home now, bye.
+  Brainy:这句话是说我们现在得回家了,不是答应帮忙的回应哦,再选一次吧~
+Logan:Great. We will send some water to her right away.
+
+# 结尾回合
+Brainy:太棒啦!你已经顺利完成了求助清洁工人给大象送水帮忙洗澡的任务,你表现得超棒哦~
+```
+
+ +
+ +
```
+# 1. 角色(你要扮演谁)
+你是Logan,在Wander Port的清洁站工作。你的语言风格亲切自然,适合儿童理解。
+# 2. 任务(你如何参与对话)
+1. 对话开场先询问大象的情况,确认大象是不是还没洗澡。
+2. 当用户告知大象需要洗澡后,告诉用户可以先等一等,或许饲养员很快就会来。
+3. 接下来询问用户是否愿意帮忙给大象洗澡。
+4. 如果用户明确表示愿意帮忙,先表达感谢,再告诉用户你会立刻送干净的水过去,然后自然结束对话。
+5. 如果用户表述模糊没有说清是否愿意帮忙,再重复询问一次是否愿意帮大象洗澡。
+6. 如果用户说不愿意帮忙,表达理解即可,不需要继续推进任务,自然结束对话。
+7. 如果用户说的内容和任务无关,可以礼貌回应后,把对话拉回当前的任务流程里。
+# 3. 背景信息
+你是Logan,在 Wander Port 的清洁站工作。清洁站附近有一只大象,人们都很喜欢她,喂她吃香蕉,帮她洗澡。这天你接到电话,几个孩子说大象需要洗澡,你意识到一定是饲养员粗心忘记了!孩子们说愿意帮助大象洗澡,需要借一些干净的水,你立刻答应。
+# 4. 语言风格
+- 使用 CEFR A1-A2 等级英语,避免复杂句,每句话不超过 10 个词,比如
+  "目的地" 可以用句子 Where are you going?,不用 destination,确保小学2-4年级的孩子能听懂
+- 回答一般不超过两句话
+- 避免重复表达,适当变换措辞
+# 5. 开场白 (仅用于首轮)
+由你开始对话,你会问用户:"Hi. What happened to the elephant?"
+# 6. 回应方式
+- 无论用户如何对话,你都应基于你的身份做出合理反应。
+- 每次最多只提问一个问题,等待用户回答后再继续。
+- 除开场轮次外,每次回应,可以先基于用户的话给一句反馈。然后再推进你的任务。
+```
+
+ +
+ +
elephant,shower,water,keepers,help,clean,Wander Port,banana
+
+
+ +
+
+ 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 + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
taskDesc
sceneDesc
img
key
resourceMapping
+
+ +
+ +
+ +
+ + + +
setting
+
+ +
+ +
+ +
+ + + +
config
+
+ +
+ +
+ +
+ + + +
learningPart
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 开场回合
+Chloe: Can I help you?
+
+# 中间回合1
+Brainy: 空乘Chloe主动上前询问你是否需要帮助,现在你需要告诉她你想找健身房,询问健身房的位置。
+用户选项:
+(选项 A)Where can I find the gym? [正确]
+  Brainy: 太棒了!你正确地问出了健身房的位置。请大声朗读这句话!
+(选项 B)Can I have a towel please?
+  Brainy: 这句话是索要毛巾的表达,现在你还没问清楚健身房的位置哦,先告诉Chloe你要找健身房吧,再试一次~
+(选项 C)What can I do in the gym?
+  Brainy: 这句话是询问健身房里可以做什么的,现在你首先要问清楚健身房在哪里哦,再试一次吧。
+Chloe: Look, it's over there at the end of this walkway.
+
+# 中间回合2
+Brainy: Chloe已经告诉了你健身房在走道的尽头,现在你还需要向她索要一条毛巾,方便之后运动使用。
+用户选项:
+(选项 A)Where can I find the gym?
+  Brainy: 你已经问过健身房的位置啦,Chloe也告诉过你啦,现在你需要向她要毛巾哦,再试一次吧。
+(选项 B)Oh, and can I have a towel please? [正确]
+  Brainy: 太对啦!你准确地向Chloe提出了要毛巾的请求。请大声朗读这句话!
+(选项 C)I want to drink some water.
+  Brainy: 这句话是说你想要喝水,不符合现在要毛巾的需求哦,再试一次吧。
+Chloe: Of course! I'll bring a new one for you soon.
+
+# 中间回合3
+Brainy: Chloe同意给你拿新毛巾啦,现在你可以再问问她在健身房里还能做些什么,提前了解一下健身房的功能。
+用户选项:
+(选项 A)How much is the towel?
+  Brainy: 毛巾是Chloe免费提供给你的哦,不需要问价格,现在你要问问健身房里可以做的事,再试一次吧。
+(选项 B)Is the gym open now?
+  Brainy: 你已经知道健身房的位置啦,现在你可以问问在健身房里能做些什么哦,再试一次吧。
+(选项 C)What else can I do there? [正确]
+  Brainy: 非常好!你正确地问出了在健身房里还能做的其他事。请大声朗读这句话!
+Chloe: Well, you can do some exercise and enjoy sightseeing there. Or you can just relax.
+
+# 结尾回合
+Brainy: 你已经问清楚了健身房的位置、拿到了毛巾,也了解了健身房里可以做的事,任务圆满完成啦,可以准备去运动咯!
+```
+
+ +
+ +
```
+# 1. 角色(你要扮演谁)
+- 你是 Chloe,是 Twilight 的空乘,服务好每一位乘客是你的使命。
+- 你对曾经帮你解过围的用户格外友善热情,会耐心回应用户的所有提问。
+
+# 2. 任务(你如何参与到整个对话)
+- 你只在用户提问时提供特定信息,不主动透露知识库中的信息。
+- 如果用户提问的内容在知识库范围内,你会准确回答。
+- 如果用户的问题不清晰,你会尝试确认问题。
+- 一般情况下,一次最多只回答知识库中的一条信息,除非用户明确地分别提问到多条信息。
+- 如果用户不提问,你会温和、自然地进行交谈。
+
+# 3. 背景信息
+你是 Chloe,是 Twilight 的空乘,服务好每一位乘客是你的使命。
+用户之前帮你在另一位乘客面前解了围,你很感谢用户的帮忙,对用户的态度也格外友善热情。
+你发现用完餐的用户正在东张西望,似乎在寻找什么,你确认用户需要帮助,于是上前询问。你发现用户想去健身房消消食,但是不知道方向,于是回答了用户的问题,提供了你的帮助。
+
+# 4. 知识库(你知道的信息)
+- 你知道健身房就在前方过道的尽头。
+- 你会为有需要的用户准备一条新毛巾。
+- 你会解答用户的问题,告诉用户在健身房可以进行的活动:运动、看宇宙风光(sightseeing),或者可以拉伸放松、进行休息。
+- 对用户的任何提问,你都耐心安抚并一一回答。
+
+# 5. 语言风格
+- 使用 CEFR A1-A2 等级英语,避免复杂句,每句话不超过 10 个词,比如
+  "我要去..." 可以用句子 I am going to ...,不用 My destination is ...,确保小学2-4年级的孩子能听懂
+- 回答一般不超过两句话
+- 避免重复表达,适当变换措辞
+
+# 6. 开场白
+你由你开始对话,你会说:"Can I help you?"
+
+# 7. 回应方式(固定内容)
+- 你只在用户提问时才根据知识库中的信息回答。其他时候,以符合你身份的方式,自然地进行交谈。
+- 不主动提供知识库的信息
+- 不主动提问题
+```
+
+ +
+ +
gym,towel,exercise,sightseeing,relax,walkway
+
+
+ +
+
+ 22 + 核心看图说话 + cId: 0000800 + core_speaking_image + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
taskDesc
sceneDesc
key
resourceMapping
cDesc
+
+ +
+ +
+ +
+ + + +
config
+
+ +
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + +
questionImg
+
+ +
+ +
+ +
+
1234567891011121314151617181920212223
+ +
+
+ +
+ +
+
1234567891011
+ +
+
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 中间回合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 老师的所有问题,顺利完成了本次分享任务,真厉害!
+```
+
+ +
+ +
Mr Rock,Winter Island,winter,cold,snow
+
+
+ +
+
+ 23 + 核心合作听力 + cId: 0000800 + core_listening_order + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
sceneDesc
img
key
resourceMapping
+
+ +
+ +
+ +
+ + + + + + + +
audio
question
+
+ +
+ +
+ +
+ + + +
sequence
+
+ +
+ +
+ +
+ + + + + + + +
closing
learningPart
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 重点句子 1
+音频文本:When you really want sweet food, like biscuits or cake, you can bake at home.
+讲解文本:刚刚听到的音频中,包含了一个关键短语 bake at home,意思是在家烘焙。正确的发音是 /beɪk æt həʊm/。
+1. 听音选句
+Brainy:仔细听音频,选出你听到的正确句子哦。
+- When you really want sweet food, like biscuits or cake, you can bake at home. [正确]
+  - Brainy:太厉害啦!你精准听出了句子里的重点短语 bake at home!
+- When you really want sweet food, like biscuits or cake, you can buy at the shop.
+  - Brainy:不对哦,这句话说的是 buy at the shop,并不是 bake at home,再仔细听一遍音频试试吧!
+
+2. 听音选意
+Brainy:现在看看这句话的意思,选出正确的中文翻译吧。
+- 当你很想吃甜食,比如饼干或蛋糕时,你可以在家烘焙。[正确]
+  - Brainy:完全正确!你已经掌握了 bake at home 这个短语的意思,太棒啦!
+- 当你很想吃甜食,比如饼干或蛋糕时,你可以去商店买。
+  - Brainy:不对哦,句子里说的不是去商店买的意思,再好好想一想哦。
+---
+# 完成反馈
+Brainy:很好!你已经回答完了全部问题,相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!
+```
+
+ +
+ +
You listened to the second part of Max's fitness guide, learning that a healthy routine requires going to bed on time and getting up early, while staying away from smoking and alcohol. (你听了Max健身指南的第二部分,了解到健康的作息需要早睡早起,同时要远离烟酒。)
+You also learned that keeping healthy does not need a lot of money or expensive items, and good habits are the most important thing for health. (你还了解到保持健康不需要很多钱或者昂贵的物品,好习惯对健康来说才是最重要的。)
+
+
+ +
+
+ 24 + 核心听力拖拽 + cId: 0000800 + core_listening_drag + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
sceneDesc
key
resourceMapping
cDesc
+
+ +
+ +
+ +
+
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
+ +
+
+ +
+ +
+
12345678910111213141516171819202122232425
+ +
+
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 重点句子 1
+音频文本:Go between the red duck and the blue duck.
+讲解文本:刚刚听到的音频中,包含了一个关键短语 between...and...,意思是在……和……之间,用来描述两个事物中间的位置哦。
+1. 听音选句
+Brainy:仔细听音频哦,看看下面哪个句子是你刚刚听到的内容?
+- Go behind the red duck and the blue duck.
+  - Brainy:哎呀不对,这句话里的behind是“在……后面”的意思,我们听到的句子说的是两个鸭子中间的位置哦,再试试吧~
+- Go between the red duck and the blue duck. [正确]
+  - Brainy:太棒啦!你准确听出了句子里的重点短语between...and...,太厉害啦!
+
+2. 听音选意
+Brainy:“走到红色的鸭子和蓝色的鸭子中间去”,这句话的意思是这个吗?
+- 对 / Yes [正确]
+  - Brainy:完全正确!你不仅听懂了句子意思,还掌握了between...and...这个表示位置的短语哦,真棒!
+- 错 / No
+  - Brainy:不对哦,再仔细看看句子里描述的位置,再选一次试试看呀~
+---
+# 完成反馈
+Brainy:很好!你已经回答完了全部问题,相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!
+```
+
+ +
+ +
You joined the duck-herding activity, carefully observed the three different operation guides, and picked the right ways to lead all the fluffy ducks back to their safe pen smoothly. (你参与了赶鸭子的活动,仔细查看了三份不同的操作指引,选对了方法,顺利把所有毛茸茸的小鸭子都赶回了安全的鸭圈里。)
+
+
+ +
+
+ 25 + 核心听力选择 + cId: 0000800 + core_listening_choose + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
sceneDesc
key
resourceMapping
cDesc
+
+ +
+ +
+ +
+
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
+ +
+
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 重点句子 1
+音频文本:This summer!
+讲解文本:刚刚听到的音频里包含了关键单词 summer,意思是夏天,是一年里天气很热的季节哦。
+1. 听音选句
+Brainy:仔细听音频,下面哪个句子和你听到的内容一致呢?
+- This summer! [正确]
+  - Brainy:太厉害啦!你精准听出了这个表达!
+- This winter!
+  - Brainy:哎呀,这句话说的是冬天,和你听到的内容不一样哦,再试着听一遍吧。
+
+2. 听音选意
+Brainy:这句话的中文意思是“这个冬天”,对不对呀?
+- 对 / Yes
+  - Brainy:不对哦,summer是夏天的意思,不是冬天,再想想看~
+- 错 / No [正确]
+  - Brainy:太棒啦!你已经知道summer是夏天,完全理解这句话的意思啦!
+---
+# 完成反馈
+Brainy:很好!你已经回答完了全部问题,相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!
+```
+
+ +
+ +
You first listened to the conversation between Jack and the kid, learning that it is hot summer now, and the kid needs the shorts between the rocks. (你听了Jack和小朋友的对话,了解到现在是炎热的夏天,小朋友需要石头中间的短裤。)
+You then found the correct season, confirmed the kid needs shorts, and decided Jack should help get the shorts for the kid. (你找到了对应的季节,确认小朋友需要短裤,并且决定Jack应该帮忙把短裤拿给小朋友。)
+
+
+ +
+
+ 26 + 核心看图组句 + cId: 0000800 + core_writing_imgMakeSentence + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cId
cType
title
taskDesc
sceneDesc
img
plotSummary
stemDesc
key
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + +
inputType
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
title
taskDesc
sceneDesc
knowledge
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 问题1:
+Brainy: 你们整理完线索后,准备向Luisa教授汇报飞船坠落的位置,现在你要首先表达自己对飞船坠落位置的推测,你会说:
+用户选项:
+(选项 A)I think the spaceship fell... [正确]
+  Brainy: 太棒了!这句话正好可以用来引出你对飞船坠落位置的推测,符合汇报的语境哦。
+(选项 B)I saw trees with...
+  Brainy: 这句话是描述你看到的树木特征,不是用来表达对飞船坠落位置的推测的,再试一下吧。
+(选项 C)I heard a loud noise in...
+  Brainy: 这句话是说你听到某个方向有巨响,是在描述听到的声响,不是表达坠落位置的推测哦,再想想。
+
+# 问题2:
+Brainy: 你想向教授补充你观察到的现场树木的特殊特征,来辅助判断坠落位置,你会怎么说:
+用户选项:
+(选项 A)I think the spaceship fell...
+  Brainy: 这句话是用来推测飞船坠落位置的,不是描述树木特征的哦,再试一次吧。
+(选项 B)I saw trees with... [正确]
+  Brainy: 太对啦!这句话刚好可以用来描述你看到的带有特征的树木,能给教授提供更多现场线索哦。
+(选项 C)I heard a loud noise in...
+  Brainy: 这句话是描述你听到的声响,和描述树木特征没有关系哦,再想想怎么说更合适。
+
+# 问题3:
+Brainy: 你还要告诉教授你当时听到巨响的方向,帮助进一步缩小飞船坠落的范围,你会说:
+用户选项:
+(选项 A)I think the spaceship fell...
+  Brainy: 这句话是表达对坠落位置的推测,不是描述听到声响的方向哦,再试一下吧。
+(选项 B)I saw trees with...
+  Brainy: 这句话是描述你看到的树木情况,和说明声响方向的需求不符哦,再想想。
+(选项 C)I heard a loud noise in... [正确]
+  Brainy: 完全正确!这句话正好可以说明你在某个方向听到了巨大声响,能帮教授更精准地定位飞船坠落位置。
+```
+
+ +
+ +
Dear Alex, I hope this email finds you well. We can take care of each other.(亲爱的亚历克斯:希望你一切都好。我们可以互相照顾。)
+
+
+ +
+
+ 27 + 核心看图撰写 + cId: 0000800 + core_writing_imgWrite + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cId
cType
title
taskDesc
sceneDesc
img
plotSummary
stemDesc
key
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + +
inputType
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
title
taskDesc
sceneDesc
knowledge
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 问题1:
+Brainy: 现在你要填写大象护理记录的动物类型一栏,需要告诉大家这次护理的动物是什么,你应该怎么填呢?
+用户选项:
+(选项 A)Elephant [正确]
+  Brainy: 太棒了!你选对了,elephant就是“大象”的意思,准确填写了护理的动物类型。
+(选项 B)Banana
+  Brainy: 不对哦,banana是“香蕉”,是大象吃的食物,不是动物类型,再试试看吧。
+(选项 C)Shower
+  Brainy: 不对哦,shower是“淋浴、洗澡”,是给大象做的清洁项目,不是动物类型,再试试看吧。
+
+# 问题2:
+Brainy: 接下来要填写护理记录里的食物部分,记录里写了“She ate ___”,你要告诉大家大象今天吃了什么,该选哪个填进去呢?
+用户选项:
+(选项 A)bananas [正确]
+  Brainy: 答对啦!banana是“香蕉”,这里用复数形式bananas,准确记录了大象吃的食物。
+(选项 B)elephants
+  Brainy: 不对哦,elephant是“大象”,这里是要填写大象吃的食物,不是动物本身,再试试看吧。
+(选项 C)a shower
+  Brainy: 不对哦,a shower是“一次洗澡”,属于清洁项目,不是食物,再试试看吧。
+
+# 问题3:
+Brainy: 现在要填清洁记录部分,句子是“She had ___ today”,需要你记录今天大象做了什么清洁项目,该选哪个呢?
+用户选项:
+(选项 A)a shower [正确]
+  Brainy: 太聪明啦!a shower就是“洗澡”的意思,正好符合你今天给大象清洁的内容。
+(选项 B)bananas
+  Brainy: 不对哦,bananas是“香蕉”,属于食物,不是清洁项目,再试试看吧。
+(选项 C)an elephant
+  Brainy: 不对哦,elephant是“大象”,是这次护理的对象,不是清洁项目,再试试看吧。
+
+# 问题4:
+Brainy: 最后要总结大象的喜好,你需要用正确的句子说明大象喜欢什么,该怎么说呢?
+用户选项:
+(选项 A)The elephant loves showers and bananas! [正确]
+  Brainy: 完全正确!你准确用了“...love(s)...”的结构表达大象的喜好,完美总结了今天的护理内容。
+(选项 B)The elephant eats showers and bananas!
+  Brainy: 不对哦,这里eat是“吃”的意思,shower是洗澡不能被吃,应该用love表达喜爱,再试试看吧。
+(选项 C)The elephant loves showers only!
+  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 + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cId
cType
title
taskDesc
sceneDesc
img
plotSummary
stemDesc
key
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + +
inputType
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
title
taskDesc
sceneDesc
knowledge
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 问题1:
+Brainy: 邮件开头你已经向Rebecca表达了理解她的担忧,也说明了这是探索Wander Port的绝佳机会,现在你要进一步说明这份探索工作对你们的重要性,你会怎么说?
+用户选项:
+(选项 A)The job is important for us. [正确]
+  Brainy: 答对啦!你准确表达了“这份工作对我们很重要”的含义,和上下文衔接得非常自然。
+(选项 B)The jobs is important for us.
+  Brainy: 不对哦,jobs是job的复数形式,后面的be动词应该用are,和句中的is不匹配,而且这里指的是探索Wander Port这一项工作,应该用单数形式job,再试试吧。
+(选项 C)The projects is important for us.
+  Brainy: 不对哦,projects是“项目”的复数形式,后面的be动词应该用are,和句中的is不匹配,语义也不符合这里表达“探索工作”的语境,再试试吧。
+
+# 问题2:
+Brainy: 你已经说明了这份探索工作的重要性,现在想要表达“这就是为什么我们必须留下来”,你会怎么组织这句话?
+用户选项:
+(选项 A)That's how we have to stay.
+  Brainy: 不对哦,how是询问方式的引导词,这句话的意思变成了“我们就是这样得留下来的”,不符合你要解释留下原因的语境,再试试吧。
+(选项 B)That's why we have to stay. [正确]
+  Brainy: 太棒了!你用That's why...的句式准确表达了做某事的原因,完美对应了“这就是为什么我们必须留下来”的含义。
+(选项 C)That's which we have to stay.
+  Brainy: 不对哦,which是引导定语从句的关系代词,不能在这里引导表语从句说明原因,语义不通顺,再试试吧。
+
+# 问题3:
+Brainy: 你已经告知了Rebecca你们的决定,现在你想询问她什么时候会抵达Wander Port,你会怎么问?
+用户选项:
+(选项 A)When will you arrive? [正确]
+  Brainy: 太好啦!你准确使用了一般将来时的特殊疑问句结构,正确询问了对方抵达的时间,非常符合邮件的语境。
+(选项 B)When is you arrive?
+  Brainy: 不对哦,arrive是实义动词,构成疑问句需要借助助动词,不能用be动词is,而且is和第二人称you也不搭配,再试试吧。
+(选项 C)How is you arrive?
+  Brainy: 不对哦,这句话既有疑问词使用错误(how是询问方式,你要问的是时间),也有语法错误,实义动词arrive的疑问句不能用be动词is引导,再试试吧。
+```
+
+ +
+ +
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 + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cId
cType
title
taskDesc
sceneDesc
img
plotSummary
stemDesc
key
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + +
inputType
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
title
taskDesc
sceneDesc
knowledge
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 问题1:
+Brainy: 邮件开头你已经表达了理解Rebecca的担心,也说明了这次是探索Wander Port的绝佳机会,现在想要强调相关工作对你们的重要性,你会怎么说?
+用户选项:
+(选项 A)The job is important for us. [正确]
+  Brainy: 答对啦!你准确表达了“这份工作对我们很重要”的含义,和上下文逻辑衔接得非常好。
+(选项 B)The jobs are important for us.
+  Brainy: 这里be动词用了is,说明主语是单数,jobs是复数形式,和主谓一致的规则不符哦,再试一下吧。
+(选项 C)The projects are important for us.
+  Brainy: projects是“项目”的意思,不符合这里想要表达“这份工作很重要”的语义,而且be动词也和主语不匹配,再想想哦。
+
+# 问题2:
+Brainy: 你已经说明了这份工作的重要性,现在想要接着解释这就是你们必须留下的原因,你会怎么表达?
+用户选项:
+(选项 A)That's how we have to stay.
+  Brainy: how是询问方式的疑问词,这句话的意思是“我们就是这样必须留下的”,不符合想要解释原因的语境哦,再试一次吧。
+(选项 B)That's why we have to stay. [正确]
+  Brainy: 太棒了!你准确使用了That's why...的句式来解释原因,完美表达了“这就是我们必须留下的原因”的意思。
+(选项 C)That's which we have to stay.
+  Brainy: which通常用来指代事物,不能用来引导表语从句说明原因,语义不通顺哦,再想想吧。
+
+# 问题3:
+Brainy: 你已经讲清了留下的决定,接着你询问Rebecca会不会来Wander Port,现在想要进一步问她如果来的话什么时候会到,你会怎么说?
+用户选项:
+(选项 A)If so, when is you arrive?
+  Brainy: arrive是实义动词,构成疑问句需要借助助动词will而不是be动词is,这个表达语法不正确哦,再试一下吧。
+(选项 B)If so, how is you arrive?
+  Brainy: 这句话既不符合询问时间的语义,助动词和主谓搭配也都是错误的,再想一想哦。
+(选项 C)If so, when will you arrive? [正确]
+  Brainy: 太厉害啦!你准确使用了将来时的特殊疑问句,正确表达了询问对方到达时间的意思,完全符合语境要求。
+```
+
+ +
+ +
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 + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
asrPrompt
resourceMapping
preDialog
imgShowTimingList
img
tip
corFeedback
errFeedback
question
example
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 31 + 对话选择 + cId: 0000800 + mid_dialog_choose + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
img
optionList
answer
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 32 + 对话选读 + cId: 0000800 + mid_dialog_select + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
optionList
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 33 + 信息描写 + cId: 0000800 + mid_message_trace + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
cDesc
question
trace
img
inputSet
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 34 + 信息拼词 + cId: 0000800 + mid_message_spell + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
cDesc
question
tip
inputConfig
stemList
img
inputSet
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 35 + 信息组句 + cId: 0000800 + mid_message_combine + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
cDesc
question
tip
optionList
answer
img
inputSet
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 36 + 信息补词 + cId: 0000800 + mid_message_fillin + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
cDesc
question
tip
inputConfig
img
inputSet
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 37 + 信息填词 + cId: 0000800 + mid_message_word + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
cDesc
question
tip
answer
img
inputSet
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 38 + 信息填句 + cId: 0000800 + mid_message_sentence + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
cDesc
question
tip
answerHint
img
inputSet
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 39 + 图片单选 + cId: 0000800 + mid_image_choose + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
meaning
resourceMapping
question
imageInfo
optionList
answer
preDialog
tip
corFeedback
errFeedback
postDialog
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 40 + 图片多选 + cId: 0000800 + mid_image_multiple + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
meaning
resourceMapping
question
imageInfo
optionList
answer
preDialog
tip
corFeedback
errFeedback
postDialog
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 41 + 图片有序 + cId: 0000800 + mid_image_sequence + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
meaning
resourceMapping
question
imageInfo
optionList
answer
preDialog
tip
corFeedback
errFeedback
postDialog
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 42 + 图片拖拽 + cId: 0000800 + mid_image_drag + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
meaning
resourceMapping
question
imageInfo
optionList
answer
preDialog
tip
corFeedback
errFeedback
postDialog
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+ + + + + + + \ No newline at end of file diff --git a/skills/interactive-component-json/outputs/L1-S2-U14-L1 到你上学啦 _组件录入测试-全量__20260509_111203.html b/skills/interactive-component-json/outputs/L1-S2-U14-L1 到你上学啦 _组件录入测试-全量__20260509_111203.html new file mode 100644 index 0000000..dc63ebd --- /dev/null +++ b/skills/interactive-component-json/outputs/L1-S2-U14-L1 到你上学啦 _组件录入测试-全量__20260509_111203.html @@ -0,0 +1,15787 @@ + + + + + +L1-S2-U14-L1 到你上学啦 (组件录入测试-全量) — 组件JSON报告 + + + + + +
+ + +
+
+
就绪
+
+
+ 成功: 0 + 失败: 0 +
+
+ +
+
+

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

+
+ 生成时间: 2026-05-09 11:12:03 + 模型: doubao-seed-2.0-pro + Wiki: AEPJwf0DUiDkWska4SbceSAbnyc +
+
+ +
+
+
13
核心互动
+
29
中互动
+
+
42
总组件
+
41
成功
+
0
失败
+ +
+ + +
+
+ 1 + 对话朗读 + cId: 0000800 + mid_dialog_repeat + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
img
question
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 2 + 对话挖空 + cId: 0000801 + mid_dialog_fillin + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionGroupList
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 3 + 对话朗读 + cId: 0000802 + mid_dialog_repeat + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 4 + 对话朗读 + cId: 0000803 + mid_dialog_repeat + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 5 + 对话朗读 + cId: 0000804 + mid_dialog_repeat + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 6 + 对话组句 + cId: 0000805 + mid_dialog_sentence + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionList
answer
tip
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 7 + 对话朗读 + cId: 0000806 + mid_dialog_repeat + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
img
question
postDialog
+
+ +
+
+ +
+
+ 8 + 对话朗读 + cId: 0000807 + mid_dialog_repeat + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
img
question
postDialog
+
+ +
+
+ +
+
+ 9 + 对话挖空 + cId: 0000808 + mid_dialog_fillin + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionGroupList
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 10 + 对话朗读 + cId: 0000809 + mid_dialog_repeat + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
img
question
postDialog
+
+ +
+
+ +
+
+ 11 + 核心听力选择 + cId: 0000810 + core_listening_choose + + + + 已保存 + +
+
+
+ +
+
+ +
+ +
请您提供具体的题目材料和相关正确答案内容哦,只有收到这些核心信息我才能按照要求生成对应的叙事化描述~
+
+
+ +
+
+ 12 + 对话组句 + cId: 0000811 + mid_dialog_sentence + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionList
answer
tip
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 13 + 对话组句 + cId: 0000812 + mid_dialog_sentence + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionList
answer
tip
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 14 + 对话挖空 + cId: 0000813 + mid_dialog_fillin + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionGroupList
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 15 + 对话组句 + cId: 0000814 + mid_dialog_sentence + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionList
answer
tip
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 16 + 对话挖空 + cId: 0000815 + mid_dialog_fillin + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionGroupList
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 17 + 核心合作阅读 + cId: 0000800 + core_reading_order + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
sceneDesc
img
key
resourceMapping
+
+ +
+ +
+ +
+ + + + + + + +
text
question
+
+ +
+ +
+ +
+ + + +
sequence
+
+ +
+ +
+ +
+ + + + + + + +
closing
learningPart
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 材料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:我们先来认识这段话里的重点单词 exams,exams的意思是考试,参加考试可以说take exams。
+1. 句意选择题
+Brainy:我们来看包含exams的句子“At Vala Academy, Pioneers don't have exams.”是什么意思呢?
+- 在瓦拉学院,先锋们不用参加考试。[正确]
+  Brainy:答对啦!你完全掌握了exams的意思和这句话的含义哦~
+- 在瓦拉学院,先锋们不用参加俱乐部活动。
+  Brainy:不对哦,俱乐部活动的英文是club activities,并不是我们这里讲的exams,再回顾下单词释义吧。
+
+2. 段落大意题
+Brainy:了解了单词和句子的意思,我们来看看这段主要讲了什么内容吧?
+- 瓦拉学院的先锋们不需要考试,但需要攒积分来升级。[正确]
+  Brainy:太棒了!你准确抓住了“没有考试”和“需要积分升级”两个核心信息哦。
+- 瓦拉学院的先锋们不仅要参加考试,还要攒积分才能升级。
+  Brainy:和原文意思相反啦,原文明确说先锋们是没有考试的,再仔细读一遍段落内容吧。
+# 段落2
+## 段落内容
+---
+You can choose your favourite club to join. If you are interested in something, you can find a club for it.
+---
+## 互动题目
+Brainy:这段话的重点单词是club,club的意思是俱乐部,加入俱乐部可以说join a club。
+1. 句意选择题
+Brainy:我们来看包含club的句子“You can choose your favourite club to join.”是什么意思呢?
+- 你可以选择自己最喜欢的课程去学习。
+  Brainy:不对哦,课程的英文是course,不是我们这里讲的club,再看看单词的正确释义吧。
+- 你可以选择自己最喜欢的俱乐部加入。[正确]
+  Brainy:回答正确!你已经掌握了club的意思和这个句子的含义啦。
+
+2. 段落大意题
+Brainy:接下来我们看看这段整体在说什么内容吧?
+- 你可以挑选感兴趣的俱乐部加入,如果有感兴趣的事,也能找到对应的俱乐部。[正确]
+  Brainy:太厉害啦!你完整理解了段落要表达的两层意思哦。
+- 所有俱乐部都很受欢迎,你必须加入其中一个。
+  Brainy:这段没有提到俱乐部受欢迎,也没有说必须加入俱乐部哦,再仔细看看段落内容吧。
+# 完结反馈
+Brainy:恭喜你完成了本次的所有学习任务,对内容掌握得很不错哦,继续加油呀!
+```
+
+
+ +
+
+ 18 + 核心看图选词 + cId: 0000800 + core_reading_imageDrag + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
taskDesc
sceneDesc
key
resourceMapping
cDesc
+
+ +
+ +
+ +
+
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
+ +
+
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 小题 4
+## 材料内容
+【展示该小题对应的图片 ID:1201001_02.png】
+
+## 互动题目
+### 1. 句意选词题
+Brainy:这道题我们要认识表示地点的名词哦,先看看这几个单词哪个是“湖”的意思吧~
+- 选项 A:tree
+  Brainy:tree的意思是“树”,河马不住在树上哦,再选一次试试看吧~
+- 选项 B:lake [正确]
+  Brainy:答对啦!lake就是“湖”的意思,你太棒啦,这个单词你记住啦~
+- 选项 C:grass
+  Brainy:grass的意思是“草”,河马的栖息地不是草地哦,再想想看吧~
+
+### 2. 原题降级
+Brainy:Ben问“河马住在哪里呀?”,你要选合适的单词填到空里,说明河马的居住地点哦。
+- 选项 A:lake [正确]
+  Brainy:答对了!河马是住在湖里的,非常符合常识~ 现在大声朗读这句话:"Where do hippos live? In the lake." 吧~
+- 选项 B:tree
+  Brainy:树是很多小鸟或者小松鼠的家,河马这么大的体型可住不到树上哦,根据图片里的场景再选一次吧~
+- 选项 C:grass
+  Brainy:草地通常是小羊、小马活动的地方,河马大部分时间都待在水里哦,再想想看吧~
+
+---
+# 小题 5
+## 材料内容
+【展示该小题对应的图片 ID:1201001_02.png】
+
+## 互动题目
+### 1. 句意选词题
+Brainy:这道题我们要选动物园里有的东西哦,先看看这几个单词哪个是“树”的意思吧~
+- 选项 A:lake
+  Brainy:lake的意思是“湖”,湖属于自然景观,不是动物园里特有的动物哦,再选一次试试看吧~
+- 选项 B:tree [正确]
+  Brainy:答对啦!tree就是“树”的意思,动物园里会种树给动物们提供栖息的地方哦,你太棒啦~
+- 选项 C:grass
+  Brainy:grass的意思是“草”,草是很常见的植物,不是动物园里特有的动物哦,再想想看吧~
+
+### 2. 原题降级
+Brainy:Brainy问“动物园里还有什么其他的东西?”,你要选合适的选项,说明动物园里存在的事物哦。
+- 选项 A:lake
+  Brainy:湖一般是自然形成的水域,动物园里不会特意设置湖哦,结合你对动物园的了解再选一次吧~
+- 选项 B:tree [正确]
+  Brainy:答对了!动物园里会种植很多树木,给动物们遮阴、提供栖息地,非常符合场景~ 现在大声朗读这个回答:"There are trees in the zoo." 吧~
+- 选项 C:grass
+  Brainy:草坪在公园、路边都很常见,不是动物园里特有的事物哦,再想想看吧~
+
+---
+# 完结反馈
+Brainy:太棒了!你已经完成了所有的对话任务,还复习了lake、tree这些重点单词,学会了回答关于动物栖息地和动物园事物的问题,你的英语又进步啦!
+```
+
+ +
+ +
When you arrive at the Word Castle, you see the first sentence on the wall, which asks where hippos live. You pick the word "lake" to fill in the blank, completing the sentence "in the lake" smoothly.(你来到单词城堡后看到墙上的第一个句子询问河马的栖息地,你选了lake这个单词补全空白,顺利完成了“在湖里”这个表述。)
+Next, you look at the second sentence on the castle wall, which is about other animals in the zoo. You choose the word "tree" as the fitting answer, getting one step closer to opening the castle gate.(接着你看城堡墙上的第二个关于动物园里其他动物的句子,你选了tree作为合适的答案,离打开城堡大门又近了一步。)
+
+
+ +
+
+ 19 + 核心口语快答 + cId: 0000800 + core_speaking_reply + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
taskDesc
sceneDesc
img
key
resourceMapping
+
+ +
+ +
+ +
+ + + +
setting
+
+ +
+ +
+ +
+ + + +
config
+
+ +
+ +
+ +
+ + + +
learningPart
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 开场回合
+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 likes eating bananas. We want to feed her.
+  Brainy:这句话的意思是“大象喜欢吃香蕉,我们想要喂她”,现在我们是要和Logan说大象需要洗澡的事哦,不是要喂大象,再选一次吧。
+(C)The elephant is missing. We can't find her anywhere.
+  Brainy:这句话的意思是“大象不见了,我们到处都找不到她”,但实际大象只是需要洗澡,并没有失踪哦,再试一次吧。
+Logan:Are you saying she hasn't had a shower yet? Maybe someone will probably come soon.
+
+# 中间回合2
+Brainy:Logan问你是不是说大象还没洗澡,他说可能很快就会有人来处理啦。现在你要回应他,与其在这等,不如我们先去给大象拿点水。
+用户选项:
+(A)We can wait for the keeper to come and help her.
+  Brainy:这句话的意思是“我们可以等饲养员过来帮她”,但我们现在想表达的是不要等,自己先去拿水哦,不符合当前要表达的意思,再选一次吧。
+(B)Instead of waiting here, we'd better get some water for her first. ✅
+  Brainy:完全正确!快把这句话大声读出来吧~
+(C)We don't want to help the elephant take a shower.
+  Brainy:这句话的意思是“我们不想帮大象洗澡”,但我们本来就是来帮忙的呀,意思完全反啦,再试一次哦。
+Logan:The keepers are too careless! Thank you! Can you help her shower?
+
+# 中间回合3
+Brainy:Logan说饲养员太粗心了,还感谢了你们,现在他问你们能不能帮忙给大象洗澡,你要告诉他你们很乐意帮忙哦。
+用户选项:
+(A)We'd love to help. ✅
+  Brainy:选对啦,你真棒!快来朗读一下这句话吧~
+(B)We are too busy to help her.
+  Brainy:这句话的意思是“我们太忙了,没法帮她”,我们本来就是来帮忙的,可不能这么说哦,再选一次吧。
+(C)We don't have any time to play with her.
+  Brainy:这句话的意思是“我们没时间和她玩”,现在Logan问的是能不能帮忙洗澡,不是问要不要和大象玩哦,再试一次吧。
+Logan:Great. We will send some water to her right away.
+
+# 结尾回合
+Brainy:你太棒啦!已经顺利和Logan沟通好了,他马上就会送干净的水过来,你们可以一起帮大象洗澡咯,本次任务完成~
+```
+
+ +
+ +
```
+# 1. 角色(你要扮演谁)
+你是Logan,在Wander Port的清洁站工作。你的语言风格亲切易懂,适合儿童沟通。
+# 2. 任务(你如何参与对话)
+1. 对话开场主动询问用户大象的情况,确认大象是否需要洗澡。
+2. 当用户说明大象需要洗澡后,告诉用户可以先等一等,或许饲养员很快就会来。
+3. 之后询问用户是否愿意帮忙给大象洗澡。
+4. 如果用户表示愿意帮忙,先表达感谢,然后告知对方会马上送干净的水过去。
+5. 如果用户表示不愿意帮忙,告诉对方没关系,你会自己想办法给大象洗澡,自然结束对话。
+6. 如果用户的回答你听不懂,友好地请对方再说一次,可以说"Pardon?"。
+7. 完成所有任务后,简单和用户道别,结束对话。
+# 3. 背景信息
+你是Logan,在 Wander Port 的清洁站工作。清洁站附近有一只大象,人们都很喜欢她,喂她吃香蕉,帮她洗澡。这天你接到电话,几个孩子说大象需要洗澡,你意识到一定是饲养员粗心忘记了!孩子们说愿意帮助大象洗澡,需要借一些干净的水,你立刻答应。
+# 4. 语言风格
+- 使用 CEFR A1-A2 等级英语,避免复杂句,每句话不超过 10 个词,比如
+  "目的地" 可以用句子 Where are you going?,不用 destination,确保小学2-4年级的孩子能听懂
+- 回答一般不超过两句话
+- 避免重复表达,适当变换措辞
+# 5. 开场白 (仅用于首轮)
+由你开始对话,你会问用户:"Hi. What happened to the elephant?"
+# 6. 回应方式
+- 无论用户如何对话,你都应基于你的身份做出合理反应。
+- 每次最多只提问一个问题,等待用户回答后再继续。
+- 除开场轮次外,每次回应,可以先基于用户的话给一句反馈。然后再推进你的任务。
+```
+
+ +
+ +
elephant,shower,water,keepers,help,clean,Wander Port,Logan
+
+
+ +
+
+ 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 + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
taskDesc
sceneDesc
img
key
resourceMapping
+
+ +
+ +
+ +
+ + + +
setting
+
+ +
+ +
+ +
+ + + +
config
+
+ +
+ +
+ +
+ + + +
learningPart
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 开场回合
+Chloe:Can I help you?
+
+# 中间回合1
+Brainy:空乘Chloe主动问你是否需要帮助,你现在需要向她询问健身房的位置哦。
+用户选项:
+(选项 A)Where can I find the gym? [正确]
+  Brainy:太棒了!你正确问出了健身房的位置。请大声朗读这句话!
+(选项 B)Can I have a towel please?
+  Brainy:这句话是询问能不能要毛巾的,现在你还没问健身房位置哦,再试一次吧。
+(选项 C)What can I do in the gym?
+  Brainy:这句话是问在健身房可以做什么的,你现在需要先问健身房的位置哦,再选一次吧。
+Chloe:Look, it's over there at the end of this walkway.
+
+# 中间回合2
+Brainy:Chloe已经告诉了你健身房在走道的尽头,现在你可以向她讨要一条毛巾,方便之后运动使用哦。
+用户选项:
+(选项 A)Where is the restaurant?
+  Brainy:这句话是问餐厅在哪里的,不是要毛巾的表达哦,再试一次吧。
+(选项 B)Oh, and can I have a towel please? [正确]
+  Brainy:太厉害啦!你正确地向Chloe提出了要毛巾的请求。请大声朗读这句话!
+(选项 C)I want a bottle of water.
+  Brainy:这句话是说你想要一瓶水,不是要毛巾的内容哦,再试一次吧。
+Chloe:Of course! I'll bring a new one for you soon.
+
+# 中间回合3
+Brainy:Chloe说会马上给你拿一条新毛巾,现在你可以问问她在健身房还能做些什么,提前了解下健身房的功能哦。
+用户选项:
+(选项 A)What else can I do there? [正确]
+  Brainy:你太聪明啦!准确问出了在健身房还能做的事。请大声朗读这句话!
+(选项 B)How much is the towel?
+  Brainy:这句话是问毛巾多少钱的,不需要问价格哦,你现在要了解的是健身房的其他用途,再试一次吧。
+(选项 C)When does the gym close?
+  Brainy:这句话是问健身房什么时候关门的,不是询问能做什么的表达哦,再选一次吧。
+Chloe:Well, you can do some exercise and enjoy sightseeing there. Or you can just relax.
+
+# 结尾回合
+Brainy:Chloe已经告诉你在健身房可以运动、欣赏风景,也可以放松休息,你已经问清楚了健身房的相关信息,任务圆满完成啦!
+```
+
+ +
+ +
```
+# 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 + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
taskDesc
sceneDesc
key
resourceMapping
cDesc
+
+ +
+ +
+ +
+ + + +
config
+
+ +
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + +
questionImg
+
+ +
+ +
+ +
+
1234567891011121314151617181920212223
+ +
+
+ +
+ +
+
1234567891011
+ +
+
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 中间回合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 Island,Mr Rock,winter,cold,snow,season,hot
+
+
+ +
+
+ 23 + 核心合作听力 + cId: 0000800 + core_listening_order + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
sceneDesc
img
key
resourceMapping
+
+ +
+ +
+ +
+ + + + + + + +
audio
question
+
+ +
+ +
+ +
+ + + +
sequence
+
+ +
+ +
+ +
+ + + + + + + +
closing
learningPart
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 重点句子 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 bake at home. [正确]
+  - Brainy:太厉害啦!你精准听出了句子里的重点短语 bake at home!
+- When you really want sweet food, like biscuits or cake, you can buy at the shop.
+  - Brainy:哎呀不对哦,这句话说的是在商店购买,并不是我们听到的在家烘焙呀,再仔细听一遍音频试试~
+
+2. 听音选意
+Brainy:刚刚的句子是什么意思呢?选出正确的翻译吧。
+- 当你很想吃甜食,比如饼干或者蛋糕的时候,你可以在家烘焙。[正确]
+  - Brainy:完全正确!你已经掌握了 bake at home(在家烘焙)这个短语,太棒啦!
+- 当你很想吃甜食,比如饼干或者蛋糕的时候,你可以去商店买。
+  - Brainy:不对哦,这句话的动作和我们句子里说的不一样,再仔细想想句子里的关键短语是什么意思呀~
+---
+# 完成反馈
+Brainy:很好!你已经回答完了全部问题,相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!
+```
+
+ +
+ +
You listened to the second part of Max's fitness guide, learning that a healthy routine means going to bed on time and getting up early, and you should stay away from smoking and alcohol. (你听了Max健身指南的第二部分,了解到健康的作息是按时睡觉早起,还要远离抽烟和饮酒。)
+You also learned that keeping healthy does not need much money or expensive things, and good habits are the most important for health. (你还了解到保持健康不需要很多钱或者昂贵的东西,好习惯对健康来说才是最重要的。)
+
+
+ +
+
+ 24 + 核心听力拖拽 + cId: 0000800 + core_listening_drag + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
sceneDesc
key
resourceMapping
cDesc
+
+ +
+ +
+ +
+
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
+ +
+
+ +
+ +
+
12345678910111213141516171819202122232425
+ +
+
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 重点句子 1
+音频文本:Go between the red duck and the blue duck.
+讲解文本:刚刚听到的音频中,包含了一个关键短语 between...and...,意思是“在……和……之间”,用来描述两个事物中间的位置哦。
+1. 听音选句
+Brainy:仔细听音频,选出你听到的句子吧。
+- Go behind the red duck and the blue duck.
+  - Brainy:呀,这句话里的behind是“在……后面”的意思,不是我们听到的between哦,再听听看~
+- Go between the red duck and the blue duck. [正确]
+  - Brainy:太厉害啦!你准确听出了句子里的重点短语between...and...!
+
+2. 听音选意
+Brainy:“走到红色的鸭子和蓝色的鸭子中间去”,这句话是刚才听到的英文的意思吗?
+- 对 / Yes [正确]
+  - Brainy:完全正确!你不仅听懂了句子,还掌握了between...and...这个用来描述位置的实用短语哦,真棒~
+- 错 / No
+  - Brainy:再想想哦,这句话是在说具体要站到两只鸭子的哪个位置,再对照英文看看吧~
+---
+# 完成反馈
+Brainy:很好!你已经回答完了全部问题,相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!
+```
+
+ +
+ +
You took on the fun task of guiding everyone to herd the ducks, and carefully selected the right actions from the three different plans to make all the little ducks walk into the pen smoothly. (你承担了指挥大家赶鸭子的有趣任务,从三种不同的方案里选对了合适的动作,顺利让所有小鸭子都走进了围栏里。)
+
+
+ +
+
+ 25 + 核心听力选择 + cId: 0000800 + core_listening_choose + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
sceneDesc
key
resourceMapping
cDesc
+
+ +
+ +
+ +
+
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
+ +
+
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 重点句子 1
+音频文本:This summer!
+讲解文本:刚刚听到的音频中,包含了关键短语 summer,意思是夏天,是一年里天气最热的季节哦。
+1. 听音选句
+Brainy:仔细听音频,选出发音和听到的内容一致的句子吧。
+- This winter!
+  - Brainy:不对哦,这句话里的单词是winter(冬天),不是我们听到的夏天相关的单词,再试试呀。
+- This summer! [正确]
+  - Brainy:太厉害啦!你精准听出了句子里的重点单词summer!
+
+2. 听音选意
+Brainy:这句话的中文意思是“这个夏天!”,对不对呀?
+- 对 / Yes [正确]
+  - Brainy:完全正确!你已经掌握了summer这个单词的意思啦,真棒!
+- 错 / No
+  - Brainy:不对哦,再想一想夏天对应的英文单词是什么呀,重新选一次吧。
+---
+# 完成反馈
+Brainy:很好!你已经回答完了全部问题,相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!
+```
+
+ +
+ +
You chatted with Jack who was fishing by the road, and knew it's super hot summer right now, your face was all red from the heat.(你和在路边钓鱼的Jack聊天,得知现在是非常热的夏天,你的脸都被热红了。)
+You told Jack you didn't have any shorts to wear, and the shorts you needed were placed between the rocks.(你告诉Jack你没有短裤可以穿,你需要的短裤被放在岩石中间。)
+You asked Jack for help to get the shorts for you, and Jack was ready to give you a hand to pick them up.(你请求Jack帮你拿短裤,Jack准备好帮你把它们取过来。)
+
+
+ +
+
+ 26 + 核心看图组句 + cId: 0000800 + core_writing_imgMakeSentence + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cId
cType
title
taskDesc
sceneDesc
img
plotSummary
stemDesc
key
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + +
inputType
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
title
taskDesc
sceneDesc
knowledge
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 问题1:
+Brainy: 你们已经整理好现场线索,现在要向Luisa教授汇报你对飞船坠落位置的推断,你会怎么开场表达你的判断?
+用户选项:
+(选项 A)I think the spaceship fell... [正确]
+  Brainy: 太棒了!这句话正好可以用来引出你对飞船坠落位置的推断,符合汇报线索的场景。
+(选项 B)I saw trees with...
+  Brainy: 这句话是描述你看到的树木特征,不是用来表达对飞船坠落位置的判断哦,再试一下吧。
+(选项 C)I heard a loud noise in...
+  Brainy: 这句话是描述你听到声音的方位,不是用来表达你对飞船坠落位置的推断,再试试哦。
+
+# 问题2:
+Brainy: 你在坠落区域附近看到了树干有灼烧痕迹的树木,这是重要的线索,你要怎么向教授描述这个发现?
+用户选项:
+(选项 A)I think the spaceship fell...
+  Brainy: 这句话是用来推断飞船坠落位置的,不是描述你看到的树木特征哦,再试一下吧。
+(选项 B)I saw trees with... [正确]
+  Brainy: 做得好!这句话正好可以用来描述你观察到的树木特征,对应你发现的灼烧痕迹线索,非常合适。
+(选项 C)I heard a loud noise in...
+  Brainy: 这句话是描述你听到的声音信息,不是描述你看到的树木相关发现哦,再试试吧。
+
+# 问题3:
+Brainy: 你当时在现场听到西北方向传来巨大的坠落声响,这也是判断位置的重要依据,你要怎么向教授说明这个线索?
+用户选项:
+(选项 A)I think the spaceship fell...
+  Brainy: 这句话是用来表达对坠落位置的推断,不是描述你听到的声音线索哦,再试一下吧。
+(选项 B)I saw trees with...
+  Brainy: 这句话是描述你看到的视觉线索,不是描述你听到的声音信息哦,再试试吧。
+(选项 C)I heard a loud noise in... [正确]
+  Brainy: 太对了!这句话正好可以用来描述你听到声响的方位,能帮助教授更准确地判断飞船坠落位置。
+```
+
+ +
+ +
Dear Alex, I hope this email finds you well. We can take care of each other.(亲爱的亚历克斯,我希望你一切都好。我们可以互相照顾。)
+
+
+ +
+
+ 27 + 核心看图撰写 + cId: 0000800 + core_writing_imgWrite + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cId
cType
title
taskDesc
sceneDesc
img
plotSummary
stemDesc
key
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + +
inputType
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
title
taskDesc
sceneDesc
knowledge
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 问题1:
+Brainy: 现在你要填写护理记录的动物种类部分,这里记录的是今天照顾的大象,你需要填入对应的动物名称。
+用户选项:
+(选项 A)Elephant [正确]
+  Brainy: 答对啦!elephant就是“大象”的意思,正好对应我们今天照顾的动物,填写完全正确~
+(选项 B)Banana
+  Brainy: 不对哦,banana是“香蕉”,是大象吃的食物,不是动物种类。再想想我们今天照顾的是什么动物呀?
+(选项 C)Shower
+  Brainy: 不对哦,shower是“淋浴、洗澡”,是我们给大象做的清洁项目,不是动物种类。再想想我们今天照顾的是什么动物呀?
+
+# 问题2:
+Brainy: 接下来要填大象今天吃的食物,你们今天喂了大象香蕉,这里应该填什么呢?
+用户选项:
+(选项 A)shower
+  Brainy: 不对哦,shower是“洗澡”,是清洁项目不是食物,大象可不能吃这个~再想想我们喂给大象的食物是什么?
+(选项 B)bananas [正确]
+  Brainy: 太棒啦!banana是“香蕉”,这里用复数形式表示大象吃了不止一根香蕉,完全符合记录内容哦。
+(选项 C)elephant
+  Brainy: 不对哦,elephant是“大象”本身,当然不是它吃的食物啦。再想想我们喂给大象的食物是什么?
+
+# 问题3:
+Brainy: 现在填写清洁护理部分,今天你给大象洗了澡,这里应该填什么呢?
+用户选项:
+(选项 A)a shower [正确]
+  Brainy: 太对了!have a shower是“洗澡”的固定表达,说明今天给大象做了洗澡的清洁护理,填写正确~
+(选项 B)bananas
+  Brainy: 不对哦,bananas是香蕉,属于食物部分的内容,不是清洁项目哦。再想想我们给大象做的清洁是什么?
+(选项 C)an elephant
+  Brainy: 不对哦,elephant是大象本身,不是清洁护理的项目呀。再想想我们给大象做的清洁是什么?
+
+# 问题4:
+Brainy: 最后要总结大象的喜好,你发现大象很喜欢洗澡和吃香蕉,应该怎么说呢?
+用户选项:
+(选项 A)The elephant loves showers and bananas! [正确]
+  Brainy: 完美!你准确用了“...love(s)...”的结构表达出大象的喜好,完全符合我们今天观察到的情况哦。
+(选项 B)The elephant loves bananas and showers only.
+  Brainy: 这句话多加了“only(仅仅)”,我们今天只观察到大象喜欢这两样,但不能确定它只喜欢这两样哦,这样表述不准确,再试试。
+(选项 C)The elephant eat bananas and take a shower.
+  Brainy: 这句话只是陈述了大象今天做的事,没有表达出“喜爱”的意思,而且动词形式也不对哦,我们需要用love这个词来表达它的喜好,再试试吧。
+```
+
+ +
+ +
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 + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cId
cType
title
taskDesc
sceneDesc
img
plotSummary
stemDesc
key
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + +
inputType
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
title
taskDesc
sceneDesc
knowledge
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 问题1:
+Brainy: 你在邮件里向Rebecca解释留在Wander Port的原因,首先要说明这项探索任务对你们的重要性,你会怎么表达?
+用户选项:
+(选项 A)The job is important for us. [正确]
+  Brainy: 回答正确!job在这里指代你们的探索任务,使用单数形式准确对应这一项任务,完美表达了任务的重要性哦。
+(选项 B)The jobs are important for us.
+  Brainy: 不对哦,这里你们要完成的是一项探索任务,是单数,jobs是复数形式,和语境不符,再试一下吧。
+(选项 C)The projects is important for us.
+  Brainy: 不对哦,project通常指规模更大的项目,而且这里是单数主语,应该搭配is的话主语不能用复数projects,同时不符合当前指代探索任务的语境,再试一下吧。
+
+# 问题2:
+Brainy: 你已经说明这项探索任务的重要性,接下来要告诉Rebecca这就是你们必须留下来的原因,你会怎么说?
+用户选项:
+(选项 A)That's how we have to stay.
+  Brainy: 不对哦,how是用来询问或说明方式的,这里你要解释留下来的原因,所以这个词不符合语境,再试一下吧。
+(选项 B)That's why we have to stay. [正确]
+  Brainy: 太棒了!why用来引出原因,这句话准确表达了“这就是我们必须留下来的原因”,完全符合邮件里的逻辑哦。
+(选项 C)That's which we have to stay.
+  Brainy: 不对哦,which是关系代词,通常用来指代事物,不能用来引导表原因的从句,用在这里语法和语义都不对,再试一下吧。
+
+# 问题3:
+Brainy: 你已经告知了Rebecca你们留在Wander Port的决定和原因,现在想询问她什么时候会抵达这里,你会怎么问?
+用户选项:
+(选项 A)When is you arrive?
+  Brainy: 不对哦,arrive是实义动词,在疑问句里需要搭配助动词而不是be动词is,而且和第二人称you搭配的话也不能用is,语法有误哦,再试一下吧。
+(选项 B)How is you arrive?
+  Brainy: 不对哦,这里你要询问的是到达的时间,不是到达的方式,同时这个句子的语法也有错误,实义动词arrive不能和be动词is搭配使用,再试一下吧。
+(选项 C)When will you arrive? [正确]
+  Brainy: 太优秀了!你用一般将来时准确询问了对方抵达的时间,完全符合邮件里想知道Rebecca什么时候来的需求哦。
+```
+
+ +
+ +
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 + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cId
cType
title
taskDesc
sceneDesc
img
plotSummary
stemDesc
key
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + +
inputType
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
title
taskDesc
sceneDesc
knowledge
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 问题1:
+Brainy: 你在邮件里提到这次探索是宝贵的机会,接下来要说明这份工作对你们的重要性,你会怎么说?
+用户选项:
+(选项 A)The job is important for us. [正确]
+  Brainy: 答对啦!你准确表达了“这份工作对我们很重要”的意思,符合语境哦。
+(选项 B)The jobs are important for us.
+  Brainy: 这里你用了复数形式jobs,但我们要表达的是“这份探索工作”这一个任务,应该用单数形式job,再试一次吧。
+(选项 C)The projects are important for us.
+  Brainy: projects是“项目”的复数,我们需要表达的是“这份工作”的含义,不符合此处要表达的内容哦,再想想看。
+
+# 问题2:
+Brainy: 你已经说明了这份探索工作的重要性,现在要表达“这就是我们必须留下来的原因”,你会怎么组织语言?
+用户选项:
+(选项 A)That's how we have to stay.
+  Brainy: how是用来表达方式的,这句话的意思变成了“这就是我们得怎么留下来的方式”,不符合要说明留下原因的语境哦,再试一次。
+(选项 B)That's why we have to stay. [正确]
+  Brainy: 太棒了!用why准确引出了原因,完美表达了“这就是我们必须留下来的原因”的意思。
+(选项 C)That's which we have to stay.
+  Brainy: which通常用来引导定语从句指代事物,不能用来引导表语从句说明原因,这个表达是不正确的哦。
+
+# 问题3:
+Brainy: 你在邮件末尾询问Rebecca会不会来Wander Port,现在想进一步问她如果来的话什么时候到,你会怎么说?
+用户选项:
+(选项 A)If so, when is you arrive?
+  Brainy: arrive是实义动词,疑问句中需要用助动词will而不是be动词is,这个表达语法不正确哦,再调整一下。
+(选项 B)If so, how is you arrive?
+  Brainy: 这里我们要询问的是到达的时间,不是到达的方式,而且这个句子的语法也有错误,再想想正确的表达吧。
+(选项 C)If so, when will you arrive? [正确]
+  Brainy: 非常好!你正确用了when will来询问将来的时间,准确表达了“如果是这样的话,你什么时候会到?”的意思,很合适。
+```
+
+ +
+ +
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 + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
asrPrompt
resourceMapping
preDialog
imgShowTimingList
img
tip
corFeedback
errFeedback
question
example
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 31 + 对话选择 + cId: 0000800 + mid_dialog_choose + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
img
optionList
answer
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 32 + 对话选读 + cId: 0000800 + mid_dialog_select + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
optionList
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 33 + 信息描写 + cId: 0000800 + mid_message_trace + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
cDesc
question
trace
img
inputSet
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 34 + 信息拼词 + cId: 0000800 + mid_message_spell + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
cDesc
question
tip
inputConfig
stemList
img
inputSet
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 35 + 信息组句 + cId: 0000800 + mid_message_combine + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
cDesc
question
tip
optionList
answer
img
inputSet
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 36 + 信息补词 + cId: 0000800 + mid_message_fillin + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
cDesc
question
tip
inputConfig
img
inputSet
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 37 + 信息填词 + cId: 0000800 + mid_message_word + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
cDesc
question
tip
answer
img
inputSet
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 38 + 信息填句 + cId: 0000800 + mid_message_sentence + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
cDesc
question
tip
answerHint
img
inputSet
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 39 + 图片单选 + cId: 0000800 + mid_image_choose + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
meaning
resourceMapping
question
imageInfo
optionList
answer
preDialog
tip
corFeedback
errFeedback
postDialog
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 40 + 图片多选 + cId: 0000800 + mid_image_multiple + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
meaning
resourceMapping
question
imageInfo
optionList
answer
preDialog
tip
corFeedback
errFeedback
postDialog
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 41 + 图片有序 + cId: 0000800 + mid_image_sequence + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
meaning
resourceMapping
question
imageInfo
optionList
answer
preDialog
tip
corFeedback
errFeedback
postDialog
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ +
+
+ 42 + 图片拖拽 + cId: 0000800 + mid_image_drag + + + + 已保存 + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
meaning
resourceMapping
question
imageInfo
optionList
answer
preDialog
tip
corFeedback
errFeedback
postDialog
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+ + + + + + + \ No newline at end of file diff --git a/skills/interactive-component-json/outputs/L1-S2-U14-L1 到你上学啦 _组件录入测试-全量__20260509_144029.html b/skills/interactive-component-json/outputs/L1-S2-U14-L1 到你上学啦 _组件录入测试-全量__20260509_144029.html new file mode 100644 index 0000000..55c16bf --- /dev/null +++ b/skills/interactive-component-json/outputs/L1-S2-U14-L1 到你上学啦 _组件录入测试-全量__20260509_144029.html @@ -0,0 +1,17791 @@ + + + + + +L1-S2-U14-L1 到你上学啦 (组件录入测试-全量) — 组件JSON报告 + + + + + +
+ + +
+
+
就绪
+
+
+ 成功: 0 + 失败: 0 +
+
+ +
+
+

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

+
+ 生成时间: 2026-05-09 14:40:29 + 模型: doubao-seed-2.0-pro + Wiki: AEPJwf0DUiDkWska4SbceSAbnyc +
+
+ +
+
+
13
核心互动
+
30
中互动
+
+
43
总组件
+
42
成功
+
0
失败
+ +
+ + +
+
+ 1 + 对话朗读 + cId: 0000800 + mid_dialog_repeat + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
img
question
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+
+ +
+
+ 2 + 对话挖空 + cId: 0000801 + mid_dialog_fillin + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionGroupList
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+
+ +
+
+ 3 + 对话朗读 + cId: 0000802 + mid_dialog_repeat + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+
+ +
+
+ 4 + 对话朗读 + cId: 0000803 + mid_dialog_repeat + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+
+ +
+
+ 5 + 对话朗读 + cId: 0000804 + mid_dialog_repeat + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+
+ +
+
+ 6 + 对话组句 + cId: 0000805 + mid_dialog_sentence + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionList
answer
tip
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+
+ +
+
+ 7 + 对话朗读 + cId: 0000806 + mid_dialog_repeat + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
img
question
postDialog
+
+ +
+
+ + +
+
+ +
+
+ 8 + 对话朗读 + cId: 0000807 + mid_dialog_repeat + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
img
question
postDialog
+
+ +
+
+ + +
+
+ +
+
+ 9 + 对话挖空 + cId: 0000808 + mid_dialog_fillin + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionGroupList
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+
+ +
+
+ 10 + 对话朗读 + cId: 0000809 + mid_dialog_repeat + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
img
question
postDialog
+
+ +
+
+ + +
+
+ +
+
+ 11 + 对话朗读 + cId: 0000810 + mid_dialog_repeat + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
img
question
postDialog
+
+ +
+
+ + +
+
+ +
+
+ 12 + 核心听力选择 + cId: 0000810 + core_listening_choose + + + + + 已保存 + +
+
+ +
+ +
+
+ +
+ +
请你提供完整的题目材料相关内容哦,目前缺少具体的听力材料内容、核心信息以及相关的正确对应内容,我没办法生成符合要求的叙事描述。
+
+
+ + +
+
+ +
+
+ 13 + 对话组句 + cId: 0000811 + mid_dialog_sentence + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionList
answer
tip
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+
+ +
+
+ 14 + 对话组句 + cId: 0000812 + mid_dialog_sentence + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionList
answer
tip
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+
+ +
+
+ 15 + 对话挖空 + cId: 0000813 + mid_dialog_fillin + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionGroupList
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+
+ +
+
+ 16 + 对话组句 + cId: 0000814 + mid_dialog_sentence + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionList
answer
tip
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+
+ +
+
+ 17 + 对话挖空 + cId: 0000815 + mid_dialog_fillin + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionGroupList
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+
+ +
+
+ 18 + 核心合作阅读 + cId: 0000800 + core_reading_order + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
sceneDesc
img
key
resourceMapping
+
+ +
+ +
+ +
+ + + + + + + +
text
question
+
+ +
+ +
+ +
+ + + +
sequence
+
+ +
+ +
+ +
+ + + + + + + +
closing
learningPart
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 材料2
+类型:电子屏
+标题:How to Join Clubs?
+正文:
+<sp>You can choose your favourite club to join. If you are interested in something, you can find a club for it. The robot club, the plant club, the sports club, and the reading club are all popular choices.<br>If you are not interested in any club, you can start a new one with friends!<br>
+<sp>图片:[0101106_core reading2]
+```
+
+ +
+ +
```
+# 段落1
+重点词汇: 
+正文:
+---
+At Vala Academy, Pioneers don't have exams. But you need points to level up!
+---
+# 段落2
+重点词汇: 
+正文:
+---
+You can choose your favourite club to join. If you are interested in something, you can find a club for it.
+---
+```
+
+ +
+ +
```
+# 段落1
+## 段落内容
+---
+At Vala Academy, Pioneers don't have exams. But you need points to level up!
+---
+## 互动题目
+Brainy:我们来认识一下这段话中的关键单词 points。points 在这里是积分的意思,积攒积分可以兑换物品、提升等级哦。
+1. 句意选择题
+Brainy:接下来,我们来看下包含 points 的句子 But you need points to level up! 是什么意思呢?
+- 但是你需要通过考试来升级。
+  Brainy:不对哦,句子里说的是需要points,也就是积分,而且前半句还提到先锋们没有考试,再仔细确认下吧。
+- 但是你需要积分来升级。[正确]
+  Brainy:太棒了!你已经掌握了关键单词 points 和整个句子的意思啦~
+
+Brainy:我们再来认识另一个关键单词 exams。exams 是考试的意思,上学的时候我们通常需要参加 exams 来检验学习成果哦。
+2. 句意选择题
+Brainy:我们来看看包含 exams 的句子 At Vala Academy, Pioneers don't have exams. 是什么意思呢?
+- 在瓦拉学院,先锋们没有考试。[正确]
+  Brainy:回答正确!你已经准确理解了exams的含义和这句话的意思啦~
+- 在瓦拉学院,先锋们没有俱乐部。
+  Brainy:不对哦,exams是考试的意思,不是俱乐部,再看看正确的释义吧。
+
+3. 段落大意题
+Brainy:了解了关键单词和句子的意思,我们来看看这一段主要讲了什么吧?
+- 瓦拉学院的先锋不需要考试,但是需要用积分升级。[正确]
+  Brainy:太厉害啦!你完全抓住了这段的两个核心信息点哦~
+- 瓦拉学院的先锋需要通过考试获得积分来升级。
+  Brainy:不对哦,这段明确说了先锋们没有考试,再仔细读读段落内容吧。
+# 段落2
+## 段落内容
+---
+You can choose your favourite club to join. If you are interested in something, you can find a club for it.
+---
+## 互动题目
+Brainy:我们来认识一下这段话中的关键单词 club。club 是俱乐部的意思,大家可以根据自己的爱好加入不同的club哦。
+1. 句意选择题
+Brainy:接下来,我们来看下包含 club 的句子 You can choose your favourite club to join. 是什么意思呢?
+- 你可以选择自己最喜欢的俱乐部加入。[正确]
+  Brainy:完美回答!你已经掌握了club的意思和这个句子的含义啦~
+- 你可以选择自己最喜欢的课程学习。
+  Brainy:不对哦,club是俱乐部的意思,不是课程,再看看正确的解释吧。
+
+Brainy:我们再来认识另一个关键单词 interested。interested 是感兴趣的意思,我们通常说 be interested in 来表示对某件事有兴趣。
+2. 句意选择题
+Brainy:我们来看看包含 interested 的句子 If you are interested in something, you can find a club for it. 是什么意思呢?
+- 如果你对某件事很擅长,你可以为它开一个俱乐部。
+  Brainy:不对哦,interested是感兴趣的意思,不是擅长,句子里也没有说要开俱乐部,再确认下吧。
+- 如果你对某件事感兴趣,你可以找到对应的俱乐部。[正确]
+  Brainy:太棒啦!你已经理解了interested的含义和这个句子的意思啦~
+
+3. 段落大意题
+Brainy:了解了关键单词和句子,我们来看看这一段主要讲了什么吧?
+- 你可以选择感兴趣的俱乐部加入。[正确]
+  Brainy:答得真好!你完全get到了这段的核心内容哦~
+- 所有的俱乐部都非常受欢迎。
+  Brainy:不对哦,这段并没有提到俱乐部是否受欢迎的内容,再仔细看看段落吧。
+# 完结反馈
+Brainy:恭喜你完成了所有内容的学习!你对知识点的掌握越来越扎实啦,继续加油哦~
+```
+
+
+ + +
+
+ +
+
+ 19 + 核心看图选词 + cId: 0000800 + core_reading_imageDrag + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cId
cType
title
taskDesc
sceneDesc
key
resourceMapping
cDesc
+
+ +
+ +
+ +
+
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
+ +
+
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 小题 4
+## 材料内容
+【展示该小题对应的图片 ID:1201001_02.png】
+
+## 互动题目
+### 1. 句意选词题
+Brainy:小朋友,这道题我们要认识三个表示地点/事物的名词哦,分别是lake、tree和grass,我们先来看看它们的意思,选出表示“湖”的单词吧~
+- 选项 A:tree
+  Brainy:tree的意思是“树”,河马不住在树上哦,再想想哪个是“湖”的意思吧,你可以的!
+- 选项 B:lake[正确]
+  Brainy:太棒啦!lake的意思就是“湖”,你已经记住这个单词啦,真厉害~
+- 选项 C:grass
+  Brainy:grass的意思是“草”,河马不是生活在草里哦,再选一次试试吧~
+
+### 2. 原题降级
+Brainy:Ben问“河马住在哪里呀?”,你要选一个合适的单词填到句子里,回答“在____里”,想想河马的生活环境哦。
+- 选项 A:lake[正确]
+  Brainy:答对啦!河马是生活在湖里的,所以答案就是in the lake,跟着大声读一遍这个句子吧:Where do hippos live? In the lake.
+- 选项 B:tree
+  Brainy:tree是树哦,河马不会爬到树上生活的,结合河马的生活习性再想想吧~
+- 选项 C:grass
+  Brainy:grass是草,河马不是住在草里面的哦,再选一次试试吧~
+
+---
+# 小题 5
+## 材料内容
+【展示该小题对应的图片 ID:1201001_02.png】
+
+## 互动题目
+### 1. 句意选词题
+Brainy:小朋友,这道题我们要选能表示动物园里动物相关的内容哦,先来回忆下这几个单词的意思,选出符合“动物园里有的事物”的选项吧。
+- 选项 A:lake
+  Brainy:lake是湖,湖是自然景观,不是动物园里的动物哦,再想想吧~
+- 选项 B:tree[正确]
+  Brainy:你选对啦!动物园里会有树,很多小动物会在树上活动,这个选项是符合的哦~
+- 选项 C:grass
+  Brainy:grass是草,虽然动物园里也有草,但它不是和动物相关的典型事物哦,再选一次试试吧~
+
+### 2. 原题降级
+Brainy:Brainy问“动物园里还有什么其他的东西?”,你要选出符合动物园场景的答案哦。
+- 选项 A:lake
+  Brainy:lake是湖,一般动物园里不会有大面积的湖作为常规配置哦,再想想动物园里常见的东西吧~
+- 选项 B:tree[正确]
+  Brainy:答对啦!动物园里会种植很多树,给动物们提供贴近自然的生活环境,非常符合题意~ 跟着大声读一遍这个问答吧:What other animals are there in the zoo? Tree.
+- 选项 C:grass
+  Brainy:grass是草,草地更多是在公园或者野外哦,不是动物园里的典型事物,再选一次吧~
+
+---
+# 完结反馈
+Brainy:太棒了!你完成了所有的对话任务,还学会了lake、tree、grass这些单词的用法,也知道了河马的生活环境和动物园里的常见事物,下次遇到类似的对话你肯定能轻松应对啦,为你点赞!
+```
+
+ +
+ +
As we explore the word castle, we first meet Ben who asks where hippos live, and we find out hippos live in the lake to fill the blank on the wall.(我们在单词城堡探索时,首先遇到本询问河马住在哪里,我们得知河马住在湖里,补全了墙上的空缺。)
+Next, Brainy asks what other animals are in the zoo, and we find trees are the relevant content to help us continue unlocking the castle gate.(接着布莱恩询问动物园里还有什么其他动物,我们找到树木是相关内容,帮我们继续解锁城堡大门。)
+
+
+ + +
+
+ +
+
+ 20 + 核心口语快答 + cId: 0000800 + core_speaking_reply + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
taskDesc
sceneDesc
img
key
resourceMapping
+
+ +
+ +
+ +
+ + + +
setting
+
+ +
+ +
+ +
+ + + +
config
+
+ +
+ +
+ +
+ + + +
learningPart
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 开场回合
+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. We want to give her some bananas.
+  Brainy:现在我们要说明大象需要洗澡哦,这句话是说大象饿了想喂香蕉,和当前场景不匹配,再试一次吧~
+(C)The keepers are very careful, we don't need to help.
+  Brainy:我们是来请求帮忙给大象洗澡的,这句话说饲养员很细心不需要帮忙,不符合现在的情况,再选一次哦~
+Logan:Are you saying she hasn't had a shower yet? Maybe someone will probably come soon.
+
+# 中间回合2
+Brainy:Logan说“你是说她还没洗澡吗?可能很快就有人来了”,现在你要回应对方,比起在这里等,我们最好先去给她拿点水。
+用户选项:
+(A)We can wait for the keepers to come and help her.
+  Brainy:现在我们要表达不等了先去拿水哦,这句话说我们可以等饲养员来帮忙,和我们要表达的意思相反,再试一次吧~
+(B)Instead of waiting here, we'd better get some water for her first.✅
+  Brainy:选得太对啦,试着把这句话大声读出来吧~
+(C)We don't have enough time to help the elephant.
+  Brainy:这句话是说我们没时间帮大象,可我们是想要帮忙的,不符合情境哦,再选一次吧~
+Logan:The keepers are too careless! Thank you! Can you help her shower?
+
+# 中间回合3
+Brainy:Logan说“饲养员太粗心了!谢谢你们!你们能帮她洗澡吗?”,现在你要告诉对方你们很乐意帮忙哦。
+用户选项:
+(A)We'd love to help.✅
+  Brainy:完全正确!试着把这句话大声读出来吧~
+(B)We are too busy to help her.
+  Brainy:我们本来就是来帮忙的哦,这句话说我们太忙了帮不了,不符合现在的情况,再试一次吧~
+(C)We have no idea how to shower an elephant.
+  Brainy:现在要回应对方我们乐意帮忙,这句话说我们不知道怎么给大象洗澡,和要表达的意思不符哦,再选一次~
+Logan:Great. We will send some water to her right away.
+
+# 结尾回合
+Brainy:太棒啦!你成功和清洁站的工人沟通好了,对方马上会送水过来,你们可以一起给大象洗澡啦,本次任务完成~
+```
+
+ +
+ +
```
+# 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,banana
+
+
+ + +
+
+ +
+
+ 21 + 口语独白 + cId: 0000800 + ? + + + 跳过 + +
+
+
跳过: 类型 '口语独白' 尚未实现生成器
+
+ +
+
原始组件配置 (可编辑后点击"执行重新生成")
+ + +
+
+
+ +
+
+ 22 + 核心口语妙问 + cId: 0000800 + core_speaking_inquiry + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
taskDesc
sceneDesc
img
key
resourceMapping
+
+ +
+ +
+ +
+ + + +
setting
+
+ +
+ +
+ +
+ + + +
config
+
+ +
+ +
+ +
+ + + +
learningPart
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 开场回合
+Chloe: Can I help you?
+
+# 中间回合1
+Brainy: 空乘Chloe主动询问你是否需要帮助,你现在需要向她询问健身房的位置。
+用户选项:
+(选项 A)Where can I find the gym? [正确]
+  Brainy: 太棒了!你正确地说出了想要询问健身房位置的句子。请大声朗读这句话!
+(选项 B)Can I have a towel please?
+  Brainy: 这句话是用来索要毛巾的,现在你还没问健身房的位置哦,请再选一次,问问Chloe健身房在哪里吧。
+(选项 C)What else can I do there?
+  Brainy: 这句话是询问健身房还有什么其他功能的,现在你首先需要问的是健身房的位置,请再试一次。
+
+Chloe: Look, it's over there at the end of this walkway.
+
+# 中间回合2
+Brainy: Chloe已经告诉你健身房在走道的尽头了,接下来你需要向她讨要毛巾,为运动做准备。
+用户选项:
+(选项 A)Where can I find the gym?
+  Brainy: 你已经问过健身房的位置啦,Chloe也回答你了,现在你需要向她要毛巾,再选一次吧。
+(选项 B)Oh, and can I have a towel please? [正确]
+  Brainy: 太对啦!你准确地表达了想要毛巾的请求。请大声朗读这句话!
+(选项 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: 你已经知道健身房的位置啦,这个问题不需要再问啦,现在问问Chloe在健身房还能做什么吧。
+(选项 B)Can I have a towel please?
+  Brainy: 你已经要过毛巾了,Chloe也答应给你拿了,换一个问题问问吧。
+(选项 C)What else can I do there? [正确]
+  Brainy: 非常好!你准确问出了健身房的其他用途。请大声朗读这句话!
+
+Chloe: Well, you can do some exercise and enjoy sightseeing there. Or you can just relax.
+
+# 结尾回合
+Brainy: 你已经问清楚了健身房的位置、拿到了毛巾,也知道了在健身房可以做的事,这次询问空乘关于健身房信息的任务圆满完成啦!
+```
+
+ +
+ +
```
+# 1. 角色(你要扮演谁)
+- 你是 Chloe,是 Twilight 的空乘,服务好每一位乘客是你的使命。
+- 你对之前帮你解过围的用户格外友善热情,会耐心回答对方的所有问题。
+
+# 2. 任务(你如何参与到整个对话)
+- 你只在用户提问时提供特定信息,不主动透露知识库中的信息。
+- 如果用户提问的内容在知识库范围内,你会准确回答。
+- 如果用户的问题不清晰,你会尝试确认问题。
+- 一般情况下,一次最多只回答知识库中的一条信息,除非用户明确地分别提问到多条信息。
+- 如果用户不提问,你会温和、自然地进行交谈。
+
+# 3. 背景信息
+你是 Chloe,是 Twilight 的空乘,服务好每一位乘客是你的使命。
+用户之前帮你在另一位乘客面前解了围,你很感谢用户的帮忙,对用户的态度也格外友善热情。
+你发现用完餐的用户正在东张西望,似乎在寻找什么,你确认用户需要帮助,于是上前询问。你发现用户想去健身房消消食,但是不知道方向,于是回答了用户的问题,提供了你的帮助。
+
+# 4. 知识库(你知道的信息)
+- 健身房就在前方过道的尽头。
+- 你会为有需要的用户准备一条新毛巾。
+- 在健身房可以进行的活动:运动、看宇宙风光(sightseeing),或者可以拉伸放松、进行休息。
+- 对用户的任何提问,你都耐心安抚并一一回答。
+
+# 5. 语言风格
+- 使用 CEFR A1-A2 等级英语,避免复杂句,每句话不超过 10 个词,比如
+  "我要去..." 可以用句子 I am going to ...,不用 My destination is ...,确保小学2-4年级的孩子能听懂
+- 回答一般不超过两句话
+- 避免重复表达,适当变换措辞
+
+# 6. 开场白
+你由你开始对话,你会说:"Can I help you?"
+
+# 7. 回应方式(固定内容)
+- 你只在用户提问时才根据知识库中的信息回答。其他时候,以符合你身份的方式,自然地进行交谈。
+- 不主动提供知识库的信息
+- 不主动提问题
+```
+
+ +
+ +
gym,towel,exercise,sightseeing,relax,walkway
+
+
+ + +
+
+ +
+
+ 23 + 核心看图说话 + cId: 0000800 + core_speaking_image + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
taskDesc
sceneDesc
key
resourceMapping
cDesc
+
+ +
+ +
+ +
+ + + +
config
+
+ +
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + +
questionImg
+
+ +
+ +
+ +
+
1234567891011121314151617181920212223
+ +
+
+ +
+ +
+
1234567891011
+ +
+
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 中间回合1
+Rock: What season is it?
+Brainy: Mr Rock 现在问你现在是什么季节,你需要告诉他现在所处的季节。
+用户选项:
+(选项 A)Winter. [正确]
+  Brainy: 太棒了!你正确回答了现在是冬季。请大声朗读这句话!
+(选项 B)Cold.
+  Brainy: 这句话的意思是“寒冷的”,是用来描述天气感受的,而Mr Rock现在问的是季节是什么。请再仔细听清问题,告诉Mr Rock现在的季节。
+(选项 C)Snow.
+  Brainy: 这句话的意思是“雪”,是冬天会出现的事物,而Mr Rock现在问的是季节是什么。请再仔细听清问题,告诉Mr Rock现在的季节。
+
+# 中间回合2
+Rock: Is it hot or cold?
+Brainy: Mr Rock 现在问你天气是热还是冷,你需要告诉他冬季岛屿的天气感受。
+用户选项:
+(选项 A)Winter.
+  Brainy: 这句话的意思是“冬季”,是现在的季节,而Mr Rock现在问的是天气是热还是冷。请再仔细听清问题,告诉Mr Rock天气的感受。
+(选项 B)Cold. [正确]
+  Brainy: 太棒了!你正确回答了天气很冷。请大声朗读这句话!
+(选项 C)Snow.
+  Brainy: 这句话的意思是“雪”,是冬天会出现的事物,而Mr Rock现在问的是天气是热还是冷。请再仔细听清问题,告诉Mr Rock天气的感受。
+
+# 中间回合3
+Rock: What do you see in winter?
+Brainy: Mr Rock 现在问你在冬天能看到什么,你需要告诉他冬季岛屿上能见到的事物。
+用户选项:
+(选项 A)Winter.
+  Brainy: 这句话的意思是“冬季”,是现在的季节,而Mr Rock现在问的是你在冬天能看到什么事物。请再仔细听清问题,告诉Mr Rock你看到的东西。
+(选项 B)Cold.
+  Brainy: 这句话的意思是“寒冷的”,是天气的感受,而Mr Rock现在问的是你在冬天能看到什么事物。请再仔细听清问题,告诉Mr Rock你看到的东西。
+(选项 C)Snow. [正确]
+  Brainy: 太棒了!你正确回答了在冬天能看到雪。请大声朗读这句话!
+
+# 结尾回合
+Brainy: 你已经和Mr Rock分享了在冬季岛屿的所见所感,聊天任务完成啦,马上就可以吃到热乎的食物咯!
+```
+
+ +
+ +
Mr Rock,Winter Island,winter,cold,snow
+
+
+ + +
+
+ +
+
+ 24 + 核心合作听力 + cId: 0000800 + core_listening_order + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
sceneDesc
img
key
resourceMapping
+
+ +
+ +
+ +
+ + + + + + + +
audio
question
+
+ +
+ +
+ +
+ + + +
sequence
+
+ +
+ +
+ +
+ + + + + + + +
closing
learningPart
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 重点句子 1
+音频文本:When you really want sweet food, like biscuits or cake, you can bake at home.
+讲解文本:刚刚听到的音频中,包含了一个关键短语 bake at home,意思是在家烘焙。正确的发音是 /beɪk æt həʊm/。
+1. 听音选句
+Brainy:仔细听音频内容,选出你听到的句子吧。
+- When you really want sweet food, like biscuits or cake, you can bake at home. [正确]
+  - Brainy:太厉害啦!你精准听出了句子里的重点短语 bake at home!
+- When you really want sweet food, like biscuits or cake, you can buy at the shop.
+  - Brainy:哎呀,这句话说的是在商店购买,没有提到 bake at home 哦,再仔细听听音频试试吧!
+
+2. 听音选意
+Brainy:现在来看看这句话的正确意思是什么,选一下吧~
+- 当你特别想吃甜食,比如饼干或者蛋糕时,你可以在家烘焙。[正确]
+  - Brainy:完全正确!你不仅弄懂了整句话的意思,还掌握了 bake at home 这个实用短语,太棒啦!
+- 当你特别想吃甜食,比如饼干或者蛋糕时,你可以去外面的餐厅吃。
+  - Brainy:这句话里说的是在家自己做哦,不是去餐厅吃,再仔细想想看吧~
+---
+# 完成反馈
+Brainy:很好!你已经回答完了全部问题,相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!
+```
+
+ +
+ +
You listened to the second part of Max's fitness guide, learning that a healthy life requires going to bed on time and getting up early, and staying away from smoking and alcohol.(你听了Max健身指南的第二部分,了解到健康生活需要按时睡觉早起,并且远离吸烟和酒精。)
+You also found that keeping healthy doesn't need much money or expensive things, and good habits are the most important for your body.(你还发现保持健康不需要很多钱或者昂贵的东西,好的习惯对你的身体来说是最重要的。)
+
+
+ + +
+
+ +
+
+ 25 + 核心听力拖拽 + cId: 0000800 + core_listening_drag + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
sceneDesc
key
resourceMapping
cDesc
+
+ +
+ +
+ +
+
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
+ +
+
+ +
+ +
+
12345678910111213141516171819202122232425
+ +
+
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 重点句子 1
+音频文本:Go between the red duck and the blue duck.
+讲解文本:刚刚听到的音频中,包含了一个关键短语 between...and...,意思是“在……和……之间”,用来描述两个事物中间的位置哦。
+1. 听音选句
+Brainy:仔细听音频,选出你听到的句子吧。
+- Go behind the red duck and the blue duck.
+  - Brainy:不对哦,这句话里的behind是“在……后面”的意思,我们听到的句子是描述在两只鸭子中间的位置,再试试吧。
+- Go between the red duck and the blue duck. [正确]
+  - Brainy:太棒啦!你准确听出了句子里的重点短语between...and...,太厉害了!
+
+2. 听音选意
+Brainy:“走到红色鸭子和蓝色鸭子的后面”,这句话的意思是这个吗?
+- 对 / Yes
+  - Brainy:不对哦,我们要注意表示位置的短语意思,再仔细回忆一下短语的含义吧。
+- 错 / No [正确]
+  - Brainy:答对啦!between...and...是在两者之间的意思,你已经完全掌握这个句子的意思啦!
+---
+# 完成反馈
+Brainy:很好!你已经回答完了全部问题,相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!
+```
+
+ +
+ +
You took on the fun task of guiding everyone to herd the ducks, and picked the most suitable ways from the provided illustrations to make all the little ducks waddle safely back to their enclosure. (你承担了指挥大家赶鸭子的有趣任务,从给出的图示里选了最合适的方法,让所有小鸭子都摇摇摆摆安全回到了鸭圈里。)
+
+
+ + +
+
+ +
+
+ 26 + 核心听力选择 + cId: 0000800 + core_listening_choose + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
sceneDesc
key
resourceMapping
cDesc
+
+ +
+ +
+ +
+
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
+ +
+
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 重点句子 1
+音频文本:This summer!
+讲解文本:刚刚听到的音频中,包含了一个关键单词 summer,意思是夏天,是表示季节的名词哦。
+1. 听音选句
+Brainy:仔细听音频,你听到的是下面哪一个句子呢?
+- This summer! [正确]
+  - Brainy:太棒啦!你精准听出了这句话里的重点单词summer!
+- This winter!
+  - Brainy:呀,这句话里说的是冬天winter,不是我们听到的夏天summer哦,再仔细听一遍音频试试吧。
+
+2. 听音选意
+Brainy:现在看看这句话,"这是冬天!"是这句话的中文意思吗?
+- 对 / Yes
+  - Brainy:不对哦,这句话里的重点单词是夏天,不是冬天,再想想看呀。
+- 错 / No [正确]
+  - Brainy:答对啦!你已经掌握了summer的意思,这句话说的是“今年夏天!”哦。
+---
+# 完成反馈
+Brainy:很好!你已经回答完了全部问题,相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!
+```
+
+ +
+ +
You had a conversation with the fishing uncle Jack, you told him it was so hot in summer and you wanted to get the shorts between the rocks. (你和钓鱼的杰克叔叔对话,告诉他夏天太热了,你想拿到岩石中间的短裤。)
+You answered that you needed the shorts, and Jack was ready to help you get the shorts that were placed among the rocks. (你回答你需要短裤,杰克准备好帮你拿到放在岩石中间的短裤了。)
+
+
+ + +
+
+ +
+
+ 27 + 核心看图组句 + cId: 0000800 + core_writing_imgMakeSentence + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cId
cType
title
taskDesc
sceneDesc
img
plotSummary
stemDesc
key
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + +
inputType
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
title
taskDesc
sceneDesc
knowledge
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 问题1:
+Brainy: 你们整理好了搜集到的线索,现在要向Luisa教授汇报你推测的飞船坠落位置,你会怎么开口说?
+用户选项:
+(选项 A)I think the spaceship fell... [正确]
+  Brainy: 回答正确!这句话刚好用来引出你对飞船坠落位置的推测,非常贴合汇报的场景。
+(选项 B)I saw trees with...
+  Brainy: 这句话是用来描述你看到的树的特征,不是表达对飞船坠落位置的推测哦,再试试看吧。
+(选项 C)I heard a loud noise in...
+  Brainy: 这句话是用来描述你听到的声响的方位,不是直接说明你推测的飞船坠落位置,再试一次吧。
+
+# 问题2:
+Brainy: 你要向教授描述无人机照片里拍到的特殊树木特征,补充飞船坠落的相关线索,你会怎么说?
+用户选项:
+(选项 A)I think the spaceship fell...
+  Brainy: 这句话是用来表达你对飞船坠落位置的推测,不是描述树木特征的哦,再试试看吧。
+(选项 B)I saw trees with... [正确]
+  Brainy: 太棒了!这句话正好可以用来介绍你观察到的树木的特殊情况,是很重要的现场线索说明。
+(选项 C)I heard a loud noise in...
+  Brainy: 这句话是用来描述你听到的声响的方位,不是描述你看到的树木特征,再试一次吧。
+
+# 问题3:
+Brainy: 你要告诉教授你当时听到异常声响的方位,辅助判断飞船坠落的区域,你会怎么表述?
+用户选项:
+(选项 A)I think the spaceship fell...
+  Brainy: 这句话是用来表达你对飞船坠落位置的推测,不是描述你听到的声响信息哦,再试试看吧。
+(选项 B)I saw trees with...
+  Brainy: 这句话是用来描述你看到的树的特征,不是描述你听到的声响的方位,再试一次吧。
+(选项 C)I heard a loud noise in... [正确]
+  Brainy: 完全正确!用这句话说明声响的方位,能很好地帮助教授确定飞船的坠落区域,逻辑很通顺。
+```
+
+ +
+ +
Dear Alex, I hope this email finds you well. We can take care of each other.(亲爱的亚历克斯,希望你一切都好。我们可以互相照顾。)
+
+
+ + +
+
+ +
+
+ 28 + 核心看图撰写 + cId: 0000800 + core_writing_imgWrite + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cId
cType
title
taskDesc
sceneDesc
img
plotSummary
stemDesc
key
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + +
inputType
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
title
taskDesc
sceneDesc
knowledge
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 问题1:
+Brainy: 护理记录的第一栏要填写动物的种类,你需要在横线上填上对应的单词。
+用户选项:
+(选项 A)elephant [正确]
+  Brainy: 答对啦!我们今天护理的动物是大象,所以动物类型栏填elephant是完全正确的。
+(选项 B)banana
+  Brainy: 不对哦,banana是香蕉,属于食物,不是动物类型。再想想我们今天照顾的是什么动物呀?
+(选项 C)shower
+  Brainy: 不对哦,shower是洗澡的意思,属于清洁护理的内容,不是动物类型。再想想我们今天照顾的是什么动物呀?
+
+# 问题2:
+Brainy: 接下来要填写饮食栏,记录大象今天吃了什么,请你选对合适的单词填到横线上。
+用户选项:
+(选项 A)elephant
+  Brainy: 不对哦,elephant是大象本身,我们总不能让大象吃自己呀~ 再想想我们今天喂给大象什么食物了?
+(选项 B)bananas [正确]
+  Brainy: 太棒了!我们今天喂大象吃了香蕉,所以饮食栏填bananas完全符合实际情况。
+(选项 C)shower
+  Brainy: 不对哦,shower是洗澡,属于清洁项目,不是食物。再想想我们今天喂给大象什么食物了?
+
+# 问题3:
+Brainy: 现在填写清洁护理栏,记录大象今天做了什么清洁项目,请你选对合适的表达填到横线上。
+用户选项:
+(选项 A)elephant
+  Brainy: 不对哦,elephant是大象,不是清洁项目。再想想我们今天帮大象做了什么清洁工作呀?
+(选项 B)bananas
+  Brainy: 不对哦,bananas是香蕉,属于食物,和清洁护理没有关系。再想想我们今天帮大象做了什么清洁工作呀?
+(选项 C)a shower [正确]
+  Brainy: 完全正确!我们今天帮大象洗了澡,所以清洁栏填a shower是对的。
+
+# 问题4:
+Brainy: 最后要总结大象的喜好,你需要用正确的句式描述大象喜欢的东西。
+用户选项:
+(选项 A)The elephant loves showers and bananas! [正确]
+  Brainy: 太厉害啦!你准确用了love的句式,总结出大象既喜欢洗澡又喜欢香蕉,完全符合今天的护理记录哦。
+(选项 B)The elephant loves to showers and bananas!
+  Brainy: 不对哦,"love to"后面要接动词原形,而这里shower和banana都是名词,直接用love sth.的结构就可以啦,再调整一下试试。
+(选项 C)The elephant love showers and bananas!
+  Brainy: 不对哦,主语the elephant是第三人称单数,谓语动词love要变成loves才对,再检查一下语法哦。
+```
+
+ +
+ +
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!(动物饲养员记录
+动物种类:大象
+食物:她吃了香蕉。
+清洁:她今天洗了澡。
+她喜欢什么呢?
+这头大象喜欢洗澡和香蕉!)
+
+
+ + +
+
+ +
+
+ 29 + 核心邮件组句 + cId: 0000800 + core_writing_questionMakeSentence + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cId
cType
title
taskDesc
sceneDesc
img
plotSummary
stemDesc
key
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + +
inputType
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
title
taskDesc
sceneDesc
knowledge
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 问题1:
+Brainy: 你在邮件中想要说明这项工作对你们很重要,现在需要完成这句话的表达:The ____ is important for us. 请选出合适的单词补全句子。
+用户选项:
+(选项 A)job [正确]
+  Brainy: 答对啦!job是可数名词单数,和后面的be动词is搭配正确,这句话准确表达了“这份工作对我们很重要”的意思。
+(选项 B)jobs
+  Brainy: 不对哦,jobs是可数名词复数,后面应该搭配be动词are,和句中的is不一致,所以不合适。
+(选项 C)projects
+  Brainy: 不对哦,projects是“项目”的复数形式,后面应该搭配be动词are,和句中的is不一致,意思也不符合这里要表达的内容。
+
+# 问题2:
+Brainy: 你已经说明了工作的重要性,现在要表达“这就是我们必须留下来的原因”,请选出合适的单词补全句子:That's ____ we have to stay.
+用户选项:
+(选项 A)why [正确]
+  Brainy: 太棒了!That's why...是固定表达,用来引出某事的原因,正好符合这里解释留下的原因的语境。
+(选项 B)how
+  Brainy: 不对哦,how是用来询问方式的,这里是要说明留下来的原因,不是说明留下的方式,所以不合适。
+(选项 C)which
+  Brainy: 不对哦,which通常用来引导定语从句指代事物,不能用来引导原因状语,不符合这里的语义哦。
+
+# 问题3:
+Brainy: 你想在邮件末尾询问Rebecca什么时候会到达,现在需要选出正确的表达。
+用户选项:
+(选项 A)When will you arrive? [正确]
+  Brainy: 完全正确!这是询问对方将来到达时间的正确表达,符合邮件里询问行程的语境。
+(选项 B)When is you arrive?
+  Brainy: 不对哦,arrive是实义动词,构成疑问句需要借助助动词,不能和be动词is直接搭配,语法是错误的。
+(选项 C)How is you arrive?
+  Brainy: 不对哦,首先你想询问的是到达的时间不是方式,而且这个句子同样存在语法错误,实义动词arrive不能和be动词is直接搭配使用。
+```
+
+ +
+ +
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?
+(亲爱的丽贝卡:我知道你很担心。但这是我们探索漫游港的最佳机会。这项任务对我们来说很重要。这就是我们必须留下来的原因。你将来会来漫游港吗?你什么时候会到?)
+
+
+ + +
+
+ +
+
+ 30 + 核心邮件撰写 + cId: 0000800 + core_writing_questionWrite + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cId
cType
title
taskDesc
sceneDesc
img
plotSummary
stemDesc
key
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + +
inputType
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
title
taskDesc
sceneDesc
knowledge
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 问题1:
+Brainy: 你在邮件开头已经安抚了Rebecca的担心,说明留在Wander Port是很好的探索机会,现在要进一步解释这项探索任务对你们的重要性,你会说:
+用户选项:
+(选项 A)The job is important for us. [正确]
+  Brainy: 完全正确!你准确表达了“这份工作(探索任务)对我们很重要”的意思,完美贴合语境哦。
+(选项 B)The jobs is important for us.
+  Brainy: 这里出错啦,jobs是job的复数形式,后面应该搭配be动词are,和句子里的is不匹配,再试试呀。
+(选项 C)The projects is important for us.
+  Brainy: 不对哦,projects是复数形式,不能和is搭配,而且这里要表达的是当下这份探索任务的重要性,用单数job更合适,再试一次吧。
+
+# 问题2:
+Brainy: 你已经说明了探索任务的重要性,现在要告诉Rebecca这就是你们必须留下来的原因,你会怎么说?
+用户选项:
+(选项 A)That's how we have to stay.
+  Brainy: 不对哦,how是用来询问方式的,这句话的意思就变成了“这就是我们要如何留下来的方式”,不符合你要解释原因的语境,再想想呀。
+(选项 B)That's why we have to stay. [正确]
+  Brainy: 太棒了!你准确用“That's why...”这个结构表达了原因,完美传递出“这就是我们必须留下来的原因”的意思。
+(选项 C)That's which we have to stay.
+  Brainy: 这个表达不对哦,which通常用来引导定语从句指代事物,不能用来解释原因,不符合这里的语境,再试一次吧。
+
+# 问题3:
+Brainy: 你已经讲完了你们留下来的决定和原因,现在问过Rebecca会不会来Wander Port之后,想进一步询问她如果来的话什么时候抵达,你会说:
+用户选项:
+(选项 A)If so, when is you arrive?
+  Brainy: 这个表达有语法错误哦,arrive是实义动词,疑问句里需要用助动词will/do等,不能用be动词is,再调整一下呀。
+(选项 B)If so, how is you arrive?
+  Brainy: 不对哦,首先语法上就有错误,arrive不能和be动词is搭配,而且你要问的是抵达的时间,不是方式,用how不符合语境,再试试吧。
+(选项 C)If so, when will you arrive? [正确]
+  Brainy: 太对啦!你准确用“when will you arrive”询问了对方抵达的时间,完全符合邮件里的提问需求哦。
+```
+
+ +
+ +
Dear Rebecca, I know you are worried. But this is our best chance to explore Wander Port. The job is important for us. That's why we have to stay. Will you come to Wander Port some day? If so, when will you arrive?
+(亲爱的丽贝卡:
+我知道你很担心。但这是我们探索漫游港的最佳机会。这项工作对我们来说很重要。这就是我们必须留下来的原因。你会不会在某一天来漫游港呢?如果会的话,你什么时候会到?)
+
+
+ + +
+
+ +
+
+ 31 + 对话表达 + cId: 0000800 + mid_dialog_express + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
asrPrompt
resourceMapping
preDialog
imgShowTimingList
img
tip
corFeedback
errFeedback
question
example
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+
+ +
+
+ 32 + 对话选择 + cId: 0000800 + mid_dialog_choose + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
img
optionList
answer
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+
+ +
+
+ 33 + 对话选读 + cId: 0000800 + mid_dialog_select + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
optionList
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+
+ +
+
+ 34 + 信息描写 + cId: 0000800 + mid_message_trace + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
cDesc
question
trace
img
inputSet
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+
+ +
+
+ 35 + 信息拼词 + cId: 0000800 + mid_message_spell + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
cDesc
question
tip
inputConfig
stemList
img
inputSet
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+
+ +
+
+ 36 + 信息组句 + cId: 0000800 + mid_message_combine + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
cDesc
question
tip
optionList
answer
img
inputSet
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+
+ +
+
+ 37 + 信息补词 + cId: 0000800 + mid_message_fillin + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
cDesc
question
tip
inputConfig
img
inputSet
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+
+ +
+
+ 38 + 信息填词 + cId: 0000800 + mid_message_word + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
cDesc
question
tip
answer
img
inputSet
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+
+ +
+
+ 39 + 信息填句 + cId: 0000800 + mid_message_sentence + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
cDesc
question
tip
answerHint
img
inputSet
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+
+ +
+
+ 40 + 图片单选 + cId: 0000800 + mid_image_choose + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
meaning
resourceMapping
question
imageInfo
optionList
answer
preDialog
tip
corFeedback
errFeedback
postDialog
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+
+ +
+
+ 41 + 图片多选 + cId: 0000800 + mid_image_multiple + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
meaning
resourceMapping
question
imageInfo
optionList
answer
preDialog
tip
corFeedback
errFeedback
postDialog
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+
+ +
+
+ 42 + 图片有序 + cId: 0000800 + mid_image_sequence + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
meaning
resourceMapping
question
imageInfo
optionList
answer
preDialog
tip
corFeedback
errFeedback
postDialog
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+
+ +
+
+ 43 + 图片拖拽 + cId: 0000800 + mid_image_drag + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
meaning
resourceMapping
question
imageInfo
optionList
answer
preDialog
tip
corFeedback
errFeedback
postDialog
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + +
+
+ + +
+ + + + + + + \ No newline at end of file diff --git a/skills/interactive-component-json/scripts/__pycache__/html_report.cpython-312.pyc b/skills/interactive-component-json/scripts/__pycache__/html_report.cpython-312.pyc index 6e8e259..0c119cf 100644 Binary files a/skills/interactive-component-json/scripts/__pycache__/html_report.cpython-312.pyc and b/skills/interactive-component-json/scripts/__pycache__/html_report.cpython-312.pyc differ diff --git a/skills/interactive-component-json/scripts/html_report.py b/skills/interactive-component-json/scripts/html_report.py index c9bf5d6..5a26e3a 100644 --- a/skills/interactive-component-json/scripts/html_report.py +++ b/skills/interactive-component-json/scripts/html_report.py @@ -51,6 +51,7 @@ def _build_component_data(result): "category": category, "type_name": result.get("type_name", ""), "status": status, + "raw_config": result.get("raw_config", ""), } if status not in ("generated", "saved"): @@ -252,6 +253,11 @@ def _render_component(idx, result): 知识推送 ''' + # Regenerate button (for all components) + regen_btn = f'''''' + # Build body body_html = "" if status in ("generated", "saved"): @@ -292,17 +298,22 @@ def _render_component(idx, result): elif status == "failed": err = html.escape(result.get("error", "未知错误")) body_html = f'
错误: {err}
' - raw_config = result.get("raw_config", "") - if raw_config: - escaped_config = html.escape(raw_config) - body_html += f'
原始组件配置
{escaped_config}
' elif status == "skipped": reason = html.escape(result.get("reason", "")) body_html = f'
跳过: {reason}
' - raw_config = result.get("raw_config", "") - if raw_config: - escaped_config = html.escape(raw_config) - body_html += f'
原始组件配置
{escaped_config}
' + + # Regenerate panel (editable teaching_config) — for all components + raw_config = result.get("raw_config", "") + escaped_config = html.escape(raw_config) + config_rows = min(max(raw_config.count('\n') + 1, 5), 25) + # For failed/skipped: show config panel expanded; for success: collapsed + regen_display = "block" if status in ("failed", "skipped") else "none" + regen_panel = f''' +
+
原始组件配置 (可编辑后点击"执行重新生成")
+ + +
''' return f'''
@@ -312,10 +323,15 @@ def _render_component(idx, result): cId: {html.escape(str(cId))} {html.escape(str(cType))} {push_btns} - {status_label} + {regen_btn} + {status_label}
-
{body_html}
+
+ {body_html} +
+ {regen_panel} +
''' @@ -335,6 +351,8 @@ def generate_html_report(report, output_path=None, model_name="", wiki_token="", # Serialize data for JS components_json = json.dumps(components_data, ensure_ascii=False) push_field_map_json = json.dumps(PUSH_FIELD_MAP, ensure_ascii=False) + character_map_json = json.dumps(report.get("character_map") or {}, ensure_ascii=False) + level_json = json.dumps(report.get("level") or None, ensure_ascii=False) total = report.get("total_components", 0) success = report.get("success", 0) @@ -440,6 +458,8 @@ body {{ font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto San .config-btn:hover {{ background:#dbeafe; }} .kp-btn {{ background:#f0fdf4; color:#16a34a; border-color:#bbf7d0; }} .kp-btn:hover {{ background:#dcfce7; }} +.regen-btn {{ background:#fef3c7; color:#d97706; border-color:#fde68a; }} +.regen-btn:hover {{ background:#fde68a; }} .push-btn:disabled {{ opacity:0.5; cursor:not-allowed; }} .push-icon {{ display:inline-block; width:8px; height:8px; border-radius:50%; background:#94a3b8; }} .push-icon.ok {{ background:#10b981; }} @@ -447,6 +467,20 @@ body {{ font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto San .push-icon.loading {{ background:#f59e0b; animation:pulse 0.8s infinite; }} @keyframes pulse {{ 0%,100%{{opacity:1}} 50%{{opacity:0.3}} }} +/* Regenerate panel */ +.regen-panel {{ margin-top:12px; padding:12px; border:1px dashed var(--border); border-radius:8px; background:#fffbeb; }} +.regen-label {{ font-size:13px; font-weight:600; color:#92400e; margin-bottom:6px; }} +.regen-hint {{ font-weight:normal; font-size:11px; color:var(--text2); }} +.regen-textarea {{ width:100%; font-family:"SF Mono",Monaco,Consolas,monospace; font-size:12px; + border:1px solid #fde68a; border-radius:6px; padding:10px; background:#fff; + resize:vertical; line-height:1.5; tab-size:2; }} +.regen-textarea:focus {{ border-color:#d97706; outline:none; box-shadow:0 0 0 2px rgba(217,119,6,0.15); }} +.regen-exec-btn {{ margin-top:8px; padding:8px 20px; border:none; border-radius:6px; + background:#d97706; color:#fff; font-size:13px; font-weight:600; + cursor:pointer; transition:background 0.2s; }} +.regen-exec-btn:hover {{ background:#b45309; }} +.regen-exec-btn:disabled {{ opacity:0.5; cursor:not-allowed; }} + /* JSON sections */ .json-section {{ margin-bottom:12px; }} .json-section-label {{ font-weight:600; font-size:13px; color:var(--accent); margin-bottom:4px; @@ -602,12 +636,22 @@ body {{ font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto San // ============ Embedded Data ============ const COMPONENTS = {components_json}; const PUSH_FIELD_MAP = {push_field_map_json}; +const CHARACTER_MAP = {character_map_json}; +const LEVEL = {level_json}; function getApiUrl() {{ const input = document.getElementById('apiUrlInput'); return input ? input.value.trim() : "{api_url or 'https://api-test.valavala.com/content/feishu/notify'}"; }} +function getRegenUrl() {{ + const pushUrl = getApiUrl(); + // 从 push URL 推导 regenerate URL(同一服务器) + const idx = pushUrl.indexOf('/api/'); + if (idx > 0) return pushUrl.substring(0, idx) + '/api/regenerate'; + return pushUrl.replace(/\\/[^\\/]*$/, '/api/regenerate'); +}} + // ============ Card Toggle ============ function toggleCard(idx) {{ const card = document.getElementById('card-' + idx); @@ -1052,6 +1096,181 @@ async function pushAll() {{ }} }} +// ============ Regenerate ============ +function toggleRegenPanel(idx) {{ + const panel = document.getElementById('regen-panel-' + idx); + if (!panel) return; + panel.style.display = panel.style.display === 'none' ? 'block' : 'none'; +}} + +async function regenerateComponent(idx) {{ + const comp = COMPONENTS[idx - 1]; + const ta = document.getElementById('regen-config-' + idx); + const btn = document.getElementById('regen-exec-' + idx); + if (!ta || !btn) return; + + const teachingConfig = ta.value.trim(); + if (!teachingConfig) {{ + showToast('原始组件配置不能为空', 'error'); + return; + }} + + btn.disabled = true; + btn.textContent = '生成中...'; + setStatus('regen-status-' + idx, 'loading'); + + const regenUrl = getRegenUrl(); + + try {{ + const resp = await fetch(regenUrl, {{ + method: 'POST', + headers: {{ 'Content-Type': 'application/json' }}, + body: JSON.stringify({{ + teaching_config: teachingConfig, + type_name: comp.type_name, + cId: comp.cId, + character_map: CHARACTER_MAP, + level: LEVEL, + }}), + }}); + + const data = await resp.json(); + + if (!resp.ok) {{ + throw new Error(data.error || ('HTTP ' + resp.status)); + }} + + // Update COMPONENTS data + comp.status = 'generated'; + comp.category = data.category || comp.category; + comp.cType = data.cType || comp.cType; + comp.raw_config = teachingConfig; + + if (comp.category === 'core') {{ + const fields = PUSH_FIELD_MAP[comp.cType] || []; + for (const key of fields) {{ + if (data[key]) comp[key] = data[key]; + }} + }} else {{ + if (data.jsonData) comp.jsonData = data.jsonData; + }} + if (data.kpInfo) comp.kpInfo = data.kpInfo; + + // Rebuild body HTML + rebuildComponentBody(idx, data); + + setStatus('regen-status-' + idx, 'ok'); + btn.textContent = '执行重新生成'; + btn.disabled = false; + + // Update status label + const statusEl = document.getElementById('status-label-' + idx); + if (statusEl) {{ + statusEl.className = 'comp-status ok'; + statusEl.textContent = '生成成功'; + }} + + showToast('组件 #' + idx + ' 重新生成成功', 'success'); + }} catch(e) {{ + setStatus('regen-status-' + idx, 'fail'); + btn.textContent = '执行重新生成'; + btn.disabled = false; + showToast('组件 #' + idx + ' 重新生成失败: ' + e.message, 'error'); + }} +}} + +function rebuildComponentBody(idx, data) {{ + const comp = COMPONENTS[idx - 1]; + const resultDiv = document.getElementById('regen-result-' + idx); + if (!resultDiv) return; + + // Clear old content above regen-result (error-msg, json-sections etc) + const body = document.getElementById('body-' + idx); + const regenPanel = document.getElementById('regen-panel-' + idx); + // Remove everything except regen-result and regen-panel + while (body.firstChild && body.firstChild !== resultDiv && body.firstChild !== regenPanel) {{ + body.removeChild(body.firstChild); + }} + + // Build new JSON sections + let html = ''; + if (comp.category === 'core') {{ + const fields = PUSH_FIELD_MAP[comp.cType] || []; + for (const key of fields) {{ + const val = data[key]; + if (val) {{ + html += buildJsonSectionHtml(key, key, val, idx); + }} + }} + }} else {{ + if (data.jsonData) {{ + html += buildJsonSectionHtml('jsonData', 'jsonData', data.jsonData, idx); + }} + }} + + if (data.kpInfo) {{ + const kpClean = JSON.parse(JSON.stringify(data.kpInfo)); + if (kpClean.kpInfo) {{ + kpClean.kpInfo.forEach(k => delete k.candidates); + if (kpClean.kpInfo.length > 0) {{ + html += buildJsonSectionHtml('kpInfo JSON', 'kpInfo', kpClean, idx); + }} + }} + }} + + // Insert before resultDiv + const temp = document.createElement('div'); + temp.innerHTML = html; + while (temp.firstChild) {{ + body.insertBefore(temp.firstChild, resultDiv); + }} + + // Show push buttons in header if not already there + ensurePushButtons(idx); +}} + +function buildJsonSectionHtml(label, key, data, idx) {{ + const raw = JSON.stringify(data, null, 2); + const escaped = raw.replace(/&/g,'&').replace(//g,'>').replace(/"/g,'"'); + const taId = 'ta-' + idx + '-' + key; + const numLines = raw.split('\\n').length; + const rows = Math.min(Math.max(numLines, 5), 30); + let lineNums = ''; + for (let i = 1; i <= numLines; i++) lineNums += '' + i + ''; + + return '
' + + '' + + '
' + + '
' + lineNums + '
' + + '' + + '
'; +}} + +function ensurePushButtons(idx) {{ + const header = document.querySelector('#card-' + idx + ' .comp-header'); + if (!header) return; + // Check if push buttons already exist + if (header.querySelector('.config-btn')) return; + // Find regen-btn to insert before it + const regenBtn = header.querySelector('.regen-btn'); + if (!regenBtn) return; + + const cfgBtn = document.createElement('button'); + cfgBtn.className = 'push-btn config-btn'; + cfgBtn.setAttribute('data-idx', idx); + cfgBtn.onclick = function(e) {{ e.stopPropagation(); pushComponent(idx); }}; + cfgBtn.innerHTML = '配置推送'; + + const kpBtn = document.createElement('button'); + kpBtn.className = 'push-btn kp-btn'; + kpBtn.setAttribute('data-idx', idx); + kpBtn.onclick = function(e) {{ e.stopPropagation(); pushKp(idx); }}; + kpBtn.innerHTML = '知识推送'; + + header.insertBefore(kpBtn, regenBtn); + header.insertBefore(cfgBtn, kpBtn); +}} + ''' diff --git a/skills/interactive-component-json/scripts/pipeline.py b/skills/interactive-component-json/scripts/pipeline.py index 2f98559..9c1ec7b 100644 --- a/skills/interactive-component-json/scripts/pipeline.py +++ b/skills/interactive-component-json/scripts/pipeline.py @@ -82,30 +82,53 @@ def _load_proxy_config(): return None -def _ensure_proxy_running(): - """检测代理服务是否运行,未运行则自动启动。返回代理 URL 或 None。""" - import requests as _req - - proxy_cfg = _load_proxy_config() - if not proxy_cfg: - logger.warning("未找到 config.json 或 proxy 配置,跳过代理") - return None - - port = proxy_cfg['port'] - external_ip = proxy_cfg.get('external_ip', '127.0.0.1') - health_url = f'http://127.0.0.1:{port}/health' - - # 健康检查 +def _find_pid_on_port(port): + """查找占用指定端口的进程PID,返回PID或None。""" + import signal try: - resp = _req.get(health_url, timeout=2) - if resp.status_code == 200: - logger.info(f"代理服务已运行 (port {port})") - return f'http://{external_ip}:{port}/api/push' + result = subprocess.run( + ['ss', '-tlnp', f'sport = :{port}'], + capture_output=True, text=True, timeout=5 + ) + # 解析 ss 输出中的 pid=XXXX + import re as _re + m = _re.search(r'pid=(\d+)', result.stdout) + if m: + return int(m.group(1)) except Exception: pass + return None - # 尝试启动代理 - logger.info("代理服务未运行,正在启动...") + +def _kill_stale_process(port): + """杀掉占用端口的僵死进程,返回是否成功释放。""" + import signal + pid = _find_pid_on_port(port) + if not pid: + return False + logger.warning(f"⚠️ 检测到端口 {port} 被僵死进程占用 (PID {pid}),正在终止...") + try: + os.kill(pid, signal.SIGTERM) + # 等待进程退出 + for _ in range(5): + time.sleep(0.5) + try: + os.kill(pid, 0) # 检查进程是否还在 + except OSError: + logger.info(f"✓ 僵死进程 (PID {pid}) 已终止") + return True + # SIGTERM 没杀掉,强制 SIGKILL + os.kill(pid, signal.SIGKILL) + time.sleep(0.5) + logger.info(f"✓ 僵死进程 (PID {pid}) 已强制终止 (SIGKILL)") + return True + except OSError as e: + logger.error(f"终止进程 PID {pid} 失败: {e}") + return False + + +def _start_proxy_process(): + """启动代理服务子进程。""" proxy_script = os.path.join(CURRENT_PATH, 'proxy_server.py') subprocess.Popen( [sys.executable, proxy_script], @@ -114,18 +137,63 @@ def _ensure_proxy_running(): start_new_session=True, ) - # 等待启动 - for _ in range(5): + +def _ensure_proxy_running(): + """检测代理服务是否运行,未运行则自动启动。返回代理 URL 或 None。""" + import requests as _req + + proxy_cfg = _load_proxy_config() + if not proxy_cfg: + logger.warning("⚠️ 未找到 config.json 或 proxy 配置,跳过代理") + print("[代理] ⚠️ 未找到代理配置,HTML报告将使用直连地址") + return None + + port = proxy_cfg['port'] + external_ip = proxy_cfg.get('external_ip', '127.0.0.1') + health_url = f'http://127.0.0.1:{port}/health' + proxy_url = f'http://{external_ip}:{port}/api/push' + + # 健康检查 + try: + resp = _req.get(health_url, timeout=3) + if resp.status_code == 200: + logger.info(f"✓ 代理服务正常运行 (port {port})") + print(f"[代理] ✓ 中转服务正常 → {proxy_url}") + return proxy_url + except Exception: + pass + + # 健康检查失败 — 检测端口是否被僵死进程占用 + stale_pid = _find_pid_on_port(port) + if stale_pid: + logger.warning(f"代理服务健康检查失败,但端口 {port} 被进程 PID {stale_pid} 占用(疑似僵死)") + print(f"[代理] ⚠️ 端口 {port} 被僵死进程 (PID {stale_pid}) 占用,正在清理...") + if not _kill_stale_process(port): + logger.error(f"无法终止僵死进程 PID {stale_pid},HTML报告将使用直连地址") + print(f"[代理] ❌ 无法清理僵死进程,HTML报告将使用直连地址") + return None + time.sleep(1) # 等待端口释放 + else: + logger.info("代理服务未运行,正在启动...") + print(f"[代理] 正在启动中转服务 (port {port})...") + + # 启动代理 + _start_proxy_process() + + # 等待启动(最多8秒) + for i in range(8): time.sleep(1) try: resp = _req.get(health_url, timeout=2) if resp.status_code == 200: - logger.info(f"代理服务启动成功 (port {port})") - return f'http://{external_ip}:{port}/api/push' + logger.info(f"✓ 代理服务启动成功 (port {port}, 耗时 {i+1}s)") + print(f"[代理] ✓ 中转服务启动成功 → {proxy_url}") + return proxy_url except Exception: continue - logger.warning("代理服务启动失败,HTML报告将使用直连地址") + logger.error("❌ 代理服务启动失败,HTML报告将使用直连地址") + print("[代理] ❌ 中转服务启动失败!HTML报告将使用直连HTTPS地址(可能受浏览器CORS限制)") return None @@ -290,6 +358,7 @@ def process_script(wiki_url_or_token, db_path=None, dry_run=False): "type_name": type_name, "category": category, "result": result, + "raw_config": comp.get("teaching_config", ""), } if dry_run: @@ -403,6 +472,7 @@ def process_script(wiki_url_or_token, db_path=None, dry_run=False): "status": status, "jsonData": result_data.get("jsonData"), "kpInfo": result_data.get("kpInfo"), + "raw_config": res.get("raw_config", ""), } if status == "saved": entry["component_id"] = res.get("component_id") @@ -431,6 +501,8 @@ def process_script(wiki_url_or_token, db_path=None, dry_run=False): report["success"] = _progress["success"] report["failed"] = _progress["failed"] report["skipped"] = _progress["skipped"] + report["character_map"] = character_map + report["level"] = level # 记录日志路径到报告 report["log_path"] = log_path diff --git a/skills/interactive-component-json/scripts/proxy_server.py b/skills/interactive-component-json/scripts/proxy_server.py index fcc25db..ac3545b 100644 --- a/skills/interactive-component-json/scripts/proxy_server.py +++ b/skills/interactive-component-json/scripts/proxy_server.py @@ -1,17 +1,20 @@ #!/usr/bin/env python3 -"""轻量 CORS 代理服务 - 转发推送请求到目标 API""" +"""轻量 CORS 代理服务 - 转发推送请求到目标 API + 单组件重新生成""" import json +import sys import time import logging import threading -from http.server import HTTPServer, BaseHTTPRequestHandler +import traceback +from http.server import ThreadingHTTPServer, BaseHTTPRequestHandler from logging.handlers import TimedRotatingFileHandler from pathlib import Path import requests PROJECT_ROOT = Path(__file__).resolve().parent.parent +SCRIPTS_DIR = Path(__file__).resolve().parent LOG_DIR = PROJECT_ROOT / 'logs' LOG_DIR.mkdir(exist_ok=True) @@ -56,6 +59,42 @@ class RateLimiter: rate_limiter = RateLimiter(CONFIG['rate_limit_per_minute']) +# --- Regenerate Handler --- +def _do_regenerate(body_data): + """调用 generate_component 重新生成单个组件""" + if str(SCRIPTS_DIR) not in sys.path: + sys.path.insert(0, str(SCRIPTS_DIR)) + + from generate_json import generate_component + from llm_client import LLMClient + + teaching_config = body_data.get("teaching_config", "") + type_name = body_data.get("type_name", "") + cId = body_data.get("cId", "") + character_map = body_data.get("character_map") or {} + level = body_data.get("level") or None + + if not teaching_config or not type_name: + return 400, {"error": "缺少 teaching_config 或 type_name"} + + component = { + "type_name": type_name, + "cId": cId, + "teaching_config": teaching_config, + "has_image": body_data.get("has_image", False), + "knowledge_text": body_data.get("knowledge_text", ""), + "config_info": body_data.get("config_info", ""), + } + + try: + llm_client = LLMClient() + result = generate_component(component, character_map=character_map, llm_client=llm_client, level=level) + return 200, result + except Exception as e: + logger.error(f"Regenerate failed: {traceback.format_exc()}") + return 500, {"error": str(e)} + + class ProxyHandler(BaseHTTPRequestHandler): def _send_json(self, code, data, extra_headers=None): @@ -79,7 +118,7 @@ class ProxyHandler(BaseHTTPRequestHandler): return self.client_address[0] def do_OPTIONS(self): - if self.path == '/api/push': + if self.path in ('/api/push', '/api/regenerate'): self.send_response(204) self.send_header('Access-Control-Allow-Origin', '*') self.send_header('Access-Control-Allow-Methods', 'POST, OPTIONS') @@ -96,10 +135,26 @@ class ProxyHandler(BaseHTTPRequestHandler): self.send_error(404) def do_POST(self): - if self.path != '/api/push': + if self.path == '/api/push': + self._handle_push() + elif self.path == '/api/regenerate': + self._handle_regenerate() + else: self.send_error(404) - return + def _read_body(self, max_size=2 * 1024 * 1024): + content_length = int(self.headers.get('Content-Length', 0)) + if content_length == 0: + return None, (400, {'error': 'empty body'}) + if content_length > max_size: + return None, (413, {'error': 'body too large'}) + raw_body = self.rfile.read(content_length) + try: + return json.loads(raw_body), None + except json.JSONDecodeError: + return None, (400, {'error': 'invalid JSON'}) + + def _handle_push(self): client_ip = self._get_client_ip() if not rate_limiter.is_allowed(client_ip): self._send_json(429, {'error': 'rate limit exceeded'}) @@ -147,13 +202,32 @@ class ProxyHandler(BaseHTTPRequestHandler): self._send_json(502, {'error': f'upstream error: {str(e)}'}) logger.error(f'[{client_ip}] Forward failed: {e}') + def _handle_regenerate(self): + client_ip = self._get_client_ip() + logger.info(f'[{client_ip}] POST /api/regenerate') + + body_data, err = self._read_body() + if err: + self._send_json(err[0], err[1]) + return + + if not isinstance(body_data, dict) or not body_data.get('teaching_config'): + self._send_json(400, {'error': 'body must contain teaching_config'}) + return + + logger.info(f'[{client_ip}] Regenerating: type_name={body_data.get("type_name")}, cId={body_data.get("cId")}') + + code, result = _do_regenerate(body_data) + self._send_json(code, result) + logger.info(f'[{client_ip}] Regenerate done: status={code}') + def log_message(self, format, *args): logger.debug(f'{self.client_address[0]} - {format % args}') def main(): port = CONFIG['port'] - server = HTTPServer(('0.0.0.0', port), ProxyHandler) + server = ThreadingHTTPServer(('0.0.0.0', port), ProxyHandler) logger.info(f'Proxy server started on 0.0.0.0:{port}') logger.info(f'Target: {CONFIG["target_url"]}') logger.info(f'Rate limit: {CONFIG["rate_limit_per_minute"]} req/min per IP')