Monica for Windows
Monica by Avalonia:用 Avalonia、.NET 与 MDBX 打造本地优先的跨平台密码库。
Windows / macOS / Linux · Local Vault · MDBX-1 · KeePass · TOTP · WebDAV / OneDrive
摘要
Monica for Windows 是 Monica 密码库的桌面端实现,聚焦本地优先、密码管理与 MDBX vault 兼容。本文按项目 README 风格撰写,提供功能介绍、技术栈、架构视图与开发说明。
Monica for Windows 目标是在桌面平台上延续 Monica 的本地优先与安全优先路线,提供密码、TOTP、私密笔记、银行卡与证件管理,并支持本地加密、导入导出、备份与 MDBX vault 兼容。
项目定位
Monica for Windows 是面向桌面用户的本地优先密码库客户端。它以跨平台的 Avalonia 桌面 UI 为基础,结合 .NET 10 与 MDBX 本地 vault,构建一个既现代又可扩展的桌面密码管理体验。
本项目核心目标:
- 提供本地加密密码库与 TOTP 管理能力
- 支持 KeePass
.kdbx与 Monica / MDBX 数据兼容 - 支持 WebDAV 和 OneDrive 的备份与恢复
- 提供桌面平台的文件选择、剪贴板、托盘、全局快捷键等集成能力
你能得到什么
- 本地密码库:账号、密码、网址、自定义字段、附件与分类管理
- TOTP 管理:保存并生成动态验证码
- 私密笔记:支持纯文本与 Markdown 预览
- 卡片与证件:统一管理银行卡、身份信息与其他敏感资料
- 密码生成:内置随机密码生成与强度分析
- 本地加密:主密码初始化、解锁、变更与安全恢复设置
- 导入导出:支持 Monica JSON、密码 CSV、TOTP CSV、Aegis JSON 等格式
- 同步与备份:WebDAV / OneDrive 备份与恢复能力
- MDBX vault:创建、检查与管理 Monica MDBX-1 本地数据库
技术栈
| 层级 | 技术 | 说明 |
|---|---|---|
| 桌面 UI | Avalonia 12, FluentAvaloniaUI, FluentIcons.Avalonia | 跨平台桌面界面与 Fluent 风格控件 |
| 应用框架 | .NET 10, C# nullable, compiled bindings | 现代 .NET 桌面运行时与类型安全绑定 |
| MVVM | CommunityToolkit.Mvvm | ViewModel、命令、属性通知 |
| 依赖注入与日志 | Microsoft.Extensions.DependencyInjection, Microsoft.Extensions.Logging, Serilog | 服务注册与日志抽象 |
| 本地数据 | Microsoft.Data.Sqlite, SQLitePCLRaw, Dapper, Dapper.AOT | 轻量数据访问、迁移与 AOT 友好查询 |
| 加密与安全 | BouncyCastle, Argon2, ProtectedData, AES/SHA 相关实现 | 主密码派生与本地数据保护 |
| 密码能力 | PasswordGenerator, zxcvbn-core, Pwned Password 检查 | 密码生成、强度评估与风险检测 |
| TOTP / QR | Otp.NET, QRCoder, ZXing.Net | 动态验证码与二维码生成/解析 |
| 导入导出 | CsvHelper, SharpCompress, System.Text.Json | CSV、JSON、压缩备份与迁移 |
| KeePass 生态 | KPCLib | .kdbx 文件兼容能力 |
| 云端与同步 | WebDav.Client, Microsoft.Graph, Azure.Identity, MSAL, Polly | WebDAV、OneDrive、认证与重试策略 |
| MDBX 接入 | Rust MDBX workspace, UniFFI, mdbx_ffi.dll | 复用 Monica MDBX vault 核心能力 |
| 测试 | xUnit, Microsoft.NET.Test.Sdk, coverlet | 核心服务与平台服务测试 |
架构概览
架构预览
Monica for Windows 的架构是一颗“桌面密码库思维树”,核心在于:
- UI 层负责交互与展示
- Core 层负责业务与加密逻辑
- Data 层负责 Vault 存储与持久化
- Platform 层负责同步、平台集成与 MDBX 适配
架构说明
Monica.App:Avalonia 界面、窗口与桌面服务Monica.Core:业务模型、加密、TOTP、导入导出、密码生成Monica.Data:本地数据库、Vault 存储、迁移与 MDBX 后端仓储Monica.Platform:跨平台适配层,包含 WebDAV、OneDrive、KeePass、MDBX bridgeMDBX Rust workspace:Vault 核心、加密、存储、FFI 与 CLI 支持OS integrations:文件选择、剪贴板、DPAPI、浏览器桥接Remote backup:WebDAV/OneDrive 备份与恢复通道
WARNING
架构设计中,MDBX 不是普通数据库表,必须通过专用 API 或 FFI facade 管理 commit、snapshot 和 conflict 元数据。
mindmap
root((Monica for Windows))
App["Monica.App\nAvalonia UI / ViewModels / Dialog Services"]
UI[UI / 交互]
Dialogs[对话框 / 桌面服务]
Core["Monica.Core\n领域模型 / 加密服务 / TOTP / 导入导出"]
Security[加密 / 主密码]
TOTP[TOTP / 生成]
ImportExport[导入导出]
PasswordGen[密码生成]
Data["Monica.Data\nSQLite / Vault / MDBX 后端"]
Storage[SQLite / Vault]
Migration[迁移]
MDBXStore[MDBX 后端]
Platform["Monica.Platform\nWebDAV / OneDrive / KeePass / MDBX bridge"]
Sync[WebDAV / OneDrive]
KeePass[.kdbx / KeePass]
MDBXBridge[MDBX bridge]
Os["OS integrations\nDPAPI / Clipboard / File Picker / Browser Bridge"]
Clipboard[剪贴板]
FilePicker[文件选择]
DPAPI[DPAPI]
BrowserBridge[浏览器桥接]
Cloud["备份与恢复\nWebDAV / OneDrive"]
Backup[备份]
Restore[恢复]代码目录
monica by avalonia/src/Monica.App:Avalonia 应用入口、主窗口、ViewModel 与桌面 UI 服务monica by avalonia/src/Monica.Core:核心模型、加密、TOTP、密码生成、导入导出、安全能力monica by avalonia/src/Monica.Data:SQLite 数据库、Dapper 仓储、迁移、Vault 存储、MDBX 后端仓储monica by avalonia/src/Monica.Platform:平台适配、WebDAV、OneDrive、KeePass、Windows Secret Protector、MDBX UniFFI 本地桥接monica by avalonia/tests/Monica.Tests:核心服务、仓储、MDBX 接入与平台服务测试
MDBX-1 接入
Monica for Windows 支持 MDBX-1 本地优先 vault,它不是普通的 SQLite 密码表,而是一个带有版本历史、冲突处理、快照恢复与安全边界的本地数据库格式。
Avalonia 端当前包含两条 MDBX 接入路径:
MdbxUniffiNativeBridge:通过mdbx_ffi.dll调用 UniFFI bridge,直接在本地进程中操作 MDBX vault。MdbxCliVaultEngine:当 native bridge 不可用时,回退到 MDBX CLI,用于开发与验证。
MDBX 客户端必须通过库提供的 storage / repo API 或明确的 FFI facade 维护 commit、tombstone、snapshot、conflict、device head 等元数据,避免直接修改底层文件。
更多规范请参考 MDBX 仓库文档。
快速开始
环境要求
- .NET SDK 10.0+
- Windows 桌面环境
- 若启用 MDBX CLI 回退能力,需安装 Rust toolchain
还原与构建
cd "e:\projects\MonicaDocs\docs\03.生态\03.Windows\monica by avalonia"
dotnet restore Monica.slnx
dotnet build Monica.slnx运行桌面端
dotnet run --project "src\Monica.App\Monica.App.csproj"运行测试
dotnet test Monica.slnx发布示例
dotnet publish "src\Monica.App\Monica.App.csproj" -c Release -r win-x64 --self-contained true当前状态
- 项目处于早期开发阶段(0.1.0),主要作为桌面端架构与 MDBX 接入基线。
- 已覆盖 App 设置、核心服务、密码管理、TOTP、MDBX 存储与平台服务的测试基础。
- 真实敏感数据建议保持多份备份,正式发布前仍需补充更多截图与发布说明。
与 Monica / MDBX 的关系
- Monica:提供产品理念、本地优先路线与密码管理体验参考
- MDBX:提供本地优先 vault 格式与长期可维护的数据结构
- Monica for Windows:作为桌面端实现,将两者能力融合到 Windows 桌面应用中
致谢
Monica for Windows 参考并借鉴了以下项目:
- Avalonia:跨平台桌面 UI
- FluentAvalonia:Fluent 风格控件
- Bitwarden:密码管理生态参考
- KeePass:本地密码库与
.kdbx兼容参考 - MDBX:本地优先 vault 格式参考
许可证
本项目基于 GNU General Public License v3.0 开源发布。

