--- name: update-knowledge-base description: | 更新剧本知识库。当用户要求"更新知识库"、"录入新剧本"、"把剧本写入知识库"、"更新chapters"、 "更新角色登场记录"等指令时触发。功能包括: (1) 读取用户提供的飞书剧本文档链接,提取故事梗概/知识点/角色等信息 (2) 将故事梗概写入 business_knowledge/chapters/ 对应的Unit文件 (3) 更新已有角色的登场记录,补充值得记录的特性描述 (4) 为新出现的角色创建档案文件 --- # 更新知识库 ## 核心原则:严禁推测与杜撰(强制执行) ⚠️ **知识库中的所有内容必须来源于正式剧本原文,不得含有任何推测、杜撰的成分。** 此原则适用于本技能全部操作步骤: 1. **角色信息**(性格、外观、关系、对话风格、行为模式等)必须从剧本对话、动作描述、场景说明中逐条提取 2. **故事梗概**必须基于剧本中实际发生的情节概括,不得自行补充未在剧本中出现的事件或因果关系 3. **知识点**以文档开头标注的"知识点"表格为准,不得自行推断教学意图 4. **登场角色**以文档中"本关出场角色"表格及剧本正文中实际出现的对话者为准 5. **剧本中未明确的信息**,一律标注"待确认",不得凭经验或角色设定进行补充推断 6. **禁止跨剧本迁移**:已有角色的登场记录仅以当前剧本内容为准,不得将其他剧集中该角色的表现引入 本原则优先级高于下方各步骤中的具体操作指引。任何步骤的输出内容若超出剧本原文范围,视为违规。 --- ## 数据来源(飞书知识库) 本地 `business_knowledge/` 中的资料均从飞书知识库提取和同步。以下为各类资料的权威数据源: ### 场景数据 - **来源页面:** https://makee-interactive.feishu.cn/wiki/GR9awIhYniL4uZkiH3ac4VB1nYf - **同步目标:** `resources/scene_catalog.md` ### 章节数据(从最终版剧本中归纳提取) 章节概要需从各Season目录下的**三级子文档**(即最终版剧本)中归纳提取。 | Season | 飞书目录页 | 本地路径 | |--------|-----------|----------| | L1-S1 | https://makee-interactive.feishu.cn/wiki/Ri39w7g2VifUkgkVUhecvxjonfb | `chapters/Level1/S1/` | | L1-S2 | https://makee-interactive.feishu.cn/wiki/TekjwhXLbioX2OkR1H6chg6Hnah | `chapters/Level1/S2/` | | L1-S3 | https://makee-interactive.feishu.cn/wiki/FeiDw6JY7iv1ZMk15PXcZeQgnyc | `chapters/Level1/S3/` | | L1-S4 | https://makee-interactive.feishu.cn/wiki/VWRawLdzpidUp3kipEEcVJlYn4g | `chapters/Level1/S4/` | **剧本命名格式:** `{Lx-Sx-Ux-x} {关卡名}`(如 `L1-S1-U1-1 沙漠小镇`) 每个Season目录下的三级子文档即为各Unit/Lesson的最终版剧本,从中提取章节概要和角色信息。 ### 角色数据(从最终版剧本中归纳提取) 角色信息从上述各Season最终版剧本中归纳提取,包括: - 角色性格、行为特征 - 对话风格 - 角色关系 - 登场章节 同步目标:`characters/main/` 和 `characters/supporting/` ### 其他编剧相关资料 所有编剧相关资料来源均可在同一飞书知识空间内查找到。当本地缺少某项资料时,优先在该知识空间中搜索。 --- ## 前置检查(强制) 执行任务前必须确认: ### 情况A:用户提供了文档链接 以用户提供的链接为准,直接读取并提取。 ### 情况B:用户未提供文档链接 1. 根据上方「数据来源」中的Season目录页,在飞书知识库中查找需要更新的剧本文档 2. 将查找到的文档列表向用户展示,请用户确认哪些需要更新 3. 用户确认后,再执行读取和写入操作 ### 通用检查 - **用户是否说明了这些剧本属于哪个Season/Unit?** 若未说明,从链接或文档标题中推断,推断不了则询问 ## 工作流程 ### Step 1: 下载剧本 使用 `lark_wiki_operate_as_bot` 技能读取飞书文档(Bot身份): ```bash # 获取obj_token LARKSUITE_CLI_CONFIG_DIR=/root/.openclaw/credentials/xiaoyan \ lark-cli wiki spaces get_node --params '{"token":""}' --as bot # 读取文档 LARKSUITE_CLI_CONFIG_DIR=/root/.openclaw/credentials/xiaoyan \ lark-cli docs +fetch --doc --as bot ``` 将原始文档保存到 `tmp/lessons/S{n}/U{nn}/L{n}_{name}.md`。 ### Step 2: 提取信息 > ⚠️ **再次提醒:所有提取内容必须严格来源于剧本原文,禁止推测或杜撰。见上方「核心原则」。** 从每个剧本文档中提取: | 字段 | 提取位置 | 说明 | |------|---------|------| | 知识点(单词+句型)| 文档开头的"知识点"或"单元知识点"表格 | 每Lesson独立 | | 登场角色 | "本关出场角色"表格 + 正文对话中的说话者 | 合并去重 | | 故事梗概 | "剧情梗概/剧情概要"段 或 从TL对话段理解故事主线 | 2-3句话概括 | **注意**:不同剧本的文档格式可能不一致(有些有"剧情梗概"段,有些只有剧本正文),需要灵活适配。当自动提取不到梗概时,阅读TL对话段理解故事后手写梗概。 ### Step 3: 更新 chapters 章节文件位于 `business_knowledge/chapters/Level1/S{n}/` 目录。 **格式规范**(参照已有文件): ```markdown # Unit {N} {单元名} ## 整体梗概 3-4句话概括整个Unit的故事主线 ## Lesson {N} {中文名} {英文名} - **知识点:** 单词(xxx);句型(xxx) - **登场角色:** xxx, xxx, xxx - **故事梗概:** 2-3句话概括本课故事 ``` 规则: - 若该Unit的章节文件已存在,在末尾追加新Lesson - 若不存在,创建新文件,文件名格式 `{NN}_{单元名}.md` - 整体梗概在所有Lesson写完后补充/更新 ### Step 4: 更新 characters 角色文件位于 `business_knowledge/characters/` 下两个子目录: - `main/` — 主要角色 - `supporting/` — 配角 **4a. 已有角色 — 更新登场记录** 读取角色文件,在 `## 登场记录` 部分追加新条目: ```markdown - S{n}E{nn} {Unit名} L{n} {Lesson名}: 角色在本课的作用/行为简述 ``` 同时检查剧本中该角色是否有新的性格表现、关系变化或值得记录的特性,若有则补充到对应section。 **4b. 新角色 — 创建档案** 参照已有角色文件格式创建: ```markdown # {角色名} ## 基本信息 - 物种/外观:(从剧本中提取实际描述) - 身份/职业: - 居住地: ## 性格与行为 - 核心性格:(从剧本对话和行为中总结) - 行为模式: - 弱点/怪癖: ## 对话风格 - 说话特征: - 典型台词:(引用剧本原文) ## 关系 - (与其他角色的关系) ## 登场记录 - (按上述格式填写) ## 创作备注 1. (供后续编剧参考的注意事项) ``` **⚠️ 严禁凭空编造角色信息。** 所有性格、外观、性别等必须从剧本原文中提取。剧本未明确的信息标注"待确认"而非臆测。 **4c. 更新索引** 在 `business_knowledge/characters/README.md` 的角色索引表格中添加新角色条目。 ### Step 5: 反馈 完成后向用户报告: 1. 更新了哪些chapters文件(新增/修改) 2. 更新了哪些角色的登场记录 3. 新建了哪些角色档案 4. 是否发现需要用户确认的信息(模糊描述、缺失信息等)