THU-MAIC/dsh-openmaic 预览 preview

THU-MAIC/dsh-openmaic

OpenMAIC for DeepSeek Harness:教室、幻灯片、交互式小部件和苏格拉底式教学

项目介绍Project Overview

dsh-openmaic 是 DeepSeek Harness 插件,向代理注册四个工具与一个苏格拉底式教学技能。openmaic_generate 向 open.maic.chat 提交需求并轮询,返回可上课的课堂链接;openmaic_slide 用官方渲染器把单张 OpenMAIC 幻灯片(Slide JSON)渲染为文本、形状、图片、表格、图表、公式与代码;openmaic_widget 接收完整 HTML 文档,编写时流式输出,完成后以内嵌沙箱卡片呈现;openmaic_render 把内联 HTML 教学片段渲染为沙箱卡片;openmaic-teach 技能把会话转成苏格拉底式 OpenMAIC 课。适用:做互动课件、课堂、可视化讲解。提示:教学大厅生成较慢,建议把 pollIntervalMs 调高,maxWaitMs 上限为 10 分钟。

dsh-openmaic is a DeepSeek Harness plugin that registers four tools and a Socratic teaching skill. openmaic_generate submits a requirement to open.maic.chat, polls the async job, and returns a playable classroom link. openmaic_slide renders a single OpenMAIC slide (PPTist-style Slide JSON) via the official renderer, supporting text, shapes, images, tables, charts, formulas, and code. openmaic_widget accepts a full HTML document conforming to the bundled contract, streams it while the agent writes, then renders it inline as a sandboxed card. openmaic_render turns an inline HTML teaching fragment into a sandboxed card. openmaic-teach turns a session into a Socratic OpenMAIC lesson. Use it for interactive classrooms, slides, and explainable simulations. Caveat: classroom generation is slow, so raise pollIntervalMs and mind the 10-minute maxWaitMs cap.

或使用命令行安装(适合开发者)Or use CLI install (for developers)

命令行安装CLI Install

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

THU-MAIC/dsh-openmaic 加入你的 DSH 配置(web profile)即可启用。

READMEREADME

dsh-openmaic

把 OpenMAIC 带进 DeepSeek Harness。Bring OpenMAIC into DeepSeek Harness.

dsh-openmaic is a DeepSeek Harness plugin that registers four tools and a Socratic teaching skill:

  • openmaic_generate: tell your agent "make me a lesson about X", and the plugin submits the requirement to open.maic.chat, waits for the async generation job, and returns a playable classroom link.
  • openmaic_slide: the agent writes one OpenMAIC slide (PPTist-style Slide JSON) and the plugin renders it with OpenMAIC's official renderer (text, shapes, images, tables, charts, formulas, code).
  • openmaic_widget: the agent writes an OpenMAIC-style interactive widget (simulation, game, or code) per the bundled contract; the code streams as it writes, then renders inline as a sandboxed card.
  • openmaic_render: the agent writes an inline HTML teaching fragment (concept card, quiz, walkthrough) and the plugin renders it as a sandboxed card right in the conversation.
  • openmaic-teach skill: turns a session into a Socratic OpenMAIC lesson, teaching by guided questioning and pulling in slides, widgets, and cards as aids.

What it looks like

用户: 帮我做一节量子物理入门课
模型 → 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

Interactive widget:

用户: 做一个抛体运动模拟器
模型 → 按 openmaic-widget 模板写完整 HTML(流式输出)
     → openmaic_widget(html="<!doctype html>…", widgetType="simulation", title="抛体运动")
     ← "Rendered the simulation widget …"
     对话里就地出现一个可交互的 OpenMAIC 模拟器

Install

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

Then restart dsh web and refresh. The plugin ships its compiled lib/, so a git install needs no build step.

Config

dsh-openmaic:
  baseUrl: https://open.maic.chat
  accessCode: ""     # invite code; not enforced online yet, leave empty
  pollIntervalMs: 5000
  maxWaitMs: 600000
Key Default Notes
baseUrl https://open.maic.chat API base. Point at http://localhost:3000 to develop against a local OpenMAIC.
accessCode "" Invite code for open.maic.chat. Not enforced online yet, leave empty; fill it in once enabled.
pollIntervalMs 5000 Poll interval in ms. Generation is slow, so 60000 is friendlier than the default.
maxWaitMs 600000 Cap for one job, 10 minutes.

API flow

  1. If accessCode is set, POST /api/access-code/verify and replay the openmaic_access cookie on later requests.
  2. POST /api/generate-classroom with the requirement, plus only the optional flags you passed. Returns a jobId and pollUrl.
  3. Poll GET {pollUrl} until the job is succeeded or failed, or maxWaitMs runs out.
  4. On success, return {baseUrl}/classroom/{classroomId} (or the server-provided result.url).

Scope

  • openmaic_generate: generate a classroom and return a playable link.
  • openmaic_slide: render one OpenMAIC slide with the official renderer.
  • openmaic_widget: render a simulation / game / code widget the agent writes (a full HTML document). It streams the code while the agent writes it and renders on completion.
  • openmaic_render: render an inline HTML teaching fragment as a sandboxed card.
  • openmaic-teach: Socratic teaching session that uses the tools above as aids.

The slide/widget/render tools do no server-side generation; they render content the agent authors against the OpenMAIC SDK contracts (@openmaic/dsl, @openmaic/generation, @openmaic/renderer).

Roadmap

  • Wire the remaining widget types (diagram, visualization3d, procedural-skill).
  • Action loop back to the model (teaching-agent interactions: highlight/annotate/reveal widget elements).

Development

./scripts/build.sh  # links host deps, bundles src/ to lib/ with tsdown
./scripts/test.sh   # links host deps, runs the vitest suite

The scripts locate the harness checkout from dsh on PATH; set DSH_CHECKOUT to build against a specific checkout.

License

MIT

上一个 Prev dsh-mobile 下一个 Next dsh-focus-chat