modelscript/modelscript

GitHub: modelscript/modelscript

一个基于 Node.js/TypeScript 的全栈 Web 原生 Modelica 编译、仿真、优化与可视化框架,支持浏览器和命令行双模式运行。

Stars: 4 | Forks: 0

بسم الله الرحمن الرحيم
奉至仁至慈的真主之名
# ModelScript ModelScript 是一个综合性的 Modelica 编译、仿真、优化和可视化框架。它提供了一个强大的引擎,用于解析 Modelica 代码、执行语义分析、展平模型、仿真动态系统、求解最优控制问题以及渲染交互式图表——所有这些都可以在浏览器或命令行中完成。 ## 单体仓库结构 本项目是一个由 **Lerna**、**Nx** 和 **npm workspaces** 管理的单体仓库 (monorepo)。 | 包 | 描述 | | ----------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | | [`@modelscript/core`](./packages/core/) | 编译器引擎 — 解析、语义分析、展平、仿真、代码检查 | | [`@modelscript/cli`](./packages/cli/) | `msc` 命令行接口 — 展平、仿真、优化、代码检查、渲染等 | | [`@modelscript/api`](./packages/api/) | REST API 服务器 — 仿真、发布、GraphQL、SPARQL 和 RDF | | [`@modelscript/morsel`](./packages/morsel/) | 可视化 Modelica 编辑器 — 代码编辑、图表查看器、仿真和绘图 | | [`@modelscript/web`](./packages/web/) | 用于浏览和探索 Modelica 库的 Web 前端 | | [`@modelscript/ide`](./packages/ide/) | VS Code Web IDE — 基于浏览器的 Modelica 开发环境 | | [`@modelscript/lsp`](./packages/lsp/) | Language Server Protocol — 补全、悬停提示、诊断、格式化、颜色 | | [`@modelscript/vscode`](./packages/vscode/) | VS Code 扩展 — 语法高亮、LSP 客户端、图表视图 | | [`@modelscript/tree-sitter-modelica`](./packages/tree-sitter-modelica/) | Modelica 的 Tree-sitter 语法(原生 + WASM) | ## 核心功能 - **精确解析** — 定制的 Tree-sitter 语法,用于高效、增量的解析 - **语义分析** — 针对复杂 Modelica 层次结构的完整作用域和名称解析 - **展平** — 将层次模型转换为扁平的微分代数方程 (DAE) - **仿真** — 带有 Pantelides 指标约简和 BLT 排序的 ODE/DAE 求解器 - **优化** — 使用直接配平法的最优控制问题求解器 - **图表渲染** — 交互式 SVG 图表和基于 X6 的可视化布局,支持自动布局 - **语言服务器** — 补全、悬停提示、诊断、格式化和颜色提供器 - **代码检查** — 涵盖语法、类型、语义和方程的 15+ 条检查规则 - **Modelica 脚本** — 用于评估 Modelica 表达式和算法的解释器 - **i18n 支持** — 从 Modelica 模型中提取可翻译的字符串 ## 入门指南 ### 前置条件 - **Node.js** ≥ 22(参见 `.nvmrc`) - **emsdk**(构建 Tree-sitter WASM 解析器所需): git clone https://github.com/emscripten-core/emsdk.git cd emsdk ./emsdk install latest ./emsdk activate latest source ./emsdk_env.sh ### 安装 ``` git clone https://github.com/modelscript/modelscript.git cd modelscript npm install ``` ### 构建 构建所有包(通过 Nx 按依赖顺序进行): ``` npm run build ``` ### 运行(开发) 同时启动所有服务: ``` npm run dev ``` 这将启动: | 服务 | URL | 描述 | | --------------------- | --------------------- | -------------------------------------------- | | Morsel (编辑器) | http://localhost:3002 | 带有图表和仿真的可视化编辑器 | | Web (库浏览器) | http://localhost:3001 | 浏览和探索 Modelica 库 | | API | http://localhost:3000 | 用于仿真、发布、查询的 REST API | | IDE (VS Code Web) | http://localhost:3003 | 带有 Modelica 支持的基于浏览器的 VS Code | #### AI 聊天(可选) IDE 包含一个由 WebLLM (Qwen3-0.6B) 驱动的浏览器本地 AI 助手。要启用它,请下载模型权重(约 350 MB,一次性): ``` npm run download-model --workspace=@modelscript/ide ``` 下载完成后,重启 `npm run dev` 并在 IDE 侧边栏中打开 **ModelScript AI** 面板。 ### CLI 使用 构建完成后,CLI 将以 `msc` 的形式可用: ``` # 将模型展平为 DAE npx msc flatten Modelica.Electrical.Analog.Examples.CauerLowPassAnalog path/to/MSL # 模拟模型(默认输出 CSV) npx msc simulate BouncingBall model.mo --stop-time 5 # 使用 JSON 输出进行模拟 npx msc simulate BouncingBall model.mo --format json # 求解最优控制问题 npx msc optimize MyModel model.mo \ --objective "u^2" --controls "u" --control-bounds "u:-1:1" --stop-time 10 # 对 Modelica 文件进行 Lint npx msc lint model.mo # 将图表渲染为 SVG(输出至 stdout) npx msc render MyModel model.mo > diagram.svg ``` ### 测试 跨所有包运行测试套件: ``` npm test ``` ### 代码检查 ``` npm run lint ``` ### 格式化 ``` npm run format ``` ### Docker 每次推送到 `main` 分支时,预构建的镜像都会发布到 GitHub Container Registry。 运行最新的镜像而无需构建: ``` docker compose pull # Pull latest images from ghcr.io/modelscript/* docker compose up -d # Start containers docker compose down # Stop containers docker compose logs -f # Tail logs ``` 改为从源代码构建: ``` npm run docker:build # Build images locally npm run docker:up # Start containers ``` | 服务 | 端口 | URL | | ------- | ---- | --------------------- | | API | 3000 | http://localhost:3000 | | Morsel | 3002 | http://localhost:3002 | | Web | 3001 | http://localhost:3001 | | IDE | 3003 | http://localhost:3003 | ## 许可证 ModelScript 根据 **AGPL-3.0-or-later** 获得许可。有关详细信息,请参见 [COPYING](./COPYING)。
标签:CLI, GraphQL, Lerna, MITM代理, Modelica, Mutation, npm workspaces, Nx, OPA替代, RDF, REST API, Terrascan, VS Code, WiFi技术, 代码编辑器, 代码静态检查, 动态系统建模, 可视化, 图表渲染, 工程仿真, 开源框架, 微服务架构, 持续集成, 最优控制, 模型展平, 浏览器仿真, 策略执行, 系统仿真, 编译器, 自动化攻击, 语法解析, 请求拦截