技术栈与项目结构

SigXor 的 .NET 10 + WPF 架构、核心依赖、项目目录、构建测试与发布流程。

最后更新 约 1 分钟阅读 在 GitHub 上编辑此页
全部文档
本页目录

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