面向中小学课堂大屏的插件化 Windows 教学桌面平台。
ExusiAI 本体专注桌面壳、扩展运行时、设置、主题、日志和市场边界;屏幕批注、点名、课件管理、文件查看等教学能力以独立扩展交付,优先保证课堂可靠性、响应速度和可维护性。
当前版本:
0.2.0-preview.4· Windows 10/11 · .NET 8 / C# 12 / WPF · GPL-3.0-only
当前仍处于 Preview 阶段,不建议用于生产课堂环境。
- .NET 8 / C# 12 / WPF / MVVM 桌面壳;
- 统一
package.json,可表达 Plugin、Theme、Widget、Provider 等包类型; - 清单严格解析、兼容性检查、重复 ID 检测和包路径逃逸防护;
- 可回收
AssemblyLoadContext、插件初始化/启动/停止生命周期和故障隔离; - 与通用扩展协议分离的 WPF 导航扩展点;
- 8 套编辑器风格配色、System 自动切换、本地版本化设置和文件日志;
- Windows 11 原生 Mica / Acrylic 材质与 DWM 窗口圆角;
- 独立插件工作台,插件页面不再挤占主菜单;
- 插件可在运行时启用、禁用和重试,偏好会跨启动保留;原生平台可选择进程级挂起协议,但停用仍必须停止托管后台服务并移除界面贡献;
- 可搜索的本地资源库、统一插件目录和扩展管理页面;
- 支持 ZIP 插件安全导入、导出、卸载,也可直接将插件文件夹放入本地目录;
- 内置 ClassIsland 源码集成:在 ExusiAI 同一进程运行原版 Avalonia 界面与课表、组件、临时换课逻辑,不打包或启动 ClassIsland.exe;嵌入窗口使用与 WPF 宿主兼容的重定向合成面;停用时完整停止并释放托管服务和窗口,重新启用时在保留的进程级 Avalonia 平台上重建会话;ClassIsland 插件包在下次启动时事务安装,失败保留旧版本和待重试包;默认保留原版独立主题,可选择跟随宿主;
- ArkPets 桌宠:保持 ArkPets 的模型 / 行为 / 选项结构,兼容 Ark-Models 全角色模型库与 direct-start 配置;ExusiAI 可自动管理上游便携运行核心、模型下载、localhost IPC 实时控制和随宿主启动,桌宠不会作为独立开机程序常驻;与 ClassIsland 原生运行集成保持独立并提供可选课堂联动;
- 文件查看器:TXT/Markdown 异步增量预览、CSV 分页解析、DOC/DOCX 受限文本、XLSX 多工作表分页、PPT 程序内源码转换基础预览、PPTX 基础图文与内嵌视频、PDF 分页搜索和程序内 LibVLC DLL 视频解码;不打包或启动第三方格式转换 exe,复杂 Office 排版仍在完善;
- Windows GitHub Actions 构建及单元测试。
需要 Windows 10/11、.NET 8 SDK 和 .NET 9 SDK(ClassIsland 原版源码构建):
dotnet restore ExusiAI.sln
dotnet build ExusiAI.sln --configuration Release
dotnet test ExusiAI.sln --no-build --configuration Release
dotnet run --project src/ExusiAI.Desktop构建或发布 Desktop 时,ClassIsland、文件查看器、课堂点名器和 ArkPets 桌宠会复制到输出目录的 packages 安装源。ClassIsland 从 third_party/ClassIsland 源码编译并携带同进程运行所需 DLL 与资源,关闭上游 apphost,排除所有上游 exe;不使用 RuntimeSeed 或下载独立 ClassIsland 发行程序。文件查看器携带程序内 PPT 转换、PDF 和视频解码 DLL,不依赖 LibreOffice 服务或外部转换程序。首次运行或内置插件升级时,插件会安全同步到与外部插件相同的本地插件目录;用户卸载内置插件后不会在下次启动时自动恢复。
创建可分发的 Windows x64 目录:
dotnet publish src/ExusiAI.Desktop/ExusiAI.Desktop.csproj `
--configuration Release `
--runtime win-x64 `
--self-contained true `
-p:PublishSingleFile=false `
--output artifacts/ExusiAI-win-x64发布目标会自动带上四个内置插件包,并单独发布 viewer 子目录:自包含发布时,查看器携带自己的 .NET/WPF 运行库与 Office、PDF、视频 DLL。移除 SDK 自带的可选 createdump.exe 崩溃转储工具,查看器目录只允许自身入口 exe;自动生成崩溃转储不属于该包功能。重新发布会先移除旧查看器目录,避免遗留旧依赖或外部 exe。分发时请保留整个 artifacts/ExusiAI-win-x64 目录。用户可在“扩展管理”中导入或导出 ZIP、卸载插件、打开统一插件目录;手动安装时将含 package.json 的插件文件夹放入该目录并重启。
| 项目 | 职责 |
|---|---|
ExusiAI.Extension.Abstractions |
稳定、无 UI 依赖的包模型与生命周期协议 |
ExusiAI.Extension.Runtime |
不可信清单的发现/验证、加载上下文和生命周期 |
ExusiAI.Extension.SDK |
面向扩展作者的可选辅助 API |
ExusiAI.Extension.Wpf |
仅供 WPF UI 扩展使用的贡献协议 |
ExusiAI.Theme |
与 WPF 无关的主题选择和设计令牌 |
ExusiAI.Infrastructure |
本地路径、设置、日志和 Windows 适配器 |
ExusiAI.Marketplace |
可查询的本地包目录;不负责加载代码 |
ExusiAI.FileViewer.Core |
无 WPF 依赖的查看器 Provider 契约、安全预算及流式解析 |
ExusiAI.Desktop |
WPF 表现层和唯一组合根 |
设计与安全说明见 docs/architecture,包规范见 docs/package-spec/package-manifest.md。文件查看器的路线图与兼容矩阵会随每阶段更新。
当前 Preview 不包含真实在线市场、云同步、AI/OCR、账号、遥测、自动更新或安装器。
本项目整体以 GNU General Public License v3.0 only(SPDX: GPL-3.0-only)发布。ClassIsland 原生运行时及集成保留其原作者、贡献者及许可证声明;详情见插件内的 THIRD_PARTY_NOTICES.md。参与开发前请阅读 贡献指南。
