개요
OpenMAIC는 오픈소스 멀티 에이전트 인터랙티브 클래스룸으로, 한 문장만 입력하면 몰입형 강좌를 생성할 수 있습니다. 에이전트 워크벤치는 강의 개요를 계획하고 슬라이드, 퀴즈, 시뮬레이션 및 비디오를 생성하며, 언제든지 개입하여 조정할 수 있습니다. 플랫폼은 모델 중립성을 유지하여 자체 LLM, 미디어, 검색 및 스토리지 서비스를 자유롭게 연결할 수 있습니다.
README 미리보기
\n \n -->\n\n\n \n\n\n\n Get an immersive, multi-agent learning experience in just one click\n\n\n\n \n \n \n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n English | Simplified Chinese\n \n Live Demo · Quick Start · Lemonade · FunASR · Features · Use Cases · OpenClaw\n\n\n## 🎉 OpenMAIC v1.0.0 — Build courses with an agent\n\n**One prompt in, a whole course out — and now you can steer.** Released August 27, 2026, OpenMAIC v1.0.0 adds a **Pro workbench** alongside the classic one-click generator: chat with an agent that plans your curriculum, builds and revises every page, and works straight from your materials.\n\n- 🤖 **Agent workbench** — a chat-first workspace that plans, builds, and revises whole courses\n- 💾 **Durable sessions** — server-backed runs survive restarts; cancel, resume, and steer anytime\n- 📎 **Session materials** — upload documents, audio, and video, or pull from web search; the agent builds from them\n- 🧰 **Course tools + 20 built-in skills** — slides, quizzes, interactives, PBL, images, video, voices, `.pptx` import\n- 🔌 **Neutral by design** — bring your own models, media, search providers, and storage backend\n\nTake the full tour in [Features](#-features), then set it up with [Agent workbench and runtime](#optional-agent-workbench-and-runtime).\n\n\n## 🗞️ News\n\n- **2026-08-27** — **OpenMAIC v1.0.0:** an agent workbench, durable course-building sessions, reusable skills, session materials, provider-neutral server capabilities, and a pluggable persistence stack.\n- **2026-08-14** — [v0.3.2 released!](https://github.com/THU-MAIC/OpenMAIC/releases/tag/v0.3.2) Video export hardening (deterministic Quiz/PBL covers, fidelity polish, interactive HTML capture, CPU resource profiles); server-backed persistence completed (full document cutover, one-command Postgres stack, incremental saves) plus the asset registry; the `@openmaic/generation` package; four new locales; Amazon Bedrock, At
FAQ (5)
문제 해결OpenMAIC에서 페이지를 새로 고침한 후 사용자 지정 키리스 TTS/ASR 제공자가 Browser Native로 재설정되는 이유는 무엇인가요? (더빙 컨트롤이 사라짐)
이것은 OpenMAIC v1.1.2의 알려진 버그입니다. API 키가 필요 없는 커스텀 프로바이더(requiresApiKey: false, 예: 로컬 OpenAI 호환 TTS 엔드포인트)를 추가하면, lib/store/settings.ts의 addCustomTTSProvider가 엔드포인트를 customDefaultBaseUrl에만 저장하고 baseUrl: '' 상태로 남겨둡니다. 새로고침하면 lib/store/settings-validation.ts의 유효성 검사 isProviderUsable이 if (cfg.requiresApiKey === false) return !!cfg.baseUrl;을 실행하여 해당 프로바이더를 사용 불가능으로 표시하고, 조용히 browser-native-tts로 폴백합니다. 더빙 UI(줄별 미리보기/재생성 버튼, '모든 더빙 재생성', 음성 칩)는 ttsProviderId !== 'browser-native-tts' 조건에 따라 제어되므로, 모든 더빙 컨트롤이 사라집니다.
수정 방법(검증됨): lib/store/settings.ts에서 커스텀 프로바이더를 추가/업데이트할 때 URL을 두 필드 모두에 기록하세요:
addCustomTTSProvider: (id, name, baseUrl, requiresApiKey, defaultModel) =>
set((state) => ({
ttsProvidersConfig: { ...state.ttsProvidersConfig, [id]: {
...,
baseUrl, // was ''
customDefaultBaseUrl: baseUrl,
...
}},
ttsProviderId: id,
})),
대안 수정: isProviderUsable에서 custom-* 프로바이더 ID에 대한 폴백으로 customDefaultBaseUrl을 허용하세요. 예를 들어 API 키 불필요 분기에 return !!(cfg.baseUrl || cfg.customDefaultBaseUrl);를 적용합니다. 커스텀 ASR 프로바이더에도 동일한 변경을 적용한 후 다시 빌드하세요(pnpm build && pnpm start). 코드 변경 없이 임시로 우회하는 방법: 새로고침할 때마다 설정 → 모델 서비스 → TTS에서 커스텀 프로바이더를 다시 선택하거나(다음 새로고침 전까지는 작동합니다), 세션마다 프로바이더를 삭제하고 다시 추가하세요.
문제 해결OpenMAIC PBL v3가 유효한 학생 피드백을 '请引用本轮学生对当前段的实质反馈' 오류와 함께 거부하는 이유는 무엇인가요?
이는 OpenMAIC 1.2.0-rc.2에서 알려진 버그입니다. PBL v3 studentFeedback 게이트(lib/server/pbl-v3/guided-review.ts, 71-79행)는 최신 학생 메시지에 대해 리터럴 부분 문자열 일치를 사용했기 때문에, 에이전트가 래핑하거나 요약한 피드백(예: Student reply: "...")은 검사에 실패하여 read_next_skill 또는 complete_stage를 통한 진행이 차단되었습니다. 해결 방법: PR #1963이 포함된 빌드로 업그레이드하세요(커밋 4de9467d, integration/shared-sandbox 브랜치에 머지됨). 이 수정 사항은 인용되거나 요약된 피드백과 여러 학습자 메시지에 걸쳐 분산된 답변을 허용하면서도, real-reply, 스테이지, artifact-version 검사는 여전히 적용합니다.
문제 해결OpenMAIC 인터랙티브 씬에서 KaTeX/LaTeX 수식이 렌더링되지 않고 원시 텍스트로 표시되는 이유는 무엇인가요?
이 문제는 생성된 HTML에 이미 katex 문자열이 포함되어 있을 때마다 postProcessInteractiveHtml(packages/@openmaic/generation/src/interactive-post-processor.ts에 위치)이 KaTeX auto-render 스크립트와 MutationObserver의 주입을 건너뛰기 때문에 발생합니다. 모델이 생성한 페이지가 자체 katex.min.js/katex.min.css를 포함하는 경우(흔한 경우) 자동 렌더링이 설치되지 않아 \(...\)와 $...$가 문자 그대로 출력됩니다. 샌드박스 처리된 about:srcdoc iframe에서는 외부 CDN 스크립트를 로드할 수 없기 때문에 페이지 자체의 renderMathInElement() 호출도 Uncaught ReferenceError: renderMathInElement is not defined 오류로 실패합니다. 두 가지 실패 모드가 있습니다: (1) 페이지에 KaTeX 코어가 포함된 경우 수식이 전혀 렌더링되지 않음; (2) 옵저버가 초기 렌더 패스 이후에 설치되므로 페이지 자체의 init()으로 채워진 레이블이 첫 페인트에서 가공되지 않은 원시 상태로 남아 있음. 수정 사항(PR #1606): 단순한 katex 문자열 대신 auto-render/renderMathInElement를 기준으로 주입 여부를 판단하고, KaTeX 코어가 이미 존재하는 경우 누락된 auto-render contrib 스크립트와 MutationObserver만 주입하며, 옵저버를 설치한 후 ~300ms 안정화 타임아웃 뒤에 추가 렌더 패스를 한 번 실행하고 window load 시점에 다시 실행하여 init()으로 채워진 레이블이 첫 페인트에서 렌더링되도록 합니다.
문제 해결OpenMAIC에서 PBL v3 교육 도구가 실패할 때 SANDBOX_CONFLICT (409) 오류를 해결하는 방법은?
이 오류는 PBL v3 백그라운드 폴링과 teaching tool(예: read_next_skill, request_skill_review, complete_stage)이 동일한 study에 대해 동시에 touchEnvironment를 호출할 때 발생하며, 이로 인해 두 번째 갱신이 environment advisory lock을 획득하지 못하고 결과를 기록하기 전에 409를 반환합니다. **임시 해결 방법:** 다른 작업이 완료된 후 teaching action을 재시도하세요. 재시도는 일반적으로 성공합니다. **영구 수정:** PR #1964가 포함된 빌드로 업그레이드하세요(integration/shared-sandbox의 merge commit 3446978c). 이 수정은 durable renewal timestamp를 다시 읽고, teaching action을 재실행하지 않으면서 5초의 시간 예산 내에서 명시적인 environment-lock 경합을 재시도합니다. 이 수정은 v1.2.0-rc.2 이후에 적용되었으며 아직 main에 머지되지 않았을 수 있습니다.
문제 해결OpenMAIC에서 'Parsing service unavailable' 자료 실패 오류를 해결하는 방법
파서가 구성되어 있지 않으면 자료가 'Parsing service unavailable' 오류로 실패합니다. 관리자는 먼저 지식 베이스용 파서를 구성한 다음, 지식 베이스 페이지를 열어 실패한 자료에서 'Parse again'을 사용해 재시도해야 합니다. 너무 길어서 실패한 미디어의 경우 실패 원인에 표시된 재생 시간 제한을 확인하세요. 대화에서 가져온 자료에는 'Parse again' 행 작업이 없다는 점에 유의하세요. 이러한 자료는 지식 베이스 페이지에서 직접 관리하고 다시 파싱하세요. 더 명확한 원인별 실패 안내, 현지화된 비즈니스 오류 메시지(이전에는 영어로만 제공됨), 그리고 수정된 단수/복수 표현('1 materials' 대신 '1 material')이 PR #1923을 통해 제공되었으며, 커밋 84a88bc4로 병합되었습니다.