前言¶
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