技术栈与项目结构
SigXor 的 .NET 10 + WPF 架构、核心依赖、项目目录、构建测试与发布流程。
全部文档
SigXor 基于 .NET 10 与 WPF,采用 MVVM 组织界面,预览与编辑能力按文件类型拆分到独立控件。语音与 OCR 通过本地 ONNX 模型推理。
技术栈#
| 方向 | 选型 |
|---|---|
| 框架 | .NET 10(net10.0-windows) |
| UI | WPF + MVVM(CommunityToolkit.Mvvm) |
| 文本编辑 | AvalonEdit |
| 十六进制编辑器 | 自研控件(IScrollInfo 虚拟化滚动) |
| Office 解析 | DocumentFormat.OpenXml + 自研 RTF / ODF 读取器 |
| Office 高保真渲染 | WebView2 + mammoth.js / SheetJS / PPTXjs |
| Markdown 渲染 | Markdig + 自研 GitHub 风格离线 CSS |
| 网页 / 音频 / PDF | WebView2(Chromium 内核) |
| 语音录制 | NAudio(WaveInEvent) |
| 语音识别 | SenseVoice + sherpa-onnx(本地离线) |
| OCR | RapidOcrNet + PaddleOCR PP-OCRv6 / v5 |
| 模型解压 | SharpCompress(tar.bz2) |
| 测试 | xUnit(100+ 项单元测试) |
| 发布 | 框架依赖单文件 + 自研更新器(latest.json + SHA256 + 看门狗回滚) |
项目结构#
SigXor/
├─ SigXor.sln
├─ SigXor.Core/ # 核心逻辑与模型
├─ SigXor/ # WPF 主应用
│ ├─ Services/ # 钩子、托盘、自启、迁移、更新
│ └─ Toolkit/ # Voice / Capture / Ocr / Input
├─ SigXor.Tests/ # xUnit 单元测试
├─ docs/ # 项目计划、盘点与安装指南
├─ website/ # 静态官网(Node 构建脚本 + Markdown 文档)
├─ packaging/ # 图标与安装脚本
└─ scripts/ # 发布、资源拉取与打包
构建与运行#
环境要求:.NET 10 SDK(10.0.302 或更高版本)、Windows 10 / 11 64 位、可选的 WebView2 运行时。
# 克隆仓库
git clone https://github.com/pengcunfu/SigXor.git
cd SigXor
# 构建
dotnet build SigXor.sln -c Release
# 运行
dotnet run --project SigXor
# 单元测试
dotnet test SigXor.Tests
Office 网页渲染资源#
Office 网页渲染视图依赖离线的 JS 库。首次构建前运行:
scripts/fetch-office-libs.ps1
脚本会下载固定版本的 mammoth.js、SheetJS 与 PPTXjs,并进行 SHA-256 校验。资源打包进 webassets/,运行时不需要联网。
语音与 OCR 模型#
- 语音模型:SenseVoice,约 230 MB,运行在 sherpa-onnx 之上。
- OCR 模型:PP-OCRv6(约 30 MB),失败时回退 PP-OCRv5(约 16 MB)。
- 模型不随发布包分发,首次使用时下载到用户数据目录,之后完全离线。
- 语音与 OCR 均在本机推理,不上传音频、截图或识别结果。
发布流程#
- 发布产物为框架依赖单文件 + 便携 ZIP。
- ZIP 内包含
SigXor.exe、webassets/与随包模型资源;缺失的语音 / OCR 模型按需下载。 - 同时生成
latest.json(版本、下载 URL、SHA256、发布说明)与.sha256校验文件。 - 客户端更新器读取清单、下载整包、校验后替换,并以看门狗机制处理启动失败。
官网#
本网站同样由仓库内的 website/ 构建:Node 脚本读取 Markdown 文档,生成纯静态 HTML、sitemap.xml、llms.txt 等产物,不使用前端框架运行时。
参与贡献#
- 源码与问题反馈:GitHub
- 许可协议:MIT