大模型应用
需要用 OpenMAIC…
当你要把主题或文档转成带幻灯片、测验、HTML 模拟和多代理讨论的 AI 互动课堂,并需要本地、Docker、Vercel 运行或接入 OpenClaw 时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
需要用 OpenMAIC 从主题/文档生特定
解决思路
- 安装 OpenMAIC:git clone https://github.com/THU-MAIC/OpenMAIC.git
- 进入项目目录:cd OpenMAIC
- 安装依赖:pnpm install
- 复制环境变量模板:cp .env.example .env.local
- 编辑 .env.local,至少配置一个 LLM provider key:OPENAI_API_KEY、ANTHROPIC_API_KEY 或 GOOGLE_API_KEY
- 设置推荐默认模型:DEFAULT_MODEL=google:gemini-3-flash-preview
- 可选启用 MinerU 高级 PDF 解析:设置 PDF_MINERU_BASE_URL=https://mineru.net 和 PDF_MINERU_API_KEY=$MINERU_API_KEY
- 可选启用托管模式访问码:设置 ACCESS_CODE=$OPENMAIC_ACCESS_CODE
- 可用 YAML 替代环境变量配置 provider:在项目根目录创建 server-providers.yml
- 在 server-providers.yml 配置 providers.openai.apiKey: $OPENAI_API_KEY
- 在 server-providers.yml 配置 providers.anthropic.apiKey: $ANTHROPIC_API_KEY
- 在 server-providers.yml 配置 providers.google.apiKey: $GOOGLE_API_KEY
- 在 server-providers.yml 配置 providers.deepseek.apiKey: $DEEPSEEK_API_KEY
- 在 server-providers.yml 配置 providers.custom.baseURL 和 apiKey 以接入任意 OpenAI-compatible endpoint
- 开发运行:pnpm dev,访问 http://localhost:3000
- 生产构建并启动:pnpm build && pnpm start
- 类型检查:pnpm tsc --noEmit
- 代码检查:pnpm lint
- Docker 部署准备:cp .env.example .env.local
- 编辑 .env.local 填入 API keys
- 运行 Docker:docker compose up --build,访问 http://localhost:3000
- Vercel 部署:fork 仓库
- 在 https://vercel.com/new 导入仓库
- 在 Vercel dashboard 设置环境变量 OPENAI_API_KEY 或 ANTHROPIC_API_KEY 或 GOOGLE_API_KEY,可选 DEFAULT_MODEL
- 可使用 README 的一键部署按钮,它会自动预填环境变量描述
- 课程生成使用两阶段管线:Outline 分析主题/文档生成结构化大纲
- Scenes 阶段将每个大纲项扩展为 typed scene:slides、quiz、interactive 或 pbl
- slides 场景:AI 教师讲课,带 TTS 旁白、spotlight、laser pointer
- quiz 场景:单选/多选/简答,AI 评分
- interactive 场景:HTML 模拟(物理、流程图等)
- pbl 场景:项目式学习,选择角色并与 agents 协作
- 调用 POST /api/generate 生成课堂,JSON body 包含 topic,可选 document(markdownString)和 model
- 从 /api/generate 响应获取 jobId
- 轮询 GET /api/generate/status?jobId=<jobId>,状态为 pending、running、completed 或 failed
- 状态为 completed 时读取 data.classroomUrl
- 状态为 failed 时抛出 data.error
- 导出 PPTX:GET /api/export/pptx?classroomId=<id>,以 blob 下载 lesson.pptx
- 导出 HTML:GET /api/export/html?classroomId=<id>,读取 text 获取自包含 HTML
- 安装 OpenClaw skill(推荐):clawhub install openmaic
- 手动安装 OpenClaw skill:mkdir -p ~/.openclaw/skills,然后 cp -R /path/to/OpenMAIC/skills/openmaic ~/.openclaw/skills/openmaic
- 配置 OpenClaw:编辑 ~/.openclaw/openclaw.json
- 托管模式:在 skills.entries.openmaic.config 设置 accessCode(从 https://open.maic.chat/ 获取)
- 自托管模式:设置 repoDir 为 /path/to/OpenMAIC,url 为 http://localhost:3000
- OpenClaw skill 生命周期 Clone:检测已有 checkout 或 fresh clone
- Startup:选择 pnpm dev、pnpm build && pnpm start 或 Docker
- Provider Keys:引导用户编辑 .env.local
- Generation:提交异步 job、轮询、返回 classroom link
- 自定义场景开发:在 types/scene.ts 的 SceneType 中添加 'custom'
- 定义 CustomScene interface,包含 type:'custom'、title、content、metadata 等字段
- 在 components/scenes/CustomScene.tsx 创建 'use client' 组件
- 组件接收 scene 和 onComplete props,渲染标题、内容与 Continue 按钮
- 点击 Continue 按钮时调用 onComplete
- 多代理交互模式 Classroom Discussion:自动触发,agents 主动讨论,用户可加入或被点名
- Roundtable Debate:通过场景配置触发,多个 agent personas 辩论并配白板插图
- Q&A:用户提问时 AI 教师用 slides、diagrams 或 whiteboard drawings 回应
- Whiteboard:任意场景中 agents 实时画方程、流程图或概念图
- 复杂 PDF 解析:设置 PDF_MINERU_BASE_URL=https://mineru.net 和 PDF_MINERU_API_KEY=$MINERU_API_KEY 使用 MinerU 托管 API
- 或自托管 MinerU:设置 PDF_MINERU_BASE_URL=http://localhost:8888
- 未配置 MinerU 时 OpenMAIC 回退标准 PDF 文本提取
- LLM 模型字符串格式为 provider:model-name
- Google 模型示例:google:gemini-3-flash-preview(速度/质量最佳平衡),google:gemini-3.1-pro(最高质量)
- OpenAI 模型示例:openai:gpt-4o,openai:gpt-4o-mini
- Anthropic 模型示例:anthropic:claude-sonnet-4-5,anthropic:claude-haiku-4-5
- DeepSeek 模型示例:deepseek:deepseek-chat
- OpenAI-compatible 自定义模型示例:custom:your-model-name
- 导出格式包括 PowerPoint .pptx(完全可编辑 slides)和 Interactive .html(自包含页面)
- 从文档字符串生成课堂:调用 POST /api/generate,body 包含 topic、document、model;获取 jobId
- 轮询直到完成:每 4 秒请求 /api/generate/status?jobId=<jobId>;completed 得 classroomUrl,failed 抛错
- 检查 provider 健康:GET /api/providers,返回 providers 数组,过滤 available 为 true 的项
- 故障排除 No LLM provider configured:在 .env.local 设置至少一个 OPENAI_API_KEY、ANTHROPIC_API_KEY 或 GOOGLE_API_KEY
- 故障排除 Generation hangs at outline stage:检查 API key quota,切换到 google:gemini-3-flash-preview 获得更高 rate limits
- 故障排除 TTS not working:使用支持 Web Speech API 的浏览器,检查浏览器控制台错误
- 故障排除 PDF parsing garbled text:设置 PDF_MINERU_BASE_URL 启用 MinerU
- 故障排除 Vercel timeout:在 vercel.json 增加 function timeout;生成异步,API 应立即返回 jobId
- 故障排除 Docker build fails:确保 DOCKER_BUILDKIT=1 且 .env.local 存在,再运行 docker compose up --build
- 故障排除 OpenClaw skill not found:运行 clawhub install openmaic 或手动复制 skills/openmaic 到 ~/.openclaw/skills/
- 故障排除 pnpm install fails on Node < 20:升级 Node.js 到 >= 20(nvm use 20)
- 故障排除 Port 3000 already in use:在 .env.local 设置 PORT=3001 或运行 PORT=3001 pnpm dev
- 关键文件结构:app/api/generate 处理生成与状态,app/api/export 处理导出,app/api/providers 提供健康检查,app/classroom 是课堂查看页
- 关键文件结构:components/scenes 包含 Slide、Quiz、Interactive、PBL 组件,components/whiteboard 渲染实时白板,components/agents 包含 agent avatar 与 TTS 组件
- 关键文件结构:lib/agents 定义 LangGraph agent graph,lib/providers 抽象 LLM provider,lib/generation 包含 outline+scene 生成管线
- 关键文件结构:skills/openmaic 是 OpenClaw skill 定义,server-providers.yml 是可选 YAML provider 配置,.env.example 是环境变量模板,docker-compose.yml 是 Docker 部署配置
适用边界 · 注意事项
- 不想安装或运行 OpenMAIC,或不准备配置任何 LLM provider API key 时,不适用。
- 只需要静态课件、普通幻灯片,不需要多代理互动、白板、TTS、测验或模拟场景时,不值得使用。
- 环境不满足 Node.js >= 20、pnpm >= 10,或无法使用 Docker/Vercel/OpenClaw 等目标部署与集成方式时,不适用。