auto backup: 2026-06-09 08:10:02
This commit is contained in:
parent
d5d3deb554
commit
1212794459
29
AGENTS.md
29
AGENTS.md
@ -172,7 +172,7 @@ Skills 按四层架构组织:
|
|||||||
多业务模块共用的飞书操作技能,如内嵌Sheet读写、多维表格操作、文档正文写入、L1配置审校等。
|
多业务模块共用的飞书操作技能,如内嵌Sheet读写、多维表格操作、文档正文写入、L1配置审校等。
|
||||||
|
|
||||||
### 第四层:模块专属技能(`./business_production/<模块>/skills/`)
|
### 第四层:模块专属技能(`./business_production/<模块>/skills/`)
|
||||||
仅服务于特定业务模块的技能,如组件配置JSON生成、单元挑战题型生产、对话组件配置等。
|
仅服务于特定业务模块的技能,如组件配置JSON生成、单元挑战题型生产等。
|
||||||
|
|
||||||
### 系统级技能
|
### 系统级技能
|
||||||
`/root/.openclaw/skills` — 系统内置通用技能(定时任务、天气等)。
|
`/root/.openclaw/skills` — 系统内置通用技能(定时任务、天气等)。
|
||||||
@ -217,6 +217,13 @@ Skills 按四层架构组织:
|
|||||||
|
|
||||||
收到以下触发词时,**必须先读取对应 SKILL.md 再执行**,禁止跳过 skill 直接用 MEMORY.md 规则手动处理。
|
收到以下触发词时,**必须先读取对应 SKILL.md 再执行**,禁止跳过 skill 直接用 MEMORY.md 规则手动处理。
|
||||||
|
|
||||||
|
⚠️ **路由决策规则(优先级最高):**
|
||||||
|
1. 收到用户消息后,**先扫描本表格所有触发词**,找到第一个匹配的即停止
|
||||||
|
2. **匹配后只读取该行对应的 SKILL.md**,禁止读取同一模块下其他技能的 SKILL.md
|
||||||
|
3. 特别注意以下易混淆对:
|
||||||
|
- `组件配置` → `interactive-component-json`(组件配置模块),**不要**读 `script-component-production`
|
||||||
|
- `组件生产` → `script-component-production`(组件生产模块),**不要**读 `interactive-component-json`
|
||||||
|
|
||||||
#### 英文台词(English Script Production)
|
#### 英文台词(English Script Production)
|
||||||
|
|
||||||
| 触发词 | 技能 | 路径 |
|
| 触发词 | 技能 | 路径 |
|
||||||
@ -234,34 +241,18 @@ Skills 按四层架构组织:
|
|||||||
|--------|------|------|
|
|--------|------|------|
|
||||||
| `/组件生产`、`组件生产`、`组件回填` | `script-component-production` | `business_production/组件生产/skills/script-component-production/SKILL.md` |
|
| `/组件生产`、`组件生产`、`组件回填` | `script-component-production` | `business_production/组件生产/skills/script-component-production/SKILL.md` |
|
||||||
| `组件设计`、`设计组件` | `component-design` | `business_production/组件生产/skills/component-design/SKILL.md` |
|
| `组件设计`、`设计组件` | `component-design` | `business_production/组件生产/skills/component-design/SKILL.md` |
|
||||||
| `对话互动配置`、`对话组件配置` | `dialogue-interaction-config` | `business_production/组件生产/skills/dialogue-interaction-config/SKILL.md` |
|
|
||||||
| `互动组件规范`、`组件格式参考` | `vala-interactive-components` | `business_production/组件生产/skills/vala-interactive-components/SKILL.md` |
|
| `互动组件规范`、`组件格式参考` | `vala-interactive-components` | `business_production/组件生产/skills/vala-interactive-components/SKILL.md` |
|
||||||
| `组件标准化`、`对话组件标准化` | `task-router`(`dialogue-components-standardizer`) | `business_production/组件生产/skills/task-router/SKILL.md` |
|
| `组件标准化`、`对话组件标准化` | `task-router`(`dialogue-components-standardizer`) | `business_production/组件生产/skills/task-router/SKILL.md` |
|
||||||
|
|
||||||
##### 对话类组件配置子技能(由 `dialogue-interaction-config` 调度)
|
|
||||||
|
|
||||||
| 触发词 | 技能 | 路径 |
|
|
||||||
|--------|------|------|
|
|
||||||
| `对话选择配置`、`choose config` | `dialogue-choose-config` | `business_production/组件生产/skills/dialogue-choose-config/SKILL.md` |
|
|
||||||
| `核心导航配置`、`core navigation config` | `dialogue-core-navigation-config` | `business_production/组件生产/skills/dialogue-core-navigation-config/SKILL.md` |
|
|
||||||
| `对话挖空配置`、`fill in blanks config` | `dialogue-fill-in-blanks-config` | `business_production/组件生产/skills/dialogue-fill-in-blanks-config/SKILL.md` |
|
|
||||||
| `看图说话配置`、`image description config` | `dialogue-image-description-config` | `business_production/组件生产/skills/dialogue-image-description-config/SKILL.md` |
|
|
||||||
| `对话朗读配置`、`reading config` | `dialogue-reading-config` | `business_production/组件生产/skills/dialogue-reading-config/SKILL.md` |
|
|
||||||
| `对话选读配置`、`selective reading config` | `dialogue-selective-reading-config` | `business_production/组件生产/skills/dialogue-selective-reading-config/SKILL.md` |
|
|
||||||
| `对话组句配置`、`sentence building config` | `dialogue-sentence-building-config` | `business_production/组件生产/skills/dialogue-sentence-building-config/SKILL.md` |
|
|
||||||
| `图片单选配置`、`single choice image config` | `dialogue-single-choice-image-config` | `business_production/组件生产/skills/dialogue-single-choice-image-config/SKILL.md` |
|
|
||||||
| `信息组句配置`、`info sentence building` | `info-sentence-building-config` | `business_production/组件生产/skills/info-sentence-building-config/SKILL.md` |
|
|
||||||
| `信息拼词配置`、`info word spelling` | `info-word-spelling-config` | `business_production/组件生产/skills/info-word-spelling-config/SKILL.md` |
|
|
||||||
|
|
||||||
> **示例:** 用户发来飞书 wiki 链接说「组件生产」→ 调用 `script-component-production`,读剧本表 → 生成互动组件内容 → 回填对应列
|
> **示例:** 用户发来飞书 wiki 链接说「组件生产」→ 调用 `script-component-production`,读剧本表 → 生成互动组件内容 → 回填对应列
|
||||||
|
|
||||||
#### 组件配置(Component JSON Config)
|
#### 组件配置(Component JSON Config)
|
||||||
|
|
||||||
| 触发词 | 技能 | 路径 |
|
| 触发词 | 技能 | 路径 |
|
||||||
|--------|------|------|
|
|--------|------|------|
|
||||||
| `组件配置-json`、`组件配置JSON`、`互动组件JSON` | `interactive-component-json` | `business_production/组件配置/interactive-component-json/SKILL.md` |
|
| `组件配置`、`组件配置JSON`、`互动组件JSON` | `interactive-component-json` | `business_production/组件配置/interactive-component-json/SKILL.md` |
|
||||||
|
|
||||||
> **示例:** 用户说「组件配置-json」→ 调用 `interactive-component-json`,根据组件类型生成标准化 JSON 配置
|
> **示例:** 用户说「组件配置」→ 调用 `interactive-component-json`,根据组件类型生成标准化 JSON 配置
|
||||||
|
|
||||||
#### 单元挑战(Unit Challenge)
|
#### 单元挑战(Unit Challenge)
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: component-design
|
name: component-design
|
||||||
version: 1.2.0
|
version: 1.3.0
|
||||||
description: 教研互动组件设计规范(结构化文本格式,不涉及JSON)。触发方式:(1) `/组件生产 --feishu-url <链接>` (2) 飞书链接 + "组件"/"设计组件"/"组件回填"。不会误触发:仅含"互动"不触发;含"组件配置-json"不触发(属于 interactive-component-json 技能)。标准化组件生产流程:设计→生成(结构化文本)→校验→回填。
|
description: 教研互动组件设计规范(结构化文本格式,不涉及JSON)。触发方式:(1) `/组件生产 --feishu-url <链接>` (2) 飞书链接 + "组件"/"设计组件"/"组件回填"。不会误触发:仅含"互动"不触发;含"组件配置-json"不触发(属于 interactive-component-json 技能)。标准化组件生产流程:设计→生成(结构化文本)→校验→回填。
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -53,10 +53,12 @@ description: 教研互动组件设计规范(结构化文本格式,不涉及J
|
|||||||
- 所有组件【正确反馈】统一填「无」
|
- 所有组件【正确反馈】统一填「无」
|
||||||
- 【错误反馈】必须是符合当前剧情场景的自然角色对话,禁止使用指令式、说教式表达(如禁止出现"Try to pronounce clearly, one more time."这类老师命令式内容),必须带角色名
|
- 【错误反馈】必须是符合当前剧情场景的自然角色对话,禁止使用指令式、说教式表达(如禁止出现"Try to pronounce clearly, one more time."这类老师命令式内容),必须带角色名
|
||||||
7. **后置对话规则**:组件行之后紧接的、与组件内容相关的角色台词需要放入【后置对话】字段中
|
7. **后置对话规则**:组件行之后紧接的、与组件内容相关的角色台词需要放入【后置对话】字段中
|
||||||
8. **禁用内容规则**:
|
8. **情境引入/后置对话去重规则**:禁止直接复制前一行或后一行的台词原文。若情境引入与前一行的英文台词完全相同,或后置对话与后一行的英文台词完全相同,直接写「无」
|
||||||
|
9. **禁用内容规则**:
|
||||||
- 完全删除所有【图片资源】行
|
- 完全删除所有【图片资源】行
|
||||||
- 音频载体无特殊要求时填「无」
|
- 音频载体无特殊要求时填「无」
|
||||||
- 组件禁止使用组件所在行之前的台词,【情境引入】和【后置对话】无内容时填「无」
|
- 组件禁止使用组件所在行之前的台词,【情境引入】和【后置对话】无内容时填「无」
|
||||||
|
10. **配图组件资源配置规则**:A列含"配图"时,【资源配置】仅保留`图片时机`,不写`音频载体`。图片时机根据有实际内容(非「无」)的 section 动态列出(如「互动内容」「情境引入 互动内容 互动反馈」),所有 section 均无内容则填「无」。图片时机和音频载体禁止同时存在。
|
||||||
|
|
||||||
### 二、组件类型专属规则
|
### 二、组件类型专属规则
|
||||||
#### 1. 物品互动
|
#### 1. 物品互动
|
||||||
@ -71,8 +73,10 @@ description: 教研互动组件设计规范(结构化文本格式,不涉及J
|
|||||||
```
|
```
|
||||||
|
|
||||||
#### 2. 对话朗读
|
#### 2. 对话朗读
|
||||||
- 包含字段:【任务标题】【资源配置】【情境引入】【互动内容】【互动反馈】【后置对话】
|
- 包含字段:【任务标题】【资源配置】【情境引入】【互动内容】【后置对话】
|
||||||
- 【资源配置】下保留`图片时机`和`音频载体`字段,无教研图时填`图片时机:无`,有教研图时填图片出现的阶段,如`图片时机:【互动内容】`;音频载体无特殊要求填「无」
|
- **不包含【互动反馈】字段**
|
||||||
|
- **配图规则**:A列含"配图"时,【资源配置】仅保留`图片时机`,不写`音频载体`。图片时机根据有实际内容的 section 动态列出(如「互动内容」「互动内容 后置对话」),无内容则填「无」
|
||||||
|
- **无配图时**:【资源配置】下保留`图片时机`和`音频载体`字段,无教研图时填`图片时机:无`,音频载体无特殊要求填「无」
|
||||||
- 【情境引入】【后置对话】无内容时填「无」
|
- 【情境引入】【后置对话】无内容时填「无」
|
||||||
- 示例:
|
- 示例:
|
||||||
```
|
```
|
||||||
@ -87,10 +91,6 @@ description: 教研互动组件设计规范(结构化文本格式,不涉及J
|
|||||||
【互动内容】
|
【互动内容】
|
||||||
User: It is still night.(朗读)
|
User: It is still night.(朗读)
|
||||||
|
|
||||||
【互动反馈】
|
|
||||||
正确:无
|
|
||||||
错误:Vicky : Wait, that didn't sound right.
|
|
||||||
|
|
||||||
【后置对话】
|
【后置对话】
|
||||||
无
|
无
|
||||||
```
|
```
|
||||||
@ -126,13 +126,16 @@ description: 教研互动组件设计规范(结构化文本格式,不涉及J
|
|||||||
无
|
无
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 4. 图片类互动(图片单选/多选/有序等)
|
#### 4. 图片类互动(图片单选/多选/有序/拖拽等)
|
||||||
|
- **不包含【资源配置】字段**,直接从【任务标题】开始
|
||||||
- 【互动内容】题干必须为指令句式,禁止使用问句
|
- 【互动内容】题干必须为指令句式,禁止使用问句
|
||||||
- 仅知识点单词前后加$符号高亮,非知识点单词不加
|
- 仅知识点单词前后加$符号高亮,非知识点单词不加
|
||||||
- 图片有序支持4个及以上选项,正确顺序标注为「正确顺序:00→01→02→03」
|
- 图片有序支持4个及以上选项,正确顺序标注为「正确顺序:00→01→02→03」
|
||||||
|
- **辅助信息规则**:在「正确:XX」行后添加一行 `辅助信息:{单词} {中文释义}。`,格式参考知识点 Sheet 中的释义列
|
||||||
- 示例:
|
- 示例:
|
||||||
```
|
```
|
||||||
【任务标题】排序跳格子顺序
|
【任务标题】排序跳格子顺序
|
||||||
|
|
||||||
【情境引入】
|
【情境引入】
|
||||||
无
|
无
|
||||||
|
|
||||||
@ -144,7 +147,7 @@ description: 教研互动组件设计规范(结构化文本格式,不涉及J
|
|||||||
02
|
02
|
||||||
03
|
03
|
||||||
正确顺序:00→01→02→03
|
正确顺序:00→01→02→03
|
||||||
辅助信息:one by one指"一个接一个"
|
辅助信息:one by one 指"一个接一个"。
|
||||||
|
|
||||||
【互动反馈】
|
【互动反馈】
|
||||||
正确:无
|
正确:无
|
||||||
@ -248,5 +251,6 @@ description: 教研互动组件设计规范(结构化文本格式,不涉及J
|
|||||||
|
|
||||||
---
|
---
|
||||||
## 版本更新记录
|
## 版本更新记录
|
||||||
|
- v1.3(2026-06-08):图片类互动删除【资源配置】字段、新增辅助信息规则;对话朗读删除【互动反馈】字段;新增配图组件资源配置规则;新增情境引入/后置对话去重规则(禁止复制前后行台词原文)
|
||||||
- v1.2(2026-04-09):修正图片类互动高亮规则(仅知识点单词加$,非知识点不加),新增对话选择、对话选读、对话表达三类组件的配置规则及标准模板
|
- v1.2(2026-04-09):修正图片类互动高亮规则(仅知识点单词加$,非知识点不加),新增对话选择、对话选读、对话表达三类组件的配置规则及标准模板
|
||||||
- v1.1(2026-04-09):新增错误反馈、任务标题、对话组句、选项格式等规则,修正不符合生产要求的旧规则
|
- v1.1(2026-04-09):新增错误反馈、任务标题、对话组句、选项格式等规则,修正不符合生产要求的旧规则
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: script-component-production
|
name: script-component-production
|
||||||
description: 剧本互动组件内容生产/审校/回填技能(不涉及JSON转换)。触发方式:(1) `/组件生产 --feishu-url <链接>` (2) 飞书链接 + "组件生产"/"组件回填"。不会误触发:仅含"互动"不触发;含"组件配置-json"不触发(属于 interactive-component-json 技能)。覆盖27种中互动+14种核心互动,从剧本sheet读取→识别→生成组件内容(结构化文本格式)→审校→回填。
|
description: 剧本互动组件内容生产/审校/回填技能(不涉及JSON转换)。触发方式:(1) `/组件生产 --feishu-url <链接>` (2) 飞书链接 + "组件生产"/"组件回填"。不会误触发:仅含"互动"不触发;含"组件配置"不触发(属于 interactive-component-json 技能)。覆盖27种中互动+14种核心互动,从剧本sheet读取→识别→生成组件内容(结构化文本格式)→审校→回填。
|
||||||
---
|
---
|
||||||
|
|
||||||
# 剧本互动组件内容生产技能
|
# 剧本互动组件内容生产技能
|
||||||
@ -15,7 +15,7 @@ description: 剧本互动组件内容生产/审校/回填技能(不涉及JSON
|
|||||||
**不会触发的情况:**
|
**不会触发的情况:**
|
||||||
- ❌ 仅说"互动" → 不触发(太模糊)
|
- ❌ 仅说"互动" → 不触发(太模糊)
|
||||||
- ❌ 仅说"组件" → 不触发(需要结合文档链接)
|
- ❌ 仅说"组件" → 不触发(需要结合文档链接)
|
||||||
- ❌ 消息含 **"组件配置-json"** → 不触发(属于 `interactive-component-json` 技能,由它独立响应)
|
- ❌ 消息含 **"组件配置"** → 不触发(属于 `interactive-component-json` 技能,由它独立响应)
|
||||||
- ✅ 正确使用:`/组件生产 --feishu-url https://... --mode backfill`
|
- ✅ 正确使用:`/组件生产 --feishu-url https://... --mode backfill`
|
||||||
|
|
||||||
---
|
---
|
||||||
@ -33,7 +33,7 @@ description: 剧本互动组件内容生产/审校/回填技能(不涉及JSON
|
|||||||
## 职责边界(重要)
|
## 职责边界(重要)
|
||||||
|
|
||||||
```
|
```
|
||||||
/组件生产(本技能) /组件配置-json(interactive-component-json 技能)
|
/组件生产(本技能) /组件配置(interactive-component-json 技能)
|
||||||
│ │
|
│ │
|
||||||
剧本组件内容生产 JSON配置格式转换
|
剧本组件内容生产 JSON配置格式转换
|
||||||
输出:结构化文本 输入:结构化文本
|
输出:结构化文本 输入:结构化文本
|
||||||
@ -45,7 +45,7 @@ description: 剧本互动组件内容生产/审校/回填技能(不涉及JSON
|
|||||||
|
|
||||||
- **本技能产出**:结构化文本格式的组件内容(见下方「输出格式」)
|
- **本技能产出**:结构化文本格式的组件内容(见下方「输出格式」)
|
||||||
- **本技能不负责**:将组件内容转换为JSON、定义JSON schema、生成JSON配置
|
- **本技能不负责**:将组件内容转换为JSON、定义JSON schema、生成JSON配置
|
||||||
- **下游流程**:教研员审校确认后,通过 `/组件配置-json`(`interactive-component-json` 技能)转换
|
- **下游流程**:教研员审校确认后,通过 `/组件配置`(`interactive-component-json` 技能)转换
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -152,10 +152,14 @@ This is my picture. It's ___, green and orange.(音频)
|
|||||||
| 6 | 选项格式 | 对话类用「选项1:XXX」、图片类用00/01/02编号 |
|
| 6 | 选项格式 | 对话类用「选项1:XXX」、图片类用00/01/02编号 |
|
||||||
| 7 | 反馈格式 | 错误反馈带角色名、自然对话、非指令式 |
|
| 7 | 反馈格式 | 错误反馈带角色名、自然对话、非指令式 |
|
||||||
| 8 | 高亮规则 | 图片类仅知识点词加$、对话类不加 |
|
| 8 | 高亮规则 | 图片类仅知识点词加$、对话类不加 |
|
||||||
| 9 | 情境引入 | 无内容填「无」,多句换行,格式为「角色名: 台词」 |
|
| 9 | 情境引入 | 无内容填「无」,多句换行,格式为「角色名: 台词」。**禁止直接复制前一行台词原文**,相同则填「无」 |
|
||||||
| 10 | 后置对话 | 取组件行之后的紧接台词,无则填「无」 |
|
| 10 | 后置对话 | 取组件行之后的紧接台词,无则填「无」。**禁止直接复制后一行台词原文**,相同则填「无」 |
|
||||||
| 11 | 超纲检查 | 词汇/句型在对应级别词库/句型库范围内 |
|
| 11 | 超纲检查 | 词汇/句型在对应级别词库/句型库范围内 |
|
||||||
| 12 | 标点符号 | 统一使用标准英文标点,禁止「~」「!!!」等非标准标点 |
|
| 12 | 标点符号 | 统一使用标准英文标点,禁止「~」「!!!」等非标准标点 |
|
||||||
|
| 13 | 图片类资源配置 | 图片类互动(图片单选/多选/有序/拖拽)**不包含【资源配置】字段** |
|
||||||
|
| 14 | 图片类辅助信息 | 图片类互动在「正确:XX」后添加 `辅助信息:{单词} {中文释义}。`,释义参考知识点 Sheet |
|
||||||
|
| 15 | 对话朗读反馈 | 对话朗读**不包含【互动反馈】字段** |
|
||||||
|
| 16 | 配图资源配置 | A列含"配图"时,仅保留`图片时机`(不写`音频载体`),根据有内容的 section 动态列出 |
|
||||||
|
|
||||||
#### 回填
|
#### 回填
|
||||||
- 将生成的结构化文本写入列G(组件配置)
|
- 将生成的结构化文本写入列G(组件配置)
|
||||||
@ -188,7 +192,7 @@ This is my picture. It's ___, green and orange.(音频)
|
|||||||
## 与上下游技能的协作
|
## 与上下游技能的协作
|
||||||
|
|
||||||
```
|
```
|
||||||
/英文台词 → /组件生产(本技能) → [教研员审校] → /组件配置-json
|
/英文台词 → /组件生产(本技能) → [教研员审校] → /组件配置
|
||||||
(kids-english-) (script-component-) (interactive-component-json)
|
(kids-english-) (script-component-) (interactive-component-json)
|
||||||
│ │
|
│ │
|
||||||
列E→列F 列G(结构化文本) 列G→标准JSON
|
列E→列F 列G(结构化文本) 列G→标准JSON
|
||||||
@ -197,7 +201,7 @@ This is my picture. It's ___, green and orange.(音频)
|
|||||||
1. **先**:`/英文台词` → 生产列E→列F的英文台词
|
1. **先**:`/英文台词` → 生产列E→列F的英文台词
|
||||||
2. **后**:`/组件生产` → 生产列G的组件内容(结构化文本)
|
2. **后**:`/组件生产` → 生产列G的组件内容(结构化文本)
|
||||||
3. **然后**:教研员二轮审校,确认无误
|
3. **然后**:教研员二轮审校,确认无误
|
||||||
4. **最后**:`/组件配置-json` → 将确认后的组件内容转为标准JSON配置
|
4. **最后**:`/组件配置` → 将确认后的组件内容转为标准JSON配置
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -234,5 +238,6 @@ This is my picture. It's ___, green and orange.(音频)
|
|||||||
|
|
||||||
## 版本历史
|
## 版本历史
|
||||||
|
|
||||||
|
- v1.2.0(2026-06-08):审校检查项新增 #13-#16(图片类资源配置、辅助信息、对话朗读反馈、配图资源配置);更新 #9-#10 情境引入/后置对话去重规则
|
||||||
- v1.1.0(2026-05-13):明确职责边界,产出格式从JSON改为结构化文本,与 interactive-component-json 解耦
|
- v1.1.0(2026-05-13):明确职责边界,产出格式从JSON改为结构化文本,与 interactive-component-json 解耦
|
||||||
- v1.0.0(2026-05-13):初始版本,覆盖27种中互动 + 14种核心互动,完整6节点流程
|
- v1.0.0(2026-05-13):初始版本,覆盖27种中互动 + 14种核心互动,完整6节点流程
|
||||||
|
|||||||
@ -3,9 +3,9 @@ name: interactive-component-json
|
|||||||
version: 8.0.0
|
version: 8.0.0
|
||||||
description: >
|
description: >
|
||||||
LLM驱动的互动组件配置JSON生成器。
|
LLM驱动的互动组件配置JSON生成器。
|
||||||
触发场景:用户发送"组件配置-json"或包含飞书剧本文档链接(wiki URL/token)时自动触发。
|
触发场景:用户发送"组件配置"或包含飞书剧本文档链接(wiki URL/token)时自动触发。
|
||||||
覆盖全部27种中互动组件类型 + 12种核心互动类型,从飞书wiki剧本文档出发,
|
覆盖全部27种中互动组件类型 + 12种核心互动类型,从飞书wiki剧本文档出发,
|
||||||
经过sheet数据解析、组件类型匹配、LLM生成jsonData、MySQL知识点库匹配kpInfo,
|
经过sheet数据解析、组件类型匹配、LLM生成jsonData、MySQL知识点库匹配kpInfo,
|
||||||
最终输出组件配置JSON和HTML报告。
|
最终输出组件配置JSON和HTML报告。
|
||||||
metadata:
|
metadata:
|
||||||
requires:
|
requires:
|
||||||
@ -18,83 +18,83 @@ metadata:
|
|||||||
endpoint: ep-20260106175024-6stxn
|
endpoint: ep-20260106175024-6stxn
|
||||||
---
|
---
|
||||||
|
|
||||||
注意: 需求描述请更新到 project.md 中!变更记录请更新到 prd.md 中!
|
注意: 需求描述请更新到 project.md 中!变更记录请更新到 prd.md 中!
|
||||||
|
|
||||||
|
|
||||||
# 互动组件配置JSON生成器
|
# 互动组件配置JSON生成器
|
||||||
|
|
||||||
## 文本输出规范(jsonData 内容强制遵守)
|
## 文本输出规范(jsonData 内容强制遵守)
|
||||||
|
|
||||||
所有生成的 JSON 配置中,任何嵌入的文本内容(题目、选项、解析、台词等)必须遵守:
|
所有生成的 JSON 配置中,任何嵌入的文本内容(题目、选项、解析、台词等)必须遵守:
|
||||||
1. 禁止 Markdown 标记(`**` `*` `__` `_` `#` `>` `-`),纯文本输出
|
1. 禁止 Markdown 标记(`**` `*` `__` `_` `#` `>` `-`),纯文本输出
|
||||||
2. 英式拼写优先(colour/centre/travelling 等)
|
2. 英式拼写优先(colour/centre/travelling 等)
|
||||||
3. 标点符号规范:英文半角(. , ! ?),中文全角(,。!?),不混用
|
3. 标点符号规范:英文半角(. , ! ?),中文全角(,。!?),不混用
|
||||||
|
|
||||||
## 触发场景
|
## 触发场景
|
||||||
|
|
||||||
用户发送以下格式的消息时触发完整处理流水线:
|
用户发送以下格式的消息时触发完整处理流水线:
|
||||||
|
|
||||||
```
|
```
|
||||||
组件配置json {飞书剧本文档链接}
|
组件配置json {飞书剧本文档链接}
|
||||||
```
|
```
|
||||||
|
|
||||||
处理完成后生成 HTML 报告文件,并**直接通过飞书 Bot 将 HTML 文件发送给请求者**,而不是仅返回文件路径。
|
处理完成后生成 HTML 报告文件,并**直接通过飞书 Bot 将 HTML 文件发送给请求者**,而不是仅返回文件路径。
|
||||||
|
|
||||||
### 发送规则
|
### 发送规则
|
||||||
|
|
||||||
- 私聊场景:自动发送给当前对话的用户(使用 `--send-to <user_id>`)
|
- 私聊场景:自动发送给当前对话的用户(使用 `--send-to <user_id>`)
|
||||||
- 群聊场景:发送到当前群组(使用 `--send-to-chat <chat_id>`)
|
- 群聊场景:发送到当前群组(使用 `--send-to-chat <chat_id>`)
|
||||||
- 发送失败时回退为返回文件路径
|
- 发送失败时回退为返回文件路径
|
||||||
|
|
||||||
### Agent 调用指引
|
### Agent 调用指引
|
||||||
|
|
||||||
当收到用户的“组件配置-json”请求时,agent 应执行:
|
当收到用户的"组件配置"请求时,agent 应执行:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# user_id 从 USER.md 中查找(非 open_id)
|
# user_id 从 USER.md 中查找(非 open_id)
|
||||||
cd "/root/.openclaw/workspace-xiaoyan/business_production/组件配置/interactive-component-json" && \
|
cd "/root/.openclaw/workspace-xiaoyan/business_production/组件配置/interactive-component-json" && \
|
||||||
python3 scripts/pipeline.py "<wiki_url>" --send-to <user_id>
|
python3 scripts/pipeline.py "<wiki_url>" --send-to <user_id>
|
||||||
```
|
```
|
||||||
|
|
||||||
关键点:
|
关键点:
|
||||||
- 默认写入本地 SQLite 数据库(`db/components.db`)保留生成记录
|
- 默认写入本地 SQLite 数据库(`db/components.db`)保留生成记录
|
||||||
- 远程数据库推送通过 HTML 报告中的推送按钮完成(用户手动触发)
|
- 远程数据库推送通过 HTML 报告中的推送按钮完成(用户手动触发)
|
||||||
- `--send-to` 参数使用租户级 `user_id`(如 `4aagb443`),不是 `open_id`
|
- `--send-to` 参数使用租户级 `user_id`(如 `4aagb443`),不是 `open_id`
|
||||||
- 群聊中使用 `--send-to-chat <chat_id>`
|
- 群聊中使用 `--send-to-chat <chat_id>`
|
||||||
- pipeline 会自动完成整个流程并发送文件,agent 无需额外处理发送逻辑
|
- pipeline 会自动完成整个流程并发送文件,agent 无需额外处理发送逻辑
|
||||||
- 如果发送成功,结尾会输出 `✅ HTML报告已发送: <message_id>`
|
- 如果发送成功,结尾会输出 `✅ HTML报告已发送: <message_id>`
|
||||||
- 如果发送失败,会输出 `❌ 发送失败: <error>`,此时应回退为告知用户文件路径
|
- 如果发送失败,会输出 `❌ 发送失败: <error>`,此时应回退为告知用户文件路径
|
||||||
- 可加 `--dry-run` 仅生成不写入本地DB(测试用)
|
- 可加 `--dry-run` 仅生成不写入本地DB(测试用)
|
||||||
|
|
||||||
### HTML 报告推送功能
|
### HTML 报告推送功能
|
||||||
|
|
||||||
生成的 HTML 报告内嵌以下推送能力(用户在浏览器中打开 HTML 后操作):
|
生成的 HTML 报告内嵌以下推送能力(用户在浏览器中打开 HTML 后操作):
|
||||||
|
|
||||||
1. **单组件推送**:每个成功组件旁有 `[配置↑]` 和 `[知识↑]` 按钮
|
1. **单组件推送**:每个成功组件旁有 `[配置↑]` 和 `[知识↑]` 按钮
|
||||||
- `[配置↑]` 推送组件配置 JSON 到远程数据库
|
- `[配置↑]` 推送组件配置 JSON 到远程数据库
|
||||||
- `[知识↑]` 推送知识点关联到远程数据库
|
- `[知识↑]` 推送知识点关联到远程数据库
|
||||||
2. **一键推送全部**:顶部 `一键推送全部配置+知识点` 按钮,带进度条和成功/失败统计
|
2. **一键推送全部**:顶部 `一键推送全部配置+知识点` 按钮,带进度条和成功/失败统计
|
||||||
3. **可编辑**:推送前可直接在 HTML 中修改 JSON 值和知识点 ID
|
3. **可编辑**:推送前可直接在 HTML 中修改 JSON 值和知识点 ID
|
||||||
|
|
||||||
推送通过 CORS 代理服务中转(解决本地 file:// 打开 HTML 时浏览器 Origin 限制):
|
推送通过 CORS 代理服务中转(解决本地 file:// 打开 HTML 时浏览器 Origin 限制):
|
||||||
- 代理服务:`scripts/proxy_server.py`(端口/IP/速率限制见 `config.json`)
|
- 代理服务:`scripts/proxy_server.py`(端口/IP/速率限制见 `config.json`)
|
||||||
- pipeline 执行时自动检测并启动代理服务
|
- pipeline 执行时自动检测并启动代理服务
|
||||||
- 目标接口:`POST https://api-test.valavala.com/content/feishu/notify`
|
- 目标接口:`POST https://api-test.valavala.com/content/feishu/notify`
|
||||||
|
|
||||||
### 代理服务自动管理
|
### 代理服务自动管理
|
||||||
|
|
||||||
pipeline 在生成 HTML 报告前会自动管理代理服务,运行时会输出 `[代理]` 前缀的状态信息:
|
pipeline 在生成 HTML 报告前会自动管理代理服务,运行时会输出 `[代理]` 前缀的状态信息:
|
||||||
|
|
||||||
| 输出信息 | 含义 |
|
| 输出信息 | 含义 |
|
||||||
|----------|------|
|
|----------|------|
|
||||||
| `[代理] ✓ 中转服务正常 → <url>` | 代理服务运行正常,HTML 将使用中转地址 |
|
| `[代理] ✓ 中转服务正常 → <url>` | 代理服务运行正常,HTML 将使用中转地址 |
|
||||||
| `[代理] ⚠️ 端口被僵死进程占用,正在清理...` | 检测到旧进程卡死,自动 kill 并重启 |
|
| `[代理] ⚠️ 端口被僵死进程占用,正在清理...` | 检测到旧进程卡死,自动 kill 并重启 |
|
||||||
| `[代理] ✓ 中转服务启动成功 → <url>` | 代理重启成功 |
|
| `[代理] ✓ 中转服务启动成功 → <url>` | 代理重启成功 |
|
||||||
| `[代理] ❌ 中转服务启动失败!` | 代理无法启动,HTML **仍使用代理地址**,推送前需手动运行 `python3 scripts/proxy_server.py &` |
|
| `[代理] ❌ 中转服务启动失败!` | 代理无法启动,HTML **仍使用代理地址**,推送前需手动运行 `python3 scripts/proxy_server.py &` |
|
||||||
|
|
||||||
**自动恢复机制**:当健康检查失败但端口被占用时(僵死进程),pipeline 会自动终止僵死进程并重新启动代理,无需人工干预。
|
**自动恢复机制**:当健康检查失败但端口被占用时(僵死进程),pipeline 会自动终止僵死进程并重新启动代理,无需人工干预。
|
||||||
|
|
||||||
**手动管理代理**:
|
**手动管理代理**:
|
||||||
```bash
|
```bash
|
||||||
# 查看代理进程
|
# 查看代理进程
|
||||||
ss -tlnp | grep 18080
|
ss -tlnp | grep 18080
|
||||||
@ -109,37 +109,37 @@ kill $(ss -tlnp | grep 18080 | grep -oP 'pid=\K\d+')
|
|||||||
curl http://127.0.0.1:18080/health
|
curl http://127.0.0.1:18080/health
|
||||||
```
|
```
|
||||||
|
|
||||||
**注意**:生成的 HTML 始终嵌入代理地址 `http://<external_ip>:18080/api/push`(只要 config.json 存在)。若代理未运行,推送前手动执行 `python3 scripts/proxy_server.py &` 启动即可,无需重新生成 HTML。
|
**注意**:生成的 HTML 始终嵌入代理地址 `http://<external_ip>:18080/api/push`(只要 config.json 存在)。若代理未运行,推送前手动执行 `python3 scripts/proxy_server.py &` 启动即可,无需重新生成 HTML。
|
||||||
|
|
||||||
## 概述
|
## 概述
|
||||||
|
|
||||||
本skill实现从**飞书wiki剧本文档** → **结构化组件配置JSON**的完整生产流水线。
|
本skill实现从**飞书wiki剧本文档** → **结构化组件配置JSON**的完整生产流水线。
|
||||||
覆盖全部**27种中互动组件类型** + **12种核心互动类型**(合作阅读、看图选词、口语快答、口语妙问、看图说话、合作听力、听力拖拽、听力选择、看图组句、看图撰写、邮件组句、邮件撰写),使用**LLM(doubao-seed-2.0-pro)**驱动核心JSON生成。
|
覆盖全部**27种中互动组件类型** + **12种核心互动类型**(合作阅读、看图选词、口语快答、口语妙问、看图说话、合作听力、听力拖拽、听力选择、看图组句、看图撰写、邮件组句、邮件撰写),使用**LLM(doubao-seed-2.0-pro)**驱动核心JSON生成。
|
||||||
|
|
||||||
### 核心流程
|
### 核心流程
|
||||||
|
|
||||||
```
|
```
|
||||||
飞书wiki URL
|
飞书wiki URL
|
||||||
↓
|
↓
|
||||||
[1] feishu_client.py — 读取文档 → 提取内嵌sheet → 读取sheet全量数据
|
[1] feishu_client.py - 读取文档 → 提取内嵌sheet → 读取sheet全量数据
|
||||||
↓
|
↓
|
||||||
[2] parse_script.py — 识别组件行 + 提取角色-section对应 + 配置信息
|
[2] parse_script.py - 识别组件行 + 提取角色-section对应 + 配置信息
|
||||||
↓
|
↓
|
||||||
[3] match_component.py — 中文类型名 → cType英文标识 + bitable_token
|
[3] match_component.py - 中文类型名 → cType英文标识 + bitable_token
|
||||||
↓
|
↓
|
||||||
[4] generate_json.py — per-type prompt模板 → jsonData + 规则化kpInfo
|
[4] generate_json.py - per-type prompt模板 → jsonData + 规则化kpInfo
|
||||||
↓ (section映射解析resourceMapping)
|
↓ (section映射解析resourceMapping)
|
||||||
[5] db_manager.py — 写入本地SQLite数据库
|
[5] db_manager.py - 写入本地SQLite数据库
|
||||||
↓
|
↓
|
||||||
[6] html_report.py — 生成交互式HTML报告
|
[6] html_report.py - 生成交互式HTML报告
|
||||||
↓
|
↓
|
||||||
[7] send_report_via_bot() — 通过飞书Bot发送HTML文件给请求者
|
[7] send_report_via_bot() - 通过飞书Bot发送HTML文件给请求者
|
||||||
```
|
```
|
||||||
|
|
||||||
### 快速使用
|
### 快速使用
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 端到端处理(写入DB)
|
# 端到端处理(写入DB)
|
||||||
python3 scripts/pipeline.py <wiki_url_or_token>
|
python3 scripts/pipeline.py <wiki_url_or_token>
|
||||||
|
|
||||||
# 仅生成不写入DB
|
# 仅生成不写入DB
|
||||||
@ -148,7 +148,7 @@ python3 scripts/pipeline.py <wiki_url_or_token> --dry-run
|
|||||||
# 限制处理前N个组件
|
# 限制处理前N个组件
|
||||||
python3 scripts/pipeline.py <wiki_url_or_token> --dry-run --limit 3
|
python3 scripts/pipeline.py <wiki_url_or_token> --dry-run --limit 3
|
||||||
|
|
||||||
# 生成后自动发送给指定用户(私聊)
|
# 生成后自动发送给指定用户(私聊)
|
||||||
python3 scripts/pipeline.py <wiki_url_or_token> --dry-run --send-to <user_id>
|
python3 scripts/pipeline.py <wiki_url_or_token> --dry-run --send-to <user_id>
|
||||||
|
|
||||||
# 生成后自动发送到群组
|
# 生成后自动发送到群组
|
||||||
@ -167,9 +167,9 @@ python3 scripts/db_manager.py stats
|
|||||||
interactive-component-json/
|
interactive-component-json/
|
||||||
├── SKILL.md # 本文件
|
├── SKILL.md # 本文件
|
||||||
├── references/
|
├── references/
|
||||||
│ ├── component_registry.md # 组件类型注册表(27种中互动 + 15种核心互动)
|
│ ├── component_registry.md # 组件类型注册表(27种中互动 + 15种核心互动)
|
||||||
│ ├── examples/
|
│ ├── examples/
|
||||||
│ │ └── all_types_examples.json # 从bitable预取的27种类型参考样例(few-shot用)
|
│ │ └── all_types_examples.json # 从bitable预取的27种类型参考样例(few-shot用)
|
||||||
│ ├── script_format_spec.md # 输入格式规范
|
│ ├── script_format_spec.md # 输入格式规范
|
||||||
│ └── json_output_spec.md # 输出格式规范
|
│ └── json_output_spec.md # 输出格式规范
|
||||||
├── prompts/
|
├── prompts/
|
||||||
@ -185,23 +185,23 @@ interactive-component-json/
|
|||||||
│ ├── core_listening_choose_prompts.py # 听力选择5步prompt模板 (2中间+3最终JSON)
|
│ ├── core_listening_choose_prompts.py # 听力选择5步prompt模板 (2中间+3最终JSON)
|
||||||
│ ├── core_writing_img_prompts.py # 看图组句/看图撰写6步prompt模板 (2中间+4最终JSON)
|
│ ├── core_writing_img_prompts.py # 看图组句/看图撰写6步prompt模板 (2中间+4最终JSON)
|
||||||
│ └── core_writing_question_prompts.py # 邮件组句/邮件撰写6步prompt模板 (2中间+4最终JSON)
|
│ └── core_writing_question_prompts.py # 邮件组句/邮件撰写6步prompt模板 (2中间+4最终JSON)
|
||||||
├── prd.md # 变更记录(持续更新)
|
├── prd.md # 变更记录(持续更新)
|
||||||
├── project.md # 需求描述
|
├── project.md # 需求描述
|
||||||
├── scripts/
|
├── scripts/
|
||||||
│ ├── pipeline.py # 端到端流水线(主入口)
|
│ ├── pipeline.py # 端到端流水线(主入口)
|
||||||
│ ├── llm_client.py # LLM调用客户端(火山doubao-1.8)
|
│ ├── llm_client.py # LLM调用客户端(火山doubao-1.8)
|
||||||
│ ├── feishu_client.py # 飞书API客户端(wiki/sheet/bitable)
|
│ ├── feishu_client.py # 飞书API客户端(wiki/sheet/bitable)
|
||||||
│ ├── parse_script.py # 剧本解析器(sheet数据→组件行)
|
│ ├── parse_script.py # 剧本解析器(sheet数据→组件行)
|
||||||
│ ├── match_component.py # 组件类型匹配器(27种中互动 + 核心互动)
|
│ ├── match_component.py # 组件类型匹配器(27种中互动 + 核心互动)
|
||||||
│ ├── generate_json.py # LLM驱动的jsonData/kpInfo生成器(含核心互动多步流水线)
|
│ ├── generate_json.py # LLM驱动的jsonData/kpInfo生成器(含核心互动多步流水线)
|
||||||
│ └── db_manager.py # SQLite数据库管理
|
│ └── db_manager.py # SQLite数据库管理
|
||||||
└── db/
|
└── db/
|
||||||
└── components.db # SQLite数据库(运行时生成)
|
└── components.db # SQLite数据库(运行时生成)
|
||||||
```
|
```
|
||||||
|
|
||||||
## 组件类型注册表
|
## 组件类型注册表
|
||||||
|
|
||||||
### 27种中互动组件(已完成)
|
### 27种中互动组件(已完成)
|
||||||
|
|
||||||
| 中文名 | cType | bitable_token |
|
| 中文名 | cType | bitable_token |
|
||||||
|--------|-------|---------------|
|
|--------|-------|---------------|
|
||||||
@ -233,20 +233,20 @@ interactive-component-json/
|
|||||||
| 造句互动 | mid_sentence_makeSentence | WfHMbzBYPau6hZsmFD0cBwWuncc |
|
| 造句互动 | mid_sentence_makeSentence | WfHMbzBYPau6hZsmFD0cBwWuncc |
|
||||||
| 发音互动 | mid_pron_pron | CeH5bO3FhaG5cNsPZ4Xc72axnrb |
|
| 发音互动 | mid_pron_pron | CeH5bO3FhaG5cNsPZ4Xc72axnrb |
|
||||||
|
|
||||||
### 核心互动组件(已实现13种,其余待定义)
|
### 核心互动组件(已实现13种,其余待定义)
|
||||||
- **合作阅读** `core_reading_order` — 7步LLM调用,输出 taskData/textData/sequenceData/learningData
|
- **合作阅读** `core_reading_order` - 7步LLM调用,输出 taskData/textData/sequenceData/learningData
|
||||||
- **看图选词** `core_reading_imageDrag` — 5步LLM调用,输出 taskData/questionGroupData/studyData
|
- **看图选词** `core_reading_imageDrag` - 5步LLM调用,输出 taskData/questionGroupData/studyData
|
||||||
- **口语快答** `core_speaking_reply` — 7步LLM调用,输出 taskData/settingData/configData/learningData
|
- **口语快答** `core_speaking_reply` - 7步LLM调用,输出 taskData/settingData/configData/learningData
|
||||||
- **口语妙问** `core_speaking_inquiry` — 7步LLM调用,输出 taskData/settingData/configData/learningData
|
- **口语妙问** `core_speaking_inquiry` - 7步LLM调用,输出 taskData/settingData/configData/learningData
|
||||||
- **看图说话** `core_speaking_image` — 8步LLM调用,输出 taskData/configData/imageInfo/optionList/questionList/learningData
|
- **看图说话** `core_speaking_image` - 8步LLM调用,输出 taskData/configData/imageInfo/optionList/questionList/learningData
|
||||||
- **合作听力** `core_listening_order` — 6步LLM调用,输出 taskData/textData/sequenceData/learningData
|
- **合作听力** `core_listening_order` - 6步LLM调用,输出 taskData/textData/sequenceData/learningData
|
||||||
- **听力拖拽** `core_listening_drag` — 7步LLM调用,输出 taskData/preDialogData/dialogListData/questionListData/learningData
|
- **听力拖拽** `core_listening_drag` - 7步LLM调用,输出 taskData/preDialogData/dialogListData/questionListData/learningData
|
||||||
- **听力选择** `core_listening_choose` — 5步LLM调用,输出 taskData/questionGroupData/learningData
|
- **听力选择** `core_listening_choose` - 5步LLM调用,输出 taskData/questionGroupData/learningData
|
||||||
- **看图组句** `core_writing_imgMakeSentence` — 6步LLM调用,输出 taskInfo/textInfo/studyInfo/evalInfo
|
- **看图组句** `core_writing_imgMakeSentence` - 6步LLM调用,输出 taskInfo/textInfo/studyInfo/evalInfo
|
||||||
- **看图撰写** `core_writing_imgWrite` — 6步LLM调用,输出 taskInfo/textInfo/studyInfo/evalInfo
|
- **看图撰写** `core_writing_imgWrite` - 6步LLM调用,输出 taskInfo/textInfo/studyInfo/evalInfo
|
||||||
- **邮件组句** `core_writing_questionMakeSentence` — 6步LLM调用,输出 taskInfo/textInfo/studyInfo/evalInfo
|
- **邮件组句** `core_writing_questionMakeSentence` - 6步LLM调用,输出 taskInfo/textInfo/studyInfo/evalInfo
|
||||||
- **邮件撰写** `core_writing_questionWrite` — 6步LLM调用,输出 taskInfo/textInfo/studyInfo/evalInfo
|
- **邮件撰写** `core_writing_questionWrite` - 6步LLM调用,输出 taskInfo/textInfo/studyInfo/evalInfo
|
||||||
- **看图拼词** `core_writing_imgMakeWord` — 7步(Step5规则),输出 taskInfo/preDialog/imageInfo/questionList/studyInfo
|
- **看图拼词** `core_writing_imgMakeWord` - 7步(Step5规则),输出 taskInfo/preDialog/imageInfo/questionList/studyInfo
|
||||||
|
|
||||||
其余6种详见 `scripts/match_component.py` 中的 `CORE_INTERACTION_TYPES`
|
其余6种详见 `scripts/match_component.py` 中的 `CORE_INTERACTION_TYPES`
|
||||||
|
|
||||||
@ -258,7 +258,7 @@ interactive-component-json/
|
|||||||
| 模型 | doubao-seed-2.0-pro |
|
| 模型 | doubao-seed-2.0-pro |
|
||||||
| Endpoint | ep-m-20260301164317-vmmj4 |
|
| Endpoint | ep-m-20260301164317-vmmj4 |
|
||||||
| API Key | 环境变量 `VOLCANO_API_KEY` 或内置默认值 |
|
| API Key | 环境变量 `VOLCANO_API_KEY` 或内置默认值 |
|
||||||
| 参考样例 | `references/examples/all_types_examples.json`(从bitable预取) |
|
| 参考样例 | `references/examples/all_types_examples.json`(从bitable预取) |
|
||||||
|
|
||||||
## 数据库设计
|
## 数据库设计
|
||||||
|
|
||||||
@ -281,20 +281,20 @@ interactive-component-json/
|
|||||||
|
|
||||||
## 开发进度
|
## 开发进度
|
||||||
|
|
||||||
- [x] Phase 1: LLM客户端封装(llm_client.py, doubao-1.8-volcano)
|
- [x] Phase 1: LLM客户端封装(llm_client.py, doubao-1.8-volcano)
|
||||||
- [x] Phase 2: 飞书API客户端(feishu_client.py, wiki/sheet/bitable)
|
- [x] Phase 2: 飞书API客户端(feishu_client.py, wiki/sheet/bitable)
|
||||||
- [x] Phase 3: 剧本解析器增强(parse_script.py, sheet数据解析)
|
- [x] Phase 3: 剧本解析器增强(parse_script.py, sheet数据解析)
|
||||||
- [x] Phase 4: 组件类型匹配完善(match_component.py, 27种+配图后缀)
|
- [x] Phase 4: 组件类型匹配完善(match_component.py, 27种+配图后缀)
|
||||||
- [x] Phase 5: LLM驱动JSON生成(generate_json.py, few-shot参考样例)
|
- [x] Phase 5: LLM驱动JSON生成(generate_json.py, few-shot参考样例)
|
||||||
- [x] Phase 6: 端到端流水线(pipeline.py, 已验证15/15组件成功)
|
- [x] Phase 6: 端到端流水线(pipeline.py, 已验证15/15组件成功)
|
||||||
- [x] Phase 7: v2 per-type prompt模板(prompts/prompt_registry.py, 16种组件)
|
- [x] Phase 7: v2 per-type prompt模板(prompts/prompt_registry.py, 16种组件)
|
||||||
- [x] Phase 8: section-character映射(parse_script.py, resourceMapping解析)
|
- [x] Phase 8: section-character映射(parse_script.py, resourceMapping解析)
|
||||||
- [x] Phase 9: generate_json.py v2重写(模板优先 + 回退few-shot)
|
- [x] Phase 9: generate_json.py v2重写(模板优先 + 回退few-shot)
|
||||||
- [x] Phase 10: pipeline.py v2(section_char_map传递, 15/15验证通过)
|
- [x] Phase 10: pipeline.py v2(section_char_map传递, 15/15验证通过)
|
||||||
- [x] Phase 11: 核心互动组件支持 — 合作阅读(core_reading_order) 7步LLM流水线,已验证通过
|
- [x] Phase 11: 核心互动组件支持 - 合作阅读(core_reading_order) 7步LLM流水线,已验证通过
|
||||||
- [x] Phase 12: 核心互动扩展 — 看图选词(core_reading_imageDrag) 5步 + 口语快答(core_speaking_reply) 7步,bitable样例验证通过
|
- [x] Phase 12: 核心互动扩展 - 看图选词(core_reading_imageDrag) 5步 + 口语快答(core_speaking_reply) 7步,bitable样例验证通过
|
||||||
- [x] Phase 12.5: v6核心互动 — 口语妙问(core_speaking_inquiry) 7步 + 看图说话(core_speaking_image) 8步,bitable样例验证通过
|
- [x] Phase 12.5: v6核心互动 - 口语妙问(core_speaking_inquiry) 7步 + 看图说话(core_speaking_image) 8步,bitable样例验证通过
|
||||||
- [x] Phase 12.6: v7听力类核心互动 — 合作听力(core_listening_order) 6步 + 听力拖拽(core_listening_drag) 7步 + 听力选择(core_listening_choose) 5步
|
- [x] Phase 12.6: v7听力类核心互动 - 合作听力(core_listening_order) 6步 + 听力拖拽(core_listening_drag) 7步 + 听力选择(core_listening_choose) 5步
|
||||||
- [x] Phase 12.7: v8写作类核心互动 — 看图组句/看图撰写/邮件组句/邮件撰写 各6步LLM流水线
|
- [x] Phase 12.7: v8写作类核心互动 - 看图组句/看图撰写/邮件组句/邮件撰写 各6步LLM流水线
|
||||||
- [ ] Phase 13: JSON校验与质量对比
|
- [ ] Phase 13: JSON校验与质量对比
|
||||||
- [ ] Phase 14: 批量处理 + 公司DB推送
|
- [ ] Phase 14: 批量处理 + 公司DB推送
|
||||||
|
|||||||
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -93,3 +93,5 @@
|
|||||||
{"type":"memory.recall.recorded","timestamp":"2026-06-04T06:34:06.417Z","query":"组件生产 多维表格 app_token CMHSbUUjka","resultCount":2,"results":[{"path":"memory/2026-05-07.md","startLine":354,"endLine":368,"score":1},{"path":"memory/2026-04-22.md","startLine":1,"endLine":8,"score":1}]}
|
{"type":"memory.recall.recorded","timestamp":"2026-06-04T06:34:06.417Z","query":"组件生产 多维表格 app_token CMHSbUUjka","resultCount":2,"results":[{"path":"memory/2026-05-07.md","startLine":354,"endLine":368,"score":1},{"path":"memory/2026-04-22.md","startLine":1,"endLine":8,"score":1}]}
|
||||||
{"type":"memory.recall.recorded","timestamp":"2026-06-04T09:21:44.866Z","query":"儿童英语学习通病 常见错误 不同阶段 学习难点","resultCount":2,"results":[{"path":"memory/2026-05-11.md","startLine":78,"endLine":89,"score":1},{"path":"memory/2026-05-26.md","startLine":161,"endLine":187,"score":1}]}
|
{"type":"memory.recall.recorded","timestamp":"2026-06-04T09:21:44.866Z","query":"儿童英语学习通病 常见错误 不同阶段 学习难点","resultCount":2,"results":[{"path":"memory/2026-05-11.md","startLine":78,"endLine":89,"score":1},{"path":"memory/2026-05-26.md","startLine":161,"endLine":187,"score":1}]}
|
||||||
{"type":"memory.recall.recorded","timestamp":"2026-06-05T03:37:55.029Z","query":"武钰涵 ou_a4aaa641585b38d1042608b9b7f05a17","resultCount":1,"results":[{"path":"memory/2026-05-27.md","startLine":1,"endLine":16,"score":1}]}
|
{"type":"memory.recall.recorded","timestamp":"2026-06-05T03:37:55.029Z","query":"武钰涵 ou_a4aaa641585b38d1042608b9b7f05a17","resultCount":1,"results":[{"path":"memory/2026-05-27.md","startLine":1,"endLine":16,"score":1}]}
|
||||||
|
{"type":"memory.recall.recorded","timestamp":"2026-06-08T02:24:34.295Z","query":"L2 听力 题型 能力标签 Flyers KET 单元分布","resultCount":2,"results":[{"path":"memory/2026-05-25.md","startLine":283,"endLine":302,"score":1},{"path":"memory/2026-05-25.md","startLine":118,"endLine":137,"score":1}]}
|
||||||
|
{"type":"memory.recall.recorded","timestamp":"2026-06-08T02:24:43.647Z","query":"L2 听力题型 能力标签 ability tag listening 图片选择 表格填空 长对话 短对话 信息匹配","resultCount":2,"results":[{"path":"memory/2026-05-25.md","startLine":283,"endLine":302,"score":1},{"path":"memory/2026-05-25.md","startLine":118,"endLine":137,"score":1}]}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"updatedAt": "2026-06-05T03:37:55.029Z",
|
"updatedAt": "2026-06-08T02:24:43.647Z",
|
||||||
"entries": {
|
"entries": {
|
||||||
"memory:memory/2026-05-07.md:57:74": {
|
"memory:memory/2026-05-07.md:57:74": {
|
||||||
"key": "memory:memory/2026-05-07.md:57:74",
|
"key": "memory:memory/2026-05-07.md:57:74",
|
||||||
@ -2809,18 +2809,21 @@
|
|||||||
"endLine": 302,
|
"endLine": 302,
|
||||||
"source": "memory",
|
"source": "memory",
|
||||||
"snippet": "- 14 阶段 4 科目全部重写,目标文档: `W5Vjw2fLiiCqfck0Mfzc0xkrnte` - L2 阶段1-2 阅读/写作从\"无\"补为实际技能点(刘彦江确认\"L2 阶段1-2 阅读和写作都是有题型的\") - L1 阶段1 阅读/写作也从\"无\"补为实际技能点 - 0 个\"无\",全量覆盖 - 生成脚本: `tmp/build_skill_points.py` ## 生产覆盖范围修正 [刘彦江] - L1 生产到 **U16**(非 U33) - L2 生产到 **U29**(非 U16) - 已同步更新 `business_knowledge/单元挑战全貌.md` ## 单元挑战全貌文档 [刘彦江] - 创建 `business_knowledge/单元挑战全貌.md` - 覆盖九大板块:业务定位、阶段划分、题型体系(18种)、能力标签(45个)、生产流程(ID规则/标准/写入陷阱)、审校体系(7+4项检查)、生产覆盖现状、模块关联、快速链接 ## L1/L2 难度等级映射 [刘彦江] ✅已确认 - L1-A: Starters入门+基础 (U1-U16) | L1-B: Starters达标 (U17-U24) | L1-C: Movers入门+基础 (U25-U40) | L1-D: Movers达标 (U41-U48) - L2-A: Flyers入门+基础 (U1-U12) | L2-B: Flyers达标 (U13-U18) | L2-C: KET入门+基础 (U19-U30) | L2-D: KET强化+高位+达标 (U31-U48) - 已写入",
|
"snippet": "- 14 阶段 4 科目全部重写,目标文档: `W5Vjw2fLiiCqfck0Mfzc0xkrnte` - L2 阶段1-2 阅读/写作从\"无\"补为实际技能点(刘彦江确认\"L2 阶段1-2 阅读和写作都是有题型的\") - L1 阶段1 阅读/写作也从\"无\"补为实际技能点 - 0 个\"无\",全量覆盖 - 生成脚本: `tmp/build_skill_points.py` ## 生产覆盖范围修正 [刘彦江] - L1 生产到 **U16**(非 U33) - L2 生产到 **U29**(非 U16) - 已同步更新 `business_knowledge/单元挑战全貌.md` ## 单元挑战全貌文档 [刘彦江] - 创建 `business_knowledge/单元挑战全貌.md` - 覆盖九大板块:业务定位、阶段划分、题型体系(18种)、能力标签(45个)、生产流程(ID规则/标准/写入陷阱)、审校体系(7+4项检查)、生产覆盖现状、模块关联、快速链接 ## L1/L2 难度等级映射 [刘彦江] ✅已确认 - L1-A: Starters入门+基础 (U1-U16) | L1-B: Starters达标 (U17-U24) | L1-C: Movers入门+基础 (U25-U40) | L1-D: Movers达标 (U41-U48) - L2-A: Flyers入门+基础 (U1-U12) | L2-B: Flyers达标 (U13-U18) | L2-C: KET入门+基础 (U19-U30) | L2-D: KET强化+高位+达标 (U31-U48) - 已写入",
|
||||||
"recallCount": 1,
|
"recallCount": 3,
|
||||||
"dailyCount": 0,
|
"dailyCount": 0,
|
||||||
"groundedCount": 0,
|
"groundedCount": 0,
|
||||||
"totalScore": 1,
|
"totalScore": 3,
|
||||||
"maxScore": 1,
|
"maxScore": 1,
|
||||||
"firstRecalledAt": "2026-05-29T02:33:30.526Z",
|
"firstRecalledAt": "2026-05-29T02:33:30.526Z",
|
||||||
"lastRecalledAt": "2026-05-29T02:33:30.526Z",
|
"lastRecalledAt": "2026-06-08T02:24:43.647Z",
|
||||||
"queryHashes": [
|
"queryHashes": [
|
||||||
"4aa0ef719160"
|
"4aa0ef719160",
|
||||||
|
"20f6c2d072df",
|
||||||
|
"068db47fdc05"
|
||||||
],
|
],
|
||||||
"recallDays": [
|
"recallDays": [
|
||||||
"2026-05-29"
|
"2026-05-29",
|
||||||
|
"2026-06-08"
|
||||||
],
|
],
|
||||||
"conceptTags": [
|
"conceptTags": [
|
||||||
"阶段1-2",
|
"阶段1-2",
|
||||||
@ -2840,18 +2843,21 @@
|
|||||||
"endLine": 137,
|
"endLine": 137,
|
||||||
"source": "memory",
|
"source": "memory",
|
||||||
"snippet": "- 生成脚本: `tmp/build_skill_points.py` ## 生产覆盖范围修正 [刘彦江] - L1 生产到 **U16**(非 U33) - L2 生产到 **U29**(非 U16) - 已同步更新 `business_knowledge/单元挑战全貌.md` ## 单元挑战全貌文档 [刘彦江] - 创建 `business_knowledge/单元挑战全貌.md` - 覆盖九大板块:业务定位、阶段划分、题型体系(18种)、能力标签(45个)、生产流程(ID规则/标准/写入陷阱)、审校体系(7+4项检查)、生产覆盖现状、模块关联、快速链接 ## L1/L2 难度等级映射 [刘彦江] ✅已确认 - L1-A: Starters入门+基础 (U1-U16) | L1-B: Starters达标 (U17-U24) | L1-C: Movers入门+基础 (U25-U40) | L1-D: Movers达标 (U41-U48) - L2-A: Flyers入门+基础 (U1-U12) | L2-B: Flyers达标 (U13-U18) | L2-C: KET入门+基础 (U19-U30) | L2-D: KET强化+高位+达标 (U31-U48) - 已写入 `business_knowledge/单元挑战全貌.md` §5.3 # 2026-05-25 工作日志 ## 组件配置 pipeline:单独重试 cId=1217214 - [童瑶] 请求单独重试 pipeline 中的失败组件 cId=1217214(听力拖拽 / core_listenin",
|
"snippet": "- 生成脚本: `tmp/build_skill_points.py` ## 生产覆盖范围修正 [刘彦江] - L1 生产到 **U16**(非 U33) - L2 生产到 **U29**(非 U16) - 已同步更新 `business_knowledge/单元挑战全貌.md` ## 单元挑战全貌文档 [刘彦江] - 创建 `business_knowledge/单元挑战全貌.md` - 覆盖九大板块:业务定位、阶段划分、题型体系(18种)、能力标签(45个)、生产流程(ID规则/标准/写入陷阱)、审校体系(7+4项检查)、生产覆盖现状、模块关联、快速链接 ## L1/L2 难度等级映射 [刘彦江] ✅已确认 - L1-A: Starters入门+基础 (U1-U16) | L1-B: Starters达标 (U17-U24) | L1-C: Movers入门+基础 (U25-U40) | L1-D: Movers达标 (U41-U48) - L2-A: Flyers入门+基础 (U1-U12) | L2-B: Flyers达标 (U13-U18) | L2-C: KET入门+基础 (U19-U30) | L2-D: KET强化+高位+达标 (U31-U48) - 已写入 `business_knowledge/单元挑战全貌.md` §5.3 # 2026-05-25 工作日志 ## 组件配置 pipeline:单独重试 cId=1217214 - [童瑶] 请求单独重试 pipeline 中的失败组件 cId=1217214(听力拖拽 / core_listenin",
|
||||||
"recallCount": 1,
|
"recallCount": 3,
|
||||||
"dailyCount": 0,
|
"dailyCount": 0,
|
||||||
"groundedCount": 0,
|
"groundedCount": 0,
|
||||||
"totalScore": 1,
|
"totalScore": 3,
|
||||||
"maxScore": 1,
|
"maxScore": 1,
|
||||||
"firstRecalledAt": "2026-05-29T02:33:30.526Z",
|
"firstRecalledAt": "2026-05-29T02:33:30.526Z",
|
||||||
"lastRecalledAt": "2026-05-29T02:33:30.526Z",
|
"lastRecalledAt": "2026-06-08T02:24:43.647Z",
|
||||||
"queryHashes": [
|
"queryHashes": [
|
||||||
"4aa0ef719160"
|
"4aa0ef719160",
|
||||||
|
"20f6c2d072df",
|
||||||
|
"068db47fdc05"
|
||||||
],
|
],
|
||||||
"recallDays": [
|
"recallDays": [
|
||||||
"2026-05-29"
|
"2026-05-29",
|
||||||
|
"2026-06-08"
|
||||||
],
|
],
|
||||||
"conceptTags": [
|
"conceptTags": [
|
||||||
"tmp/build-skill-points.py",
|
"tmp/build-skill-points.py",
|
||||||
|
|||||||
97
memory/2026-06-08-1132.md
Normal file
97
memory/2026-06-08-1132.md
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
# Session: 2026-06-08 11:32:34 GMT+8
|
||||||
|
|
||||||
|
- **Session Key**: agent:xiaoyan:feishu:direct:ou_1bd7317ae2ccfeb57e1132028847279e
|
||||||
|
- **Session ID**: 21684626-69b9-406c-a718-de535f929aa4
|
||||||
|
- **Source**: feishu
|
||||||
|
|
||||||
|
## Conversation Summary
|
||||||
|
|
||||||
|
user: 组件配置 https://makee-interactive.feishu.cn/wiki/VhyTwlhh5iTXMrkJ4Fccftz5nph?from=from_copylink
|
||||||
|
assistant: 李应瑛,我先读取你发的知识库文档内容。
|
||||||
|
|
||||||
|
|
||||||
|
assistant: 文档读取成功,接下来读取内嵌的剧本 Sheet。
|
||||||
|
|
||||||
|
|
||||||
|
assistant: 李应瑛,我先读取剧本 Sheet 内容,了解完整的剧情和对话结构。
|
||||||
|
|
||||||
|
|
||||||
|
assistant: 已读完文档和剧本数据。现在对 F 列「组件配置」进行逐项审校。文档共涉及 **17 个互动组件**(1221101-1221117),其中 **10 个对话类组件** 需要按 `dialogue-interaction-config` 规范校验。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📋 组件配置审校报告
|
||||||
|
|
||||||
|
### 一、对话朗读类(5 个)
|
||||||
|
|
||||||
|
| ID | 任务标题 | 问题 |
|
||||||
|
|----|---------|------|
|
||||||
|
| 1221104 | 辨认棒球帽 | ① 资源配置缺图片命名(应为 `1221104.png`)② 互动内容后多余空行 |
|
||||||
|
| 1221105 | 确认棒球帽 | 资源配置缺图片命名 |
|
||||||
|
| 1221109 | 辨认眼镜 | 资源配置缺图片命名 |
|
||||||
|
| 1221110 | 辨认鞋子 | ① 资源配置缺图片命名 ② 互动内容后多余空行 |
|
||||||
|
| 1221111 | 辨认白鞋 | ① **类型字段双横线** `对话朗读--配图` → 应为 `对话朗读-配图` ② 资源配置缺图片命名 ③ 互动内容后多余空行 |
|
||||||
|
|
||||||
|
### 二、对话挖空类(2 个)
|
||||||
|
|
||||||
|
| ID | 任务标题 | 问题 |
|
||||||
|
|----|---------|------|
|
||||||
|
| 1221106 | 辨认帽子 | ① **【资源配置】重复出现两次** ② **【后置对话】写的是"空"**,规范要求填"无" |
|
||||||
|
| 1221108 | 辨认眼镜 | ✅ 格式合规 |
|
||||||
|
|
||||||
|
### 三、对话选择类(3 个)
|
||||||
|
|
||||||
|
| ID | 任务标题 | 问题 |
|
||||||
|
|----|---------|------|
|
||||||
|
| 1221112 | 汇报发现 | **【情境引入】内容与标题同行**,规范要求换行独立成行 |
|
||||||
|
| 1221113 | 汇报眼镜 | ✅ 格式合规 |
|
||||||
|
| 1221114 | 汇报鞋子 | ✅ 格式合规 |
|
||||||
|
|
||||||
|
### 四、非对话类组件(7 个)
|
||||||
|
|
||||||
|
图片单选(1221101/1221102/1221103/1221107/1221115)、场景互动-擦除(1221117)、听力拖拽(1221116)— 不适用对话类规范,暂未纳入本次审校范围。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**共发现 8 处需修正的问题,涉及 6 个组件。** 需要我直接修复这些配置吗?
|
||||||
|
user: 不用修复,直接给我html文件
|
||||||
|
assistant: HTML 审校报告已生成:
|
||||||
|
|
||||||
|
📄 `/root/.openclaw/workspace-xiaoyan/output/L1-S2-U21-L1_组件配置审校报告.html`
|
||||||
|
|
||||||
|
覆盖了 17 个组件中 10 个对话类组件的逐项审校,共发现 13 处问题(含低严重度),涉及 6 个组件。
|
||||||
|
user: 组件配置 https://makee-interactive.feishu.cn/wiki/VhyTwlhh5iTXMrkJ4Fccftz5nph?from=from_copylink
|
||||||
|
assistant: 李应瑛,这个链接和刚才是同一篇文档(L1-S2-U21-L1 寻人启事),审校报告已经生成好了。
|
||||||
|
|
||||||
|
你是想让我重新做一份,还是有其他需求?比如:
|
||||||
|
1. 需要我把 HTML 文件发给你(通过飞书消息)
|
||||||
|
2. 需要我直接修复 F 列的配置问题
|
||||||
|
3. 需要审校非对话类组件(图片单选、听力拖拽等)
|
||||||
|
4. 其他需求
|
||||||
|
|
||||||
|
请说明一下~
|
||||||
|
user: 能够推送到内容后台的HTML文件
|
||||||
|
assistant: 明白了,你需要的是能推送到内容后台的组件配置 HTML 文件,不是审校报告。
|
||||||
|
|
||||||
|
让我先确认一下:你说的「推送到内容后台的 HTML 文件」具体是什么格式?是类似之前组件生产流程中,把每个互动组件的配置信息按后台要求的结构输出为 HTML 吗?
|
||||||
|
|
||||||
|
能否给我一个已有的样例文件或说明一下后台需要的 HTML 格式要求?这样我可以准确输出。
|
||||||
|
assistant: 明白,你想切换模型。但 `/deepseek` 是用户端不支持的指令,模型切换需要由管理员操作。
|
||||||
|
|
||||||
|
回到正题——关于「能推送到内容后台的 HTML 文件」,我需要你帮我明确一下格式要求:
|
||||||
|
|
||||||
|
1. 后台接收的 HTML 结构是什么样的?(比如每个组件一个 `<div>`?还是表格形式?)
|
||||||
|
2. 有没有之前已经成功推送过的 HTML 样例文件可以给我参考?
|
||||||
|
3. 是需要把这篇文档里所有 17 个组件的配置都输出,还是只输出对话类组件?
|
||||||
|
|
||||||
|
有了格式参考,我就能直接生成。
|
||||||
|
assistant: NO_REPLY
|
||||||
|
user: 组件配置 https://makee-interactive.feishu.cn/wiki/VhyTwlhh5iTXMrkJ4Fccftz5nph?from=from_copylink
|
||||||
|
assistant: 李应瑛,关于「能推送到内容后台的 HTML 文件」,我之前问过格式要求但还没收到你的回复。
|
||||||
|
|
||||||
|
我需要确认:
|
||||||
|
|
||||||
|
1. **后台要求的 HTML 格式**是什么?你能给我一个之前成功推送过的样例文件链接吗?
|
||||||
|
2. 还是说这个「组件配置」其实是要走 `script-component-production`(组件生产/组件回填)的流程,把配置信息生成为后台可导入的格式?
|
||||||
|
|
||||||
|
如果你有样例文件(哪怕是之前别的课的),发给我一个链接或截图,我就能直接对齐格式输出。
|
||||||
26
memory/2026-06-08.md
Normal file
26
memory/2026-06-08.md
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# 2026-06-08 工作日志
|
||||||
|
|
||||||
|
## 组件配置规则更新 [李应瑛确认]
|
||||||
|
|
||||||
|
### 1. 图片类互动规则变更
|
||||||
|
- **删除【资源配置】**:图片类互动(图片单选/多选/有序/拖拽)不再包含【资源配置】字段,直接从【任务标题】开始
|
||||||
|
- **新增辅助信息**:在「正确:XX」行后添加 `辅助信息:{单词} {中文释义}。`,释义参考知识点 Sheet
|
||||||
|
|
||||||
|
### 2. 对话朗读规则变更
|
||||||
|
- **删除【互动反馈】**:对话朗读不包含【互动反馈】字段,字段列表为【任务标题】【资源配置】【情境引入】【互动内容】【后置对话】
|
||||||
|
|
||||||
|
### 3. 情境引入/后置对话去重规则
|
||||||
|
- **禁止复制前后行台词原文**:情境引入若与前一行英文台词完全相同,直接写「无」;后置对话若与后一行英文台词完全相同,直接写「无」
|
||||||
|
|
||||||
|
### 4. 配图组件资源配置规则
|
||||||
|
- A列含"配图"时,【资源配置】仅保留`图片时机`,不写`音频载体`
|
||||||
|
- 图片时机根据有实际内容(非「无」)的 section 动态列出(如「互动内容」「情境引入 互动内容 互动反馈」)
|
||||||
|
- 图片时机和音频载体禁止同时存在
|
||||||
|
|
||||||
|
### 已更新文件
|
||||||
|
- `business_production/组件生产/skills/component-design/SKILL.md` → v1.3.0
|
||||||
|
- `business_production/组件生产/skills/script-component-production/SKILL.md` → v1.2.0
|
||||||
|
|
||||||
|
### 已执行操作
|
||||||
|
- L1-S2-U21-L2 运输小队:全量修正(辅助信息、资源配置、互动反馈、情境引入/后置对话去重、配图资源配置)
|
||||||
|
- L1-S2-U21-L1 寻人启事:组件配置流水线 16/16 成功
|
||||||
230
output/L1-S2-U21-L1_组件配置审校报告.html
Normal file
230
output/L1-S2-U21-L1_组件配置审校报告.html
Normal file
@ -0,0 +1,230 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh-CN">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>L1-S2-U21-L1 寻人启事 — 组件配置审校报告</title>
|
||||||
|
<style>
|
||||||
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||||
|
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; background: #f5f6fa; color: #2d3436; line-height: 1.6; padding: 24px; }
|
||||||
|
.container { max-width: 960px; margin: 0 auto; }
|
||||||
|
h1 { font-size: 22px; margin-bottom: 4px; }
|
||||||
|
.meta { color: #636e72; font-size: 13px; margin-bottom: 24px; }
|
||||||
|
.summary { display: flex; gap: 12px; margin-bottom: 28px; flex-wrap: wrap; }
|
||||||
|
.summary-card { background: #fff; border-radius: 8px; padding: 16px 20px; min-width: 120px; box-shadow: 0 1px 3px rgba(0,0,0,.06); }
|
||||||
|
.summary-card .num { font-size: 28px; font-weight: 700; }
|
||||||
|
.summary-card .label { font-size: 12px; color: #636e72; margin-top: 2px; }
|
||||||
|
.card-ok .num { color: #00b894; }
|
||||||
|
.card-warn .num { color: #e17055; }
|
||||||
|
.card-total .num { color: #0984e3; }
|
||||||
|
table { width: 100%; border-collapse: collapse; background: #fff; border-radius: 8px; overflow: hidden; box-shadow: 0 1px 3px rgba(0,0,0,.06); margin-bottom: 28px; }
|
||||||
|
th { background: #2d3436; color: #fff; font-size: 13px; font-weight: 600; padding: 10px 14px; text-align: left; }
|
||||||
|
td { padding: 10px 14px; font-size: 13px; border-bottom: 1px solid #f1f2f6; vertical-align: top; }
|
||||||
|
tr:last-child td { border-bottom: none; }
|
||||||
|
.tag { display: inline-block; padding: 2px 8px; border-radius: 4px; font-size: 11px; font-weight: 600; }
|
||||||
|
.tag-ok { background: #dff9fb; color: #0abde3; }
|
||||||
|
.tag-warn { background: #ffeaa7; color: #d63031; }
|
||||||
|
.tag-info { background: #dfe6e9; color: #636e72; }
|
||||||
|
.issue-list { margin: 0; padding-left: 18px; }
|
||||||
|
.issue-list li { margin-bottom: 3px; }
|
||||||
|
.section-title { font-size: 16px; font-weight: 700; margin: 28px 0 12px; padding-bottom: 6px; border-bottom: 2px solid #0984e3; }
|
||||||
|
.code-block { background: #f8f9fa; border: 1px solid #e9ecef; border-radius: 4px; padding: 10px 14px; font-family: "SF Mono", "Menlo", "Consolas", monospace; font-size: 12px; white-space: pre-wrap; overflow-x: auto; margin: 6px 0; }
|
||||||
|
.highlight { background: #fff3cd; padding: 1px 3px; border-radius: 2px; }
|
||||||
|
.footer { text-align: center; color: #b2bec3; font-size: 12px; margin-top: 32px; }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
|
||||||
|
<h1>📝 L1-S2-U21-L1 寻人启事 — 组件配置审校报告</h1>
|
||||||
|
<div class="meta">
|
||||||
|
文档:<a href="https://makee-interactive.feishu.cn/wiki/VhyTwlhh5iTXMrkJ4Fccftz5nph" target="_blank">L1-S2-U21-L1 寻人启事</a>
|
||||||
|
| 审校时间:2026-06-08
|
||||||
|
| 审校范围:F 列「组件配置」(对话类组件)
|
||||||
|
| 审校依据:dialogue-interaction-config 技能规范
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="summary">
|
||||||
|
<div class="summary-card card-total"><div class="num">17</div><div class="label">组件总数</div></div>
|
||||||
|
<div class="summary-card card-ok"><div class="num">7</div><div class="label">对话类组件</div></div>
|
||||||
|
<div class="summary-card card-warn"><div class="num">6</div><div class="label">有问题组件</div></div>
|
||||||
|
<div class="summary-card card-warn"><div class="num">8</div><div class="label">问题总数</div></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- ====== 对话朗读 ====== -->
|
||||||
|
<div class="section-title">一、对话朗读类(5 个组件)</div>
|
||||||
|
<table>
|
||||||
|
<thead><tr><th style="width:80px">ID</th><th style="width:100px">任务标题</th><th style="width:60px">状态</th><th>问题详情</th></tr></thead>
|
||||||
|
<tbody>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>1221104</td>
|
||||||
|
<td>辨认棒球帽</td>
|
||||||
|
<td><span class="tag tag-warn">3 处</span></td>
|
||||||
|
<td>
|
||||||
|
<ol class="issue-list">
|
||||||
|
<li><b>【资源配置】缺图片命名:</b>当前仅写了「图片时机:情境引入 互动内容」,缺少 <code>1221104.png</code> 格式的图片命名</li>
|
||||||
|
<li><b>【互动内容】后多余空行:</b>朗读句 <code>He wears a blue cap.(朗读)</code> 后有多余空行</li>
|
||||||
|
<li><b>【资源配置】缺音频载体:</b>未标注音频载体信息</li>
|
||||||
|
</ol>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>1221105</td>
|
||||||
|
<td>确认棒球帽</td>
|
||||||
|
<td><span class="tag tag-warn">1 处</span></td>
|
||||||
|
<td>
|
||||||
|
<ol class="issue-list">
|
||||||
|
<li><b>【资源配置】缺图片命名:</b>当前仅写了「图片时机:情境引入 互动内容」,缺少 <code>1221105.png</code> 格式的图片命名</li>
|
||||||
|
</ol>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>1221109</td>
|
||||||
|
<td>辨认眼镜</td>
|
||||||
|
<td><span class="tag tag-warn">1 处</span></td>
|
||||||
|
<td>
|
||||||
|
<ol class="issue-list">
|
||||||
|
<li><b>【资源配置】缺图片命名:</b>当前仅写了「图片时机:互动内容」,缺少 <code>1221109.png</code> 格式的图片命名</li>
|
||||||
|
</ol>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>1221110</td>
|
||||||
|
<td>辨认鞋子</td>
|
||||||
|
<td><span class="tag tag-warn">2 处</span></td>
|
||||||
|
<td>
|
||||||
|
<ol class="issue-list">
|
||||||
|
<li><b>【资源配置】缺图片命名:</b>当前仅写了「图片时机:互动内容」,缺少 <code>1221110.png</code> 格式的图片命名</li>
|
||||||
|
<li><b>【互动内容】后多余空行:</b>朗读句 <code>A shoe!(朗读)</code> 后有多余空行</li>
|
||||||
|
</ol>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>1221111</td>
|
||||||
|
<td>辨认白鞋</td>
|
||||||
|
<td><span class="tag tag-warn">3 处</span></td>
|
||||||
|
<td>
|
||||||
|
<ol class="issue-list">
|
||||||
|
<li><b>类型字段双横线:</b>A 列类型为 <code>对话朗读<span class="highlight">--</span>配图</code>,应为 <code>对话朗读-配图</code>(单横线)</li>
|
||||||
|
<li><b>【资源配置】缺图片命名:</b>缺少 <code>1221111.png</code> 格式的图片命名</li>
|
||||||
|
<li><b>【互动内容】后多余空行:</b>朗读句 <code>This is not a white shoe.(朗读)</code> 后有多余空行</li>
|
||||||
|
</ol>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<!-- ====== 对话挖空 ====== -->
|
||||||
|
<div class="section-title">二、对话挖空类(2 个组件)</div>
|
||||||
|
<table>
|
||||||
|
<thead><tr><th style="width:80px">ID</th><th style="width:100px">任务标题</th><th style="width:60px">状态</th><th>问题详情</th></tr></thead>
|
||||||
|
<tbody>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>1221106</td>
|
||||||
|
<td>辨认帽子</td>
|
||||||
|
<td><span class="tag tag-warn">2 处</span></td>
|
||||||
|
<td>
|
||||||
|
<ol class="issue-list">
|
||||||
|
<li><b>【资源配置】字段重复:</b>配置中出现两次 <code>【资源配置】</code> 标题行</li>
|
||||||
|
<li><b>【后置对话】值不规范:</b>填写的是 <code>空</code>,规范要求无后置对话时应填 <code>无</code></li>
|
||||||
|
</ol>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>1221108</td>
|
||||||
|
<td>辨认眼镜</td>
|
||||||
|
<td><span class="tag tag-ok">合规</span></td>
|
||||||
|
<td>—</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<!-- ====== 对话选择 ====== -->
|
||||||
|
<div class="section-title">三、对话选择类(3 个组件)</div>
|
||||||
|
<table>
|
||||||
|
<thead><tr><th style="width:80px">ID</th><th style="width:100px">任务标题</th><th style="width:60px">状态</th><th>问题详情</th></tr></thead>
|
||||||
|
<tbody>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>1221112</td>
|
||||||
|
<td>汇报发现</td>
|
||||||
|
<td><span class="tag tag-warn">1 处</span></td>
|
||||||
|
<td>
|
||||||
|
<ol class="issue-list">
|
||||||
|
<li><b>【情境引入】格式错误:</b>内容与标题写在同一行:<br>
|
||||||
|
<code class="code-block">【情境引入】Sally: What did you find?</code>
|
||||||
|
规范要求标题独占一行,内容换行书写:<br>
|
||||||
|
<code class="code-block">【情境引入】
|
||||||
|
Sally: What did you find?</code>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>1221113</td>
|
||||||
|
<td>汇报眼镜</td>
|
||||||
|
<td><span class="tag tag-ok">合规</span></td>
|
||||||
|
<td>—</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>1221114</td>
|
||||||
|
<td>汇报鞋子</td>
|
||||||
|
<td><span class="tag tag-ok">合规</span></td>
|
||||||
|
<td>—</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<!-- ====== 非对话类 ====== -->
|
||||||
|
<div class="section-title">四、非对话类组件(7 个,不适用对话类规范,未纳入审校)</div>
|
||||||
|
<table>
|
||||||
|
<thead><tr><th style="width:80px">ID</th><th style="width:100px">任务标题</th><th style="width:80px">类型</th><th>备注</th></tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<tr><td>1221101</td><td>选择棒球帽</td><td><span class="tag tag-info">图片单选</span></td><td>S1 主线</td></tr>
|
||||||
|
<tr><td>1221102</td><td>选择眼镜</td><td><span class="tag tag-info">图片单选</span></td><td>S2 主线</td></tr>
|
||||||
|
<tr><td>1221103</td><td>选择鞋子</td><td><span class="tag tag-info">图片单选</span></td><td>S3 主线</td></tr>
|
||||||
|
<tr><td>1221107</td><td>找到棒球帽</td><td><span class="tag tag-info">图片单选</span></td><td>S7 主线</td></tr>
|
||||||
|
<tr><td>1221115</td><td>选出棒球帽</td><td><span class="tag tag-info">图片单选</span></td><td>S15 主线</td></tr>
|
||||||
|
<tr><td>1221117</td><td>擦干净眼镜</td><td><span class="tag tag-info">场景互动-擦除</span></td><td>S16 主线</td></tr>
|
||||||
|
<tr><td>1221116</td><td>找回Logi的物品</td><td><span class="tag tag-info">听力拖拽</span></td><td>S17 主线</td></tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<!-- ====== 问题汇总 ====== -->
|
||||||
|
<div class="section-title">五、问题汇总</div>
|
||||||
|
<table>
|
||||||
|
<thead><tr><th style="width:40px">#</th><th style="width:80px">组件 ID</th><th>问题描述</th><th style="width:80px">严重程度</th></tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<tr><td>1</td><td>1221104</td><td>【资源配置】缺图片命名</td><td><span class="tag tag-warn">中</span></td></tr>
|
||||||
|
<tr><td>2</td><td>1221104</td><td>【互动内容】后多余空行</td><td><span class="tag tag-warn">低</span></td></tr>
|
||||||
|
<tr><td>3</td><td>1221104</td><td>【资源配置】缺音频载体</td><td><span class="tag tag-warn">低</span></td></tr>
|
||||||
|
<tr><td>4</td><td>1221105</td><td>【资源配置】缺图片命名</td><td><span class="tag tag-warn">中</span></td></tr>
|
||||||
|
<tr><td>5</td><td>1221106</td><td>【资源配置】字段重复出现两次</td><td><span class="tag tag-warn">中</span></td></tr>
|
||||||
|
<tr><td>6</td><td>1221106</td><td>【后置对话】值「空」应为「无」</td><td><span class="tag tag-warn">低</span></td></tr>
|
||||||
|
<tr><td>7</td><td>1221109</td><td>【资源配置】缺图片命名</td><td><span class="tag tag-warn">中</span></td></tr>
|
||||||
|
<tr><td>8</td><td>1221110</td><td>【资源配置】缺图片命名</td><td><span class="tag tag-warn">中</span></td></tr>
|
||||||
|
<tr><td>9</td><td>1221110</td><td>【互动内容】后多余空行</td><td><span class="tag tag-warn">低</span></td></tr>
|
||||||
|
<tr><td>10</td><td>1221111</td><td>类型字段双横线「--」应为单横线「-」</td><td><span class="tag tag-warn">中</span></td></tr>
|
||||||
|
<tr><td>11</td><td>1221111</td><td>【资源配置】缺图片命名</td><td><span class="tag tag-warn">中</span></td></tr>
|
||||||
|
<tr><td>12</td><td>1221111</td><td>【互动内容】后多余空行</td><td><span class="tag tag-warn">低</span></td></tr>
|
||||||
|
<tr><td>13</td><td>1221112</td><td>【情境引入】标题与内容同行,应换行</td><td><span class="tag tag-warn">中</span></td></tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="footer">小研 · 组件配置自动审校 · 2026-06-08</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Loading…
Reference in New Issue
Block a user