news 2026/10/10 21:25:56

不写一行代码:用 OpenMAIC 把一页 PPT 变成会互动的 AI 课堂,10 分钟上手

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
不写一行代码:用 OpenMAIC 把一页 PPT 变成会互动的 AI 课堂,10 分钟上手

不写一行代码:用 OpenMAIC 把一页 PPT 变成会互动的 AI 课堂,10 分钟上手

【免费下载链接】OpenMAICOpen Multi-Agent Interactive Classroom — Get an immersive, multi-agent learning experience in just one click项目地址: https://gitcode.com/GitHub_Trending/op/OpenMAIC

在线课程的体验长期停留在一个根本性局限上:视频在播放,你可以暂停、倍速,但课程本身是固定的。没有谁能回答你随时冒出的问题,更不会有人针对你的理解水平调整讲解节奏。OpenMAIC(Open Multi-Agent Interactive Classroom)正是冲着这个痛点来的——这个由清华大学团队开源、采用 MIT 协议的 TypeScript 项目,把"课程生产"与"课堂运行"合二为一:你给它一个主题或一份材料,它在几分钟内生成由 AI 老师与 AI 同学共同出演的沉浸式互动课堂,全程不需要编写任何代码。

本文不重复社区里流传的架构介绍,而是沿着一条真实可走的路径:从网页版输入主题开始,跟踪每一次请求在仓库源码中的落点,最后给你一份十分钟内可执行的验收清单。所有结论均来自当前仓库的实际代码,你可以随时对照验证。

网页版快速体验:从输入主题到生成课堂的完整路径

体验 OpenMAIC 最直接的方式是打开官方在线体验站点(open.maic.chat),按提示配置至少一个 LLM 提供方(OpenAI、Anthropic、DeepSeek、Qwen、GLM、Ollama 等任一即可)后进入首页。首页的核心是一个自由文本需求框:所有关于主题、时长、风格的意图都写在这一段话里,正如 UserRequirements 中requirement字段的注释所写——"Single free-form text for all user input"。

提交后,页面跳转到 app/generation-preview/page.tsx,这里承载了从"一句话"到"一间课堂"的完整状态机。其核心方法startGeneration按序执行六个阶段,每一阶段都会更新进度指示器:

  1. 素材解析:若上传了文档,先调用/api/extract-document抽取文本与图片;
  2. 联网检索(可选):若勾选了联网,调用/api/web-search把检索结果压缩为researchContext,作为后续生成的上下文补充;
  3. 大纲流式生成:请求/api/generate/scene-outlines-stream,通过 SSE 逐条推送大纲卡片,同时推断课程语言与课程标题;
  4. 大纲审核:大纲生成完毕后进入可编辑审核界面,默认 2.5 秒无操作自动继续(见OUTLINE_REVIEW_AUTO_CONTINUE_MS),也可以中途点击流式卡片提前展开编辑器进行修改;
  5. 智能体生成:在自动模式下调用/api/generate/agent-profiles,由 LLM 依据大纲、可用头像列表与可用音色列表生成教师、同学等角色,并以"角色卡翻转"的交互呈现,确认后写入 stage;
  6. 场景生成与语音合成:逐场景调用fetchSceneContent、fetchSceneActions生成内容与课堂动作,随后为第一个场景生成 TTS 语音,最后写入存储并跳转/classroom/[id]。

这个流程中值得注意的设计是"中途可介入"。大纲以流式卡片呈现时,用户点击卡片即可提前进入编辑态(handleExpandStreamingOutline),SSE 仍在后台继续推送;刷新页面后,会话从sessionStorage恢复,并能依据保存的previewPhase判断"用户曾提前打开过编辑器"这一意图,避免在刷新后误触发自动继续。也就是说,生成不是一次不可控的"黑盒提交",而是每一页结构都可以被确认或修改后才进入内容生成。

把 PPT/文档丢进去:两阶段内容管道如何处理素材

OpenMAIC 对"从文档出发"的支持不是简单地把文件塞进提示词,而是经过一条明确分层的两阶段管道。在 lib/types/generation.ts 的文件头注释中,这条管道被定义得清清楚楚:

  • Stage 1:用户需求 + 文档 → 逐页场景大纲(Scene Outlines);
  • Stage 2:场景大纲 → 完整场景(slide / quiz / interactive / pbl,含课堂动作)。

先看素材进入系统的方式。上传的文档在 app/api/extract-document/route.ts 统一处理,支持 multipart 上传与服务端资产引用两种形式;抽取器的选择则由 lib/document/extractors/registry.ts 按 MIME 类型完成,系统内置了文本类(txt/md 等)与 PDF 类等多套 provider,可在设置中指定首选解析服务。解析结果会经历三层约束,见 lib/constants/generation.ts:

  • 单文件大小上限 50MB(MAX_EXTRACT_DOCUMENT_FILE_SIZE_BYTES);
  • 正文进入模型前截断为 50,000 字符(MAX_PDF_CONTENT_CHARS);
  • 从文档中抽取的图片最多以 20 张进入视觉输入预算(MAX_VISION_IMAGES),每张图片带有visionPriority字段,超出预算时按优先级取舍。

随后,所有解析结果通过buildDocumentBundle汇总为统一的 bundle——正文、图片及其来源文档归属信息,一并写入会话;图片存入 IndexedDB 或服务端资产池,以imageMapping的形式供大纲与场景两个阶段按 id 引用。

进入 Stage 1 后,文档正文与图片、联网检索上下文、用户需求被一同送入大纲生成接口。SceneOutline结构(lib/types/generation.ts)为每个场景预留了类型(slide/quiz/interactive/pbl)、标题、目的描述、3-5 个要点、教学目的、预估时长,以及针对不同场景的专属配置:测验的题量与难度、交互组件的 widget 类型与关键变量、PBL 的项目主题与目标技能。文档中提取的图片还会以suggestedImageIds的形式被直接建议给对应的场景页。

Stage 2 则把已确认的大纲逐个"物化"为完整场景:先由内容接口生成幻灯片元素、测验题目或 PBL 项目载荷,再由动作接口生成该场景下智能体要执行的教学动作序列。生成完成后,课堂内的对话并非简单的"你问我答",而是由 lib/orchestration/director-graph.ts 中的 LangGraph StateGraph 驱动:director节点决定下一位发言的智能体,单智能体场景走纯代码逻辑零 LLM 调用,多智能体场景则由 LLM 决策发言顺序,并通过共享记忆与白板动作账本维持课堂连贯性。这段流水线最终产出的,不只是一页静态 PPT 的替代品,而是"会说话、会提问、会画图、会模拟"的互动课堂。

十分钟验收清单:课堂结构、互动点与角色配置

生成完成后,课堂跳转至/classroom/[id]。在正式使用前,建议按下面这份清单在十分钟内完成验收,它同时对应了仓库中每一层能力的真实实现。

课堂结构是否完整。打开侧边栏或大纲视图,核对每个场景的类型与顺序是否符合预期。一页 PPT 变成课堂后,通常不应全是幻灯片:应有穿插其间的测验(quiz,支持单选/多选/简答与难度配置)、交互组件(interactive)或 PBL 环节。若你在需求中开启了交互模式,课堂将以交互优先的方式生成,这是 app/page.tsx 中interactiveMode开关的职责。

互动点是否真的"能动"。交互场景对应一组 widget 类型——模拟、思维导图、3D 可视化、游戏与在线编程等,其配置结构见 SceneOutline 的widgetType与widgetOutline字段。验收时建议实际操作一个模拟或 3D 场景,确认参数可调、状态可观察。

角色配置是否符合预期。在自动模式下,角色由 LLM 依据大纲生成,头像从仓库内置的 12 个角色形象中选取(见 app/generation-preview/page.tsx 中的allAvatars列表),并绑定你在全局设置的旁白音色;若对自动生成不满意,可在设置中切换到预置角色模式(agentMode === 'preset'),固定使用你选择的智能体组合。此外,课堂内的 AI 同学会基于你填写的昵称与背景(userNickname/userBio)进行个性化提问,这一点可以在首页需求表单中一并验证。

听与说是否通畅。打开 TTS 开关后,教师角色的讲解应有语音输出;白板应能承载智能体的绘制动作。课堂聊天已支持引用幻灯片元素、交互组件或白板笔迹进行追问(v1.1.0 起由 agent loop 驱动),可以尝试在播放栏中点选一个元素提问,验证老师"读课件—查实验状态—联网检索"的完整应答链路。

收尾与沉淀是否可用。课程结束后应出现完成页,测验状态可持久保存(v0.2.1 起);如需复用,可从课堂导出可编辑的.pptx或可离线运行的.html(lib/export 目录下实现了完整的导出管线)。这一步是把"生成的课堂"变成"自己的教学资产"的关键闭环。

完成这五项检查,你的第一堂课就通过了验收。从输入主题、确认大纲、翻转角色卡到课堂开讲,整个过程没有任何一行代码——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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/10 21:22:44

指甲病变目标检测数据集:2923图4类YOLO+VOC双格式

简介:本资源是一套面向计算机视觉初学者与医疗AI研究者的指甲病变目标检测专用数据集,聚焦肢端雀斑样痣黑、甲沟炎、甲弯曲及泰瑞氏甲四类临床常见指甲疾病识别任务,适用于YOLO系列、Faster R-CNN等主流检测模型的训练与验证。压缩包共2000个…

作者头像 李华
网站建设 2026/10/10 21:19:18

SpringMVC内存马:Controller与Interceptor注入检测

做Java攻防研究,内存马是绕不开的一关。无论是红队打点还是蓝队排查,SpringMVC框架下的Controller控制器和Interceptor拦截器,都是最容易被动手脚的地方。我在实际项目里既做过注入验证也做过清剿复盘,这篇就把自己对SpringMVC内存…

作者头像 李华
网站建设 2026/10/10 21:18:56

AI 齐套性专家 | 实战案例成果演示

#玄宿科技#AI齐套性交付#案例分享#自主协同软件#GJB438B#Qt开发#交付文档上一期我们演示了 AI 齐套性交付专家的完整生成过程,但所用案例与真实业务贴合度不够。本期我们换了一个完全贴合业务的方向,重新生成了一整套成果:原型图、可交互程序…

作者头像 李华
网站建设 2026/10/10 21:16:13

Matlab贝叶斯分类实战:从原理到避坑的完整指南

简介:这份资源提供了一套完整的贝叶斯分类 Matlab 实现,面向机器学习初学者、课程设计学生以及需要快速验证分类算法的研究人员。它解决了从理论到代码落地的衔接问题,尤其适合不熟悉编程但希望直观使用分类器的用户。压缩包共 28 个文件&…

作者头像 李华