前言¶
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.io 與 THU-MAIC/OpenMAIC,它是清華 THU-MAIC 團隊做的開源教學平臺:給一個主題或一份文檔,就能生成帶幻燈片、測驗和模擬器的交互課堂。dsh-openmaic 並不是把整套 OpenMAIC 塞進 DSH,而是做兩件事:一是把生成請求交給 https://open.maic.chat,等異步任務完成後返回可播放的課堂鏈接;二是讓智能體按 OpenMAIC 的 SDK 約定寫幻燈片 JSON、交互組件和 HTML 片段,在 DSH 對話裏用官方渲染器就地畫出來。
核心功能¶
倉庫 README 寫明,插件會註冊四個工具和一個蘇格拉底式教學技能。dsh.plugin.json 與 package.json 的 dshx.contributes 與此一致。
1. openmaic_generate:一句話生成可上課的鏈接
用戶說「幫我做一節 XX 課」,智能體把教學需求提交到 open.maic.chat,輪詢異步任務,成功後返回 Classroom ID 和可打開的課堂 URL。源碼裏可選參數包括:
language:zh-CN或en-USenableWebSearch/enableImageGeneration/enableVideoGeneration/enableTTSagentMode:default或generate
系統提示要求:只有用戶明確提出時才傳這些可選開關,成功後把課堂 URL 以裸鏈接交給用戶。
2. openmaic_slide:渲染一頁 OpenMAIC 幻燈片
智能體先加載 openmaic-slide 技能,寫出 PPTist 風格的 Slide JSON(viewportSize、viewportRatio,以及 text / image / shape / chart / code / latex / table 等元素),再調用工具。插件用 OpenMAIC 官方渲染器畫出來,文字、形狀、圖片、表格、圖表、公式和代碼都可以渲染。這是單頁,不是整套課件導出。
3. openmaic_widget:流式寫出交互組件,再以內聯卡片渲染
面向模擬器、遊戲或可運行代碼挑戰。智能體按捆綁的合同寫完整 HTML 文檔,代碼在寫出過程中流式顯示,完成後在對話裏渲染爲沙箱卡片。當前 widgetType 支持 simulation、game、code。README 的路線圖還提到 diagram、visualization3d、procedural-skill,這些尚未接線,不要當成已交付能力。
4. openmaic_render:把教學 HTML 片段渲染成沙箱卡片
用於概念卡、測驗、分步講解。傳入的是內聯 HTML 片段(markup + style + 可選 script),不要帶完整文檔骨架。源碼把單片大小上限設爲 256 KB。面向模型的返回只是一行確認,避免把片段再回灌進上下文;瀏覽器端按持久化的 meta 重放同一張卡片。
5. openmaic-teach 技能:蘇格拉底式授課
把當前會話變成以提問引導爲主的 OpenMAIC 課,並按需調用上面的幻燈片、組件和卡片作爲教具。package.json 裏一併貢獻了 openmaic-render、openmaic-widget、openmaic-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.json 裏 dsh.client.platform 爲 web,客戶端半邊是給網頁界面用的。
配置項與 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 裏是同一條鏈路:
- 若配置了
accessCode,先POST /api/access-code/verify,之後請求帶上openmaic_accesscookie。 POST /api/generate-classroom,正文是requirement以及你真正傳入的可選開關,返回jobId和pollUrl。GET {pollUrl}直到任務succeeded/failed,或超過maxWaitMs。- 成功則返回
{baseUrl}/classroom/{classroomId},或服務給出的result.url。
做一個交互模擬器
用戶: 做一個拋體運動模擬器
模型 → 按 openmaic-widget 模板寫完整 HTML(流式輸出)
→ openmaic_widget(html="<!doctype html>…", widgetType="simulation", title="拋體運動")
← "Rendered the simulation widget …"
對話裏就地出現一個可交互的 OpenMAIC 模擬器
幻燈片和教學卡片同理:先讓模型加載對應技能,再分別調用 openmaic_slide 或 openmaic_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