dsh-geogebra-assistant:在 DSH 主对话里用自然语言驱动 GeoGebra 侧栏画板

前言

在 DeepSeek Harness(dsh)里做数学相关对话时,模型往往只能输出 GeoGebra 命令文本,还要你复制到桌面版或网页版画板上执行。独立项目 Geogebra-WebChat 把聊天和画板放在同一页,但自带约 50MB 离线资源,且面板内再跑一套 LLM 循环,和 dsh 的「主对话 + 插件」形态重复。

dsh-geogebra-assistant(维护者 liangdabiao)是 dsh 的客户端类插件:AI 留在主对话,侧栏内嵌 GeoGebra(官方 CDN),模型通过 geogebra_draw 把命令经事件总线推到画板自动渲染。插件包约 10KB,命令规范化、失败回滚、导出与读图能力见项目 README。社区目录:skillhub 插件页;源码:GitHub(MIT,截至资料记录 GitHub 星标 3)。Skillhub 为社区目录,与 DeepSeek / 幻方无官方从属关系。

这是什么

一句话:在对话里说需求(或发题目图),模型调用工具,侧栏「数学画板」自动出图;面板不提供对话输入框,也不存对话历史——和原版「左画板右聊天」不同,dsh 版复用主对话,面板只做画布。

相对 Geogebra-WebChat 的主要差异(据 README):命令推送由 dsh 宿主完成;GeoGebra 从 geogebra.org CDN 加载;体量适合作为 dsh 插件分发。

核心功能

AI 自动作图

  1. 在主对话用自然语言描述图形,例如:「画一个直角三角形,标出三个角度」。
  2. 模型生成 GeoGebra 5 命令并调用 geogebra_draw(一行一条命令,可带 title、reset 重画时清空旧图)。
  3. 命令经宿主内存事件总线与 GET /geogebra-assistant/api/events(SSE)推到侧栏面板;面板未打开时,打开后会补画最近一张。
  4. 面板可查看本次命令,改完后点「在画板上执行」;图形可拖动、缩放。

配套 geogebra-commands 技能教模型写正确命令(铁律、速查、读图规则、常见错误对照表)。

命令规范化

工具 geogebra_normalize(geogebra_draw 内部也会处理):中文别名(如 圆(A,3)→Circle(A,3))、LaTeX(如 \frac{\pi}{4}→(pi)/4)、全角标点(,→,)。手动模式粘贴命令时同样会自动纠正。

拍照 / 截图读题

利用 dsh 主对话附件:把题目图拖进对话(或点附件),说明「照这个图作出来」。模型读图后会复述条件与标注;看不清会说明而不编造(技能里有读图规则),再调 geogebra_draw 出图。

导出

面板命令框下方四个按钮:

格式 说明
.ggb 几何构造,可用 GeoGebra 再打开
PNG 2 倍分辨率
SVG 矢量
TikZ LaTeX 源码;优先引擎原生 PGF,失败用对象快照兜底

失败自动回滚

一批命令中任意一条真失败时,默认用执行前 getXML 快照 setXML 还原,避免半成品叠在旧图上。面板提供「保留成功的 N 条」;开关可关。若 GeoGebra 版本无 setXML,则只报失败、不动画板。0.3.2 起区分样式类命令(SetColor、SetPerspective 等):evalCommand 可能返回 false 但实际已生效,不再误判触发整批回滚。

数学画板面板

内嵌 GeoGebra(CDN 加载);支持手动粘命令执行、清空、规范化预览、失败命令逐条报告;顶部显示「AI 通道」连接状态。SSE 被代理挡住时,可退化为 GET /api/pending?since=N 约 3 秒轮询。

安装与启用

当前版本(package.json):0.3.2。引擎要求 Node ^22.19.0 || >=24.0.0,dsh >=0.2.1-rc.2 <0.3.0。dist/client.js 已入库,宿主通过 exports["./client"] 加载;缺此构建产物插件会激活失败、侧栏不出现。

从 GitHub 安装(README 原文):

# 从 GitHub 直接装(dist/client.js 已入库,装完即可用)
dsh plugin --profile web add github:liangdabiao/dsh-geogebra-assistant

本地开发可把路径换成你的仓库目录(示例路径按本机修改):

dsh plugin --profile web add D:/path/to/dsh-geogebra-assistant

修改 Host 侧(工具/路由)后,需在 dsh 设置里关掉再打开该插件条目,或重启 dsh。改过浏览器侧源码后执行 npm run build,已打开页面可通过 HMR 拿到新 dist/client.js。

CDN 与配置

画板依赖能访问 geogebra.org。网络受限时,可仅用 geogebra_normalize 生成命令,复制到本地 GeoGebra。

插件 Configuration:

  • cdnBase:deployggb.js 地址
  • codebase:HTML5 codebase;留空则使用 deployggb.js 自带默认值(仅自建镜像时填写)

典型用法

AI 作图(主路径)

  1. 对话中说:「画一个直角三角形,标出三个角度」。
  2. 等待模型调用 geogebra_draw。
  3. 打开侧栏「数学画板」,应已自动出图(若刚才未开面板,打开时会补最近一张)。
  4. 需要时导出 .ggb / PNG / SVG / TikZ,或在面板里改命令后点「在画板上执行」。

手动模式

  1. 复制 GeoGebra 命令,粘到面板输入框。
  2. 点「在画板上执行」;中文别名与 LaTeX 会自动纠正。

实现要点(便于排查)

  • 作图事件总线(lib/bus.js):保留最近 20 条事件,序号递增;后开面板可补收。
  • 推送:SSE 首连只补最近一条,避免重放整段历史。
  • 执行:收到 {type:'draw', commands, reset, title} 后逐条 evalCommand;失败逐条列出。

维护者在仓库用 npm install && npm test && npm run selftest && npm run build 自检(含 22 个测试与零网络 selftest)。

适用场景与注意

适合:在 dsh Web 配置下做几何/函数可视化、讲题出图、需要 TikZ 或矢量导出、希望命令经模型规范化后直达画板的开发者或教研场景。

注意:

  1. 插件以当前 dsh 进程权限运行;安装前请阅读源码与 MIT 许可证,确认与自用环境一致。
  2. 需要稳定访问 GeoGebra CDN;离线环境请降级为命令生成 + 本地 GeoGebra。
  3. 面板不是第二个聊天窗口;所有意图应在主对话表达。
  4. dsh 与插件版本需满足 package.json 的 engines 约束。

GeoGebra 版权归 GeoGebra GmbH;命令规范化实现参考 Geogebra-WebChat 的 normalize.ts。

结尾

dsh-geogebra-assistant 把「说一句话 / 发一张题图」和「侧栏实时画板」接到同一条 dsh 对话链上,用轻量 CDN 方案替代大体积内置资源,并补上回滚、导出与读图。若你已在用 dsh 做数学类智能体,可按上文命令安装 web 配置条目,在主对话试一句作图需求并打开侧栏面板核对渲染与导出。

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

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

小夜