用 dsh-openmaic 把 OpenMAIC 課堂接到 DeepSeek Harness

前言

DeepSeek Harness(以下簡稱 DSH)是 DeepSeek 開源的智能體運行時,口號是「一切皆插件」:模型、工具、技能、界面都可以按插件裝進同一個進程。官方倉庫目前仍處於開發者預覽階段,接口會變。社區裏也有人維護插件目錄站點,用來檢索第三方插件;它和 DeepSeek / 幻方沒有官方從屬關係,不能當成官方應用商店。

智能體寫代碼、查資料已經很常見,但要把一節課講出來——帶幻燈片、模擬器和可點開的課堂——多數時候還得切到別的產品。清華 THU-MAIC 團隊維護的 dsh-openmaic 就是爲這個缺口寫的:把 OpenMAIC 接到 DSH 裏,讓智能體在對話中生成可上課的鏈接,並就地渲染幻燈片、交互組件和教學卡片。

本文依據插件目錄頁、GitHub 倉庫 README / package.json / 源碼,以及 DeepSeek Harness 官方倉庫交叉覈實。安裝命令以目錄頁原文爲準,倉庫推薦的 web profile 寫法會單獨註明。

這是什麼

dsh-openmaic 是面向 DeepSeek Harness 的插件,由 THU-MAIC 維護,許可證爲 MIT,主要語言是 JavaScript。npm 包名是 @openmaic/dsh-openmaic,倉庫內 package.json 當前版本爲 0.4.0。社區目錄把它歸在「模型與提供方」。2026-08-17 查詢 GitHub API 時倉庫爲 13 星;目錄頁仍顯示 8 星,更像收錄時的快照。GitHub 倉庫創建於 2026-08-13,目錄頁最近推送時間與此一致。

OpenMAIC 的全稱是 Open Multi-Agent Interactive Classroom(開放多智能體交互課堂)。根據 openmaic.ioTHU-MAIC/OpenMAIC,它是清華 THU-MAIC 團隊做的開源教學平臺:給一個主題或一份文檔,就能生成帶幻燈片、測驗和模擬器的交互課堂。dsh-openmaic 並不是把整套 OpenMAIC 塞進 DSH,而是做兩件事:一是把生成請求交給 https://open.maic.chat,等異步任務完成後返回可播放的課堂鏈接;二是讓智能體按 OpenMAIC 的 SDK 約定寫幻燈片 JSON、交互組件和 HTML 片段,在 DSH 對話裏用官方渲染器就地畫出來。

核心功能

倉庫 README 寫明,插件會註冊四個工具和一個蘇格拉底式教學技能。dsh.plugin.jsonpackage.jsondshx.contributes 與此一致。

1. openmaic_generate:一句話生成可上課的鏈接

用戶說「幫我做一節 XX 課」,智能體把教學需求提交到 open.maic.chat,輪詢異步任務,成功後返回 Classroom ID 和可打開的課堂 URL。源碼裏可選參數包括:

  • languagezh-CNen-US
  • enableWebSearch / enableImageGeneration / enableVideoGeneration / enableTTS
  • agentModedefaultgenerate

系統提示要求:只有用戶明確提出時才傳這些可選開關,成功後把課堂 URL 以裸鏈接交給用戶。

2. openmaic_slide:渲染一頁 OpenMAIC 幻燈片

智能體先加載 openmaic-slide 技能,寫出 PPTist 風格的 Slide JSON(viewportSizeviewportRatio,以及 text / image / shape / chart / code / latex / table 等元素),再調用工具。插件用 OpenMAIC 官方渲染器畫出來,文字、形狀、圖片、表格、圖表、公式和代碼都可以渲染。這是單頁,不是整套課件導出。

3. openmaic_widget:流式寫出交互組件,再以內聯卡片渲染

面向模擬器、遊戲或可運行代碼挑戰。智能體按捆綁的合同寫完整 HTML 文檔,代碼在寫出過程中流式顯示,完成後在對話裏渲染爲沙箱卡片。當前 widgetType 支持 simulationgamecode。README 的路線圖還提到 diagram、visualization3d、procedural-skill,這些尚未接線,不要當成已交付能力。

4. openmaic_render:把教學 HTML 片段渲染成沙箱卡片

用於概念卡、測驗、分步講解。傳入的是內聯 HTML 片段(markup + style + 可選 script),不要帶完整文檔骨架。源碼把單片大小上限設爲 256 KB。面向模型的返回只是一行確認,避免把片段再回灌進上下文;瀏覽器端按持久化的 meta 重放同一張卡片。

5. openmaic-teach 技能:蘇格拉底式授課

把當前會話變成以提問引導爲主的 OpenMAIC 課,並按需調用上面的幻燈片、組件和卡片作爲教具。package.json 裏一併貢獻了 openmaic-renderopenmaic-widgetopenmaic-slide 三個寫作合同技能,供模型在第一次調用對應工具前加載。

有一點邊界要分清:openmaic_generate 會打到遠程(或你自建的)OpenMAIC 服務;openmaic_slide / openmaic_widget / openmaic_render 不做服務端生成,只渲染智能體按 @openmaic/dsl@openmaic/generation@openmaic/renderer 寫出來的內容。

安裝與啓用

目錄頁給出的安裝命令是:

dsh plugin add github:THU-MAIC/dsh-openmaic

如需可復現安裝,目錄頁建議固定 commit 哈希:

dsh plugin add github:THU-MAIC/dsh-openmaic#commit

#commit 換成實際的 commit SHA。倉庫 README 針對 Web UI 的寫法是:

dsh plugin --profile web add git+https://github.com/THU-MAIC/dsh-openmaic.git

然後重啓 dsh web 並刷新頁面。README 說明倉庫已帶編譯後的 lib/,git 安裝不需要再走構建步驟。package.jsondsh.client.platformweb,客戶端半邊是給網頁界面用的。

配置項與 README、源碼默認值一致:

dsh-openmaic:
  baseUrl: https://open.maic.chat
  accessCode: ""     # 邀請碼;線上暫未強制,先留空
  pollIntervalMs: 5000
  maxWaitMs: 600000
配置項 默認值 說明
baseUrl https://open.maic.chat API 根地址。對接本地 OpenMAIC 時可改成 http://localhost:3000
accessCode "" open.maic.chat 的邀請碼。README 寫明線上暫未強制,啓用後再填
pollIntervalMs 5000 輪詢間隔(毫秒)。課堂生成偏慢,README 認爲 60000 比默認值更友好
maxWaitMs 600000 單次任務最長等待,默認 10 分鐘

openmaic_generate 的超時與 maxWaitMs 對齊。若超時,源碼返回的錯誤會提示課堂可能仍在後臺生成,可以稍後再看。

典型用法

下面兩段來自倉庫 README,可以按同樣的說法在 DSH 對話裏試。

生成一節課

用戶: 幫我做一節量子物理入門課
模型 → openmaic_generate(requirement="量子物理入門課", language="zh-CN")
     ← "Classroom ID: class-abc123
        Classroom URL:
        https://open.maic.chat/classroom/class-abc123"
模型: 課堂已經生成好了,點開就能上課:
     https://open.maic.chat/classroom/class-abc123

實際 ID 和 URL 以服務返回爲準。生成流程在 README 和 src/client.ts 裏是同一條鏈路:

  1. 若配置了 accessCode,先 POST /api/access-code/verify,之後請求帶上 openmaic_access cookie。
  2. POST /api/generate-classroom,正文是 requirement 以及你真正傳入的可選開關,返回 jobIdpollUrl
  3. GET {pollUrl} 直到任務 succeeded / failed,或超過 maxWaitMs
  4. 成功則返回 {baseUrl}/classroom/{classroomId},或服務給出的 result.url

做一個交互模擬器

用戶: 做一個拋體運動模擬器
模型   openmaic-widget 模板寫完整 HTML流式輸出
      openmaic_widget(html="<!doctype html>…", widgetType="simulation", title="拋體運動")
      "Rendered the simulation widget …"
     對話裏就地出現一個可交互的 OpenMAIC 模擬器

幻燈片和教學卡片同理:先讓模型加載對應技能,再分別調用 openmaic_slideopenmaic_render。需要整節可播放的課,走 openmaic_generate;需要對話裏立刻看到一頁 PPT 或一個沙箱組件,走後三個工具。

適用場景與注意事項

比較適合這些情況:

  • 在 DSH 裏備課、試講,需要一鍵生成可打開的 OpenMAIC 課堂。
  • 講解概念時希望對話裏直接出現幻燈片、公式、圖表,而不是隻吐 Markdown。
  • 物理、算法一類內容需要內嵌模擬器或小遊戲。
  • 想用蘇格拉底式提問帶着學,並隨時拉一張卡片或一頁幻燈片輔助。

使用前有幾件事需要心裏有數。

插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。安裝前請檢查源代碼倉庫和許可證;如需可復現安裝,請固定 commit 哈希。

openmaic_generate 依賴 baseUrl 指向的服務是否可用、排隊是否過長。默認指向公共站點 open.maic.chat,課堂內容不在 DSH 進程裏本地生成。自建 OpenMAIC 時,把 baseUrl 指到本機即可;OpenMAIC 本體倉庫使用 AGPL-3.0,和本插件的 MIT 不是同一份許可證,自建前要分開看。

accessCode 目前按 README 說明「線上暫未強制」。一旦服務端啓用校驗,空字符串會走不通,需要再填邀請碼。

客戶端渲染面向 Web UI。幻燈片、組件、卡片出現在對話裏,依賴瀏覽器半邊;純終端環境不要按「就地出現沙箱卡片」來預期。openmaic_widget 渲染的是智能體寫出的完整 HTML,雖然在沙箱卡片裏,仍應把它當作不可信內容來看待。

倉庫路線圖還計劃:補齊其餘 widget 類型,以及把教學動作(高亮、批註、揭示組件元素)回傳給模型。這些是後續方向,當前版本沒有。

DSH 本身仍在快速迭代,官方 README 寫明會出現破壞兼容性的變更。插件聲明的引擎要求是 dsh >= 0.0.1,實際能否加載以你當前的 Harness 版本爲準。

小結

dsh-openmaic 把清華 THU-MAIC 的 OpenMAIC 接到 DeepSeek Harness:一句需求可以換回可上課的鏈接,智能體寫的幻燈片、模擬器和教學卡片可以在對話裏直接渲染。它解決的是「智能體會講,但講不成一堂課」的缺口,而不是替代 OpenMAIC 平臺本身。

目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-openmaic/

GitHub:https://github.com/THU-MAIC/dsh-openmaic

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜