概要
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 の既知のバグです。カスタムのキーレスプロバイダー(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 をフォールバックとして受け入れます。例えば、キーレスの分岐で 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 ブランチにマージ済み)を含むビルドにアップグレードしてください。この修正では、引用または要約されたフィードバックや、複数の学習者メッセージに分散した回答を受け入れる一方で、実際の返信、ステージ、アーティファクトバージョンのチェックは引き続き強制されます。
トラブル対応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 で失敗します。障害モードは2つあります:(1) ページにKaTeXコアが含まれている場合、数式が一切レンダリングされない;(2) オブザーバーが初期レンダリングパスの後にインストールされるため、ページ自身の init() で埋められたラベルが初回ペイント時に生のまま残る。修正(PR #1606):注入のガードを裸の katex 文字列ではなく auto-render/renderMathInElement に基づいて行う;KaTeXコアがすでに存在する場合は、不足しているauto-render contribスクリプトと MutationObserver のみを注入する;オブザーバーをインストールした後、約300msの安定化タイムアウト後に追加のレンダリングパスを1回実行し、さらに window の load でも実行して、init() で埋められたラベルが初回ペイント時にレンダリングされるようにする。
トラブル対応OpenMAICでPBL v3ティーチングツールが失敗した場合のSANDBOX_CONFLICT (409)エラーの解決方法
このエラーは、PBL v3 のバックグラウンドポーリングとティーチングツール(例:read_next_skill、request_skill_review、complete_stage)が同じ study に対して同時に touchEnvironment を呼び出した場合に発生します。この場合、2 回目の更新が環境アドバイザリロックの取得に失敗し、結果を記録する前に 409 を返します。**回避策:** もう一方の操作が完了してからティーチングアクションを再試行してください — 再試行は通常成功します。**恒久的な修正:** PR #1964 を含むビルド(integration/shared-sandbox 上のマージコミット 3446978c)にアップグレードしてください。この修正では、永続化された更新タイムスタンプを再読み取りし、ティーチングアクションを再実行せずに、5 秒の予算内で明示的な環境ロックの競合を再試行します。なお、この修正は v1.2.0-rc.2 の後に取り込まれたものであり、まだ main にマージされていない可能性があります。
トラブル対応OpenMAICで「Parsing service unavailable」という失敗した教材エラーを修正する方法
パーサーが設定されていない場合、マテリアルは 'Parsing service unavailable' で失敗します。管理者はまずナレッジベース用のパーサーを設定し、次にナレッジベースページを開いて、失敗したマテリアルに対して 'Parse again' を使用して再試行する必要があります。長すぎることが原因で失敗したメディアについては、失敗理由に表示されている再生時間の上限を確認してください。会話をソースとするマテリアルには 'Parse again' の行アクションがないことに注意してください。ナレッジベースページから直接管理および再パースしてください。より明確な理由別の失敗ガイダンス、ローカライズされたビジネスエラーメッセージ(以前は英語のみ)、および修正された単数/複数形の文言('1 materials' ではなく '1 material')が PR #1923 でリリースされ、コミット 84a88bc4 としてマージされました。