前言¶
在 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 已列):
- 必须联网:
deployggb.js与约 30MB 资源从 geogebra.org 拉取;断网首次调用会报deployggb.js 拉取失败。 - 首次调用约 20–40 秒,之后 Edge 磁盘缓存(
%TEMP%\dsh-geogebra-edge-profile)通常 2–4 秒。 - 仅验证 2D 图形视图;3D 无头表现未验证。
.ggb只写不读:不能把已有.ggb读入继续加对象(工具面尚未开放)。- 输出尺寸由
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