Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 22 additions & 20 deletions DEVELOPMENT.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# PlotKityCat Development

这份文档负责回答三件事:

- 如何启动本地开发
- 如何准备 runtime 与构建发布包
- 仓库里哪些东西应该进 Git,哪些不应该

## 环境

- Windows
Expand All @@ -23,26 +29,19 @@ wails dev

## 版本

应用版本唯一来源:

- `version.json`

相关脚本都会默认读取这里的 `appVersion`。
应用版本唯一来源是 `version.json` 的 `appVersion`。构建与发布脚本默认都读取这里的值。

## Runtime

项目运行依赖便携 Python runtime:
项目运行依赖便携 Python runtime。约定如下

- runtime 占位目录:`resources/runtime/`
- 发布输入:本地放置的 `resources/runtime/runtime.zip`
- 占位目录:`resources/runtime/`
- 本地发布输入:`resources/runtime/runtime.7z`
- 本地展开目录:`runtime/`
- 临时展开目录:`runtime.tmp/`
- 元数据文件:`runtime.version.json`

约定:

- `resources/runtime/runtime.zip` 默认不提交到 Git
- 该文件应通过 GitHub Release asset 或其他制品存储分发
- `resources/runtime/runtime.7z` 默认不提交到 Git
- runtime 应通过 GitHub Release asset 或其他制品存储分发
- 仓库仅跟踪 runtime 脚本、元数据和第三方补丁源码

准备 runtime 压缩包:
Expand All @@ -51,33 +50,33 @@ wails dev
.\tools\prepare-runtime.ps1 -SourceRuntimeDir <你的 runtime 目录>
```

当前默认应保留的核心库
默认核心库

- Python 标准库
- numpy
- matplotlib
- scipy
- PyQt5

`runtime.version.json` 应同步填写实际 Python 与核心库版本,不要长期保留 `pending`。
`runtime.version.json` 必须填写真实版本,不要长期保留 `pending`。

从零重建 runtime 的完整说明见 [RUNTIME_BUILD.md](D:/projects/plotkitycat/RUNTIME_BUILD.md)。

## 打包入口
## 构建与打包

构建 exe:

```powershell
.\tools\build-versioned-app.ps1
```

生成发布 zip
生成完整发布包

```powershell
.\tools\package-release.ps1
```

生成自动更新发布物
生成在线更新产物

```powershell
.\tools\prepare-update-release.ps1
Expand All @@ -94,7 +93,7 @@ wails dev
## 发布前检查

- 确认 `version.json` 版本正确
- 确认 `resources/runtime/runtime.zip` 存在
- 确认 `resources/runtime/runtime.7z` 存在
- 确认 `runtime.version.json` 已填写真实版本
- 确认 `Scripts/` 中示例内容就是准备随包分发的内容
- 确认 `config/` 没有本机账号、缓存、更新状态等脏数据
Expand All @@ -107,10 +106,11 @@ wails dev
- `frontend/`
- `tools/`
- `build/windows/`
- `resources/` 下需要随项目维护的静态资源
- `resources/` 下需要随项目维护的静态资源与占位文件
- `resources/runtime/.gitkeep`
- `README.md`
- `DEVELOPMENT.md`
- `UPDATE_RELEASE.md`
- `RUNTIME_BUILD.md`
- `version.json`
- `runtime.version.json`
Expand All @@ -125,3 +125,5 @@ wails dev
- `build/release/`
- `build/update/`
- `packaging/`

发布服务器更新步骤见 [UPDATE_RELEASE.md](D:/projects/plotkitycat/UPDATE_RELEASE.md)。
95 changes: 23 additions & 72 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,128 +20,79 @@

## 简介

请允许我为你介绍这只可爱的,小猫!
PlotKityCat 是一个开源的数学可视化工具,支持运行 Matplotlib 代码并生成交互式图形。集成 AI 功能,支持通过自然语言提示词生成绘图代码。软件采用便携式设计,支持优盘即插即用,方便在教室等不同环境下快速部署与演示。
PlotKityCat 是一个面向数学教学场景的 AI-native 可视化工具。它基于 Matplotlib 执行绘图代码,支持自然语言生成可视化,并以便携式 runtime 支撑课堂演示与离线分发。

## 视频介绍

https://github.com/user-attachments/assets/df8167a7-d1e9-4f6a-a42d-de15596a4456

## 开发初衷
## 设计原则

PlotKityCat 源于对 GGBPuppy 开发过程中 GGB Web API 封闭性的反思。我们转向 Matplotlib,为初高中数学可视化提供 AI-native 方案。

> 那天,我在研究GGB的webapi,AI总是写下错误的GGB代码,让我的另外一个项目GGBpuppy很受挫折。我突然发现一个GGB的api接口不完整,于是以开发者的口吻发了一封信给他们团队,结果收到了他们希望我付钱的要求......好吧,那天晚上关掉它肮脏线条和色彩的窗口,我梦见了Jobs.....

1. **开源**:好的工具应该像太阳一样,太阳是闭源的吗?
2. **美**:拒绝 GGB 沉闷的色彩与线条。
3. **AI 原生**:通过 AI 直接生成可视化代码,无需老师学习编程。

PlotKityCat 支持优盘便携,旨在让老师将其带入教室、讲台及学生手中。
1. **开源**:以可审查、可扩展的技术栈承载教学工具。
2. **美感**:避免传统数学软件沉闷的视觉体验。
3. **AI 原生**:让老师通过自然语言驱动可视化生成,而不是先学编程。

## 功能特性

- **AI 绘图**:通过自然语言描述数学概念,由 AI 生成 Matplotlib 绘图代码。支持设计和生成代码双流程。

- **AI 绘图**:通过自然语言描述数学概念,由 AI 生成 Matplotlib 绘图代码。
- **笔记系统**:集成 Markdown 与 LaTeX 公式渲染,绑定代码,看到可视化的结果,更看到可视化的设计。
- **便携运行**:内置 Python 运行时,支持U盘即插即用,让小猫真的可以在课堂中一展身手
- **.pck导入导出** : 支持导出和导入场景包,希望用户之间可以交流自己的可视化成果
- **便携运行**:依赖便携 Python runtime,适合 U 盘和教室环境分发
- **场景包导入导出**:支持 `.pck` 场景包的交换与复用

## 技术栈

- **前端**: Vue 3, TypeScript, Vite
- **后端**: Go, Wails Framework
- **运行时**: WinPython (Matplotlib, NumPy, PyQt5)
- **运行时**: WinPython (NumPy, Matplotlib, SciPy, PyQt5)
- **AI 接口**: OpenAI API / 自定义兼容接口

## 快速开始

1. **下载**:获取便携版压缩包。
2. **配置**:设置 AI 服务商 API Key。
3. **运行**:新建场景,笔记区输入描述,右键点击可视化或可视化设计运行。
1. 下载便携版压缩包。
2. 配置 AI 服务商 API Key。
3. 启动应用并新建场景。
4. 在笔记区输入描述后运行可视化或可视化设计。

## 开发者指南
## 开发入口

### 环境要求
- **Windows**
- **Go**: 1.21+
- **Node.js**: 18+
- **Wails**: v2.x

### 开发启动
开发启动:

```powershell
cd frontend
npm install
cd ..
wails dev
```

### 版本来源

应用版本唯一来源:

- `version.json`

### Runtime

项目运行依赖便携 Python runtime:

- runtime 占位目录:`resources/runtime/`
- 发布输入:本地放置的 `resources/runtime/runtime.zip`
- 本地展开目录:`runtime/`
- 临时展开目录:`runtime.tmp/`
- 元数据文件:`runtime.version.json`

注意:

- `resources/runtime/runtime.zip` 默认不提交到 Git
- 这个文件应作为 release asset 或外部制品分发

准备 runtime 压缩包:
runtime 打包入口:

```powershell
.\tools\prepare-runtime.ps1 -SourceRuntimeDir <你的 runtime 目录>
```

当前默认核心库:

- Python 标准库
- numpy
- matplotlib
- scipy
- PyQt5

如何从零重建 runtime,见 [RUNTIME_BUILD.md](D:/projects/plotkitycat/RUNTIME_BUILD.md)。

### 打包入口

构建 exe:
应用打包入口:

```powershell
.\tools\build-versioned-app.ps1
```

生成发布 zip:

```powershell
.\tools\package-release.ps1
```

生成自动更新发布物:

```powershell
.\tools\prepare-update-release.ps1
```

更详细的开发与发布说明见 [DEVELOPMENT.md](D:/projects/PlotKityCat/DEVELOPMENT.md)。
## 文档索引

- 开发与构建总说明: [DEVELOPMENT.md](D:/projects/plotkitycat/DEVELOPMENT.md)
- runtime 分发与重建: [RUNTIME_BUILD.md](D:/projects/plotkitycat/RUNTIME_BUILD.md)
- 在线更新与发布: [UPDATE_RELEASE.md](D:/projects/plotkitycat/UPDATE_RELEASE.md)

## 致谢

- [Matplotlib](https://matplotlib.org/): 本项目核心渲染引擎。
- [ManimCat](https://github.com/Wing900/ManimCat): 提供了开发的基础和灵感。



## 期待

期待更多的可视化资源可以被开发,开源,开放,打破教育资源长期以来的垄断,让我们的教育越来越清晰,越来越公平!
Expand Down
Loading