XiStudio · Tech Architecture
XiStudio 技术架构设计 v1.0
分层设计 · 数据流 · 部署拓扑 · 技术栈 · 扩展机制
让每一层都可替换 · 让每一个接口都有契约
5
架构分层
.NET 8
核心运行时
Electron
UI Shell
XiStudio 技术架构设计 v1.0
摘要
本文档是 XiStudio IDE 的技术架构详设,与 spec.md 互补:spec 定义 "做什么"(功能/性能/兼容性契约),本文回答 "怎么做"(分层/模块/数据流/扩展点)。
目标读者:架构师、平台软件团队、Enterprise/IDM 客户的二次开发工程师。
1. 架构原则
XiStudio 架构五条原则
- 分层解耦:UI / 编辑器内核 / 编译器 / 仿真烧录 / 设备 I/O 各有清晰边界
- 契约优先:每层之间用 gRPC / IPC 契约隔离,不共享内存态
- 插件可插拔:算法块、导出器、调音 UI 均通过
.xiplugin机制热加载 - 离线可跑:核心工作流(编辑 / 编译 / 仿真 / 烧录)不依赖云端
- 逐步云化:AI 辅助与团队协作是增量能力,不破坏离线基线
2. 总体分层
2.1 五层架构
graph TB
L5[L5 · 表现层<br/>UI Shell · Electron]
L4[L4 · 应用层<br/>EditorCore · ParamPanel · Scope]
L3[L3 · 领域层<br/>Compiler · Simulator · AlgoLib]
L2[L2 · 基础设施层<br/>Burner · XiFlash · JTAG Driver]
L1[L1 · 设备与云层<br/>XiDSP · XiMind Cloud · License Server]
L5 --> L4
L4 --> L3
L3 --> L2
L2 --> L1
class L5 xyL5
class L4 xyL4
class L3 xyL3
class L2 xyL2
class L1 xyL1
2.2 各层职责
| 层 | 职责 | 进程 | 主要技术 |
|---|---|---|---|
| L5 表现层 | 窗口、菜单、渲染 | Renderer 进程(Electron) | TypeScript + React + Canvas2D |
| L4 应用层 | 编辑器交互、参数绑定、实时示波器 | Renderer + Main 桥接 | TypeScript + .NET Bridge(Edge.js) |
| L3 领域层 | 流图模型、编译、仿真、算法库管理 | Main 进程(.NET 8) | C# + Roslyn + 自研 DSL |
| L2 基础设施层 | 设备 I/O、文件系统、网络、加密 | Main 进程 + Native DLL | C# P/Invoke + C 驱动 |
| L1 设备与云层 | XiDSP 硬件、XiMind 云端、License 服务器 | 独立设备/服务 | XiDSP-ISA / HTTPS / gRPC |
3. 核心模块详设
3.1 EditorCore(流图编辑器内核)
graph LR
Model[FlowGraphModel] --> Cmd[Command Bus]
Cmd --> Undo[Undo/Redo Stack]
Cmd --> Evt[Event Bus]
Evt --> Renderer[Canvas Renderer]
Evt --> Param[Param Panel]
Evt --> Scope[Scope]
class Model xyL3
class Cmd,Evt xyL2
class Undo,Renderer,Param,Scope xyL1
- 核心数据结构:
FlowGraphModel(节点 + 边 + 组 + 元数据) - 命令模式:所有编辑动作走 Command Bus,天然支持 Undo/Redo
- 事件总线:解耦 UI 与数据变化
- 实时渲染:Canvas2D 绘制 + ResizeObserver 按需重绘
3.2 Compiler(DSP 编译器)
graph LR
Flow[.xiflow] --> Parse[AST 解析]
Parse --> Lint[静态检查]
Lint --> Opt[算法图优化]
Opt --> Codegen[代码生成]
Codegen --> ASM[XiDSP 汇编]
ASM --> BIN[.xifw 固件]
Opt -.性能预估.-> Profile[MIPS/MEM Report]
class Flow xyL0
class Parse,Lint xyL2
class Opt,Codegen xyL3
class ASM,BIN xyL4
class Profile xyL1
关键点: - IR(中间表示):基于 SSA 形式,便于优化 pass 串联 - 算法图优化:常量折叠、冗余块消除、流水线调度 - 目标后端:v1.0 只支持 XiDSP-D1;v2.0+ 支持 D2/D3/A1 和第三方 DSP - 性能预估:每个节点给 MIPS/Memory/Cycles 三维预估,供工程师提前感知瓶颈
3.3 Simulator(位精确仿真器)
- 核心:XiDSP 指令集 位精确解释器(cycle-accurate 模式可选)
- 输入:
.xifw+ 音频 WAV/PCM - 输出:仿真后音频 + 节点级波形 + 性能 Profile
- 性能:v1.0 单线程 ≥ 10× 实时率(48 kHz 单通道);v1.5 并行化 ≥ 50×
3.4 Burner(烧录引擎)
graph LR
FW[.xifw] --> Sign[签名校验]
Sign --> Pack[打包 .xiflash]
Pack --> Sel{接口选择}
Sel -- USB --> USB[XiFlash USB]
Sel -- 串口 --> UART[XiFlash UART]
Sel -- JTAG --> JTAG[XiFlash JTAG]
USB --> Device[XiDSP]
UART --> Device
JTAG --> Device
class FW xyL0
class Sign xyWarn
class Pack xyL2
class Sel xyWarn
class USB,UART,JTAG xyL3
class Device xySuccess
- 驱动抽象:
IBurnerBackend接口,USB/UART/JTAG 各自实现 - 签名:Pro+ 版本的固件必须通过 RSA-2048 签名,否则拒绝烧录
- 断点续传:大固件分片传输,支持中断恢复
3.5 AIBridge(XiMind 桥接)
- 通信:HTTPS + Server-Sent Events(流式返回)
- 缓存策略:同样的 Prompt + 同样的项目上下文 → 本地缓存 30 天
- 离线退化:云端不可达时,XiMind 能力静默失效,不影响主流程
4. 进程模型
4.1 Electron 双进程 + .NET 桥
graph TB
Main[Main 进程<br/>Node.js]
Renderer[Renderer 进程<br/>Chromium]
NetHost[.NET 8 Host<br/>子进程]
Main <--IPC JSON-RPC--> Renderer
Main <--Edge.js / Named Pipe--> NetHost
NetHost --> Domain[L3 领域层<br/>C# 代码]
class Main xyL4
class Renderer xyL5
class NetHost xyL3
class Domain xyL2
4.2 为什么要分出 .NET Host
- 性能:编译 / 仿真是 CPU 密集,放在独立 .NET 进程避免阻塞 UI
- 稳定性:.NET 崩溃只影响当前任务,不拖死 UI
- 复用:同一个 .NET Host 未来可被 CLI / REST 服务复用
5. 数据流
5.1 编辑 → 编译 → 烧录全流程
graph LR
U[用户操作] --> E[EditorCore]
E --> M[FlowGraphModel]
M -- 保存 --> F[.xiflow]
F --> C[Compiler]
C --> FW[.xifw]
FW --> B[Burner]
B --> D[XiDSP Device]
D -- JTAG 反馈 --> UI[Scope 实时显示]
class U xyL0
class E,M xyL4
class F,FW xyL2
class C,B xyL3
class D xyL1
class UI xySuccess
5.2 项目文件树
my-project.xiproj/ # 项目目录(文件夹即项目)
├── project.xml # 项目元数据
├── flows/
│ ├── main.xiflow # 主流图
│ └── preset-rock.xiflow # 子流图
├── params/
│ └── default.xiparam # 参数组
├── assets/
│ └── test-audio.wav # 仿真素材
├── build/
│ ├── main.xifw # 编译输出
│ └── main.xiflash # 烧录包
└── .xi/ # 内部元数据(.gitignore 友好)
6. 扩展机制
6.1 .xiplugin 插件格式
my-plugin.xiplugin(ZIP 归档)
├── manifest.json # 插件元数据(ID/版本/入口/权限/签名)
├── main.js # 入口脚本(TypeScript 编译产物)
├── assets/ # 图标/图片/文档
└── README.md
6.2 三类插件
| 类型 | 用途 | 示例 |
|---|---|---|
| 算法块(AlgoBlock) | 自定义 DSP 算法 | 客户私有 AEC 算法 |
| 导出器(Exporter) | 把 XiStudio 工程导出为其他格式 | 导出到 ADI SigmaStudio |
| UI 扩展(UIPanel) | 自定义调音面板 | 品牌专属 GUI |
6.3 权限与签名
- 插件
manifest.json必须声明权限(文件 / 网络 / 硬件访问) - Enterprise+ 版强制要求插件签名(防止恶意插件)
- 首次加载时弹窗提示用户确认权限
7. 部署拓扑
7.1 单机模式(Community / Pro)
7.2 企业集成模式(Enterprise)
graph TB
subgraph "Client Workstations"
W1[工程师 PC 1]
W2[工程师 PC 2]
Wn[工程师 PC N]
end
subgraph "Enterprise Backend"
LS[License Server]
CS[Collab Server<br/>XiForge]
Proxy[AI Gateway<br/>代理到 XiMind]
end
subgraph "Cloud"
XM[XiMind Cloud]
end
W1 --> LS
W2 --> LS
Wn --> LS
W1 --> CS
W2 --> CS
Wn --> CS
CS --> Proxy
Proxy --> XM
class W1,W2,Wn xyL5
class LS,CS xyL3
class Proxy xyL2
class XM xyL1
7.3 IDM 模式(源码级)
- 客户拿到源码 + 构建脚本 + 定制化接口
- 可在自有 CI/CD 中构建、签名、分发
- 支持客户替换 Codegen 后端以对接客户自研 DSP
8. 技术栈选型理由
| 选型 | 替代方案 | 选择理由 |
|---|---|---|
| Electron(而非 Native) | Qt / MAUI | 跨平台速度 + 前端人才池 + 生态成熟 |
| .NET 8 核心 | Node.js / Rust | 既有团队 C# 能力 + Roslyn 元编程 + 性能够用 |
| React(而非 Vue) | Vue / Svelte | 大型应用维护性 + Electron 社区示例多 |
| Canvas2D(而非 WebGL) | WebGL / Konva | v1.0 节点数有限,Canvas2D 足够,2027+ 升 WebGL |
| gRPC(而非纯 REST) | REST Only | IDM 低延迟场景需要 · REST 留给 Enterprise |
9. 可观测性与运维
9.1 遥测(Telemetry)
- 默认关闭,用户首次启动可显式开启(遵守 GDPR / 个保法)
- 只收集匿名崩溃堆栈 + 功能使用频次,不收集工程内容
- 数据通过 OpenTelemetry 协议上送
9.2 日志
- 本地日志:按天滚动,最多保留 30 天 / 500 MB
- 崩溃转储:MiniDump + 上下文元信息
- 分级:Trace / Debug / Info / Warn / Error / Fatal(默认 Info)
9.3 License 服务器(Enterprise)
- 心跳:客户端每 5 分钟上报一次 License 状态
- 离线宽限期:断网 72 小时内仍可工作(可配置)
- 审计日志:License 使用、登录、关键操作
10. 演进路线
10.1 未来 2 年技术演进
| 时间 | 演进项 | 影响层 |
|---|---|---|
| 2026 Q4 | Pro v1.0 首发 · 支持 XiDSP-D1 | L1-L5 |
| 2027 Q2 | Enterprise v1.0 · 团队协作 | L4 + L1(云) |
| 2027 Q4 | XiMind 集成(AI 辅助) | L4 + L1(云) |
| 2028 Q2 | 并行仿真 + GPU 加速 | L3 |
| 2028 Q4 | 第三方 DSP(ADI/TI)Codegen 后端 | L3 |
| 2029+ | Linux 版 / 云端 IDE(WebAssembly) | L5 + L2 |
10.2 技术债提示
已识别的技术债(v1.0 阶段接受)
- Electron 包体积偏大(~200 MB) → 2027 评估 Tauri 替换
- Canvas2D 大项目(>500 节点)渲染卡顿 → WebGL 重写
- 编译器 IR 仅为 线性 IR → 2028 升级为 SSA + Region-based
- License 服务器单点部署 → 增加集群与热备
11. 附录
11.1 与其他文档的引用关系
| 关联文档 | 引用点 |
|---|---|
| XiStudio 产品概述 | 用户场景 / 版本矩阵 |
| XiStudio PRD | 功能需求 / 验收标准 |
| XiStudio 产品规格书 | 版本能力矩阵 / API 契约 |
| XiStudio API 文档 | CLI / REST / gRPC 详细 |
| 软件开发规范 | 代码风格 / Git 流程 |
| 测试规范与质量标准 | 质量红线 |
11.2 版本历史
| 版本 | 日期 | 要点 |
|---|---|---|
| v1.0 | 2026-05-05 | 首版 · 五层架构 + 模块详设 + 部署拓扑 |
tech-arch.md · D2-P1-TECH-001 · v1.0 · 2026-05-05 · Xisound 研发中心 · 平台软件团队