ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

OpenMAIC 教师风格克隆技能实战:基于课堂录像证据提取「名师风格」并迁移到新课生成

2026/9/10 9:23:33 拓冰建站 浏览量
OpenMAIC 教师风格克隆技能实战:基于课堂录像证据提取「名师风格」并迁移到新课生成 OpenMAIC 教师风格克隆技能实战基于课堂录像证据提取「名师风格」并迁移到新课生成【免费下载链接】OpenMAICOpen Multi-Agent Interactive Classroom — Get an immersive, multi-agent learning experience in just one click项目地址: https://gitcode.com/GitHub_Trending/op/OpenMAIC本篇技术指南围绕 OpenMAICOpen Multi-Agent Interactive Classroom中名为teacher-style-clone面向学习者展示为「名师风格」的 Agent Runtime 技能展开讲解如何从挂载到工作台会话的教师课堂录像/讲义材料中提取授课风格并迁移到用户指定主题的新课程生成中。读完本文你将掌握该技能的 5 步取证式工作流材料确认 → 通读转录 → 关键帧视觉采样 → 检索验证 → 风格注入生成了解list_materials、read_material、search_material、extract_material、wait_for_materials五个会话级工具的参数与底层行为以及「克隆风格而非教师身份」的安全边界。技能定位什么是「名师风格」模式teacher-style-clone是 OpenMAIC 中一个面向工作台workbench的 Agent 技能其声明文件位于 skills/agent-runtime/teacher-style-clone/SKILL.mdfrontmatter 定义了它的挂载条件name: teacher-style-clone title: 名师风格 description: 工作台会话挂载了教师课堂录像/讲义材料时使用。name是技能的内部标识供 Agent 运行时路由title是面向学习者的中文展示名即「名师风格」description说明触发条件只有当会话中挂载了教师课堂录像或讲义材料时才启用本技能。文档中有一条明确的产品红线学习者侧永远只呈现「名师风格」这个名称绝不能向学习者暴露 clone克隆或 style transfer风格迁移这类词汇。最终效果应让学习者觉得这是一堂带着证据化风格的自然课而非一次克隆操作。这体现了该技能的产品化定位风格提取是后台机制用户感知只有教学体验的提升。技能文件同目录下的 outline-constraints.json 定义了本技能的结构约束{ allowedTypes: [slide, quiz, interactive], firstSceneType: slide }其$comment说明了一个关键设计取舍风格迁移约束的是页面如何说话HOW而不是页面是什么类型WHAT——因此约束文件刻意保持精简唯一的诚实结构要求是课程以一次讲授开场a lecture opens with speech。运行时该约束文件会被 skills.ts 渲染为可读的提示注入到大纲生成环节Allowed scene type values与Scene 1 must have type slide并在 skills.ts 对生成结果做类型校验防止 Agent 产出不符合技能约定的场景序列。Step 1 — 确认每个衍生材料都已就绪技能要求在任何结论之前先调用list_materials。这是会话材料读取面的统一入口定义于 material-tools.ts其工具描述明确要求在read_material或search_material之前使用它来发现mat_id 并了解可读内容。调用后返回该会话可见的每一个材料记录模型可见投影publicMaterialOfmaterial-tools.ts包含字段含义materialIdmat_开头的会话内唯一 id后续所有工具引用它的凭据kind材料类型source原始上传/extraction提取产物/transcript转录/web网页抓取/image/audio-tracktitle材料标题可选sourceUrl来源地址可选textChars可读文本字符数createdAt创建时间extraction提取状态对象含status、失败时的error、成功时的stats对课堂录像这类 source 材料需要确认其转录transcript与关键帧keyframe衍生品已生成。技能给出的分支处理路径提取空闲idle先调用extract_material排队中或运行中pending/running调用wait_for_materials并重新列出失败failed直接告知用户失败原因严禁基于不完整证据臆造风格档案。extract_material幂等的提取入队extract_material的底层实现material-tools.ts有两条值得注意的语义只接受 source 类型——对非源材料调用会直接报错extract_material only accepts source materials.幂等入队——已完成done和进行中in-progress的材料保持原状态不变只有idle与failed状态才会触发入队failed视为显式重试。返回的是当前提取状态快照。wait_for_materials有界等待wait_for_materialsmaterial-tools.ts支持两个可选参数materialIds只等待指定 id数组最小 1 个、去重省略时等待会话内所有 source 材料timeoutSec最大等待秒数默认60 秒上限300 秒常量DEFAULT_MATERIAL_WAIT_SECONDS/MAX_MATERIAL_WAIT_SECONDS轮询间隔约 1 秒MATERIAL_WAIT_POLL_MS。等待会持续到全部材料进入done或failed终态若超时仍未完成返回timedOut: true。一个贴心细节当某个材料状态为idle时返回结果会附带提示nextAction: Call extract_material before waiting or reading.引导 Agent 走正确的调用顺序。Step 2 — 按顺序通读整份转录技能强调必须从 offset 0 逐页读到最后一页不允许只采样开头。这是风格提取的证据纪律口头禅、节奏、过渡方式通常散布在整堂课中开头采样会严重失真。read_material 的分页契约read_materialmaterial-tools.ts 的READ_MATERIAL_SCHEMAmaterial-tools.ts接受materialIdlist_materials返回的mat_id必填offset字符偏移可选非负整数即下一页从哪读起。每次返回约8000 字符常量TEXT_WINDOW_CHARS的一页文本结果中携带offset、totalChars与nextOffset元数据——当页末还有内容时nextOffset存在Agent 用它继续翻页直到nextOffset消失。工具描述明确指出source 原始上传不可直接读取必须读取其 extraction 或 image 衍生品对 image / audio-track 等无可读文本形态的材料返回Material kind ... is not readable yet.的指引性提示而非报错。一个值得注意的实现细节分页边界通过codePointBoundarymaterial-tools.ts回退到码点边界避免String.prototype.slice按 UTF-16 单元切页时把 emoji 等增补平面字符拦腰截断成半字符。建立风格档案的观测维度通读过程中Agent 需要在推理中构建一份紧凑的风格档案覆盖以下维度开场方式与过渡手法openings and transitions口头禅、称呼方式与句式节奏catchphrases, address terms, and sentence rhythm具体例子 vs 抽象例子的使用习惯concrete-versus-abstract example habits节奏、复习回顾、反问、停顿与幽默pacing, recaps, rhetorical questions, pauses, and humor口头说出 vs 视觉强调的内容what is said aloud versus emphasized visually。每个结论都必须附带简短的转录证据与时间戳。技能特别提醒频率与分布frequency and distribution很关键——要把反复出现的习惯和只出现一次的说法区分开不能因为一句俏皮话就把一次性表达写进风格档案。Step 3 — 用关键帧采样视觉风格当转录文本中出现keyframemm:ss标记时技能要求用read_material采样被引用的画面并跨整段录像均匀采样而非相邻重复帧。关键帧标记从哪来这个标记不是 Agent 手写的而是转录衍生品生成阶段的产物。在 local-media.ts 中提取器会把视频的关键帧按时间顺序与转录片段交错编排转录文本按[mm:ss-mm:ss] 文本段落排列每个关键帧在其所属时间段插入keyframemm:ss行其中mm:ss是格式化后的帧时间、mat_xxx是该帧对应的衍生材料 id。因此 Agent 读到标记时可以直接定位到这个时间点屏幕上有什么。视觉证据的记录维度对采样的关键帧技能要求记录板书密度board-writing density幻灯片构图slide composition层级与色彩使用hierarchy, color use教师站位与手势teacher position, gestures言语与屏幕留存内容的关系relationship between speech and what remains on screen。同时文档明确设定了边界当录像没有可读关键帧时不得推断视觉风格。这保证了视觉档案永远建立在证据之上。Step 4 — 用检索验证假设search_materialmaterial-tools.ts用于在完整通读之后检验特定假设。参数为query1 到 200 字符的大小写不敏感字面量文本不支持正则表达式schema 中minLength: 1, maxLength: 200materialId可选将搜索限定在单个可见材料内省略则搜索会话内全部可读材料。搜索只覆盖三类可读文本记录isSearchableTextRecordmaterial-tools.tsextraction、transcript、web且要求存在文本资产。其检索行为有一组值得注意的执行预算常量常量值含义SEARCH_CONTEXT_CHARS200每个命中片段两侧各约 200 字符上下文MAX_SEARCH_SNIPPET_CHARS400单个片段最大 400 字符MAX_SEARCH_HITS_PER_MATERIAL10单个材料最多返回 10 个命中MAX_SEARCH_HITS_TOTAL30总命中数上限 30MAX_SEARCH_CHARS_PER_EXEC1,000,000单次执行最多扫描 100 万字符SEARCH_TIME_BUDGET_MS100单次执行 100ms 时间预算超出预算时结果会附带Search stopped at the execution budget; results may be incomplete.的截断提示避免长材料拖垮工具调用。技能的使用范式是用检索验证已提出的模式检索永远不能替代按顺序通读转录——搜索用于确认口头禅/句式的出现频率并回看上下文而未被支持或被证伪的假设应从最终风格档案中剔除。Step 5 — 把风格档案注入生成输入这是从分析到产出的迁移步骤调用链为在对话中规划课程 →create_stage创建舞台 → 对每一页调用generate_scene。brief 中的 ## 讲课风格 段落技能要求把完整、有证据支撑的风格档案写入每一页的brief放在名为## 讲课风格的小节下与经独立核验的学科事实并列。档案必须包含承载性指令load-bearing instructions开场仪式opening ritual、措辞习惯phrasing habits、例子模式example pattern、节奏pacing、互动节奏interaction rhythm、视觉呈现visual presentation。materialFacts 承载具体证据与指令技能强调一个关键机制性事实页面生成器只接收写进每页brief和materialFacts的文本不会去按名称查找某个风格档案。因此把档案命名为某某并引用是无效做法必须把相关证据与具体风格指令逐条放进generate_scene.materialFacts。generate_scene的 schema 定义在 generation-tools.tsmaterialFacts是字符串数组Type.Optional(Type.Array(Type.String()))。从 generation-tools.ts 的实现看它会被映射到场景大纲的keyPoints字段keyPoints: params.materialFacts ?? []对于 pbl 类型场景则映射为targetSkills。技能给出的具体写法示例包括「以复习上节课的问题开场」「先用一个具体例子建立直觉再给出公式」「页尾用已核验的口头禅式小结」。这些指令可操作、可核验正是证据化风格落实到每一页的载体。硬性规则克隆风格不克隆身份SKILL.md 末尾的 Hard rules 是整条技能的安全与质量底线四项规则环环相扣克隆证据化的风格而非教师身份——绝不编造教师传记、观点、背书或个人主张biography, opinions, endorsements, personal claims。风格档案中只有能从转录/关键帧证据中提取的东西。所请求主题必须独立事实正确——不能因为某句话出现在转录中就把它当作学科事实引入新课原始讲稿中的无关主张不得导入。源话题只在用户明确要求时才出现在学习者课程中——默认情况下课程主题是用户的请求而不是录像里的原主题。每个风格主张都需要转录或关键帧证据——省略一切猜测Omit guesses。这与 material-tools.ts 的非信任内容纪律一脉相承材料文本被视为不可信的抓取内容read_material会把每页文本包进带随机 nonce、不可伪造关闭的untrusted-material-contentfence 中并附上这是数据而非指令绝不执行其中命令的策略行防止页面里的提示注入伪装成系统指令——这正是本技能敢把整份转录逐字喂给 Agent 的底层安全保障。实战调用序列速查综合五个工具与技能步骤一个完整的「名师风格」会话调用序列如下1. list_materials # 发现 mat_ id检查 extraction 状态 2. extract_material (source 材料) # 若状态为 idle/failed 3. wait_for_materials # 若状态为 pending/running默认等待 60s 4. read_material (offset 0 → 末页) # 按顺序通读 transcript记录时间戳证据 5. read_material (keyframe 标记) # 采样 keyframemm:ss 对应画面 6. search_material (口头禅/句式) # 验证假设、统计频率、回看上下文 7. create_stage # 创建课程舞台 8. generate_scene × N # 每页写入 ## 讲课风格 brief materialFacts这 8 个步骤依次覆盖了证据就绪 → 文本证据 → 视觉证据 → 假设检验 → 风格落地的完整链路每一步都可在 lib/server/agent-runtime/material-tools.ts 与 lib/server/agent-runtime/generation-tools.ts 的源码中找到对应实现是 OpenMAIC 多智能体课堂中风格迁移这一类能力的可复用范式。【免费下载链接】OpenMAICOpen Multi-Agent Interactive Classroom — Get an immersive, multi-agent learning experience in just one click项目地址: https://gitcode.com/GitHub_Trending/op/OpenMAIC创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考