🧭 GGS2 蓝图
编排 · 把脚本编排为低代码可视化工作流,文本即蓝图。
📌 技术定位
GGS2 是 GS2 脚本的「低代码连线式可视化节点」表示与执行 / 调试系统:节点是代码块,连线是执行顺序。 模型层负责解析与运行,显示层用 Razor 渲染节点、端口与连线。与纯图形化编辑器不同,GGS2 的蓝图本身是可直接编辑的文本, 画布坐标以注释形式随文件持久化,因而更易于版本管理与 AI 生成。
✨ 核心特性
📝 文本即蓝图
以「标签:」定义节点,标签行尾注释携带画布坐标与尺寸(如 N1://x y w h//说明),执行体为该标签后的语句。
🧱 内置节点类型
Ap(对应工厂配方,可右键浏览)、Jcc(条件跳转,1 入 2 出)、Return(仅输入)、 RawCode(多行文本编辑区)、Start(执行外部命令)、Label(跳转标签)。
🐞 执行与调试
支持运行 / 调试 / 单步三种模式;调试模式记录执行历史(上限 1024 条),支持手工断点与一次性断点(「执行到此」), 并高亮已播放的连线。
🪆 主 / 子会话机制
Ap 节点执行子流程时创建子会话,支持「跳入 / 返回」,并可设置单步时跳过子流程调试。
🎨 模型与视图分离
模型层为纯数据(节点、连线、选择集、序列号分配;节点按其内容判为 TEXT/JS/SHELL/CMD/ECHO/GS2), 视图层仅负责渲染,便于替换显示技术。
♻️ 虚拟机池复用
执行用的虚拟机从对象池复用;挂起时清空会话状态以防泄漏,复用时重新注入会话。
🔧 关键技术点
- 编译链路:文本 → 节点标记注入(把节点标签改写为对应的内联指令)→ 脚本编译执行;执行中命中节点回调,用于记录历史与暂停。
- 连线语义:连线采用 toggle 语义(已存在则删除,否则新建),并禁止自连。
- 子流程栈:进入子流程时压栈、退出时恢复,配合会话树实现「跳入 / 返回」。
- 坐标持久化:节点坐标保存在注释中,随文件一起被版本管理。
🧪 示例
N1://-416 -122 305 115//入口分发
jcc $cond N2 N3
N2://-100 -30 220 90//成功分支
...
N3://-100 120 220 90//失败分支
...
真实案例:仓库批量同步工作流——扫描磁盘中含版本库的目录,逐个执行暂存、拉取、变基、提交与推送。