Vensim System Dynamics Skill
作者 传康kk · 微信
1837620622· GitHub @1837620622 · 商务合作见文末
一个可复用的 AI 代理指令 + Python 工具脚本 包,用于 Vensim 系统动力学建模、课程作业、政策分析与管理研究,并在 保留方程与对象 ID 的前提下把已建模的草图做保守的分层布局与基础弧线化整理。
一键安装(skills.sh)
技能主页:https://skills.sh/1837620622/vensim-system-dynamics-skill
gh skill install 1837620622/vensim-system-dynamics-skill
# 或
npx skills add 1837620622/vensim-system-dynamics-skill --skill vensim-skill --agent codex --yes
已发布到 skills.sh,可被 Claude Code、Codex CLI、Cursor、Windsurf 等所有兼容 Agent Skills 规范的运行时直接加载。完整安装方式见 Agent Skill 安装。
目录
- 当前能力边界
- 兼容性 / Agent Skill 安装
- 这个项目解决什么问题 / 核心特性 / 已知限制
- 目录结构 / 安装 / 快速开始
- 命令参考 / 示例模型 / 配置文件说明
- SFD 推荐布局规范 / 安全边界
- 适合的任务 / 不适合的情况
- 未来发展方向 / 实现依据
- 许可证 / 关于作者与商务合作 / 致谢
当前能力边界(请先阅读)
本项目定位为 Vensim .mdl Sketch 审计、保守自动布局与系统动力学建模辅助工具,不是 Vensim 的全功能替代。
已支持:
- Sketch 对象 ID 与 Arrow 引用审计(
audit/check); - 中文业务变量解析、仿真、审计与绘图;
- 普通变量节点的分层(
dot)或力导向(neato)布局; - 普通信息箭头的基础弧线化(单控制点圆弧);
- 保留原方程区、保留对象数量、保留 Arrow 起止对象;
- 纯 Python 仿真引擎(
vensim_engine.py)对常见结构(INTEG / LOOKUP / WITH LOOKUP / IF THEN ELSE / SMOOTH / DELAY1 / DELAY3 / DELAY FIXED)的 Euler 积分仿真与 CSV 导出; - matplotlib 折线图与多场景对比图导出;
- 单位缺失预检、未定义变量检查、循环依赖检查、缺失单位自动补齐;
- nodata 诊断:默认严格模式下遇到不支持函数、变量缺失或求值失败会中止并给出根因;明确传入
--keep-going时才继续输出兼容结果; - Vensim 建模流程、单位检查和结果分析模板;
- 图面质量启发式审计:长距离信息箭头、长变量名、节点箭头过多、信息线交叉过多。
暂不承诺:
- 全部 Vensim 函数的解析与仿真(数组下标、宏、部分特殊函数未实现);
- 原生 Vensim 语法检查与完整单位量纲推导(单位一致性需回到 Vensim
Units Check确认); - 自动识别所有库存、流率、阀门和云(当前库存识别仍部分依赖图形形状,见下文"已知限制");
- 无交叉、无穿框的完全自动布线(当前未读取 Graphviz 边路由,仅做单控制点弧线);
- Control Panel、敏感性分析和论文图表的自动生成;
- 对任意复杂
.mdl文件的无损重写。
最终质量门槛仍需回到 Vensim:布局后请在 Vensim 中打开,执行 Model > Check Model 与 Model > Units Check,手工微调后保存。
中文说明见 skills/vensim-skill/vensim_system_dynamics/README_CN.md。
兼容性(全球 IDE / AI 编程助手)
本技能是纯 CLI 工具(skill.sh + Python 标准库),不依赖 MCP 协议、不绑定特定 IDE 插件。任何能执行 shell 命令、能读取项目文件的 AI 编程助手均可使用,跨 macOS / Windows / Linux。设计目标兼容以下全球主流工具:
| 类别 | 兼容工具 |
|---|---|
| 云订阅型 | Claude Code、Cursor、Windsurf、Codex CLI、Antigravity、Amp、Mistral Vibe |
| 免费 / 云托管型 | Gemini CLI、GitHub Copilot(CLI 与 VS Code Chat)、Amazon Q Developer、Kiro、Qwen Code |
| 开源 BYOK 型 | OpenCode、Aider、Cline、Continue.dev、Goose、Roo Code、OpenClaw、Zed、iFlow、Kimi Code CLI、BLACKBOX |
| IDE 内置 / 插件型 | VS Code、JetBrains 全系(IntelliJ / PyCharm 等)AI Assistant、Trae、通义灵码、CodeGeeX、Baidu Comate、Replit AI |
| 自主 Agent 型 | Devin、OpenHands、Bolt.new、v0、Lovable |
为什么便于跨工具使用:本技能遵循 Agent Skills 的轻量结构,frontmatter 提供 name / description 等标准字段,正文为纯 Markdown 指令。工具调用通过各 agent 原生的 shell 执行能力完成,无需安装插件。
运行前提:Python 3.8+、可选 Graphviz(布局命令)、可选 matplotlib(绘图命令)。进入 skills/vensim-skill 后用 ./skill.sh doctor 一键自检。
跨平台入口:
- macOS / Linux:
./skill.sh <命令>(bash) - Windows:
skill.cmd <命令>(cmd / PowerShell),或在 Git Bash / WSL 下用./skill.sh - 两个入口命令与参数完全一致,均自动检测
python3/python/py,无需手动配置 - Python 脚本用
pathlib+shutil.which+subprocess(不依赖 shell),读文件兼容 UTF-8 BOM 与 GB 编码,写 CSV 用newline=""避免 Windows 双换行
Agent Skill 安装(skills.sh)
本技能已发布到 skills.sh —— Agent Skills 公共目录,可被 Claude Code、Codex CLI、Cursor、Windsurf 等所有兼容 Agent Skills 规范的运行时直接发现和安装。
技能主页:https://skills.sh/1837620622/vensim-system-dynamics-skill
方式一:gh skill(GitHub CLI 扩展)
# 安装最新版
gh skill install 1837620622/vensim-system-dynamics-skill
# 固定到指定版本(可复现)
gh skill install 1837620622/vensim-system-dynamics-skill vensim-skill --pin v1.0.5
方式二:npx skills(无需全局安装)
# 查看仓库内可安装的技能
npx skills add 1837620622/vensim-system-dynamics-skill --list
# 安装到指定 Agent(如 Codex)
npx skills add 1837620622/vensim-system-dynamics-skill \
--skill vensim-skill \
--agent codex \
--yes
# 全局安装到当前用户目录
npx skills add 1837620622/vensim-system-dynamics-skill --skill vensim-skill --global --yes
方式三:从 GitHub 克隆后本地使用
git clone https://github.com/1837620622/vensim-system-dynamics-skill.git
cd vensim-system-dynamics-skill/skills/vensim-skill
./skill.sh doctor # 自检环境
./skill.sh examples # 审计全部示例
安装后仍需在本机安装 Graphviz 才能使用自动布局命令;仿真、检查和修复命令只依赖 Python 标准库。各 Agent 的技能目录位置不同,
npx skills会自动写入对应目录,无需手动配置。
这个项目解决什么问题
Vensim PLE 没有一键「全图自动布局」或「自动避让」按钮。原生 Layout 菜单只做对齐、统一大小、水平 / 垂直等间距。当模型变量变多时,箭头会漂浮、重叠、穿过变量,手工整理成论文可用图非常耗时。
但 Vensim 的普通 Arrow 在存在 一个中间控制点 时会形成平滑圆弧;按住 Command/Ctrl 绘制的是 Spline Arrow。因此「AI 自动排版 + 连线自动变平滑曲线」是可行的——实现路径是:
Vensim 先建立正确模型结构(库存 / 流率 / 阀门 / 云 / 方程)
↓ Python 解析 .mdl 草图,提取真实对象 ID、坐标、箭头 from/to、控制点
↓ Graphviz 计算可移动辅助变量的坐标(库存 / 流率骨架锁定)
↓ Python 为每条信息箭头生成单控制点圆弧(平行边自动错开曲率)
↓ 回写新坐标与控制点到 *_autolayout.mdl(方程区不动)
↓ Vensim 打开 → Check Model → Units Check → 手工微调
它不是「让 AI 代替建模」,而是把 已正确建模 的复杂图整理得更易读、更符合论文规范。
核心特性
- 保守的草图解析:严格依据 Vensim 官方 Sketch Format 文档,准确识别变量(10)、阀门(11)、源汇云(12)、箭头(1) 的真实字段。
- 物理流 vs 信息箭头自动区分:通过箭头
thick字段(≥20 为物理流率管道,<20 为信息箭头)和端点对象类型判定,物理流管道保持原样不被破坏。 - 半固定 + 自动布局:默认锁定库存、阀门、云、流率标签、shadow variable、控制面板对象;只让 Graphviz 排布普通辅助变量。
- 基础弧线化:为普通信息箭头生成单个中间控制点,使普通 Arrow 显示为圆弧;平行边自动分配对称曲率避免重叠。注意:当前未读取 Graphviz 边路由控制点,layout 不会自动完成节点避障;audit 会提示明显长线、过密节点和交叉风险。
- 安全回写:自动生成
*_backup.mdl与*.layout_report.json;不改方程区,不新建 / 删除对象,不改箭头from/to。 - 审计与检查:
inspect列出全部对象与箭头属性;audit检测断裂的箭头对象引用、重复定义、未定义引用、中文变量规范和图面质量风险;check额外检测缺失单位、循环依赖、缺失控制变量。 - 纯 Python 仿真引擎(
vensim_engine.py,不依赖 Vensim):对常见结构(INTEG / LOOKUP / WITH LOOKUP / IF THEN ELSE / SMOOTH / DELAY1 / DELAY3 / DELAY FIXED)做 Euler 积分仿真,导出 CSV;matplotlib 折线图与多场景对比图;缺失单位补齐与断裂草图箭头修复。注意:这不是原生 Vensim 语法检查,复杂函数、数组结构、宏与外部数据尚未完整支持。 - 纯标准库:布局脚本只用标准库,无需
pip install;唯一外部依赖是 Graphviz。仿真与绘图需 matplotlib(绘图可选,仿真与校验无需)。
已知限制
- 仿真引擎仍是 Vensim 子集,不支持数组下标、宏、
GET DATA、优化、敏感性分析等高级功能;复杂模型建议优先接入 PySD 作为可选后端。 - 箭头类型未严格区分:当前对信息箭头统一写入单控制点,未区分 Polyline / Perpendicular / Spline。未来将仅对普通 Arrow 写控制点,其他类型保持原样。
- 未实现自动避障布线:当前只读取 Graphviz 节点坐标,未读取边路由 spline;箭头控制点由中垂线法向量计算,复杂场景可能穿框或交叉。
audit会提示明显交叉风险,但不会自动重路由所有线段。 audit是预检工具:会检查 Sketch 引用、方程区基础语义、中文业务变量和图面质量风险,但不替代完整单位检查、CLD 极性一致性判断和行为有效性检验。- 图面质量审计是启发式提醒,能发现长线、交叉和过密节点,但不能替代 Vensim 中的人工排版判断。
- 单位检查仍是轻量预检,仅可靠覆盖缺失单位与部分结构性问题,完整量纲一致性仍需回到 Vensim
Units Check。
中文变量与论文图规范
中文课程论文、政策仿真和管理研究模型默认使用中文业务变量。Vensim 控制变量 INITIAL TIME、FINAL TIME、TIME STEP、SAVEPER 与函数名 INTEG、MIN、MAX 等保持原生英文;业务变量、CSV 表头、图题、坐标轴、图例和变量表优先使用中文。
图面默认遵守以下规则:
- 同一模块变量尽量放近,不跨半个页面连线;
- 长距离来源引用优先用 Shadow Variable,但 Shadow 只能发出箭头,不能作为结果接收入箭头;
- 一个变量最多保留 3-5 条直接可见箭头,超过就拆 View 或移入参数表;
- 主路径从左到右,反馈路径从右下绕回左上;
- 交叉线超过 3 条就拆子系统;
- 箭头不能压在变量文字上;
- 图中变量名用精炼中文,完整解释放变量表;
- 常量参数默认放“参数表”,不要全部画到图里;
- Python 图表图例采用动态策略:少量曲线可放图内空白角落,中等数量外置,很多曲线放底部多列或拆图,避免遮挡和过度留白;
- 最终以能解释模型机制为准,不以把所有变量画出来为准。
目录结构
vensim-skill/
├── README.md # 本文件
├── LICENSE # MIT
├── .gitignore
├── skills/
│ └── vensim-skill/ # GitHub Skill 发布目录,目录名与 name 一致
│ ├── SKILL.md # Agent Skill 入口(name/description/license)
│ ├── skill.sh # macOS/Linux 便捷 CLI
│ ├── skill.cmd # Windows CMD/PowerShell 入口
│ └── vensim_system_dynamics/ # 工具、模板、示例与说明文档
│ ├── OPERATIONS_GUIDE.md # 详细操作手册(建模原则/工作流/草图格式/安全边界)
│ ├── README_CN.md # 中文说明
│ ├── requirements.txt # 依赖说明(无强制 pip 包)
│ ├── docs/REFERENCES.md # 实现依据与官方文档链接
│ ├── tools/
│ │ ├── vensim_autolayout.py # 草图检查/审计/保守自动布局
│ │ ├── vensim_engine.py # 纯 Python 仿真引擎(仿真/绘图/校验/修复)
│ │ └── skill_cli.py # 跨平台 CLI 包装(供 skill.cmd 调用)
│ ├── templates/
│ │ ├── model_spec_template.json # 建模前语义规范模板
│ │ ├── layout_config_sfd.json # SFD 自动排版配置样例
│ │ └── layout_config_cld.json # CLD 自动排版配置样例
│ └── examples/ # 16 个覆盖经典 SD 结构的示例模型
│ ├── population_demo.mdl # SFD:库存流率 + 承载力负反馈
│ ├── s_shaped_growth.mdl # S 型增长(正负反馈复合)
│ ├── first_order_positive_feedback.mdl # 一阶正反馈(指数增长)
│ ├── first_order_negative_feedback.mdl # 一阶负反馈(目标追赶)
│ ├── second_order_oscillation.mdl # 二阶振荡
│ ├── aging_chain.mdl # 老化链(多库存串联)
│ ├── sir_epidemic.mdl # SIR 传染病模型
│ ├── depreciation.mdl # 折旧/衰减稳态
│ ├── cld_customer_loop.mdl # CLD:客户增长因果回路
│ ├── coflow_structure.mdl # 协流结构
│ ├── control_panel.mdl # 控制面板示例
│ ├── delay_structure.mdl # 延迟结构
│ ├── lookup_structure.mdl # Lookup 表函数结构
│ ├── multiview_shadow.mdl # 多视图与 shadow variable
│ ├── production_chain.mdl # 生产链
│ └── smooth_structure.mdl # SMOOTH 平滑结构
└── tests/ # 仿真引擎回归测试(16 个用例)
安装
1. Python
Python 3.8+,无需额外包:
python3 --version
2. Graphviz
macOS:
brew install graphviz
dot -V
Windows: 从 https://graphviz.org/download/ 安装,并把 dot 所在目录(如 C:\Program Files\Graphviz\bin)加入 PATH。
Linux:
sudo apt-get install graphviz # Debian/Ubuntu
sudo dnf install graphviz # Fedora
快速开始
方式一:skill.sh 便捷封装
cd skills/vensim-skill
chmod +x skill.sh
./skill.sh doctor # 检查 python3 与 graphviz
./skill.sh examples # 审计全部示例
./skill.sh quick vensim_system_dynamics/examples/population_demo.mdl # 一键 inspect + audit + layout
./skill.sh layout your_model.mdl --route # 单步自动排版(默认 SFD 配置)
方式一·续:仿真 / 绘图 / 校验 / 修复(不依赖 Vensim)
# 纯 Python 仿真,导出 CSV
./skill.sh simulate vensim_system_dynamics/examples/population_demo.mdl --var Population --var Births --var Deaths
# 仿真并导出折线图 PNG(需 matplotlib)
./skill.sh graph vensim_system_dynamics/examples/population_demo.mdl --var Population --var Deaths \
--output pop.png --title "Population Dynamics"
# 多场景对比图(修改 Carrying Capacity 等参数后对比)
./skill.sh compare vensim_system_dynamics/examples/population_demo.mdl \
--scenario scenario_low.mdl --scenario scenario_high.mdl \
--var Population --var "Crowding Effect" --output compare.png
# 单位量纲校验
./skill.sh units vensim_system_dynamics/examples/population_demo.mdl
# 全面检查:未定义变量 / 缺失单位 / 循环依赖 / 断裂草图引用
./skill.sh check vensim_system_dynamics/examples/population_demo.mdl
# 自动修复缺失单位、断裂草图箭头
./skill.sh fix broken_model.mdl --output fixed_model.mdl
# 一键 check + simulate + graph(适合快速跑通一个模型)
./skill.sh auto vensim_system_dynamics/examples/population_demo.mdl --var Population --var Births
仿真默认严格模式:遇到不支持的函数或求值失败会中止并指出根因。如需兼容输出(失败变量置零继续),加
--keep-going。
方式二:直接调用 Python 脚本
# 1. 查看模型内的对象 ID、坐标、形状、箭头 from/to、控制点
python3 vensim_system_dynamics/tools/vensim_autolayout.py inspect vensim_system_dynamics/examples/population_demo.mdl
# 2. 审计箭头引用是否指向本视图内有效对象
python3 vensim_system_dynamics/tools/vensim_autolayout.py audit vensim_system_dynamics/examples/population_demo.mdl
# 3. 复制 SFD 配置,填入要锁定的库存 / 流率名
cp vensim_system_dynamics/templates/layout_config_sfd.json my_layout.json
# 编辑 my_layout.json,把 lock_node_names 改成你模型里的库存与流率标签名
# 4. 生成自动排版模型(自动建 .backup.mdl 与 .layout_report.json)
python3 vensim_system_dynamics/tools/vensim_autolayout.py layout vensim_system_dynamics/examples/population_demo.mdl \
--output vensim_system_dynamics/examples/population_demo_autolayout.mdl \
--config my_layout.json \
--engine dot \
--route-information-arrows
# 5. 审计输出
python3 vensim_system_dynamics/tools/vensim_autolayout.py audit vensim_system_dynamics/examples/population_demo_autolayout.mdl
在 Vensim 中打开 *_autolayout.mdl:先看图,再 Model > Check Model,再 Model > Units Check,手工微调少数交叉关系后保存为最终版本。
命令参考
inspect — 列出草图对象与箭头
python3 vensim_system_dynamics/tools/vensim_autolayout.py inspect <model.mdl>
输出每个对象的类型(var/valve/src/sink)、坐标、形状、是否附着阀门、是否 shadow variable、是否库存状;每条箭头标注 FLOW(物理流率管道) 或 info(信息箭头)、weight、控制点数。
audit — 审计箭头对象引用
python3 vensim_system_dynamics/tools/vensim_autolayout.py audit <model.mdl>
检测箭头 from/to 是否引用了本视图不存在的对象 ID(会漂浮 / 反向 / 穿变量的根因),并警告无控制点、空名变量、中文模型中的非中文业务变量、长变量名、长距离信息箭头、节点箭头过多和信息线交叉过多。
layout — 应用保守自动排版
python3 vensim_system_dynamics/tools/vensim_autolayout.py layout <model.mdl> \
--output <out.mdl> \
--config <config.json> \
--engine {dot|neato|fdp|sfdp} \
--route-information-arrows
--engine dot:分层布局,适合 SFD(库存—流率有明确层级)。--engine neato/fdp:弹簧模型,适合 CLD(关系网图)。--route-information-arrows:为可重布线的信息箭头设置单个圆弧控制点。
示例模型
skills/vensim-skill/vensim_system_dynamics/examples/ 下提供 16 个覆盖经典系统动力学结构的示例,可直接用于学习、测试与作业参考:
| 分类 | 模型 | 说明 |
|---|---|---|
| 基础 SFD | population_demo.mdl |
库存流率 + 承载力负反馈闭环 |
| 增长范式 | s_shaped_growth.mdl |
S 型增长(正负反馈复合) |
| 反馈结构 | first_order_positive_feedback.mdl |
一阶正反馈(指数增长) |
| 反馈结构 | first_order_negative_feedback.mdl |
一阶负反馈(目标追赶) |
| 反馈结构 | second_order_oscillation.mdl |
二阶振荡 |
| 链式结构 | aging_chain.mdl |
老化链(多库存串联) |
| 应用模型 | sir_epidemic.mdl |
SIR 传染病模型 |
| 应用模型 | depreciation.mdl |
折旧/衰减稳态 |
| CLD | cld_customer_loop.mdl |
客户增长因果回路图 |
| 经典结构 | coflow_structure.mdl |
协流结构 |
| 经典结构 | delay_structure.mdl |
延迟结构 |
| 经典结构 | lookup_structure.mdl |
Lookup 表函数结构 |
| 经典结构 | smooth_structure.mdl |
SMOOTH 平滑结构 |
| 草图特性 | control_panel.mdl |
控制面板示例 |
| 草图特性 | multiview_shadow.mdl |
多视图与 shadow variable |
| 链式结构 | production_chain.mdl |
生产链 |
快速验证全部示例:
cd skills/vensim-skill
./skill.sh examples # 审计全部示例草图与方程
./skill.sh simulate vensim_system_dynamics/examples/sir_epidemic.mdl --var Susceptible --var Infected --var Recovered
部分模型含诊断变量(如康复比例、稳态指示量),审计时可能出现「未使用变量」警告,属正常现象,不影响仿真。详见 examples/README.md。
配置文件说明
{
"view": "*",
"canvas": {"x_min": 120, "x_max": 1180, "y_min": 110, "y_max": 720},
"rankdir": "LR",
"nodesep": 0.65,
"ranksep": 1.05,
"move_stocks": false,
"lock_node_names": ["Population", "Births", "Deaths"],
"lock_object_ids": [],
"route_information_arrows_only": true,
"curve_strength": 0.18,
"parallel_curve_spacing": 0.08,
"minimum_curve_pixels": 26,
"maximum_curve_pixels": 118,
"skip_views": []
}
| 字段 | 说明 |
|---|---|
view |
处理哪个视图,* 为全部 |
canvas |
可移动节点的目标画布范围(像素) |
rankdir |
Graphviz 布局方向:LR/TB/BT/RL |
nodesep / ranksep |
节点间距 / 层间距 |
move_stocks |
是否允许移动库存状变量(SFD 应为 false) |
lock_node_names |
按变量名锁定的对象(库存、流率标签) |
lock_object_ids |
按对象 ID 锁定 |
route_information_arrows_only |
只重布线信息箭头,不动物理流 |
curve_strength |
弧线强度系数 |
parallel_curve_spacing |
平行边错开曲率增量 |
minimum_curve_pixels / maximum_curve_pixels |
弧度像素上下限 |
skip_views |
跳过的视图名列表 |
SFD 推荐布局规范
系统动力学存量流量图有明确规范,建议采用「半固定 + 自动布局」而非完全交给 Graphviz:
顶部:云 → 流入 → 库存 → 流出 → 云
中部:辅助变量、比率、效果变量
右侧 / 下方:参数、价格、比率
下部:收入、成本、利润
底部:留存收益 → 投资者回报
- 库存与两侧流率管道固定在顶部中央;
- 投资者回报等库存及其流率固定在左下;
- 其余辅助变量交给 Graphviz 按层级排布;
- 箭头按上下 / 左右关系自动选取弯曲方向;
- 同方向多条箭头自动分配不同弯曲轨道避免重叠;
- 远距离关系用大弧度,近距离用小弧度。
安全边界(必须遵守)
- 自动排版 只整理已正确建模 的草图;
- 脚本 不新建 库存、阀门、云或物理流;
- 脚本 不改 方程区、箭头
from/to、对象 ID; - 默认 锁定 库存、阀门、源汇云、流率标签、shadow variable、控制面板对象;
- 输出 必须 在目标 Vensim 版本重新打开并运行
Check Model+Units Check; - 出现错位 / 浮动箭头 / 阀门脱离时 立即恢复
*_backup.mdl改用手动。
适合的任务
- 汽车销售、人口、供应链韧性、政策执行、光伏治沙、城市交通等 SFD;
- 区域运输、公共治理、生态经济等 CLD;
- 作业要求的 Control Panel、政策情景、敏感性分析;
- 把原始 Vensim 图整理为论文可用图。
不适合的情况
- 模型尚未确认时直接批量生成
.mdl; - 希望一个按钮自动设计理论机制或自动给参数;
- 多个库存—流率骨架已乱接、阀门与标签脱离;
- 不愿在 Vensim 中打开验证。
未来发展方向
本项目后续将由"Vensim 草图审计与自动布局工具"逐步扩展为面向系统动力学建模全过程的智能辅助平台。总体目标是在不破坏原始模型方程、变量关系和 Vensim 文件兼容性的前提下,实现模型构建、逻辑审查、单位校验、仿真分析、可视化输出与论文材料生成的一体化支持。
- 模型语义解析模块:不再仅依赖 Sketch 图形形状识别库存、流率和辅助变量,而是从
.mdl方程区解析变量定义、INTEG、DELAY、SMOOTH、WITH LOOKUP、数组下标和初始条件,建立统一的模型中间表示,识别库存—流率结构、变量依赖、反馈回路、变量单位和政策杠杆。 - 模型质量审查模块:覆盖重复定义、未定义变量引用、未使用变量、库存方程缺失、流率量纲不匹配、比例变量越界、概率变量越界、负库存风险、循环依赖、方程与因果箭头不一致等问题,输出变量名、位置、影响范围、严重等级和修复建议。
- 自动布局与自动布线:采用"语义锚点 + 图结构布局 + 几何避障"组合方法,引入节点边界检测、线段交叉检测、曲线碰撞检测、平行箭头分轨和跨层箭头重路由,降低箭头穿框与反馈回路混乱。
- Vensim 兼容的仿真与情景分析:支持基准情景、政策情景、敏感性分析、参数组合实验和极端条件测试,自动导出净利润、植被盖度、耦合协调度、碳减排量、客户规模、库存水平等指标的折线图、对比图、统计表和 CSV,保存完整参数配置保证可复现。
- 论文与课程作业交付模块:自动生成变量定义表、方程表、参数表、政策情景表、模型检验表、仿真结果表和图表说明文字,提供因果回路分析、正负反馈识别、主导结构迁移分析、模型边界说明与局限性分析模板。
- 多层质量门槛:输出前依次完成方程语法检查、变量依赖检查、单位检查、结构一致性检查、图形重叠检查、仿真稳定性检查和结果合理性检查,全部通过后才生成最终文件。
- 明确工具边界:优先保证对常见 Vensim 建模结构的稳定支持,不将"完全替代 Vensim"作为短期目标,对复杂函数、特殊分析工具、原生 Control Panel、数组结构保留回到 Vensim 检查的流程。
实现依据
依据 Vensim 官方文档与开源解析器实现,完整链接见 skills/vensim-skill/vensim_system_dynamics/docs/REFERENCES.md:
- Vensim Help — Sketch Format
- Vensim Help — Sketch Object Detail
- Vensim Help — Arrow Class
- Vensim Help — Layout Menu
- Graphviz — splines
- PySD — Vensim Translation(辅助验证)
许可证
MIT License。见 LICENSE。
关于作者与商务合作
传康kk(chuankangkk)—— 系统动力学建模与 AI Agent 工具开发者。
- 微信:
1837620622(备注「Vensim 技能合作」) - GitHub:@1837620622
- 技能主页:https://skills.sh/1837620622/vensim-system-dynamics-skill · 安装
gh skill install 1837620622/vensim-system-dynamics-skill
合作方向:
- 商务合作:系统动力学建模咨询、Vensim 模型搭建与排版、政策仿真与情景分析、论文图表与交付物定制、企业内训与课程开发、工具二次开发与私有部署。
- 问题反馈:使用中遇到 bug、解析错误、布局异常、仿真 nodata 等,请附
.mdl文件与复现命令,便于定位。 - 功能建议:希望支持的新函数、新结构、新输出格式或工作流改进。
- 学术合作:研究项目中的模型构建、仿真验证、论文图表协作。
- 其他合作:技术交流、开源贡献、社区共建。
联系方式:
| 用途 | 渠道 |
|---|---|
| 商务合作 / 项目委托 | 微信 1837620622(备注「Vensim 技能合作」) |
| 问题反馈 / Bug 报告 | GitHub Issues |
| 功能建议 / 技术交流 | 微信 1837620622 或 GitHub Issues |
| 开源贡献 | GitHub Pull Requests |
提交 Issue 或 PR 时请说明:使用场景、操作系统、Python 版本、复现命令、
.mdl文件(可脱敏)。商务合作请直接加微信,备注来意以便快速响应。
致谢
- Ventana Systems — Vensim 与官方文档
- SDXorg/pysd — Vensim
.mdl解析参考 - Graphviz — 自动布局引擎
No comments yet
Be the first to share your take.