青椒内容元素实体能力技能,负责小节内内容元素(实训、测验、学习资料、视频等)的创建、查询、更新与删除。在 scenario_id 已确认后,需要向小节写入生成内容时使用。
前置条件: 先阅读
../qingjiao-shared/SKILL.md。
通过 qingjiao_element 工具操作青椒平台的内容元素(Element)实体,通过 qingjiao_task 工具操作实训的任务(Task)和任务条件(Task Condition)。内容元素是课程结构的最底层,每个小节可包含多种类型的内容元素;实训类型元素可包含多个任务,每个任务可包含多个考核条件。
scenario_id 已确认,需要向小节写入内容scenario_id(必须先完成 )qingjiao-scenariolist、getcreate、update、delete写操作会直接写入平台。写入前先确认用户意图;信息一旦明确,应及时调用工具写入平台。执行写入前,先用自然语言回显拟写入的信息摘要,不要直接复述整段 content JSON。
| type 值 | 含义 |
|---|---|
training | 实训 |
test_paper | 测验/测试题 |
full_slide | PPT 课件 |
learn_material | 学习资料 |
video | 视频 |
short_answer | 简答题 |
creative | 创意内容 |
| 意图 | 调用方式 |
|---|---|
| 列出小节下的内容元素 | qingjiao_element { action: "list", scenario_id: <id> } |
| 获取内容元素详情 | qingjiao_element { action: "get", element_id: <id> } |
| 创建内容元素 | qingjiao_element { action: "init", scenario_id: <id>, type: "training", name: "名称", content: "<json>" } |
| 更新内容元素 | qingjiao_element { action: "update", element_id: <id>, type: "training", name: "新名称", content: "<json>" } |
| 删除内容元素 | qingjiao_element { action: "delete", element_id: <id> } |
| 创建任务条件(智能检测) | qingjiao_task { action: "condition_create", element_id: <id>, task_id: <id>, name: "名称", type: 0, layer: 1, score: 10, script: "<json>" } |
| 创建任务条件(答题) | qingjiao_task { action: "condition_create", element_id: <id>, task_id: <id>, name: "名称", type: 1, layer: 1, score: 10, content: "<json>" } |
| 更新任务条件 | qingjiao_task { action: "condition_update", element_id: <id>, task_id: <id>, condition_id: <id>, score: 15 } |
| 删除任务条件 | qingjiao_task { action: "condition_delete", element_id: <id>, task_id: <id>, condition_id: <id> } |
1. 先用自然语言回显拟写入的内容摘要,例如内容类型、名称、目标小节、核心知识点 / 步骤结构
2. 建议先锁定目标小节
qingjiao_scenario { action: "lock", scenario_id: <scenario_id> }
3. 创建内容元素(content 为 JSON 字符串,结构见 training-content-format.md)
qingjiao_element { action: "init", scenario_id: <scenario_id>, type: "training", name: "实训名称", content: '{"name_config":{"task_list_name":"任务列表","knowledge_name":"任务整体介绍"},"selector":[],"resources":[],"knowledge":[{"order":"1","name":"任务介绍","describe":"...","edit":false,"isNewly":false,"initName":"任务介绍","initDescribe":""},{"order":"2","name":"知识点1","describe":"...","edit":false,"isNewly":false,"initName":"知识点1","initDescribe":""}]}' }
4. 记录返回的 id 作为 element_id
5. 创建任务(实训内容写入后,需要为每个步骤创建对应的任务)
qingjiao_task { action: "create", element_id: <element_id>, name: "任务名称", layer: 0, description: "任务描述" }
6. 记录返回的 task_id
7. 为任务创建考核条件(智能检测或答题)
- 智能检测:qingjiao_task { action: "condition_create", element_id: <element_id>, task_id: <task_id>, name: "条件名称", type: 0, layer: 1, score: 10, script: '{"type":"bash","content":"检测脚本"}' }
- 答题:qingjiao_task { action: "condition_create", element_id: <element_id>, task_id: <task_id>, name: "条件名称", type: 1, layer: 1, score: 10, content: '[题目数组]' }
8. 明确告知用户内容已写入平台,并同步返回 element_id
9. 写入完成后解锁小节
qingjiao_scenario { action: "unlock", scenario_id: <scenario_id> }
qingjiao_element { action: "init", scenario_id: <scenario_id>, type: "test_paper", name: "单元测验", content: '{"title":"测验名","questions":[...]}' }
qingjiao_element { action: "update", element_id: <element_id>, type: "training", name: "新名称", content: '<json>' }
create:返回 { "id": 123 } 即新内容的 element_idlist:返回内容列表,每项包含 id、name、typeget:返回包含 content 字段的完整详情update / delete:返回操作结果content 参数必须是合法的 JSON 字符串,内容结构依类型而定content JSON;若涉及敏感字段,只能脱敏回显generate-training、generate-test-paper 等)