Skip to content

About

No description, website, or topics provided.

Resources

Stars

6 stars

Watchers

0 watching

Forks

Latest commit

 

History

1,207 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MathCanvas

当前状态:见 当前状态 —— 它是"现在时"的唯一来源。此处原有的 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 设计。

下一步:补齐剩余验收并跟踪 CI

按四家族执行计划和功能补完记录继续,不能沿用此前“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 -- --offline

test: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=「不再成立」,与"不存在"分开说)。当前边界见 当前状态 / 新一轮进度。

当前待完成:

  1. 用户侧验收:教师/学生走查,包括“三点一面”主操作数、误操作、恢复和未核验提示。这是 V0 出口唯一还缺的东西(机器那半已齐:四家族浏览器正例、反例、关旗反例、六张截图目视核对)。
  2. 管理员验收(已由用户报告通过):2026-10-10 用户完成 MSI 安装→启动→卸载,控制器未旁观;正式新版分发仍须对目标版本/产物单独验收。本轮不发布(工作区比现场验过的 3.3.10 批次多五件事,其中四件用户还没在桌面上走过;建议先走查 → 再定版号 → 再出 bundle)。
  3. 真实 Agent 质量基线:已有 pass@1/pass@3、延迟和少量人工可读性读数,但仍需改用真实作图题题集并取得可复核成本价目表;小样本不等于发布通过。
  4. §3-F 剩下的能力缺口(都是"按需排期",且各有归因):① 数值角还剩环上非第二位角、n ≥ 5 底面的点名角、以及顶点自己成角的 ∠APB(要两个以上未知量);② 用角把侧棱方向钉死(∠A′AB)早已裁决不做,现由一条护栏判据挡住;③ 棱柱顶环上的角数学上等于底环上的角,但要先有"环外环"的点名映射;④ 空间线重合的判据与求解已设计,卡在没有入口(见上文 N3 那条),故暂不实施。
  5. 当前只做需作图的高中数学题(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。

完整路线见:

About

No description, website, or topics provided.

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages