IB Grappic / SuperWindowFoundation
IB Grappic 是一套基于 WPF 的桌面端图形与自动化工作台。项目并不是单一工具界面,而是由应用外壳、可视化流程编辑器、 插件契约、自研控件库、配置/日志/SQLite 基础设施、本地 HTTP 服务、Python 运行桥接、OCR 与 ONNX/Yolo 视觉推理能力共同组成的工程平台。
项目概览
解决方案内包含应用、控件、基础设施、视觉推理与插件项目等多个工程模块。
QuickBuild 内置流程工具覆盖输入输出、条件、循环、文件、数据库、OCR、AI、Python、Redis、OSS、视觉检测等场景。
以 App、Controls、Foundation、Contract/Plugins 形成清晰分层,支撑桌面产品与自动化能力复用。
定位
总体架构
模块分层
QuickBuild 编排系统
可视化模型
流程由 Project、Node、Port、Connection 组成。节点对应一个可执行工具,端口定义输入/输出和类型,连线负责数据传递,项目树负责组织多个流程。
属性驱动编辑器
工具通过 QuickBuildPropertyAttribute 暴露可编辑属性,编辑器按类型自动生成 TextBox、CheckBox、日期选择、文件/目录选择、枚举和动态列表控件。
执行引擎
运行时按连接关系构建执行顺序,读取上游端口值,写回输出端口;支持 If / EndIf、For Start / For End、Break、Wait 等控制流节点。
持久化与导入导出
流程可保存为项目状态,支持导出、导入、远程同步和关闭前保存。节点属性、端口、连接和项目树都作为流程资产被持久化。
节点执行的数据优先级
| 优先级 | 来源 | 说明 |
|---|---|---|
| 1 | 输入端口 Value | 若节点有上游连接,优先使用上游运行结果,适合动态数据流。 |
| 2 | NodeModel.ToolProperties | 用户在属性面板中编辑并保存的节点配置。 |
| 3 | 工具实例默认值 | 来自工具类属性默认值或 QuickBuildPropertyAttribute.DefaultValue。 |
插件与任务契约
IQuickBuildTool
工具需要提供稳定 Id、展示名称、描述、CreateElement UI 片段、GetPorts 端口定义,以及 Execute 执行逻辑。输出结果直接写回端口。
IQuickBuildTask
任务插件面向更高层的自动化任务,接收 IExecute 与 CancellationToken,便于被任务列表、本地服务或外部入口统一调用。
IExtend
为工具提供日志、Toast、进度条、UI 调度、浮动模态窗、图片展示、ONNX 模型加载/卸载/推理、YOLOv5 推理和流程终止能力。
PythonScriptBridge
把 Python 脚本纳入桌面工作台,可执行历史脚本、传递参数、收集 stdout/stderr,并与 QuickBuild 项目和任务入口并列。
工具开发模板
public class MyTool : IQuickBuildTool
{
public string Id => "my-tool";
public string Name => "示例工具";
[QuickBuildProperty(DisplayName = "文件路径", DataType = typeof(FileInfo), Required = true)]
public FileInfo? FilePath { get; set; }
public IEnumerable<PortInfo> GetPorts() => new[] {
new PortInfo { Name = "Input", IsInput = true, TypeName = "string" },
new PortInfo { Name = "Result", IsInput = false, TypeName = "string" }
};
public void Execute(List<PortInfo> ports, IExtend? extend = null)
{
var input = ports.First(p => p.Name == "Input").Value;
ports.First(p => p.Name == "Result").Value = Run(input);
extend?.AppendLog("工具执行完成");
}
}
内置工具能力
| 类别 | 代表工具 | 能力 |
|---|---|---|
| 流程控制 | Input、Output、If、EndIf、For Start、For End、Break、Wait | 构建可执行流程树,支持条件、循环、中断、等待和输入输出节点。 |
| 数据处理 | Type Convert、ToJson、IO Tool | 类型转换、JSON 序列化、文本文件读取/写入/追加。 |
| 数据库与缓存 | SQLite Query、SQL Server Query、MySQL Query、Postgres Query、Oracle Query、Redis Tool | 以节点形式执行只读查询或受限命令,把结果作为 JSON 或文本输出给下游节点。 |
| AI 与脚本 | AI Chat、Python Tool、AiRunPythonCode | 调用 OpenAI-like HTTP Endpoint、执行 Python 代码或脚本,把模型回复和脚本结果接入流程。 |
| 视觉与图像 | CameraTool、Image Show、OcrTool、FaceTool、YoloV5PredictorTool、YoloSharpPredictorTool | 采集图片、显示图片、OCR 识别、OpenCV 人脸检测、YOLO/ONNX 目标检测。 |
| 云与文件分发 | OSS Download | 下载 HTTP(S) 或阿里云 OSS 文件,并将本地路径传递给后续节点。 |
AI 辅助建图
QuickBuild 不只是人工拖拽节点,也提供面向模型调用的 Skill Registry,让 AI 可以查询、创建、修改和执行流程。
可调用技能
事务与回滚
AI 修改流程前可创建事务或快照,执行失败时回滚,成功后提交,降低自动建图过程中把项目改坏的风险。
OCR 与视觉推理
PaddleOCR
OCRExtend 使用 PaddleOCRSharp,面向中文、英文、数字和复杂背景文字识别,可用于非侵入式获取软件或 App 界面中的文本内容。
ONNX Runtime / GPU
IExtend 暴露 LoadOnnxModel、RunOnnxModel、RunOnnxModelYolo5、GPU 版本等接口,工具可以复用宿主提供的推理能力。
OpenCV
通过 OpenCvSharp 支持摄像头、图片读取、图像处理和人脸检测等能力,并能把输出图片直接传给后续节点。
YoloSharp / 图像检测
YoloSharpPredictorTool 与 YoloV5PredictorTool 将检测结果、标注图片、保存路径和结构化检测数据暴露为端口输出。
运行与服务化
工程基础设施
| 能力 | 实现重点 |
|---|---|
| 配置中心 | JsonConfigManager 与 SettingsStore 管理常规设置、AI Endpoint、模型、API Key、服务 Token、日志开关、窗口行为和 AI 最大轮次。 |
| 日志系统 | 支持控制台与文件日志,应用启动、服务启动、任务执行、异常和未观察任务异常都会写入统一日志链路。 |
| SQLite 支撑 | 以 Swf.Foundation.Sqlite 和示例工程沉淀本地数据能力,可为工具、任务、历史和配置提供轻量存储。 |
| 自研控件 | 统一按钮、树、进度、Toast、列表和工具栏表现,让 QuickBuild 与主应用保持一致的桌面交互体验。 |
| 安装与启动 | 包含 SoftwareInstaller 模块和启动设置,面向可分发桌面应用而不是只在 IDE 中运行的实验代码。 |
工程价值
从工具到平台
用统一契约把脚本、数据库、OCR、视觉检测、AI 调用和桌面 UI 接入流程图,降低后续扩展成本。
面向实际交付
包含日志、配置、持久化、服务接口、Token、导入导出、安装模块和异常处理,不停留在原型层。
可继续演进
Contract 与 Foundation 独立出来后,新工具、新任务、新视觉模型和外部调度入口都能按同一套规则扩展。