真实开源项目拆解 · OpenMAIC

一堂AI课,
背后同时发生了什么?

有老师在讲、有同学在举手、幻灯片在翻页、黑板上有人在写字——这一切同时在跑,但后台不是一团乱麻,而是一套精密的设计。

↓ 往下滚,每一节都有交互演示
第一章

先弄清楚:Agent 是什么?

这个词后面会一直出现。我们先通过对比,感受一下普通AI和Agent的区别。

💡最简单的区分方式:普通AI回答问题,Agent完成任务

场景:你想学 Python,来问 AI

帮我学Python
AI
好的,Python是一种……(给你一段介绍)
问题:每次都要你主动问,AI不知道你学到哪了、也不知道下一步该讲什么。你要一直"喂"它。

场景:同样的需求,换成 Agent

帮我学Python基础,30分钟
第二章

多个Agent一起工作是什么感觉?

OpenMAIC里不止一个Agent——有老师、有同学、还有一个总指挥。下面这个演示让你直接看到它们怎么配合。

导演不上台表演,只决定"下一个轮到谁"——这是多Agent系统最核心的设计原则。
课堂现场 · 各Agent状态
🎬
导演
待机中
👩‍🏫
老师
等待
🙋
同学A
等待
🤔
同学B
等待
🧑‍💻
旁听中
点击"开始上课",看多个Agent如何配合
导演在调度中…
🔍 注意观察:导演Agent从不说话,只在后台决定轮到谁。老师和同学只管各自的内容,互不干扰。这就是"职责分离"的好处。
第三章

为什么感觉AI在"实时说话"?

你有没有发现,跟AI对话时文字是一个字一个字出现的,不是一次全部蹦出来?这叫"流式输出",它改变了用户体验——也是课堂能"活起来"的关键。

亲自感受一下区别

速度
❌ 等待模式(旧方式)
点击按钮后,这里会先空白一段时间……
生成中
✅ 流式模式(现在)
点击按钮,文字会立刻开始出现
🎯 流式输出的本质:不等全部做完,有多少就先给多少。就像餐厅里菜炒好一道就先端上来,而不是等所有菜都好了才开饭。
第四章

你说一句话,怎么变成一整堂课?

在AI开始"上课"之前,它需要先"备课"——而备课分两个阶段,就像先画设计图再同时开工建造。

生成过程模拟

1
第一阶段:理解 + 拆出大纲
等待中
AI在分析:受众是谁?该讲哪些知识点?用什么方式教?
大纲生成完毕,开始并发生成各场景内容
2
第二阶段:多条流水线同时生成场景内容
等待中
变量与类型
幻灯片
第一个程序
交互模拟
循环与条件
幻灯片
小测验
测验
函数基础
幻灯片
综合项目
PBL
⚡ 6个场景在同时生成——不是排队等,是并行开工,所以快
🏗️ 阶段一是"想",阶段二是"做"。想的时候不急,把结构想清楚;做的时候并行冲,多条线同时跑。两件事分开,互不影响。
第五章

所有要素听一种语言:Action 指令

AI想让幻灯片翻页、让老师开口说话、让黑板上画图——它怎么"指挥"这些不同的东西?靠一份统一的指令单,叫 Action JSON。

AI只负责"写指令单",各个执行器只负责"照单执行"。两边的工作完全分开。
← 点击每条指令,看右边发生什么
🔊
type: "tts"
agent: "teacher"
text: "变量就像一个盒子"
📊
type: "slide_goto"
page: 3
highlight: "code_block"
✏️
type: "whiteboard"
content: "x = 10 示意图"
animate: true
type: "quiz"
question: "x 等于几?"
blocking: true
💡
type: "spotlight"
target: "variable_box"
duration: 2000
课堂预览(指令执行效果)
👩‍🏫
老师正在说:
"变量就像一个盒子…"
第3页 · 变量与类型
什么是变量?
x = 10
name = "小明"
10 变量 x x = x = 10
⛔ 课堂暂停
请回答问题
x = 10 之后,x 的值是?
A. 0
B. 10
C. "x"
重点知识
📦 变量 = 贴了标签的盒子
盒子里放的是值,标签就是变量名
🔊 语音指令
指定教师Agent朗读这句话。TTS模型把文字转成声音,头像同步做口型动画——这条指令不阻塞,其他动作可以同时进行。
第六章

哪些地方真的在用AI?哪些只是"照单执行"?

很多人以为整个课堂每一秒都在调用AI模型。其实不是——调用模型是昂贵且慢的,系统设计的原则是"能不用就不用"。

🎵就像一个乐队:作曲家只需要在演出前写好乐谱,演出时钢琴手、小提琴手照着弹就行——不需要每个音符都来问作曲家。
需要调用AI模型
🧠 LLM 大语言模型
生成课程大纲、写 Action 指令单,是整个系统的"大脑"。每次发言前调用一次。
🔊 TTS 语音合成
把文字变成声音。每个Agent有专属音色,边生成边播出——流式的。
🎤 ASR 语音识别
你说话时,把你的声音转成文字,才能让AI听懂你。
纯执行器,不用AI
📊 幻灯片渲染
收到"翻到第3页"的指令,直接执行。Canvas画出来,不思考、不判断。
✏️ 白板绘制
按照指令里给的路径画图,SVG动画,纯前端代码,零AI调用。
💡 聚光灯/动效/头像
CSS动画和React状态变化,完全确定性执行,快且稳定。
AI负责"想",TTS负责"说",其他都在"演"。
把智能和执行分开,是这套系统最聪明的设计。
第七章

从这个案例,能学到什么?

OpenMAIC 不只是一个教育产品,它展示了构建多Agent系统时最值得借鉴的几个原则。

01
一个导演,多个演员
一个Agent只管调度决策,其他Agent各司其职。不要一个Agent既管流程又管内容。
02
统一指令格式
Action JSON是所有模块的共同语言。约定好格式,模型和执行器可以随时替换升级。
03
流式优先
不等全做完再给用户看。有多少先给多少,让等待消失——这是体验的核心。
04
两阶段:先想再做
把"规划"和"执行"分开。规划阶段想清楚结构,执行阶段并行冲,互不干扰。
05
智能与执行分离
只在真正需要判断的地方调用模型,确定性的事情用代码做——既快又省钱。
06
共享状态同步所有人
所有Agent和执行器共享同一份状态,没有私下传话,任何变化都是透明的。
一堂课,是一个
精密运转的小世界

从你说的一句话,到声音、画面、互动同时发生——背后是导演、演员、舞台和指令单的完美分工。这不是魔法,是设计。

多Agent协作
导演模式
Action JSON
流式输出
智能与执行分离
两阶段生成
共享状态
基于 OpenMAIC 开源项目 · 清华大学 MAIC 团队