C# / WPF / .NET / Visual Workflow / OCR / ONNX

IB Grappic / SuperWindowFoundation

IB Grappic 是一套基于 WPF 的桌面端图形与自动化工作台。项目并不是单一工具界面,而是由应用外壳、可视化流程编辑器、 插件契约、自研控件库、配置/日志/SQLite 基础设施、本地 HTTP 服务、Python 运行桥接、OCR 与 ONNX/Yolo 视觉推理能力共同组成的工程平台。

WPF 桌面工作台 QuickBuild 节点编排 插件化 Tool / Task PaddleOCR ONNX Runtime / GPU OpenCV / YoloSharp 本地服务接口 自研控件体系

项目概览

30+

解决方案内包含应用、控件、基础设施、视觉推理与插件项目等多个工程模块。

20+

QuickBuild 内置流程工具覆盖输入输出、条件、循环、文件、数据库、OCR、AI、Python、Redis、OSS、视觉检测等场景。

4 层

以 App、Controls、Foundation、Contract/Plugins 形成清晰分层,支撑桌面产品与自动化能力复用。

定位

这是一个面向桌面端自动化与图形任务的低代码/可视化工作流平台。核心目标是把“工具、数据端口、流程连接、AI 辅助、脚本执行、视觉能力、本地服务”收束进同一个可运行工作台。

总体架构

IB Grappic App WPF shell / parts / settings QuickBuild graph editor / run engine Plugin Projects Tool / Task extensions Swf.Controls Button / Tree / Toast / Toolbar QuickBuild.Contract IQuickBuildTool / IExtend / PortInfo Vision & AI Runtime OCR / ONNX / OpenCV / Yolo Foundation: Configuration / Log / SQLite / EventBus / Utils

模块分层

Swf.App.GrappicApp 桌面端主应用壳,负责窗口、部件布局、设置面板、任务/项目/脚本入口、模型加载与图形工作区。项目中使用 HelixToolkit.Wpf 与 AssimpNet,具备 3D 模型/图形资源加载基础。
Swf.Controls.QuickBuild 核心可视化流程编辑器,承载项目树、节点、端口、连线、属性面板、执行引擎、持久化、AI 辅助建图与日志输出。
Swf.Controls.QuickBuild.Contract 插件与任务契约层,定义 IQuickBuildTool、IQuickBuildTask、IExtend、PortInfo、QuickBuildPropertyAttribute、PythonExecutor 与 PythonScriptBridge。
Swf.Foundation.* 基础设施层,包含 JSON 配置管理、日志管理、SQLite、事件总线和通用工具能力,让上层应用与控件无需重复建设工程基础。
Swf.Controls.* 自研 WPF 控件库,包含 Button、Combox、DataGridView、ListView、ProgressBar、Toast、Toolbar、TreeView 等桌面 UI 组件。
OCRExtend / YoloSharp / 图像检测 视觉能力层,覆盖 PaddleOCR 文字识别、OpenCV 图像处理、ONNX Runtime 推理、YOLO 检测工具和图像检测插件。

QuickBuild 编排系统

可视化模型

流程由 Project、Node、Port、Connection 组成。节点对应一个可执行工具,端口定义输入/输出和类型,连线负责数据传递,项目树负责组织多个流程。

属性驱动编辑器

工具通过 QuickBuildPropertyAttribute 暴露可编辑属性,编辑器按类型自动生成 TextBox、CheckBox、日期选择、文件/目录选择、枚举和动态列表控件。

执行引擎

运行时按连接关系构建执行顺序,读取上游端口值,写回输出端口;支持 If / EndIf、For Start / For End、Break、Wait 等控制流节点。

持久化与导入导出

流程可保存为项目状态,支持导出、导入、远程同步和关闭前保存。节点属性、端口、连接和项目树都作为流程资产被持久化。

节点执行的数据优先级

优先级来源说明
1输入端口 Value若节点有上游连接,优先使用上游运行结果,适合动态数据流。
2NodeModel.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 可以查询、创建、修改和执行流程。

可调用技能

AiGetAvailableTools AiGetNodePorts AiCreateProject AiCreateNode AiCreateConnection AiSetNodeQuickBuildProperty AiRunProject AiRunPythonCode

事务与回滚

AI 修改流程前可创建事务或快照,执行失败时回滚,成功后提交,降低自动建图过程中把项目改坏的风险。

AI 建图循环

用户目标模型规划调用技能修改/执行图结果反馈

OCR 与视觉推理

PaddleOCR

OCRExtend 使用 PaddleOCRSharp,面向中文、英文、数字和复杂背景文字识别,可用于非侵入式获取软件或 App 界面中的文本内容。

ONNX Runtime / GPU

IExtend 暴露 LoadOnnxModel、RunOnnxModel、RunOnnxModelYolo5、GPU 版本等接口,工具可以复用宿主提供的推理能力。

OpenCV

通过 OpenCvSharp 支持摄像头、图片读取、图像处理和人脸检测等能力,并能把输出图片直接传给后续节点。

YoloSharp / 图像检测

YoloSharpPredictorTool 与 YoloV5PredictorTool 将检测结果、标注图片、保存路径和结构化检测数据暴露为端口输出。

运行与服务化

桌面端调用用户可以在 IB Grappic 中直接选择 QuickBuild 项目、Task 任务或 Python 脚本执行,执行结果在界面和日志中反馈。
本地 HTTP 服务TaskWebServer 提供 /api/tasks、/api/projects、/api/python、/api/execute/task、/api/execute/project、/api/execute/python、/api/help/tools、/api/help/skills 等接口。
Token 鉴权服务接口支持 Bearer Token 或查询参数 token,适合内网自动化、外部调度器和本地控制面板接入。
局域网同步IntranetToolbox 支持设备发现、导出、上传和导入 .ib 流程资产,用于多设备间同步自动化项目。

工程基础设施

能力实现重点
配置中心JsonConfigManager 与 SettingsStore 管理常规设置、AI Endpoint、模型、API Key、服务 Token、日志开关、窗口行为和 AI 最大轮次。
日志系统支持控制台与文件日志,应用启动、服务启动、任务执行、异常和未观察任务异常都会写入统一日志链路。
SQLite 支撑以 Swf.Foundation.Sqlite 和示例工程沉淀本地数据能力,可为工具、任务、历史和配置提供轻量存储。
自研控件统一按钮、树、进度、Toast、列表和工具栏表现,让 QuickBuild 与主应用保持一致的桌面交互体验。
安装与启动包含 SoftwareInstaller 模块和启动设置,面向可分发桌面应用而不是只在 IDE 中运行的实验代码。

运行流程图

QuickBuild 项目执行

选择项目克隆节点状态构建连接映射按序执行节点收集输出 处理条件/循环日志/进度/中断

外部服务调用

HTTP 请求Token 校验路由到任务IBService 执行JSON 响应

工程价值

从工具到平台

用统一契约把脚本、数据库、OCR、视觉检测、AI 调用和桌面 UI 接入流程图,降低后续扩展成本。

面向实际交付

包含日志、配置、持久化、服务接口、Token、导入导出、安装模块和异常处理,不停留在原型层。

可继续演进

Contract 与 Foundation 独立出来后,新工具、新任务、新视觉模型和外部调度入口都能按同一套规则扩展。