当前状态:见 当前状态 —— 它是"现在时"的唯一来源。此处原有的 2026-10-16 快照已移除:同一段文本曾被复制进 13 个文件并开始漂移,状态只维护一份。
MathCanvas 是面向数学学习与工程绘图的交互式工作台。你可以在平面画布上绘制函数和几何图形,在立体画布中构造、观察和测量三维对象,也可以制作工程图纸。项目仍在持续开发;浏览器版本可以本地运行,部分 Agent 和桌面功能仍处于验证阶段。
在项目根目录安装依赖并启动浏览器工作台:
npm install
npm run dev打开终端中 Vite 输出的本地地址。Windows PowerShell 中如无法直接运行 npm,可改用 npm.cmd install 和 npm.cmd run dev。浏览器使用不要求配置模型服务。
- 平面几何:创建点、线、圆、圆锥曲线和函数图像;拖动图元或控制点,查看交点、轨迹和属性,使用公式框编辑函数并创建导函数、切线及积分区域。
- 立体几何:画布按步骤放点、连线、建面;「常用立体」可预览正方体、长方体、三/四棱柱、棱锥与球体,确认后落盘。棱柱/模板实体可在属性栏单顶点数值编辑,受影响的面自动三角化;有效体积数字在图面直接显示,旋转后点名/测量标签及时对齐。球体(v3.1.0 起)可创建、可编辑球心/半径、可被平面切出精确圆(相切时给单点、相离给空集),工程制图里四个视图都是同样大的圆;球不参与布尔运算(明确拒绝并留诊断)。空间线/棱可设教学虚线或点线;轨道、截面、交面、测量和 Alt 子对象选择仍可用。详见 功能目录。
- 工程制图:从几何模型组织视图与图纸,使用 CAD 2D 绘图、标注及导出功能。
- Agent 工作区:输入自然语言请求,查看计划与隔离草稿,由你确认后才写入当前文档。没有可用模型服务时,仅支持本地确定性规划器能识别的有限指令;不应把它当作已完成的通用自然语言绘图助手。
左侧导航用于切换画布、Agent 和设置。进入画布后,在顶部切换平面几何、立体几何和工程制图。常用绘图工具位于工作区切换按钮旁,更多命令从「构造」「更多工具」打开。打开、项目包和导出集中在「文件」菜单,按 Ctrl+K 可以搜索工具。Agent 首页的例题可填入输入框,编辑后再发送。模型连接状态显示在设置首页,能力详情和高级设置可按需展开。选中图元后在右侧属性面板调整几何参数或样式。功能按钮会在画布左下方显示下一步操作提示。
| 操作 | 用法 |
|---|---|
| 选择与编辑 | 点击图元选中,拖动图元或控制点;Shift 可多选。 |
| 移动画布 | 鼠标中键拖动,或按住 Space 再用左键拖动。 |
| 缩放视图 | 滚轮以指针为中心缩放,也可使用画布右下角的视图按钮。 |
| 撤销与重做 | 使用界面按钮或 Ctrl+Z / Ctrl+Y。 |
| 三维子对象 | 按住 Alt 点击实体的棱或面,按需结合 Shift 多选。 |
| 立体画布直接作图 | 立体几何中选「绘制空间点/线段/直线/射线/平面/面」,按画布提示逐次点击;落点平面可切换 XY/XZ/YZ,面至少三点后按 Enter 完成,Esc 取消。 |
| 常用立体与教学线型 | 立体画布「常用立体」调整参数并看「未保存预览」,确认后一步撤销;选中空间线/棱,在右侧「外观样式 → 教学线型」选实线/虚线/点线。「隐藏边」仅改变视图。 |
| 导出 HTML | 导出菜单选「导出 HTML」得到一个单文件、零外部引用的快照:内嵌矢量图、写清"这次导出漏了什么"、并内嵌 .mgeo 使其兼作可再导入的存档(拖回应用即原样打开)。平面几何与工程制图可用;立体几何会明确拒绝(3D 画布是 WebGL,没有矢量产出器)。 |
| 取消当前操作 | 按 Esc;具体构造步骤以画布提示为准。 |
在工作区标签栏使用「保存 .mgeo」下载当前几何文档,使用「打开 .mgeo」从本地文件恢复。浏览器还会保存本地草稿,便于刷新后继续编辑;这不是云端备份,目前没有服务端上传与跨设备同步接口。桌面端另有项目包等功能,详情见 桌面端说明。
更多图元、测量、导出和操作细节见 功能目录。
项目使用 npm workspaces;浏览器工作台由 React、TypeScript、Vite 构建,平面场景使用 SVG,三维场景使用 Three.js。桌面应用以 Tauri 承载同一份前端,不另造一套几何编辑器。
完整的分层设计、技术栈、关键数据流与代码审查发现见 架构与技术审查。
| 目录 | 职责 |
|---|---|
apps/web |
浏览器界面、画布、属性面板及 Agent 交互。 |
apps/desktop |
Tauri 桌面外壳、系统能力与本地存储。 |
packages/dsl |
版本化几何文档、图元类型、校验及 .mgeo 编解码。 |
packages/geometry-kernel |
数值几何、约束、交点、曲线与测量计算。 |
packages/scene-graph |
操作、依赖传播、重算、事务与文档状态。 |
packages/agent-core |
能力目录、规划与工具契约、草稿、验收和提交门禁的纯逻辑。 |
传统编辑遵循“界面操作 → 几何/场景计算 → 文档事务 → 画布重绘”的路径。Agent 路径会先观察场景、生成计划并编译为隔离草稿;只有草稿通过相应校验且用户明确确认后,宿主才会提交到文档。模型不能直接绕过确认修改现场。关于设计取舍,参见 增量几何与多会话 Agent 设计 和 Agent tool-loop 设计。
按四家族执行计划和功能补完记录继续,不能沿用此前“Task 1–19 全部完成”的判断。
2026-10-20 的位置(细节与读数见 当前状态 顶部的「现状总览」):v4.0.1 已发布(在 v4.0 之上补的是能力,不改契约);三十轮维护批次把题面读入与核验判据大幅补齐(方程、标量尺寸、三角形的心、弦心距与弧长、派生球与内切球、中位线等,每批都有"读得到 / 说得出"的用例与门禁读数)。
仍然缺的、且卡在人或钱上的:① 真实 provider 复跑(Task 20 与 30 题)—— 本机没有 API key,冻结授权 36 次请求 / $12 未动用;② MSI 的"装 → 启动 → 卸载" —— per-machine,需管理员,本机 Error 1925;③ Task 21 的干净机器 / 断网发行 / 教师学生走查 —— 需要干净机器与真人。这三块用户已在 2026-10-20 明确「先不做」,因此冻结在此,不自行推进。
- 已具备:平面和立体几何编辑(含球体)、函数分析、工程制图、本地文档保存/恢复,以及“计划 → 草稿 → 人工确认”的 Agent 基础链路。导出支持
.mgeo/ SVG / CSV / PNG / 工程图 SVG·DXF·PDF,以及 HTML 自包含快照(v3.2.0,兼作可再导入存档)。具体功能范围以 功能目录 为准。 - 高中几何交互:六类教学代表题已用 7 条浏览器用例逐题验收;创建状态机 / 拾取边界 / 教学线型 / 单顶点编辑 / 体积画布数字 / 相机标签同步都已交付,功能分支已合并进
main,并随 v3.1.0 / v3.2.0 / v4.0 打包发布。NSIS 的"装 → 启动 → 卸载"已在 2026-10-20 用 4.0.0 安装包重新实测走完(当前用户安装、卸载退出码 0、目录与卸载注册项都清掉);MSI 是 per-machine 的:本机非管理员,msiexec /i以Error 1925(权限不足)失败 —— 这不是安装包坏了:用管理安装解开 MSI,里面的mathcanvas-desktop.exe与发布资产同尺寸,且在断网环境里启动成功。所以 MSI 的"装 → 启动 → 卸载"仍未验;2026-10-10 那条"用户报告通过"只作为历史记录保留。证据见 安装与断网证据。仍需用户侧教师/学生走查("三点一面"目标 ≤8 次主操作)。可复核读数与未完成清单见 当前状态;旧专题过程见 高中几何进度。 - Agent 已有阶段成果:只读场景工具、类型化工具调用、确定性的局部验收与发布门禁已有实现和测试;离线评估可用。但工具能力和真实模型绘图质量是两回事,不能把离线得分当成真实模型准确率。
- 仍有限制:增量草稿工具尚未作为模型可用工具开放;真实场景截图/相机证据与完整视觉检查尚未接通;代表任务的真实 provider pass@1、pass@3 与延迟已有小样本读数(2026-10-05 / 10-06,见 当前状态 §一),但成本仍没有价目表,这些读数也还不足以形成放行依据。因此类型化工具循环尚未满足默认启用的发布门禁。当前门禁及缺口见 Agent 发布前门禁,过程见 Agent tool-loop 进度记录。
- 其他已知边界:没有云端同步;球体能力已在 v3.1.0 整体交付(画布创建、解析截面、工程投影、Agent 动作都在),但球不参与布尔运算(明确拒绝并留诊断);部分高级几何输入、精确曲面互交、DWG/B-rep 导入和自动尺寸布局仍未提供。用户侧走查与正式发布余项见 当前状态 §四。
最新版本标签为 v4.2.0(发布说明)。这一版改进属性栏、右键菜单、平面落点和立体动点拖动。Windows x64 安装包和免安装版见 GitHub Release,历史记录见 CHANGELOG。
npm run typecheck
npm run lint
npm test
npm run test:docs
npm run build
npm run test:e2e
npm run test:rust
npm run eval:agent
npm run eval:reliability -- --offline
npm run eval:explicit-solid -- --offlinetest:docs 运行文档与版本一致性门禁(8 个测试文件 / 22 项检查);test:e2e 运行 Playwright 浏览器测试;test:rust 需要桌面端 Rust 工具链。eval:agent、eval:reliability -- --offline(29 题可靠性冒烟与独立 oracle)与 eval:explicit-solid -- --offline(54 题明确球体/棱柱离线验收)均为离线确定性评估,不代表真实模型通过率。按改动范围选择相关检查;提交前至少运行对应的类型检查、测试与构建。最新读数请以当次命令结果为准,不沿用历史文档中的用例总数。CI 配置见 .github/workflows/ci.yml。
已交付并推送: 欠定立体示意图的题设逐条核验、未核验 fail-closed 提交与示意图/普遍证明边界(b1ee3d3);N1「统一数学状态 IR + 自由度诊断」与 N2「解析见证构造 + 有界见证搜索 + 默认关闭的接线」都在默认关闭的 flag 之后(acd3bd5..f997b3f / c2314c9..9c5ae2f),默认行为未变。当前读数以 当前状态 §一为准;下面几段按时间累积,越靠后越新。
2026-10-10 增量(本次会话逐块收口):① 立体图形覆盖扩宽计划的 S1–S6 全部收口(S3.4 解除、菱形底面、斜棱柱、S6 入口语法);② 形式证明出口从一类逐步扩到四类受限目标(+判定定理、+切线/导数、+线在平面内),加了前提桥(每条前提指得出出处,凭空编就拒绝)、读目标(题面"求证"句 → 结构化目标)、系统按类给的证明正文,并接上产品调用点(proofExport 默认关);③ 桌面有了一条窄的证明命令(形状检查在起进程之前、工具链靠环境变量配置而非搜 PATH、Rust 不判定);④ mathlib revision 钉住(lockfile 提交、实测仍 formally_proved);⑤ 文件卫生判据(BOM / UTF-8 / 页头日期)+ README 导航判据。
2026-10-10 增量(后半程,同一会话):⑥ 用户自测的三个问题全部修掉 —— P0-A 切线题的"源曲线引用"两种写法都收(真实 provider 现场报的那句 expected a string)、P1-B 平面圆锥曲线题不再被切进立体几何工作区(dynamic.* 不再算作"要立体几何")、P2-C 画布顶点标签跟随 vertexNames(golden 有据重抓:逐字段证明差异恰为 20 个 label);⑦ §3-F 底面点名数值角:阶段 A(∠ABC=60°,三角形与四边形底面)→ 阶段 B 的 B1(∠PBA=60° 这类含顶点的角,按那个角有界求根定高),读/造/量三处落地,失败分四态如实报(找到根 / 冗余成立 / 矛盾 / 范围内无解),并有浏览器证据(两条 e2e,各自用"只回退内核源码"的对照实验证明判据会咬人);⑧ 空间线重合(coincident)的判据与求解设计已写,并查实今天没有任何产品入口能声明这条约束 ⇒ 按推荐记为已设计、暂不实施;⑨ 每个区块都逐提交按 API 核对 CI(#251…#276,含三条被后续提交取代的 cancelled 与它们的覆盖关系)。
仍未做:用户侧验收(教师/学生走查)、真实 provider 的作图题质量与成本基线 —— 这两项都等人。
本轮增量(2026-10-06):N1 补齐原题“求证”目标和显式自由点的来源区间,修正设计词表与实际证据类型不一致的问题;其余实验能力仍按各自开关与发布门禁管理。
本轮增量(2026-10-06,N2 实验入口):用户可在「设置 → 高级 → 实验性功能」显式开启或关闭有界见证搜索,刷新后保持;不启用其它实验开关,不跳过题设核验与人工确认。离线题集覆盖仍有限,不能将入口等同于通用求解器。
N2 窄题型扩展(2026-10-06 当时边界,后续扩宽见下文):明确点名三角底面直角时,搜索器也认非环首顶点;候选继续由原题设和内核复核。四边形非环首直角、带撇点名的棱柱等仍不支持,不能把这一新增用例外推成通用求解。
N3 安全补丁(2026-10-06):实验性约束拖动开启时,若空间线重合约束缺少 3D 判据,相关定义点的拖动会明确拒绝,不再静默提交未经核验的坐标(还没实现该约束的空间求解)。2026-10-10 补:判据与求解的设计已写(阶段 A 判据:残差 = 方向项与位置项取大、无量纲、与 parallel 同尺;阶段 B 求解:照二维那条现成规则 —— 方向对齐 + 中点投影 + 保长)。同一次探针查实一件改变优先级的事:今天没有任何产品入口能声明这条约束 —— 题面解析不产出它、Agent 动作表里没有约束动作、界面没有约束编辑器,而能力表却把 constraint-authoring 记为 available。所以判据与求解做出来也没有用户路径,按推荐记为"已设计、暂不实施"(入口三选一 = 题面 / Agent 动作 / 界面,各自缺需求证据)。证据见 当前状态 顶部同名块。
V0 状态(2026-10-06):原文题设核验已从"只有多面体"扩到四类图形,四家族(V0a–V0d)的测试面均已齐 —— 立体自由顶点(实验开关后)、平面三角、圆锥曲线(椭圆 / 双曲线 / 抛物线三类,判据既比数值又比轴)、函数图像与切线。每块都有单元、浏览器证据(读草稿里真实落盘的坐标/参数独立回代,不读面板结论)、截图目检与变异验证;函数图像这一族还新增了 function.create_graph(此前 Agent 只能分析已有曲线,不能创建它)。但这不是"四家族交付":计划的 V0 出口 明写"没有 e2e 与人看图确认时保持未勾" —— 机器证据已给全,人看图(教师/学生走查)仍是 V0 出口缺口;MSI 是另一项已由用户报告通过的验收(控制器未旁观);自动 Lean 仍不受覆盖。两条原来"已查实但未修"的缺陷都已结清:画布顶点标签与核验器用的 vertexNames 错位已于 2026-10-10 修掉(标签跟随 vertexNames,关旗 golden 有据重抓);"球存在但主张不成立"的状态词表同日裁决并落地(新增第五个词 stale=「不再成立」,与"不存在"分开说)。仍如实留着的边界:模板实体仍不进入原文核验。详情见 当前状态 / 新一轮进度。
立体图形覆盖扩宽(2026-10-07 产品证据;2026-10-10 更新):按 实施计划 分块推进:S1 点名语法(含 A′′)与 S2 SolidShapeSpec 已落地;S3 直棱柱在内核/搜索层支持 3–6 边;S4 棱台/圆台、S5 外接/内切球已有分块界面及浏览器证据,S6 部分入口句式已接入实验路径。仍不能宣称广泛可用:S3.4 已于 2026-10-10 解除(题面驱动的棱柱能走到“确认改动”面板并提交,浏览器正例通过;根因是关系抽取的“点名块”字母表不含 ′,AA′ 被读成退化的 A–A 线段),菱形底面已做(2026-10-10)、斜棱柱已做(2026-10-10,代表斜向 + 假设;"用角条件钉死方向"明确不做),S6 入口语法已收口(2026-10-10)。S3 的斜棱柱 / 菱形底面与 S6 入口语法均已收口(2026-10-10)。画布顶点标签错位已于 2026-10-10 修掉(标签跟随 vertexNames,关旗 golden 有据重抓);球"存在但主张不成立"的状态词表同日裁决并落地(新增第五个词 stale=「不再成立」,与"不存在"分开说)。当前边界见 当前状态 / 新一轮进度。
当前待完成:
- 用户侧验收:教师/学生走查,包括“三点一面”主操作数、误操作、恢复和未核验提示。这是 V0 出口唯一还缺的东西(机器那半已齐:四家族浏览器正例、反例、关旗反例、六张截图目视核对)。
- 管理员验收(已由用户报告通过):2026-10-10 用户完成 MSI 安装→启动→卸载,控制器未旁观;正式新版分发仍须对目标版本/产物单独验收。本轮不发布(工作区比现场验过的 3.3.10 批次多五件事,其中四件用户还没在桌面上走过;建议先走查 → 再定版号 → 再出 bundle)。
- 真实 Agent 质量基线:已有 pass@1/pass@3、延迟和少量人工可读性读数,但仍需改用真实作图题题集并取得可复核成本价目表;小样本不等于发布通过。
- §3-F 剩下的能力缺口(都是"按需排期",且各有归因):① 数值角还剩环上非第二位角、n ≥ 5 底面的点名角、以及顶点自己成角的
∠APB(要两个以上未知量);② 用角把侧棱方向钉死(∠A′AB)早已裁决不做,现由一条护栏判据挡住;③ 棱柱顶环上的角数学上等于底环上的角,但要先有"环外环"的点名映射;④ 空间线重合的判据与求解已设计,卡在没有入口(见上文 N3 那条),故暂不实施。 - 当前只做需作图的高中数学题(V0–V3):按具体题意判断是否要画图,重点是三角/三角函数图像、圆锥曲线、导数函数图像/切线、立体几何等;纯集合运算、纯数列求项、纯恒等式不再是本轮覆盖目标,题目明确要画图时仍可入选。此前全科来源索引 43 上层/141 一级项仅供发现候选,不是本轮发布分母。目前只审 4 个“可能需图”子型、3 个默认非图子型,其余 134 未审;四类各 3 条原创、内部文字/坐标示意候选,不是程序已画出核验的图;原文核验的触发点已按 V0a–V0d 逐块补齐,现在由
planHasVerifiableFigure一处判断覆盖多面体 / 平面点 / 圆锥曲线 / 函数曲线与切线(编译期与草稿层共用,不再各写一份);V0a 的显式坐标写法已核验(坐标段只收底面顶点)、浏览器错坐标反例已补,“在上方”仍拒绝而非标未核验放行。欠定题允许选一个符合题设的自由点示意图;旧 N2/N3 默认实验、N4 provider 小样本/无成本的限制依旧。N5 那半已于 2026-10-10 更新:形式证明出口现在覆盖四个目标类(perpendicular性质定理 /linePlanePerpendicular判定定理 /tangentSlope切线·导数 /lineInPlane线在平面内,都在本机真跑过、都只依赖三个白名单公理);"曲线性质"那一族已查实做不到(mathlib 没有圆锥曲线的形式化,要做先得自己形式化),并且产品侧已经有一条会去调 Lean 的路径(draftStore.stage的第八个参数proofExport,默认关、关着时草稿预览里连字段都没有);桌面命令会把执行的那个二进制的版本带回来,mathlib的 revision 也已 pin(c20717ea…+ lockfile 提交)。§3-D 已于同日把入口与呈现补上:设置 → 高级 → 实验性功能 → 形式证明导出(默认关、只写自己那个键),确认面板新增「形式证明」那一段(结局 / 正文来源 / 系统替你做的选择 + "原题其余题设没有进命题"那句边界),并顺带修掉一处让开关事实上不生效的断线(committerAdapter曾把第八个参数写成undefined)。但仍不能宣称"自动证明可用":真桌面 UI 自动往返仍需人操作、原题其余题设没有全部进命题(实例图与辅助引理不得冒充整题证明)、打包发行怎么带 Lean + 7.5 GB mathlib 未决。每区块验证、更新进度文档并推送 GitHub。
完整路线见:
- Agent 发布门禁
- 现行作图题设计修订
- 立体图形覆盖扩宽设计(形状数据化;S1–S6 已按计划实施并收口,2026-10-10)
- 现行作图题实施计划(V0–V3)
- 下一步计划(人工自测跟进 + 未完成项 + 发布准备)
- 平面数值角条件设计(阶段 A:
∠ABC=60°,已实施) - 环外点参与的平面数值角设计(阶段 B / B1:
∠PBA=60°,已实施) - 空间线重合的判据与求解设计(
coincident;已设计、因无入口暂不实施) - 题面规范化通道设计(读不懂的从句交给模型换说法,四道阀)
- 人工验收走查手册(逐步操作)
- 旧全课程设计(已被作图范围替代)
- 旧全课程计划(历史范围)
- 下一轮任务进度与历史审查问题台账
- 旧 N1–N6 设计(历史范围)
- 旧 N1–N6 实施计划(历史范围)
- GitHub 项目调研
- 项目进度归档