dsh-geogebra:让模型用 GeoGebra 命令导出 PNG 与可编辑 .ggb

前言

在 DSH 里做数学、几何类对话时,模型往往只能给出 LaTeX 或文字描述,难以直接交付「能打开、能改参数」的图形。手写脚本调 matplotlib 可以出图,但和 GeoGebra 的构造语义、命令习惯不是同一套;把结果交给老师或学生继续拖动、改参数,也不如 .ggb 顺手。

下面介绍社区插件 dsh-geogebra(维护者 Z-415,GitHub Z-415/dsh-geogebra)。它在 DSH Desktop 里注册工具,让模型提交一条 GeoGebra 命令列表,由插件在无头 Microsoft Edge 中执行 GeoGebra,导出 PNG 或 可用 GeoGebra 打开继续编辑的 .ggb。全程无浏览器窗口、不模拟键鼠;README 写明调用前后前台窗口标题一致(实测通过)。插件归类为「模型推理」,当前 GitHub 星标为 0,版本 0.1.0,许可证 MIT。

这是什么

dsh-geogebra 是 DeepSeek Harness 的宿主插件:依赖 Node ≥ 22、DSH ≥ 0.2.1-rc.1,零 npm 依赖。运行环境为 Windows + Microsoft Edge(无头)+ 可访问 geogebra.org;不需要安装 GeoGebra 桌面版。

导出的是画布本体(无代数区、工具栏、输入栏、虚拟键盘)。命令写错会报错并点名被拒绝的那条,不会静默给出空白图。若 out 指向 .ggb,会得到可编辑构造文件,并自动附带同名 .png。

核心功能

ggb_draw:执行命令并出图

模型调用 ggb_draw,传入 GeoGebra 命令数组和输出路径。命令按顺序执行;被 evalCommand 拒绝时会明确报错。

参数 默认 说明
commands 必填 GeoGebra 命令数组
out 必填 输出绝对路径;README 表格写 PNG 须 .png 结尾,示例亦支持直接写 .ggb(同时生成同名 PNG)
width / height 1000 / 700 画布 CSS 像素,200–4000
dpi 150 输出像素 = width × dpi/96
transparent false 透明背景
ggb 无 out 为 .png 时,额外保存 .ggb 到该路径
axes / grid true 坐标轴 / 网格
timeoutMs 75000 等待上限,最低 30000

返回中会说明 PNG 尺寸与耗时,并在需要时给出 .ggb 路径;还会读回每条命令的值,便于自查数学是否正确。

ggb_eval:只算不出图

ggb_eval 只执行命令并返回每条结果值,不生成图片。画图前想确认「切线是不是 y = -2」时可以先用它。

实现要点(使用者可知的边界)

插件通过无头 Edge + CDP 加载 GeoGebra Web 资源,用 Page.captureScreenshot 裁剪图形区,用 api.getBase64() 落盘合法 .ggb(ZIP,魔数 PK)。同一时刻只跑一个 Edge 实例,并发调用会排队。

安装与启用

安装命令须与仓库 README 一致;装完后完全重启 DSH Desktop(托盘右键退出再开),工具才会注册。

# 方式 A:直接从 GitHub 装(推荐)
dsh plugin --profile desktop add github:Z-415/dsh-geogebra

# 方式 B:用 Release 里的离线包(github.com 访问不稳时走这条)
#   从 https://github.com/Z-415/dsh-geogebra/releases/latest 下载 dsh-geogebra-0.1.0.tgz
dsh plugin --profile desktop add file:<tgz 的绝对路径>

# 方式 C:本地开发,link 到某个目录(改代码不用重装)
dsh plugin --profile desktop add link:<本仓库的绝对路径>   # 例:link:D:\code\dsh-geogebra

卸载:

dsh plugin --profile desktop remove dsh-geogebra

link: 安装不写入 profile 的 cordis.patch.yml;移除 link 插件后删除插件目录即可。回滚后同样需要重启 DSH。

启动自证:加载后会在插件目录写入 .boot-status.json。若重启后模型看不到 ggb_draw,先查看该文件:draw: "ok" 且 eval: "ok" 表示注册成功;draw: "FAILED: ..." 为 schema 或注册失败;文件不存在则插件未加载,需核对 package.json 的 dsh.bundle.patch 与 cordis.patch.yml 包名。

典型用法

在会话中让模型调用(参数路径换成本机绝对路径):

ggb_draw(
  commands: ["f(x)=x^3-3x", "T=Tangent(1,f)", "A=(1,-2)"],
  out:      "C:\\Users\\<你>\\Desktop\\图.ggb"
)

成功时大致会得到:PNG 路径与大小、可选的 .ggb 说明,以及读回值,例如 f(x)=x^3-3x、T: y = -2、A=(1,-2)。.ggb 可在 GeoGebra Classic 中打开继续拖动与改参数。

切线参数顺序须符合 GeoGebra 规则:Tangent(横坐标, 函数);写成 Tangent(f,1) 会被拒绝。

适用场景与注意

适合:需要在 DSH 对话里由模型生成标准 GeoGebra 构造、导出讲义用 PNG(可调 dpi)或交作业/教案用的 .ggb;Windows 桌面 DSH 用户。

限制(README 已列):

  1. 必须联网:deployggb.js 与约 30MB 资源从 geogebra.org 拉取;断网首次调用会报 deployggb.js 拉取失败。
  2. 首次调用约 20–40 秒,之后 Edge 磁盘缓存(%TEMP%\dsh-geogebra-edge-profile)通常 2–4 秒。
  3. 仅验证 2D 图形视图;3D 无头表现未验证。
  4. .ggb 只写不读:不能把已有 .ggb 读入继续加对象(工具面尚未开放)。
  5. 输出尺寸由 width/height/dpi 决定,与图中坐标单位无关。

安全与信任:插件以当前 DSH 进程权限运行,会启动 Edge、访问网络并写入你指定的路径。安装前请阅读 源码仓库 与 MIT 许可证,自行判断是否适合你的环境。

DSH 生态强调「一切皆插件」;SkillHub 目录页 为社区收录站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-geogebra 把「一条 GeoGebra 命令列表」落到真正的 GeoGebra 渲染与标准 .ggb,并控制无窗口、不抢输入。若你在 Windows 上用 DSH 做数学可视化,可按 README 安装、用 .boot-status.json 确认工具注册,再用 ggb_draw / ggb_eval 迭代命令与图形。

  • 目录页:https://www.skillhub.cn/plugins/Z-415/dsh-geogebra
  • GitHub:https://github.com/Z-415/dsh-geogebra
羽毛球分组比赛记分
小程序二维码

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

Xiaoye