Skip to content

SafeMask v1.1.0

Choose a tag to compare

@github-actions github-actions released this 12 Feb 06:39

🛡️ SafeMask v1.1.0 - 版本更新说明

发布日期:2026年2月12日
版本号:v1.1.0
核心定位:AI 时代的全格式隐私脱敏盾牌


🚀 核心亮点

1. 办公文档全格式支持 (Office & PDF)

SafeMask 现已跨越纯文本限制,正式支持主流办公文档的本地脱敏:

  • Microsoft Word (.docx):采用 XML 标签感知算法,仅脱敏 <w:t> 文本节点,完美保护文档格式、图片与样式不受干扰。
  • Microsoft Excel (.xlsx):智能遍历工作表,对字符串类型单元格执行高精脱敏,数值、公式与日期保持原样。
  • PDF 文档 (.pdf):支持 PDF 文本深度提取与脱敏,自动输出为 AI 友好的 .txt 格式,大幅提升提示词安全性。

2. 极致性能:脱敏算法原子化优化

为了应对千万级行数的日志与超大文档,我们对 Rust 核心引擎进行了重构:

  • 零堆分配 (SmallVec):在处理单行文本匹配时,引入 SmallVec 将匹配元数据保留在栈上,大幅减少高频内存分配导致的 CPU 抖动。
  • 缓冲区重用 (Buffer Pooling):优化内存预分配策略,文件处理过程中的内存占用更加平稳,在大规模脱敏场景下性能提升约 15%。

3. 智能文件管理与交互

  • 自适应后缀保留:处理后的文件将自动命名为 文件名.masked.原后缀(如 report.masked.docx),不再强制转换为 .log。
  • 结构化任务反馈:脱敏完成后,窗体将弹出系统级确认框,实时展示处理耗时、吞吐量(MB/s)及保存路径。
  • 一键直达 (Reveal in Folder):支持在完成提示中直接点击“查看文件”,自动唤起系统文件管理器并选中目标文件。

🛠️ 问题修复与底层改进

  • [修复] 剪贴板非文本冲突:解决了复制文件或图片时,监听器因格式不匹配而频繁抛出 ContentNotAvailable 错误并导致日志滚动及 UI 警告的问题。
  • [修复] 历史记录二次脱敏 Bug:通过同步全局 last_content 状态,修复了在“历史记录”中复制原文时会触发监听器再次脱敏的逻辑闭环问题。
  • [优化] 监控静默策略:当剪贴板内容为非文本时,自动挂起处理并清空缓存,显著降低了后台运行时的 CPU 闲置开销。
  • [安全] 权限最小化:更新了 Tauri v2 能力集(Capabilities),精确授权 dialog:ask 与 opener:reveal,确保应用符合零信任安全标准。

📊 性能基准测试 (v1.1.0 性能表现)

测试环境: Windows 11 / i7-12700K / 16GB RAM

文件类型 原始大小 处理耗时 结果
纯文本日志 (.log) 2.3 GB 7.9s 格式完全一致
办公文档 (.docx) 50 MB (含大量图片) 1.2s 格式完整保留
复杂表格 (.xlsx) 10万行数据 2.4s 单元格精准脱敏

⚠️ 开发者建议 (Build from source)

如果您是自行编译本项目,请注意以下改动:

  1. Cargo.toml:增加了 zip, calamine, rust_xlsxwriter, pdf-extract, quick-xml, smallvec 等依赖。
  2. Capabilities:请确保 src-tauri/capabilities/default.json 包含 dialog:allow-ask 权限。

SafeMask - 让每一行数据,都能安全地拥抱 AI。

感谢您的使用与支持!